Consolidate all fonts config

This commit is contained in:
Bart van der Braak 2025-03-16 12:29:47 +01:00
parent 89889a0010
commit 8d648cafae
4 changed files with 95 additions and 87 deletions

View file

@ -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

View file

@ -18,7 +18,7 @@
./packages.nix
./services.nix
./modules/bootloader.nix
./modules/apple-fonts.nix
./modules/fonts.nix
];
};
qemu = nixpkgs.lib.nixosSystem {

View file

@ -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)
];
}

View file

@ -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;
};
};
}