Environment variables: Difference between revisions
imported>Yuu |
imported>Milahu add section: nix-build sandbox |
||
Line 47: | Line 47: | ||
==== Solution or workaround ==== | ==== Solution or workaround ==== | ||
Unknown. | Unknown. | ||
== nix-build sandbox == | |||
Compared to a normal shell environment, in a nix-build sandbox, | |||
Nix will set some environment variables, for example: | |||
<pre> | |||
NIX_BINTOOLS=/nix/store/lvg99f3zni6zw4cvlci6wpmzlls0nsn4-binutils-wrapper-2.38 | |||
NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 | |||
NIX_BUILD_CORES=3 | |||
NIX_BUILD_TOP=/build | |||
NIX_CC=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0 | |||
NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 | |||
NIX_CFLAGS_COMPILE= -frandom-seed=8cnrgjjflj | |||
NIX_ENFORCE_NO_NATIVE=1 | |||
NIX_ENFORCE_PURITY=1 | |||
NIX_HARDENING_ENABLE=fortify stackprotector pic strictoverflow format relro bindnow | |||
NIX_INDENT_MAKE=1 | |||
NIX_LDFLAGS=-rpath /nix/store/8cnrgjjflj3dyppz299w50l9yydgnqkp-x/lib64 -rpath /nix/store/8cnrgjjflj3dyppz299w50l9yydgnqkp-x/lib | |||
NIX_LOG_FD=2 | |||
NIX_SSL_CERT_FILE=/no-cert-file.crt | |||
NIX_STORE=/nix/store | |||
</pre> |
Revision as of 14:11, 30 June 2022
Configuration
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
pam_env(sudo:session): Expandable variables must be wrapped in {} <$VARIABLE/path/to>
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 {} <$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:
{
...
VARIABLE = "${VARIABLE}/path/to";
...
}
This indicates that the curly braces are getting removed at a later stage.
Solution or workaround
Unknown.
nix-build sandbox
Compared to a normal shell environment, in a nix-build sandbox, Nix will set some environment variables, for example:
NIX_BINTOOLS=/nix/store/lvg99f3zni6zw4cvlci6wpmzlls0nsn4-binutils-wrapper-2.38 NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 NIX_BUILD_CORES=3 NIX_BUILD_TOP=/build NIX_CC=/nix/store/61zfi5pmhb0d91422f186x26v7b52y5k-gcc-wrapper-11.3.0 NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 NIX_CFLAGS_COMPILE= -frandom-seed=8cnrgjjflj NIX_ENFORCE_NO_NATIVE=1 NIX_ENFORCE_PURITY=1 NIX_HARDENING_ENABLE=fortify stackprotector pic strictoverflow format relro bindnow NIX_INDENT_MAKE=1 NIX_LDFLAGS=-rpath /nix/store/8cnrgjjflj3dyppz299w50l9yydgnqkp-x/lib64 -rpath /nix/store/8cnrgjjflj3dyppz299w50l9yydgnqkp-x/lib NIX_LOG_FD=2 NIX_SSL_CERT_FILE=/no-cert-file.crt NIX_STORE=/nix/store