summaryrefslogtreecommitdiffstats
path: root/tv/3modules/Xresources.nix
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2019-04-28 14:18:00 +0200
committerlassulus <lassulus@lassul.us>2019-04-28 14:18:00 +0200
commit915e4b843790d3e71bdccea124d4832ca042e456 (patch)
treea375c5be89afe8ff04ffa4f1e45c8bcd388590af /tv/3modules/Xresources.nix
parent710609af31b72abf805370f3fe322daa41c1a55b (diff)
parent73e89ece549bad03d97326cc94e9ba59a762d298 (diff)
Merge remote-tracking branch 'ni/master'
Diffstat (limited to 'tv/3modules/Xresources.nix')
-rw-r--r--tv/3modules/Xresources.nix39
1 files changed, 39 insertions, 0 deletions
diff --git a/tv/3modules/Xresources.nix b/tv/3modules/Xresources.nix
new file mode 100644
index 000000000..983b8bc2e
--- /dev/null
+++ b/tv/3modules/Xresources.nix
@@ -0,0 +1,39 @@
+with import <stockholm/lib>;
+{ config, pkgs, ... }: let
+ cfg = {
+ enable = config.tv.Xresources != {};
+ user = config.krebs.build.user;
+ };
+in {
+ options.tv.Xresources = mkOption {
+ default = {};
+ type = types.attrsOf types.str;
+ };
+ config = {
+ nixpkgs.overlays = singleton (self: super: {
+ tv = super.tv or {} // {
+ Xresources =
+ self.writeText "Xresources"
+ (concatStrings (mapAttrsToList (name: value: /* xdefaults */ ''
+ ${name}: ${value}
+ '') config.tv.Xresources));
+ };
+ });
+ systemd.services.${if cfg.enable then "Xresources" else null} = {
+ wantedBy = [ "graphical.target" ];
+ after = [ "xserver.service" ];
+ requires = [ "xserver.service" ];
+ environment = {
+ DISPLAY = ":${toString config.services.xserver.display}";
+ };
+ serviceConfig = {
+ ExecStart = "${pkgs.xorg.xrdb}/bin/xrdb ${pkgs.tv.Xresources}";
+ RemainAfterExit = true;
+ SyslogIdentifier = "Xresources";
+ Type = "oneshot";
+ User = cfg.user.name;
+ WorkingDirectory = cfg.user.home;
+ };
+ };
+ };
+}