Environment variables

From NixOS Wiki
Revision as of 16:36, 8 July 2021 by imported>Yuu (→‎Description)

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

While checking the configuration values, for instance with nixos-option environment.sessionVariables, it might be found that Nix is correctly parsing the curly braces.

Value:
{
  ...
  ENVIRONMENT_VARIABLE = "${ENVIRONMENT_VARIABLE}/path/to";
  ...
}

This indicates that the curly braces are getting removed at a later stage.

Solution or workaround

Unknown.