Environment variables
Defining environment variables
Environment variables can be set with environment.variables
, environment.sessionVariables
, and environment.profileRelativeSessionVariables
. For example, for the XDG Base Directory Specification, the following could be set to /etc/nixos/configuration.nix
:
{
# ...
environment.sessionVariables = rec {
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
PATH = [
"\${XDG_BIN_HOME}"
];
};
# ...
}
Troubleshooting
sudo[3424]: pam_env(sudo:session): Expandable variables must be wrapped in {} <$ENVIRONMENT_VARIABLE/path/to> - ignoring
Description
Error logs may be found with journalctl -xb -p3
regarding the no presence of curly braces {}
for variable expansion.
sudo[3424]: pam_env(sudo:session): Expandable variables must be wrapped in {} <$ENVIRONMENT_VARIABLE/path/to> - ignoring
<syntaxhighlight lang="shell">
While checking the configuration values, for instance with <code>nixos-option environment.sessionVariables</code>, it might be found that Nix is correctly parsing the curly braces.
<syntaxhighlight lang="nix">
Value:
{
...
ENVIRONMENT_VARIABLE = "${ENVIRONMENT_VARIABLE}/path/to";
...
}
This indicates that the curly braces are getting removed at a later stage.
Solution or workaround
Unknown.