programs: allow programs to ship system-level environment variables

This commit is contained in:
2023-06-27 10:24:48 +00:00
parent b90bc1058d
commit 40ec4d6ce0

View File

@@ -110,6 +110,11 @@ let
the secret will have same owner as the user under which the program is enabled. the secret will have same owner as the user under which the program is enabled.
''; '';
}; };
env = mkOption {
type = types.attrsOf types.str;
default = {};
description = "environment variables to set when this program is enabled";
};
configOption = mkOption { configOption = mkOption {
type = types.raw; type = types.raw;
default = mkOption { default = mkOption {
@@ -137,10 +142,11 @@ let
message = ''program "${sug}" referenced by "${name}", but not defined''; message = ''program "${sug}" referenced by "${name}", but not defined'';
}) p.suggestedPrograms; }) p.suggestedPrograms;
# conditionally add to system PATH # conditionally add to system PATH and env
environment.systemPackages = optional environment = lib.optionalAttrs p.enableFor.system {
(p.package != null && p.enableFor.system) systemPackages = lib.optional (p.package != null) p.package;
p.package; variables = p.env;
};
# conditionally add to user(s) PATH # conditionally add to user(s) PATH
users.users = mapAttrs (user: en: { users.users = mapAttrs (user: en: {
@@ -196,6 +202,7 @@ in
take = f: { take = f: {
assertions = f.assertions; assertions = f.assertions;
environment.systemPackages = f.environment.systemPackages; environment.systemPackages = f.environment.systemPackages;
environment.variables = f.environment.variables;
users.users = f.users.users; users.users = f.users.users;
sane.users = f.sane.users; sane.users = f.sane.users;
sops.secrets = f.sops.secrets; sops.secrets = f.sops.secrets;