diff --git a/modules/default.nix b/modules/default.nix index 340cfefeb..57f5c5c27 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -27,6 +27,7 @@ let ./services/udiskie.nix ./services/xscreensaver.nix ./systemd.nix + ./xresources.nix ./xsession.nix ]; diff --git a/modules/xresources.nix b/modules/xresources.nix new file mode 100644 index 000000000..43e8ff1c8 --- /dev/null +++ b/modules/xresources.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.xresources; + + formatLine = n: v: + let + v' = + if isBool v then (if v then "true" else "false") + else toString v; + in + "${n}: ${v'}"; + +in + +{ + options = { + xresources.properties = mkOption { + type = types.nullOr types.attrs; + default = null; + example = '' + { + "XTerm*faceName" = "dejavu sans mono"; + "Emacs*toolBar" = 0; + } + ''; + description = '' + X server resources that should be set. If null, then this + feature is disabled and no ~/.Xresources link is produced. + ''; + }; + }; + + config = mkIf (cfg.properties != null) { + home.file.".Xresources".text = + concatStringsSep "\n" ( + mapAttrsToList formatLine cfg.properties + ); + }; +}