aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/src/command-ref/env-common.md
blob: 9d3d0caf7eab4aac602910097f3f553dbc36d6b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Common Environment Variables

Most Nix commands interpret the following environment variables:

  - [`IN_NIX_SHELL`]{#env-IN_NIX_SHELL}\
    Indicator that tells if the current environment was set up by
    `nix-shell`. It can have the values `pure` or `impure`.

  - [`NIX_PATH`]{#env-NIX_PATH}\
    A colon-separated list of directories used to look up Nix
    expressions enclosed in angle brackets (i.e., `<path>`). For
    instance, the value

        /home/eelco/Dev:/etc/nixos

    will cause Nix to look for paths relative to `/home/eelco/Dev` and
    `/etc/nixos`, in this order. It is also possible to match paths
    against a prefix. For example, the value

        nixpkgs=/home/eelco/Dev/nixpkgs-branch:/etc/nixos

    will cause Nix to search for `<nixpkgs/path>` in
    `/home/eelco/Dev/nixpkgs-branch/path` and `/etc/nixos/nixpkgs/path`.

    If a path in the Nix search path starts with `http://` or
    `https://`, it is interpreted as the URL of a tarball that will be
    downloaded and unpacked to a temporary location. The tarball must
    consist of a single top-level directory. For example, setting
    `NIX_PATH` to

        nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz

    tells Nix to download and use the current contents of the
    `master` branch in the `nixpkgs` repository.

    The URLs of the tarballs from the official nixos.org channels (see
    [the manual for `nix-channel`](nix-channel.md)) can be abbreviated
    as `channel:<channel-name>`.  For instance, the following two
    values of `NIX_PATH` are equivalent:

        nixpkgs=channel:nixos-21.05
        nixpkgs=https://nixos.org/channels/nixos-21.05/nixexprs.tar.xz

    The Nix search path can also be extended using the `-I` option to
    many Nix commands, which takes precedence over `NIX_PATH`.

    If `NIX_PATH` environment variable is not set, Nix will fall back to the following list in impure and unrestricted evaluation mode:

    1. `$HOME/.nix-defexpr/channels`
    2. `/nix/var/nix/profiles/per-user/root/channels/nixpkgs`
    3. `/nix/var/nix/profiles/per-user/root/channels`

  - [`NIX_IGNORE_SYMLINK_STORE`]{#env-NIX_IGNORE_SYMLINK_STORE}\
    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`.

    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.,

    ```console
    $ mkdir /nix
    $ mount -o bind /mnt/otherdisk/nix /nix
    ```

    Consult the mount 8 manual page for details.

  - [`NIX_STORE_DIR`]{#env-NIX_STORE_DIR}\
    Overrides the location of the Nix store (default `prefix/store`).

  - [`NIX_DATA_DIR`]{#env-NIX_DATA_DIR}\
    Overrides the location of the Nix static data directory (default
    `prefix/share`).

  - [`NIX_LOG_DIR`]{#env-NIX_LOG_DIR}\
    Overrides the location of the Nix log directory (default
    `prefix/var/log/nix`).

  - [`NIX_STATE_DIR`]{#env-NIX_STATE_DIR}\
    Overrides the location of the Nix state directory (default
    `prefix/var/nix`).

  - [`NIX_CONF_DIR`]{#env-NIX_CONF_DIR}\
    Overrides the location of the system Nix configuration directory
    (default `prefix/etc/nix`).

  - [`NIX_CONFIG`]{#env-NIX_CONFIG}\
    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.

  - [`NIX_USER_CONF_FILES`]{#env-NIX_USER_CONF_FILES}\
    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.

  - [`TMPDIR`]{#env-TMPDIR}\
    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`.

  - [`NIX_REMOTE`]{#env-NIX_REMOTE}\
    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
    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.

  - [`NIX_SHOW_STATS`]{#env-NIX_SHOW_STATS}\
    If set to `1`, Nix will print some evaluation statistics, such as
    the number of values allocated.

  - [`NIX_COUNT_CALLS`]{#env-NIX_COUNT_CALLS}\
    If set to `1`, Nix will print how often functions were called during
    Nix expression evaluation. This is useful for profiling your Nix
    expressions.

  - [`GC_INITIAL_HEAP_SIZE`]{#env-GC_INITIAL_HEAP_SIZE}\
    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.