summaryrefslogtreecommitdiff
path: root/home-manager
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2025-12-15 21:41:25 -0600
committerTim Keller <tjk@tjkeller.xyz>2025-12-15 21:41:25 -0600
commitf17695133828debe6e75c50968fc1e6da40e6e5b (patch)
tree992b53efa6f6c5a8ba7fc74021d81d07002a48ab /home-manager
parent5fe4339996ce84590656a67747e33dd3d51f3ea2 (diff)
downloadnixos-f17695133828debe6e75c50968fc1e6da40e6e5b.tar.xz
nixos-f17695133828debe6e75c50968fc1e6da40e6e5b.zip
avoid rebuilding st in themed-st by creating a new derivation instead of overriding the unthemed derivation
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/theme-st.nix18
1 files changed, 11 insertions, 7 deletions
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";