zaphyra's git: nixfiles

zaphyra's nixfiles

commit db22869b75338572c41af92a5bc0068052ed2d0d
parent 8591c7072108638b331a33511bbe45c8bd1d4a2e
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Mon, 29 Sep 2025 18:56:16 +0200

config/nixos/modules/fonts: move most fonts to home-manager config
4 files changed, 94 insertions(+), 8 deletions(-)
diff --git a/config/home-manager/zaphyra/configure/fonts.nix b/config/home-manager/zaphyra/configure/fonts.nix
@@ -0,0 +1,90 @@
+{ lib, pkgs, ... }:
+
+let
+  adwaita-fonts-nerd = pkgs.stdenvNoCC.mkDerivation {
+    pname = "adwaita-fonts-nerd";
+    version = "1.8.0-${pkgs.nerd-font-patcher.version}";
+
+    src = pkgs.adwaita-fonts;
+
+    nativeBuildInputs = [
+      pkgs.nerd-font-patcher
+    ]
+    ++ (with pkgs.python3Packages; [
+      python
+      fontforge
+    ]);
+
+    buildPhase = ''
+      runHook preBuild
+
+      mkdir -p build/
+
+      for f in share/fonts/Adwaita/*; do
+        nerd-font-patcher $f --complete --no-progressbars --outputdir build
+        # note: this will *not* return an error exit code on failure, but instead
+        # write out a corrupt file, so an additional check phase is required
+      done
+
+      runHook postBuild
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      runHook preCheck
+
+      # Try to open each font. If a corrupt font was written out, this should fail
+      for f in build/*; do
+          fontforge - <<EOF
+      try:
+        fontforge.open(''\'''${f}')
+      except:
+        exit(1)
+      EOF
+      done
+
+      runHook postCheck
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/fonts/opentype/
+      install -Dm 444 build/* $out/share/fonts/opentype/
+
+      runHook postInstall
+    '';
+
+    meta = with lib; {
+      homepage = "https://github.com/ryanoasis/nerd-fonts";
+      description = "Adwaita Fonts patched with Nerd Fonts icons";
+      license = licenses.ofl;
+      platforms = platforms.all;
+    };
+  };
+
+in
+{
+
+  fonts.fontconfig = {
+    enable = true;
+    defaultFonts = {
+      serif = [ "Adwaita Sans" ];
+      sansSerif = [ "Adwaita Sans" ];
+      monospace = [ "Adwaita Mono" ];
+      emoji = [ "Noto Color Emoji" ];
+    };
+  };
+
+  home.packages = with pkgs; [
+    adwaita-fonts-nerd
+    liberation_ttf
+    ttf_bitstream_vera
+    noto-fonts
+    noto-fonts-emoji
+    nerd-fonts.symbols-only
+    fira-code
+    fira-mono
+  ];
+
+}
diff --git a/config/home-manager/zaphyra/configure/gnome.nix b/config/home-manager/zaphyra/configure/gnome.nix
@@ -16,6 +16,8 @@ in
   manual.html.enable = true;
 
   imports = with homeManagerModules.zaphyra; [
+    configure.fonts
+
     services.gnome-keyring
   ];
 
diff --git a/config/home-manager/zaphyra/configure/niri.nix b/config/home-manager/zaphyra/configure/niri.nix
@@ -12,6 +12,8 @@
   imports =
     with homeManagerModules.zaphyra;
     [
+      configure.fonts
+
       services.dssd
       services.batsignal
       services.wpaperd
diff --git a/config/nixos/modules/font.nix b/config/nixos/modules/font.nix
@@ -26,15 +26,7 @@ in
       enableDefaultPackages = true;
       packages = with pkgs; [
         dejavu_fonts
-        liberation_ttf
-        ttf_bitstream_vera
-        noto-fonts
-        noto-fonts-emoji
-        fira-code
-        fira-mono
         meslo-lgs-nf
-        font-awesome
-        nerd-fonts.symbols-only
       ];
     };
   };