2020-07-23 11:44:54 +03:00
# Common Environment Variables
Most Nix commands interpret the following environment variables:
2022-05-25 13:36:46 +03:00
- [`IN_NIX_SHELL`]{#env-IN_NIX_SHELL}\
2020-07-23 11:44:54 +03:00
Indicator that tells if the current environment was set up by
2022-05-25 18:14:45 +03:00
`nix-shell` . It can have the values `pure` or `impure` .
2020-07-23 11:44:54 +03:00
2022-05-25 13:36:46 +03:00
- [`NIX_PATH`]{#env-NIX_PATH}\
2022-12-12 13:43:44 +02:00
A colon-separated list of directories used to look up the location of Nix
2022-12-12 13:54:15 +02:00
expressions using [paths ](../language/values.md#type-path )
enclosed in angle brackets (i.e., `<path>` ),
2022-12-12 13:46:54 +02:00
e.g. `/home/eelco/Dev:/etc/nixos` . It can be extended using the
2023-01-03 11:11:06 +02:00
[`-I` option ](./opt-common.md#opt-I ).
2020-07-23 11:44:54 +03:00
2022-05-25 13:36:46 +03:00
- [`NIX_IGNORE_SYMLINK_STORE`]{#env-NIX_IGNORE_SYMLINK_STORE}\
2020-07-23 11:44:54 +03:00
Normally, the Nix store directory (typically `/nix/store` ) is not
allowed to contain any symlink components. This is to prevent
“impure” builds. Builders sometimes “canonicalise” paths by
resolving all symlink components. Thus, builds on different machines
(with `/nix/store` resolving to different locations) could yield
different results. This is generally not a problem, except when
builds are deployed to machines where `/nix/store` resolves
differently. If you are sure that you’ re not going to do that, you
can set `NIX_IGNORE_SYMLINK_STORE` to `1` .
2021-06-04 03:59:39 +03:00
2020-07-23 11:44:54 +03:00
Note that if you’ re symlinking the Nix store so that you can put it
on another file system than the root file system, on Linux you’ re
better off using `bind` mount points, e.g.,
2020-07-31 16:43:25 +03:00
```console
$ mkdir /nix
$ mount -o bind /mnt/otherdisk/nix /nix
```
2021-06-04 03:59:39 +03:00
2020-07-23 11:44:54 +03:00
Consult the mount 8 manual page for details.
2022-05-25 13:36:46 +03:00
- [`NIX_STORE_DIR`]{#env-NIX_STORE_DIR}\
2020-07-23 11:44:54 +03:00
Overrides the location of the Nix store (default `prefix/store` ).
2022-05-25 13:36:46 +03:00
- [`NIX_DATA_DIR`]{#env-NIX_DATA_DIR}\
2020-07-23 11:44:54 +03:00
Overrides the location of the Nix static data directory (default
`prefix/share` ).
2022-05-25 13:36:46 +03:00
- [`NIX_LOG_DIR`]{#env-NIX_LOG_DIR}\
2020-07-23 11:44:54 +03:00
Overrides the location of the Nix log directory (default
`prefix/var/log/nix` ).
2022-05-25 13:36:46 +03:00
- [`NIX_STATE_DIR`]{#env-NIX_STATE_DIR}\
2020-07-23 11:44:54 +03:00
Overrides the location of the Nix state directory (default
`prefix/var/nix` ).
2022-05-25 13:36:46 +03:00
- [`NIX_CONF_DIR`]{#env-NIX_CONF_DIR}\
2020-07-23 11:44:54 +03:00
Overrides the location of the system Nix configuration directory
(default `prefix/etc/nix` ).
2022-05-25 13:36:46 +03:00
- [`NIX_CONFIG`]{#env-NIX_CONFIG}\
2020-10-20 00:08:50 +03:00
Applies settings from Nix configuration from the environment.
The content is treated as if it was read from a Nix configuration file.
Settings are separated by the newline character.
2022-05-25 13:36:46 +03:00
- [`NIX_USER_CONF_FILES`]{#env-NIX_USER_CONF_FILES}\
2020-07-23 11:44:54 +03:00
Overrides the location of the user Nix configuration files to load
from (defaults to the XDG spec locations). The variable is treated
as a list separated by the `:` token.
2022-05-25 13:36:46 +03:00
- [`TMPDIR`]{#env-TMPDIR}\
2020-07-23 11:44:54 +03:00
Use the specified directory to store temporary files. In particular,
this includes temporary build directories; these can take up
substantial amounts of disk space. The default is `/tmp` .
2022-05-25 13:36:46 +03:00
- [`NIX_REMOTE`]{#env-NIX_REMOTE}\
2020-07-23 11:44:54 +03:00
This variable should be set to `daemon` if you want to use the Nix
daemon to execute Nix operations. This is necessary in [multi-user
2020-07-24 16:46:16 +03:00
Nix installations](../installation/multi-user.md). If the Nix
daemon's Unix socket is at some non-standard path, this variable
should be set to `unix://path/to/socket` . Otherwise, it should be
left unset.
2020-07-23 11:44:54 +03:00
2022-05-25 13:36:46 +03:00
- [`NIX_SHOW_STATS`]{#env-NIX_SHOW_STATS}\
2020-07-23 11:44:54 +03:00
If set to `1` , Nix will print some evaluation statistics, such as
the number of values allocated.
2022-05-25 13:36:46 +03:00
- [`NIX_COUNT_CALLS`]{#env-NIX_COUNT_CALLS}\
2020-07-23 11:44:54 +03:00
If set to `1` , Nix will print how often functions were called during
Nix expression evaluation. This is useful for profiling your Nix
expressions.
2022-05-25 13:36:46 +03:00
- [`GC_INITIAL_HEAP_SIZE`]{#env-GC_INITIAL_HEAP_SIZE}\
2020-07-23 11:44:54 +03:00
If Nix has been configured to use the Boehm garbage collector, this
variable sets the initial size of the heap in bytes. It defaults to
384 MiB. Setting it to a low value reduces memory consumption, but
will increase runtime due to the overhead of garbage collection.
2021-11-17 22:35:21 +02:00
## XDG Base Directory
New Nix commands conform to the [XDG Base Directory Specification], and use the following environment variables to determine locations of various state and configuration files:
- [`XDG_CONFIG_HOME`]{#env-XDG_CONFIG_HOME} (default `~/.config` )
- [`XDG_STATE_HOME`]{#env-XDG_STATE_HOME} (default `~/.local/state` )
- [`XDG_CACHE_HOME`]{#env-XDG_CACHE_HOME} (default `~/.cache` )
Classic Nix commands can also be made to follow this standard using the [`use-xdg-base-directories`] configuration option.
[XDG Base Directory Specification]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
[`use-xdg-base-directories`]: ../command-ref/conf-file.md#conf-use-xdg-base-directories