diff options
author | Olli Helenius <liff@iki.fi> | 2019-03-22 13:47:49 +0200 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2019-03-24 17:23:50 +0100 |
commit | 1fdb16866b377b7365768c86c9b4ac45e30bca6c (patch) | |
tree | c61a8dc77883ef612588d9e52a9f7e02781f7f48 /modules/systemd.nix | |
parent | 6ebf14143aee10d8a62eb660bb56ebed3ed674e2 (diff) |
systemd: add support for session variables
Via environment.d(5).
Diffstat (limited to '')
-rw-r--r-- | modules/systemd.nix | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/modules/systemd.nix b/modules/systemd.nix index f7325b41f1a..051aee94180 100644 --- a/modules/systemd.nix +++ b/modules/systemd.nix @@ -12,7 +12,8 @@ let || cfg.sockets != {} || cfg.targets != {} || cfg.timers != {} - || cfg.paths != {}; + || cfg.paths != {} + || cfg.sessionVariables != {}; toSystemdIni = generators.toINI { mkKeyValue = key: value: @@ -85,6 +86,13 @@ let } ''; + sessionVariables = mkIf (cfg.sessionVariables != {}) { + "environment.d/10-home-manager.conf".text = + concatStringsSep "\n" ( + mapAttrsToList (n: v: "${n}=${toString v}") cfg.sessionVariables + ) + "\n"; + }; + in { @@ -156,6 +164,20 @@ in start is considered successful. ''; }; + + sessionVariables = mkOption { + default = {}; + type = with types; attrsOf (either int str); + example = { EDITOR = "vim"; }; + description = '' + Environment variables that will be set for the user session. + The variable values must be as described in + <citerefentry> + <refentrytitle>environment.d</refentrytitle> + <manvolnum>5</manvolnum> + </citerefentry>. + ''; + }; }; }; @@ -168,7 +190,7 @@ in let names = concatStringsSep ", " ( attrNames ( - cfg.services // cfg.sockets // cfg.targets // cfg.timers // cfg.paths + cfg.services // cfg.sockets // cfg.targets // cfg.timers // cfg.paths // cfg.sessionVariables ) ); in @@ -180,8 +202,8 @@ in # If we run under a Linux system we assume that systemd is # available, in particular we assume that systemctl is in PATH. (mkIf pkgs.stdenv.isLinux { - xdg.configFile = - listToAttrs ( + xdg.configFile = mkMerge [ + (listToAttrs ( (buildServices "service" cfg.services) ++ (buildServices "socket" cfg.sockets) @@ -191,7 +213,10 @@ in (buildServices "timer" cfg.timers) ++ (buildServices "path" cfg.paths) - ); + )) + + sessionVariables + ]; # Run systemd service reload if user is logged in. If we're # running this from the NixOS module then XDG_RUNTIME_DIR is not |