programs: fix so environment variables make it onto user sessions

This commit is contained in:
Colin 2024-01-27 09:02:55 +00:00
parent 27f3b2bd76
commit d54f8b1e93
2 changed files with 11 additions and 5 deletions

View File

@ -307,7 +307,8 @@ let
# conditionally add to system PATH and env
environment = lib.optionalAttrs (p.enabled && p.enableFor.system) {
systemPackages = lib.optional (p.package != null) p.package;
variables = p.env;
# sessionVariables are set by PAM, as opposed to environment.variables which goes in /etc/profile
sessionVariables = p.env;
};
# conditionally add to user(s) PATH
@ -392,7 +393,7 @@ in
take = f: {
assertions = f.assertions;
environment.systemPackages = f.environment.systemPackages;
environment.variables = f.environment.variables;
environment.sessionVariables = f.environment.sessionVariables;
users.users = f.users.users;
sane.sandboxProfiles = f.sane.sandboxProfiles;
sane.users = f.sane.users;

View File

@ -100,14 +100,19 @@ let
# homeMode defaults to 700; notice: no leading 0
mode = "0" + nixConfig.users.users."${name}".homeMode;
};
fs.".profile".symlink.text =
# ~/.config/environment.d/*.conf is added to systemd user units.
# - format: lines of: `key=value`
# ~/.profile is added by *some* login shells.
# - format: lines of: `export key="value"`
# see: `man environment.d`
fs.".config/environment.d/10-sane-nixos-users.conf".symlink.text =
let
env = lib.mapAttrsToList
(key: value: ''export ${key}="${value}"'')
(key: value: ''${key}=${value}'')
config.environment
;
in
lib.concatStringsSep "\n" env;
lib.concatStringsSep "\n" env + "\n";
}
{
fs = lib.mkMerge (mapAttrsToList (serviceName: value: