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:
Robert Helgesson 2019-04-27 00:21:18 +02:00
parent c5f230e682
commit b6e613c771
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
16 changed files with 133 additions and 13 deletions

View file

@ -0,0 +1,3 @@
{
bash-session-variables = ./session-variables.nix;
}

View file

@ -0,0 +1,8 @@
# -*- mode: sh -*-
. "@homeDirectory@/.nix-profile/etc/profile.d/hm-session-vars.sh"
export V1="v1"
export V2="v2-v1"

View 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;
}
}
'';
};
}