programs: allow programs to ship system-level environment variables
This commit is contained in:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user