From f17695133828debe6e75c50968fc1e6da40e6e5b Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Mon, 15 Dec 2025 21:41:25 -0600 Subject: avoid rebuilding st in themed-st by creating a new derivation instead of overriding the unthemed derivation --- home-manager/theme-st.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'home-manager') diff --git a/home-manager/theme-st.nix b/home-manager/theme-st.nix index 01c08ec..0a2cf34 100644 --- a/home-manager/theme-st.nix +++ b/home-manager/theme-st.nix @@ -1,20 +1,24 @@ { config, lib, pkgs, ... }: let cfg = config.programs._st; toString = x: if lib.isBool x then (if x then "true" else "false") else builtins.toString x; - generateXftFontString = name: attrs: + # http://freedesktop.org/software/fontconfig/fontconfig-user.html + generateFontConfigString = name: attrs: name + lib.optionalString (attrs != {}) ( ":" + lib.concatStringsSep ":" ( lib.mapAttrsToList (key: value: "${key}=${toString value}") attrs ) ) ; - themed-st = pkgs.st.overrideAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pkgs.makeWrapper ]; - postInstall = (old.postInstall or "") + '' - wrapProgram $out/bin/st \ - --add-flags '-f"${generateXftFontString cfg.font.name cfg.font.attrs}"' + themed-st = pkgs.stdenv.mkDerivation { + name = "themed-st"; + dontUnpack = true; + buildInputs = [ pkgs.makeWrapper ]; + installPhase = '' + mkdir -p $out/bin + makeWrapper ${pkgs.st}/bin/st $out/bin/st \ + --add-flags '-f"${generateFontConfigString cfg.font.name cfg.font.attrs}"' ''; - }); + }; in { options.programs._st = { enable = lib.mkEnableOption "enables theming st with home manager"; -- cgit v1.2.3