nushell: add envVars attribute (#3930)

This commit is contained in:
Yt 2023-05-03 18:12:21 -04:00 committed by GitHub
parent 0e4c33d760
commit 788777b536
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 1 deletions

View file

@ -121,6 +121,15 @@ in {
this option) to command strings or directly to build outputs. this option) to command strings or directly to build outputs.
''; '';
}; };
environmentVariables = mkOption {
type = types.attrsOf types.str;
default = { };
example = { FOO = "BAR"; };
description = ''
An attribute set that maps an environment variable to a shell interpreted string.
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -141,10 +150,15 @@ in {
]; ];
}) })
(mkIf (cfg.envFile != null || cfg.extraEnv != "") { (let
envVarsStr = concatStringsSep "\n"
(mapAttrsToList (k: v: "let-env ${k} = ${v}")
cfg.environmentVariables);
in mkIf (cfg.envFile != null || cfg.extraEnv != "" || envVarsStr != "") {
"${configDir}/env.nu".text = mkMerge [ "${configDir}/env.nu".text = mkMerge [
(mkIf (cfg.envFile != null) cfg.envFile.text) (mkIf (cfg.envFile != null) cfg.envFile.text)
cfg.extraEnv cfg.extraEnv
envVarsStr
]; ];
}) })
]; ];

View file

@ -1,2 +1,4 @@
let-env FOO = 'BAR' let-env FOO = 'BAR'
let-env BAR = $'(echo BAZ)'

View file

@ -20,6 +20,8 @@
"lsname" = "(ls | get name)"; "lsname" = "(ls | get name)";
"ll" = "ls -a"; "ll" = "ls -a";
}; };
environmentVariables = { BAR = "$'(echo BAZ)'"; };
}; };
test.stubs.nushell = { }; test.stubs.nushell = { };