nushell: allow arbitrary environment variables
This commit is contained in:
parent
edf15f1549
commit
628b15d275
3 changed files with 47 additions and 9 deletions
|
|
@ -145,11 +145,24 @@ in {
|
|||
};
|
||||
|
||||
environmentVariables = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
type = types.attrsOf hm.types.nushellValue;
|
||||
default = { };
|
||||
example = { FOO = "BAR"; };
|
||||
example = literalExpression ''
|
||||
{
|
||||
FOO = "BAR";
|
||||
LIST_VALUE = [ "foo" "bar" ];
|
||||
NU_LIB_DIRS = lib.concatStringsSep ":" [ ./scripts ];
|
||||
PROMPT_COMMAND = lib.hm.nushell.mkNushellInline '''{|| "> "}''';
|
||||
ENV_CONVERSIONS.PATH = {
|
||||
from_string = lib.hm.nushell.mkNushellInline "{|s| $s | split row (char esep) }";
|
||||
to_string = lib.hm.nushell.mkNushellInline "{|v| $v | str join (char esep) }";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
An attribute set that maps an environment variable to a shell interpreted string.
|
||||
Environment variables to be set.
|
||||
|
||||
Inline values can be set with `lib.hm.nushell.mkNushellInline`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
|
@ -173,9 +186,11 @@ in {
|
|||
})
|
||||
|
||||
(let
|
||||
envVarsStr = concatStringsSep "\n"
|
||||
(mapAttrsToList (k: v: "$env.${k} = ${v}") cfg.environmentVariables);
|
||||
in mkIf (cfg.envFile != null || cfg.extraEnv != "" || envVarsStr != "") {
|
||||
hasEnvVars = cfg.environmentVariables != { };
|
||||
envVarsStr = ''
|
||||
load-env ${hm.nushell.toNushell { } cfg.environmentVariables}
|
||||
'';
|
||||
in mkIf (cfg.envFile != null || cfg.extraEnv != "" || hasEnvVars) {
|
||||
"${configDir}/env.nu".text = mkMerge [
|
||||
(mkIf (cfg.envFile != null) cfg.envFile.text)
|
||||
cfg.extraEnv
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue