Fix type of various sessionVariables options
Unfortunately, using `attrsOf` is not possible since it results in too
eager evaluation. In particular, the
home.sessionVariables = {
FOO = "Hello";
BAR = "${config.home.sessionVariables.FOO} World!";
};
example will cause an infinite recursion.
This commit restores the option type of
- `home.sessionVariables`,
- `pam.sessionVariables`,
- `programs.bash.sessionVariables`, and
- `programs.zsh.sessionVariables`
to `attrs`. It also adds test cases for the above options to avoid
regressions.
Fixes #659
This commit is contained in:
parent
c5f230e682
commit
b6e613c771
16 changed files with 133 additions and 13 deletions
3
tests/modules/programs/bash/default.nix
Normal file
3
tests/modules/programs/bash/default.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
bash-session-variables = ./session-variables.nix;
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# -*- mode: sh -*-
|
||||
|
||||
. "@homeDirectory@/.nix-profile/etc/profile.d/hm-session-vars.sh"
|
||||
|
||||
export V1="v1"
|
||||
export V2="v2-v1"
|
||||
|
||||
|
||||
28
tests/modules/programs/bash/session-variables.nix
Normal file
28
tests/modules/programs/bash/session-variables.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
config = {
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
|
||||
sessionVariables = {
|
||||
V1 = "v1";
|
||||
V2 = "v2-${config.programs.bash.sessionVariables.V1}";
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileExists home-files/.profile
|
||||
assertFileContent \
|
||||
home-files/.profile \
|
||||
${
|
||||
pkgs.substituteAll {
|
||||
src = ./session-variables-expected.txt;
|
||||
inherit (config.home) homeDirectory;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue