From 8d648cafae420b3c6e507c5112bb78be93f915f9 Mon Sep 17 00:00:00 2001 From: Bart van der Braak Date: Sun, 16 Mar 2025 12:29:47 +0100 Subject: [PATCH] Consolidate all fonts config --- nixos/configuration.nix | 13 +---- nixos/flake.nix | 2 +- nixos/modules/apple-fonts.nix | 67 ----------------------- nixos/modules/fonts.nix | 100 +++++++++++++++++++++++++++++++--- 4 files changed, 95 insertions(+), 87 deletions(-) delete mode 100644 nixos/modules/apple-fonts.nix diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 3741f52..e7f2111 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -28,18 +28,7 @@ LC_TELEPHONE = "nl_NL.UTF-8"; LC_TIME = "en_US.UTF-8"; }; - - # Fonts configuration - fonts = { - enableDefaultPackages = true; - packages = with pkgs; [ - jetbrains-mono - nerdfonts - noto-fonts - noto-fonts-emoji - ]; - }; - + # Optimization & Garbage Collection # Optimize Nix-Store During Rebuilds diff --git a/nixos/flake.nix b/nixos/flake.nix index 82e21a9..5c68a28 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -18,7 +18,7 @@ ./packages.nix ./services.nix ./modules/bootloader.nix - ./modules/apple-fonts.nix + ./modules/fonts.nix ]; }; qemu = nixpkgs.lib.nixosSystem { diff --git a/nixos/modules/apple-fonts.nix b/nixos/modules/apple-fonts.nix deleted file mode 100644 index f4100ba..0000000 --- a/nixos/modules/apple-fonts.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ pkgs, ... }: - -let - # Define Apple font sources - fontSources = { - sf-pro = { - url = "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"; - hash = "sha256-IccB0uWWfPCidHYX6sAusuEZX906dVYo8IaqeX7/O88="; - }; - sf-compact = { - url = "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"; - hash = "sha256-PlraM6SwH8sTxnVBo6Lqt9B6tAZDC//VCPwr/PNcnlk="; - }; - sf-mono = { - url = "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"; - hash = "sha256-bUoLeOOqzQb5E/ZCzq0cfbSvNO1IhW1xcaLgtV2aeUU="; - }; - sf-arabic = { - url = "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg"; - hash = "sha256-J2DGLVArdwEsSVF8LqOS7C1MZH/gYJhckn30jRBRl7k="; - }; - ny = { - url = "https://devimages-cdn.apple.com/design/resources/download/NY.dmg"; - hash = "sha256-HC7ttFJswPMm+Lfql49aQzdWR2osjFYHJTdgjtuI+PQ="; - }; - }; - - # Function to create Apple font packages - makeAppleFont = name: pkgName: source: - pkgs.stdenv.mkDerivation { - inherit name; - - src = pkgs.fetchurl { - inherit (source) url hash; - }; - - version = "0.3.0"; - - unpackPhase = '' - undmg $src - 7z x '${pkgName}' - 7z x 'Payload~' - ''; - - buildInputs = [ - pkgs.undmg - pkgs.p7zip - ]; - setSourceRoot = "sourceRoot=`pwd`"; - - installPhase = '' - mkdir -p $out/share/fonts/opentype - mkdir -p $out/share/fonts/truetype - find -name \*.otf -exec mv {} $out/share/fonts/opentype/ \; - find -name \*.ttf -exec mv {} $out/share/fonts/truetype/ \; - ''; - }; - -in { - environment.systemPackages = [ - (makeAppleFont "sf-pro" "SF Pro Fonts.pkg" fontSources.sf-pro) - (makeAppleFont "sf-compact" "SF Compact Fonts.pkg" fontSources.sf-compact) - (makeAppleFont "sf-mono" "SF Mono Fonts.pkg" fontSources.sf-mono) - (makeAppleFont "sf-arabic" "SF Arabic Fonts.pkg" fontSources.sf-arabic) - (makeAppleFont "ny" "NY Fonts.pkg" fontSources.ny) - ]; -} diff --git a/nixos/modules/fonts.nix b/nixos/modules/fonts.nix index 5e91d21..bc81e47 100644 --- a/nixos/modules/fonts.nix +++ b/nixos/modules/fonts.nix @@ -1,10 +1,96 @@ { pkgs, ... }: -{ - # Fonts - fonts.packages = with pkgs; [ - jetbrains-mono - nerd-font-patcher - noto-fonts-color-emoji - ]; +let + fontSources = { + sf-pro = { + url = "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"; + hash = "sha256-IccB0uWWfPCidHYX6sAusuEZX906dVYo8IaqeX7/O88="; + }; + sf-compact = { + url = "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"; + hash = "sha256-PlraM6SwH8sTxnVBo6Lqt9B6tAZDC//VCPwr/PNcnlk="; + }; + sf-mono = { + url = "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"; + hash = "sha256-bUoLeOOqzQb5E/ZCzq0cfbSvNO1IhW1xcaLgtV2aeUU="; + }; + sf-arabic = { + url = "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg"; + hash = "sha256-J2DGLVArdwEsSVF8LqOS7C1MZH/gYJhckn30jRBRl7k="; + }; + ny = { + url = "https://devimages-cdn.apple.com/design/resources/download/NY.dmg"; + hash = "sha256-HC7ttFJswPMm+Lfql49aQzdWR2osjFYHJTdgjtuI+PQ="; + }; + }; + + makeAppleFont = name: pkgName: source: + pkgs.stdenv.mkDerivation { + inherit name; + + src = pkgs.fetchurl { + inherit (source) url hash; + }; + + version = "0.3.0"; + + unpackPhase = '' + undmg $src + 7z x '${pkgName}' + 7z x 'Payload~' + ''; + + buildInputs = [ + pkgs.undmg + pkgs.p7zip + ]; + setSourceRoot = "sourceRoot=`pwd`"; + installPhase = '' + mkdir -p $out/share/fonts/opentype + mkdir -p $out/share/fonts/truetype + find -name \*.otf -exec mv {} $out/share/fonts/opentype/ \; + find -name \*.ttf -exec mv {} $out/share/fonts/truetype/ \; + ''; + }; + + appleColorEmoji = pkgs.stdenv.mkDerivation { + name = "apple-color-emoji"; + + src = pkgs.fetchurl { + url = "https://github.com/samuelngs/apple-emoji-linux/releases/download/v17.4/AppleColorEmoji.ttf"; + hash = "sha256-SG3JQLybhY/fMX+XqmB/BKhQSBB0N1VRqa+H6laVUPE="; + }; + unpackPhase = ":"; + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp $src $out/share/fonts/truetype/AppleColorEmoji.ttf + ''; + }; + +in { + fonts = { + enableDefaultPackages = true; + packages = with pkgs; [ + jetbrains-mono + nerdfonts + noto-fonts + noto-fonts-emoji + (makeAppleFont "sf-pro" "SF Pro Fonts.pkg" fontSources.sf-pro) + (makeAppleFont "sf-compact" "SF Compact Fonts.pkg" fontSources.sf-compact) + (makeAppleFont "sf-mono" "SF Mono Fonts.pkg" fontSources.sf-mono) + (makeAppleFont "sf-arabic" "SF Arabic Fonts.pkg" fontSources.sf-arabic) + (makeAppleFont "ny" "NY Fonts.pkg" fontSources.ny) + appleColorEmoji + ]; + fontconfig = { + defaultFonts = { + serif = [ "SF Pro" ]; + sansSerif = [ "SF Pro" ]; + monospace = [ "JetBrainsMono Nerd Font Mono" ]; + emoji = [ "Apple Color Emoji" ]; + }; + useEmbeddedBitmaps = true; + }; + }; } +