Environment variables

From NixOS Wiki

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.