Provided by: nix-bin_2.8.0-1_amd64 bug

Name

       nix.conf - Nix configuration file

Description

       By default Nix reads settings from the following places:

       • The  system-wide  configuration file sysconfdir/nix/nix.conf (i.e.  /etc/nix/nix.conf on
         most systems), or $NIX_CONF_DIR/nix.conf if NIX_CONF_DIR is set. Values loaded  in  this
         file are not forwarded to the Nix daemon. The client assumes that the daemon has already
         loaded them.

       • If NIX_USER_CONF_FILES is set, then each path separated by : will be loaded  in  reverse
         order.

         Otherwise it will look for nix/nix.conf files in XDG_CONFIG_DIRS and XDG_CONFIG_HOME. If
         unset,  XDG_CONFIG_DIRS  defaults  to  /etc/xdg,   and   XDG_CONFIG_HOME   defaults   to
         $HOME/.config       as       per       XDG       Base       Directory      Specification
         (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).

       • If NIX_CONFIG is set, its contents is treated as the contents of a configuration file.

       The configuration files consist of name = value pairs, one per line. Other  files  can  be
       included  with a line like include path, where path is interpreted relative to the current
       conf file and a missing file is an error unless !include is used instead.  Comments  start
       with a # character. Here is an example configuration file:

       keep-outputs = true       # Nice for developers
       keep-derivations = true   # Idem

       You can override settings on the command line using the --option flag, e.g. --option keep-
       outputs false. Every configuration setting also has a  corresponding  command  line  flag,
       e.g.  --max-jobs  16;  for  Boolean settings, there are two flags to enable or disable the
       setting (e.g. --keep-failed and --no-keep-failed).

       A configuration setting usually overrides any previous value. However, you can prefix  the
       name of the setting by extra- to append to the previous value. For instance,

       substituters = a b
       extra-substituters = c d

       defines  the  substituters setting to be a b c d. This is also available as a command line
       flag (e.g. --extra-substituters).

       The following settings are currently available:

       • accept-flake-config (#conf-accept-flake-config)

         Whether to accept nix configuration from a flake without prompting.

         Default: false

       • access-tokens (#conf-access-tokens)

         Access tokens used to access protected GitHub,  GitLab,  or  other  locations  requiring
         token-based authentication.

         Access  tokens  are  specified as a string made up of space-separated host=token values.
         The specific token used is selected by matching the  host  portion  against  the  “host”
         specification  of the input. The actual use of the token value is determined by the type
         of resource being accessed:

         • Github: the token value is the OAUTH-TOKEN string  obtained  as  the  Personal  Access
           Token from the Github server (see https://docs.github.com/en/developers/apps/building-
           oauth-apps/authorizing-oauth-apps).

         • Gitlab: the token value is either the OAuth2 token or the Personal Access Token (these
           are         different         types        tokens        for        gitlab,        see
           https://docs.gitlab.com/12.10/ee/api/README.html#authentication).   The  token   value
           should  be  type:tokenstring where type is either OAuth2 or PAT to indicate which type
           of token is being specified.

         Example ~/.config/nix/nix.conf:

       access-tokens = github.com=23ac...b289 gitlab.mycompany.com=PAT:A123Bp_Cd..EfG gitlab.com=OAuth2:1jklw3jk

              Example ~/code/flake.nix:

       input.foo = {
         type = "gitlab";
         host = "gitlab.mycompany.com";
         owner = "mycompany";
         repo = "pro";
       };

              This  example  specifies  three  tokens,  one  each   for   accessing   github.com,
              gitlab.mycompany.com, and sourceforge.net.

              The  input.foo uses the “gitlab” fetcher, which might requires specifying the token
              type along with the token value.

              Default: ""

       • allow-dirty (#conf-allow-dirty)

         Whether to allow dirty Git/Mercurial trees.

         Default: true

       • allow-import-from-derivation (#conf-allow-import-from-derivation)

         By default, Nix allows you to import from a derivation, allowing building at  evaluation
         time.  With  this  option  set  to  false,  Nix  will  throw an error when evaluating an
         expression that uses this feature, allowing users to ensure their  evaluation  will  not
         require any builds to take place.

         Default: true

       • allow-new-privileges (#conf-allow-new-privileges)

         (Linux-specific.) By default, builders on Linux cannot acquire new privileges by calling
         setuid/setgid programs or programs that have file capabilities.  For  example,  programs
         such  as  sudo  or  ping  will  fail. (Note that in sandbox builds, no such programs are
         available unless you bind-mount them into the sandbox via the sandbox-paths option.) You
         can  allow  the use of such programs by enabling this option. This is impure and usually
         undesirable, but may be useful in certain scenarios (e.g. to spin up containers  or  set
         up userspace network interfaces in tests).

         Default: false

       • allow-symlinked-store (#conf-allow-symlinked-store)

         If  set to true, Nix will stop complaining if the store directory (typically /nix/store)
         contains symlink components.

         This risks making some builds “impure” because builders sometimes  “canonicalise”  paths
         by resolving all symlink components. Problems occur if those builds are then deployed to
         machines where /nix/store resolves to a  different  location  from  that  of  the  build
         machine. You can enable this setting if you are sure you’re not going to do that.

         Default: false

       • allow-unsafe-native-code-during-evaluation       (#conf-allow-unsafe-native-code-during-
         evaluation)

         Whether builtin functions that allow executing native code should be enabled.

         Default: false

       • allowed-impure-host-deps (#conf-allowed-impure-host-deps)

         Which prefixes to allow derivations to ask for access to (primarily for Darwin).

         Default: emptyallowed-uris (#conf-allowed-uris)

         A list of URI prefixes to which access is allowed in  restricted  evaluation  mode.  For
         example,  when  set  to https://github.com/NixOS, builtin functions such as fetchGit are
         allowed to access https://github.com/NixOS/patchelf.git.

         Default: emptyallowed-users (#conf-allowed-users)

         A list of names of users (separated by whitespace) that are allowed to  connect  to  the
         Nix  daemon.  As with the trusted-users option, you can specify groups by prefixing them
         with @. Also, you can allow all users by specifying *. The default is *.

         Note that trusted users are always allowed to connect.

         Default: *

       • auto-optimise-store (#conf-auto-optimise-store)

         If set to true, Nix automatically  detects  files  in  the  store  that  have  identical
         contents,  and replaces them with hard links to a single copy. This saves disk space. If
         set to false (the default), you can  still  run  nix-store  --optimise  to  get  rid  of
         duplicate files.

         Default: false

       • bash-prompt (#conf-bash-prompt)

         The bash prompt (PS1) in nix develop shells.

         Default: emptybash-prompt-suffix (#conf-bash-prompt-suffix)

         Suffix appended to the PS1 environment variable in nix develop shells.

         Default: emptybuild-hook (#conf-build-hook)

         The path of the helper program that executes builds to remote machines.

         Default: /usr/libexec/nix/build-remote

       • build-poll-interval (#conf-build-poll-interval)

         How often (in seconds) to poll for locks.

         Default: 5

       • build-users-group (#conf-build-users-group)

         This  options specifies the Unix group containing the Nix build user accounts. In multi-
         user Nix installations, builds should not be performed by the  Nix  account  since  that
         would  allow  users  to  arbitrarily  modify  the  Nix  store  and database by supplying
         specially crafted builders; and they cannot be performed by the calling user since  that
         would allow him/her to influence the build result.

         Therefore,  if  this  option  is  non-empty  and specifies a valid group, builds will be
         performed under the user accounts that are a member of  the  group  specified  here  (as
         listed in /etc/group). Those user accounts should not be used for any other purpose!

         Nix  will  never run two builds under the same user account at the same time. This is to
         prevent an obvious security hole:  a  malicious  user  writing  a  Nix  expression  that
         modifies  the  build  result of a legitimate Nix expression being built by another user.
         Therefore it is good to have  as  many  Nix  build  user  accounts  as  you  can  spare.
         (Remember: uids are cheap.)

         The  build users should have permission to create files in the Nix store, but not delete
         them. Therefore, /nix/store should be owned by the Nix account, its group should be  the
         group specified here, and its mode should be 1775.

         If  the  build  users  group is empty, builds will be performed under the uid of the Nix
         process (that is, the uid of the caller if NIX_REMOTE is empty, the uid under which  the
         Nix  daemon  runs if NIX_REMOTE is daemon). Obviously, this should not be used in multi-
         user settings with untrusted users.

         Default: emptybuilders (#conf-builders)

         A semicolon-separated list of build machines.  For the exact format  and  examples,  see
         the manual chapter on remote builds (../advanced-topics/distributed-builds.md)

         Default: @/dummy/machines

       • builders-use-substitutes (#conf-builders-use-substitutes)

         If  set  to  true,  Nix  will  instruct  remote  build  machines to use their own binary
         substitutes if available. In practical terms, this means that remote hosts will fetch as
         many   build   dependencies   as   possible   from  their  own  substitutes  (e.g,  from
         cache.nixos.org), instead of waiting  for  this  host  to  upload  them  all.  This  can
         drastically  reduce  build times if the network connection between this computer and the
         remote build host is slow.

         Default: false

       • commit-lockfile-summary (#conf-commit-lockfile-summary)

         The commit summary to use when committing  changed  flake  lock  files.  If  empty,  the
         summary is generated based on the action performed.

         Default: emptycompress-build-log (#conf-compress-build-log)

         If  set  to  true  (the  default),  build  logs written to /nix/var/log/nix/drvs will be
         compressed on the fly using bzip2.  Otherwise, they will not be compressed.

         Default: true

         Deprecated alias: build-compress-log

       • connect-timeout (#conf-connect-timeout)

         The timeout (in seconds) for establishing connections in the binary  cache  substituter.
         It corresponds to curl’s --connect-timeout option. A value of 0 means no limit.

         Default: 0

       • cores (#conf-cores)

         Sets  the  value  of  the  NIX_BUILD_CORES  environment  variable  in  the invocation of
         builders. Builders can use this variable at their  discretion  to  control  the  maximum
         amount   of   parallelism.  For  instance,  in  Nixpkgs,  if  the  derivation  attribute
         enableParallelBuilding is set to true, the builder passes the -jN flag to GNU  Make.  It
         can  be  overridden using the --cores command line switch and defaults to 1. The value 0
         means that the builder should use all available CPU cores in the system.

         Default: machine-specific Deprecated alias: build-cores

       • diff-hook (#conf-diff-hook)

         Absolute path to an executable capable of diffing build results. The hook is executed if
         run-diff-hook  is  true,  and  the  output  of a build is known to not be the same. This
         program is not executed to determine if two results are the same.

         The diff hook is executed by the same user and group who ran  the  build.  However,  the
         diff hook does not have write access to the store path just built.

         The diff hook program receives three parameters:

         1.     A path to the previous build’s results

         2.     A path to the current build’s results

         3.     The path to the build’s derivation

         4.     The  path to the build’s scratch directory. This directory will exist only if the
                build was run with --keep-failed.

         The stderr and stdout output from the diff hook will  not  be  displayed  to  the  user.
         Instead, it will print to the nix-daemon’s log.

         When using the Nix daemon, diff-hook must be set in the nix.conf configuration file, and
         cannot be passed at the command line.

         Default: emptydownload-attempts (#conf-download-attempts)

         How often Nix will attempt to download a file before giving up.

         Default: 5

       • enforce-determinism (#conf-enforce-determinism)

         Whether to fail if repeated builds produce different output. See repeat.

         Default: true

       • eval-cache (#conf-eval-cache)

         Whether to use the flake evaluation cache.

         Default: true

       • experimental-features (#conf-experimental-features)

         Experimental Nix features to enable.

         Default: 3

       • extra-platforms (#conf-extra-platforms)

         Platforms other than the native one which this machine is capable of building for.  This
         can be useful for supporting additional architectures on compatible machines: i686-linux
         can be built on x86_64-linux machines (and the default for this setting reflects  this);
         armv7  is  backwards-compatible  with armv6 and armv5tel; some aarch64 machines can also
         natively run 32-bit ARM code; and qemu-user may be used to support non-native  platforms
         (though  this  may  be  slow and buggy). Most values for this are not enabled by default
         because build systems will often misdetect the target platform and generate incompatible
         code,  so  you  may  wish to cross-check the results of using this option against proper
         natively-built versions of your derivations.

         Default: machine-specificfallback (#conf-fallback)

         If set to true, Nix will fall back to building from source if a binary substitute fails.
         This is equivalent to the --fallback flag. The default is false.

         Default: false

         Deprecated alias: build-fallback

       • filter-syscalls (#conf-filter-syscalls)

         Whether  to  prevent  certain  dangerous system calls, such as creation of setuid/setgid
         files or adding ACLs or extended attributes. Only disable this if you’re  aware  of  the
         security implications.

         Default: true

       • flake-registry (#conf-flake-registry)

         Path or URI of the global flake registry.

         Default: https://github.com/NixOS/flake-registry/raw/master/flake-registry.json

       • fsync-metadata (#conf-fsync-metadata)

         If set to true, changes to the Nix store metadata (in /nix/var/nix/db) are synchronously
         flushed to disk. This improves  robustness  in  case  of  system  crashes,  but  reduces
         performance. The default is true.

         Default: true

       • gc-reserved-space (#conf-gc-reserved-space)

         Amount of reserved disk space for the garbage collector.

         Default: 8388608

       • hashed-mirrors (#conf-hashed-mirrors)

         A  list of web servers used by builtins.fetchurl to obtain files by hash. The default is
         http://tarballs.nixos.org/. Given a hash type ht and a base-16 hash h, Nix will  try  to
         download  the  file  from hashed-mirror/ht/h. This allows files to be downloaded even if
         they have disappeared from their original URI. For example,  given  the  default  mirror
         http://tarballs.nixos.org/, when building the derivation

       builtins.fetchurl {
         url = "https://example.org/foo-1.2.3.tar.xz";
         sha256 = "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae";
       }

              Nix       will       attempt       to       download       this      file      from
              http://tarballs.nixos.org/sha256/2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae
              first. If it is not available there, if will try the original URI.

              Default: emptyhttp-connections (#conf-http-connections)

         The  maximum  number  of parallel TCP connections used to fetch files from binary caches
         and by other downloads. It defaults to 25. 0 means no limit.

         Default: 25

         Deprecated alias: binary-caches-parallel-connections

       • http2 (#conf-http2)

         Whether to enable HTTP/2 support.

         Default: true

       • ignored-acls (#conf-ignored-acls)

         A list of ACLs that should be ignored, normally Nix attempts to  remove  all  ACLs  from
         files  and  directories  in  the  Nix  store,  but  some  ACLs  like security.selinux or
         system.nfs4_acl can’t be removed even by root. Therefore it’s best to just ignore them.

         Default: security.selinux system.nfs4_acl

       • impersonate-linux-26 (#conf-impersonate-linux-26)

         Whether to impersonate a Linux 2.6 machine on newer kernels.

         Default: false

         Deprecated alias: build-impersonate-linux-26

       • keep-build-log (#conf-keep-build-log)

         If set to true (the default), Nix will write the build log of  a  derivation  (i.e.  the
         standard  output  and  error of its builder) to the directory /nix/var/log/nix/drvs. The
         build log can be retrieved using the command nix-store -l path.

         Default: true

         Deprecated alias: build-keep-log

       • keep-derivations (#conf-keep-derivations)

         If true (default), the garbage collector will  keep  the  derivations  from  which  non-
         garbage  store  paths  were  built.  If  false,  they  will be deleted unless explicitly
         registered as a root (or reachable from other roots).

         Keeping derivation around is useful for querying and traceability (e.g., it  allows  you
         to  ask  with  what  dependencies or options a store path was built), so by default this
         option is on. Turn it off to save a bit of disk space (or a lot if keep-outputs is  also
         turned on).

         Default: true

         Deprecated alias: gc-keep-derivations

       • keep-env-derivations (#conf-keep-env-derivations)

         If  false  (default),  derivations are not stored in Nix user environments. That is, the
         derivations of any build-time-only dependencies may be garbage-collected.

         If true, when you add a Nix derivation to a user environment, the path of the derivation
         is  stored  in  the user environment. Thus, the derivation will not be garbage-collected
         until the user environment generation  is  deleted  (nix-env  --delete-generations).  To
         prevent build-time-only dependencies from being collected, you should also turn on keep-
         outputs.

         The difference between this option and keep-derivations is that this one is “sticky”: it
         applies  to  any  user  environment  created  while this option was enabled, while keep-
         derivations only applies at the moment the garbage collector is run.

         Default: false

         Deprecated alias: env-keep-derivations

       • keep-failed (#conf-keep-failed)

         Whether to keep temporary directories of failed builds.

         Default: false

       • keep-going (#conf-keep-going)

         Whether to keep building derivations when another build fails.

         Default: false

       • keep-outputs (#conf-keep-outputs)

         If true, the garbage collector will keep the  outputs  of  non-garbage  derivations.  If
         false  (default),  outputs  will  be  deleted  unless  they  are GC roots themselves (or
         reachable from other roots).

         In general, outputs must be registered as roots separately. However, even if the  output
         of  a  derivation  is  registered as a root, the collector will still delete store paths
         that are used only at build time (e.g., the C compiler, or  source  tarballs  downloaded
         from the network). To prevent it from doing so, set this option to true.

         Default: false

         Deprecated alias: gc-keep-outputs

       • log-lines (#conf-log-lines)

         The number of lines of the tail of the log to show if a build fails.

         Default: 10

       • max-build-log-size (#conf-max-build-log-size)

         This  option  defines  the  maximum  number  of  bytes  that  a builder can write to its
         stdout/stderr. If the builder exceeds this  limit,  it’s  killed.  A  value  of  0  (the
         default) means that there is no limit.

         Default: 0

         Deprecated alias: build-max-log-size

       • max-free (#conf-max-free)

         When  a garbage collection is triggered by the min-free option, it stops as soon as max-
         free bytes are available. The default is infinity (i.e. delete all garbage).

         Default: -1

       • max-jobs (#conf-max-jobs)

         This option defines the maximum number of jobs that Nix will try to build  in  parallel.
         The  default  is  1. The special value auto causes Nix to use the number of CPUs in your
         system. 0 is useful when using remote builders to prevent any local builds  (except  for
         preferLocalBuild  derivation  attribute  which  executes  locally regardless). It can be
         overridden using the --max-jobs (-j) command line switch.

         Default: 1

         Deprecated alias: build-max-jobs

       • max-silent-time (#conf-max-silent-time)

         This option defines the maximum  number  of  seconds  that  a  builder  can  go  without
         producing  any  data on standard output or standard error.  This is useful (for instance
         in an automated build system) to catch builds that are stuck in an infinite loop, or  to
         catch remote builds that are hanging due to network problems. It can be overridden using
         the --max-silent-time command line switch.

         The value 0 means that there is no timeout. This is also the default.

         Default: 0

         Deprecated alias: build-max-silent-time

       • min-free (#conf-min-free)

         When free disk space in /nix/store drops below min-free during a build, Nix  performs  a
         garbage-collection  until  max-free  bytes  are available or there is no more garbage. A
         value of 0 (the default) disables this feature.

         Default: 0

       • min-free-check-interval (#conf-min-free-check-interval)

         Number of seconds between checking free disk space.

         Default: 5

       • nar-buffer-size (#conf-nar-buffer-size)

         Maximum size of NARs before spilling them to disk.

         Default: 33554432

       • narinfo-cache-negative-ttl (#conf-narinfo-cache-negative-ttl)

         The TTL in seconds for negative lookups. If a store path is queried from  a  substituter
         but  was  not  found,  there  will  be  a negative lookup cached in the local disk cache
         database for the specified duration.

         Default: 3600

       • narinfo-cache-positive-ttl (#conf-narinfo-cache-positive-ttl)

         The TTL in seconds for positive lookups. If a store path is queried from a  substituter,
         the  result  of the query will be cached in the local disk cache database including some
         of the NAR metadata. The default TTL is a month, setting  a  shorter  TTL  for  positive
         lookups  can be useful for binary caches that have frequent garbage collection, in which
         case having a more frequent cache invalidation would prevent trying  to  pull  the  path
         again and failing with a hash mismatch if the build isn’t reproducible.

         Default: 2592000

       • netrc-file (#conf-netrc-file)

         If  set  to  an  absolute  path  to  a  netrc file, Nix will use the HTTP authentication
         credentials in this file when trying to download from a  remote  host  through  HTTP  or
         HTTPS. Defaults to $NIX_CONF_DIR/netrc.

         The netrc file consists of a list of accounts in the following format:

       machine my-machine
       login my-username
       password my-password

              For  the  exact  syntax,  see the curl documentation (https://ec.haxx.se/usingcurl-
              netrc.html).

                     Note

                     This must be an absolute path, and ~ is not resolved. For example,  ~/.netrc
                     won’t resolve to your home directory’s .netrc.

              Default: /dummy/netrc

       • nix-path (#conf-nix-path)

         List of directories to be searched for <...> file references.

         Default: emptyplugin-files (#conf-plugin-files)

         A list of plugin files to be loaded by Nix. Each of these files will be dlopened by Nix,
         allowing them to affect execution through static initialization.  In  particular,  these
         plugins may construct static instances of RegisterPrimOp to add new primops or constants
         to   the   expression   language,   RegisterStoreImplementation   to   add   new   store
         implementations,  RegisterCommand  to  add  new  subcommands  to  the  nix  command, and
         RegisterSetting to add new nix config settings. See the constructors for those types for
         more details.

         Warning! These APIs are inherently unstable and may change from release to release.

         Since  these  files  are  loaded into the same address space as Nix itself, they must be
         DSOs compatible with the instance of Nix running at the time (i.e. compiled against  the
         same  headers,  not  linked to any incompatible libraries). They should not be linked to
         any Nix libs directly, as those will be available already at load time.

         If an entry in the list is a directory, all files in the directory are loaded as plugins
         (non-recursively).

         Default: emptypost-build-hook (#conf-post-build-hook)

         Optional. The path to a program to execute after each build.

         This  option  is only settable in the global nix.conf, or on the command line by trusted
         users.

         When using the nix-daemon, the daemon executes the hook as root.  If the  nix-daemon  is
         not involved, the hook runs as the user executing the nix-build.

         • The hook executes after an evaluation-time build.

         • The hook does not execute on substituted paths.

         • The hook’s output always goes to the user’s terminal.

         • If the hook fails, the build succeeds but no further builds execute.

         • The  hook  executes  synchronously,  and blocks other builds from progressing while it
           runs.

         The program executes with no arguments. The program’s environment contains the following
         environment variables:

         • DRV_PATH The derivation for the built paths.

           Example: /nix/store/5nihn1a7pa8b25l9zafqaqibznlvvp3f-bash-4.4-p23.drv

         • OUT_PATHS Output paths of the built derivation, separated by a space character.

           Example:                  /nix/store/zf5lbh336mnzf1nlswdn11g4n2m8zh3g-bash-4.4-p23-dev
           /nix/store/rjxwxwv1fpn9wa2x5ssk5phzwlcv4mna-bash-4.4-p23-doc
           /nix/store/6bqvbzjkcp9695dq0dpl5y43nvy37pq1-bash-4.4-p23-info
           /nix/store/r7fng3kk3vlpdlh2idnrbn37vh4imlj2-bash-4.4-p23-man
           /nix/store/xfghy8ixrhz3kyy6p724iv3cxji088dx-bash-4.4-p23.

         Default: emptypre-build-hook (#conf-pre-build-hook)

         If  set,  the path to a program that can set extra derivation-specific settings for this
         system. This is used for settings that can’t be captured by the derivation model  itself
         and are too variable between different versions of the same system to be hard-coded into
         nix.

         The hook is passed the derivation path  and,  if  sandboxes  are  enabled,  the  sandbox
         directory.  It  can  then  modify  the  sandbox  and send a series of commands to modify
         various settings to stdout. The currently recognized commands are:

         • extra-sandbox-paths
           Pass a list of files and directories to be included in the sandbox for this build. One
           entry  per line, terminated by an empty line. Entries have the same format as sandbox-
           paths.

         Default: emptypreallocate-contents (#conf-preallocate-contents)

         Whether to preallocate files when writing objects with known size.

         Default: false

       • print-missing (#conf-print-missing)

         Whether to print what paths need to be built or downloaded.

         Default: true

       • pure-eval (#conf-pure-eval)

         Whether to restrict file system and network access to files specified  by  cryptographic
         hash.

         Default: true

       • repeat (#conf-repeat)

         How  many  times  to  repeat builds to check whether they are deterministic. The default
         value is 0. If the value is non-zero, every build is repeated the  specified  number  of
         times.  If  the  contents of any of the runs differs from the previous ones and enforce-
         determinism is true, the build is  rejected  and  the  resulting  store  paths  are  not
         registered as “valid” in Nix’s database.

         Default: 0

         Deprecated alias: build-repeat

       • require-sigs (#conf-require-sigs)

         If  set to true (the default), any non-content-addressed path added or copied to the Nix
         store (e.g. when substituting from a binary cache) must have a valid signature, that is,
         be  signed  using one of the keys listed in trusted-public-keys or secret-key-files. Set
         to false to disable signature checking.

         Default: true

       • restrict-eval (#conf-restrict-eval)

         If set to true, the Nix evaluator will not allow access to any files outside of the  Nix
         search  path (as set via the NIX_PATH environment variable or the -I option), or to URIs
         outside of allowed-uri. The default is false.

         Default: false

       • run-diff-hook (#conf-run-diff-hook)

         If true, enable the execution of the diff-hook program.

         When using the Nix daemon, run-diff-hook must be set in the nix.conf configuration file,
         and cannot be passed at the command line.

         Default: false

       • sandbox (#conf-sandbox)

         If  set  to  true,  builds  will  be performed in a sandboxed environment, i.e., they’re
         isolated from the normal file system hierarchy and will only see their  dependencies  in
         the  Nix store, the temporary build directory, private versions of /proc, /dev, /dev/shm
         and /dev/pts (on Linux), and the paths configured with the sandbox-paths option. This is
         useful  to  prevent undeclared dependencies on files in directories such as /usr/bin. In
         addition, on Linux, builds run in private PID, mount, network, IPC and UTS namespaces to
         isolate them from other processes in the system (except that fixed-output derivations do
         not run in private network namespace to ensure they can access the network).

         Currently, sandboxing only work on Linux and macOS. The use of a sandbox  requires  that
         Nix  is  run  as root (so you should use the “build users” feature to perform the actual
         builds under different users than root).

         If this option is set to relaxed, then fixed-output  derivations  and  derivations  that
         have the __noChroot attribute set to true do not run in sandboxes.

         The default is true on Linux and false on all other platforms.

         Default: true

         Deprecated alias: build-use-chroot, build-use-sandbox

       • sandbox-build-dir (#conf-sandbox-build-dir)

         The build directory inside the sandbox.

         Default: /build

       • sandbox-dev-shm-size (#conf-sandbox-dev-shm-size)

         This  option  determines the maximum size of the tmpfs filesystem mounted on /dev/shm in
         Linux sandboxes. For the format, see the description of the  size  option  of  tmpfs  in
         mount8. The default is 50%.

         Default: 50%

       • sandbox-fallback (#conf-sandbox-fallback)

         Whether to disable sandboxing when the kernel doesn’t allow it.

         Default: true

       • sandbox-paths (#conf-sandbox-paths)

         A  list  of  paths  bind-mounted  into  Nix sandbox environments. You can use the syntax
         target=source to mount a path in a different location  in  the  sandbox;  for  instance,
         /bin=/nix-bin  will  mount  the  path  /nix-bin as /bin inside the sandbox. If source is
         followed by ?, then it  is  not  an  error  if  source  does  not  exist;  for  example,
         /dev/nvidiactl?  specifies that /dev/nvidiactl will only be mounted in the sandbox if it
         exists in the host filesystem.

         Depending on how Nix was built, the default value  for  this  option  may  be  empty  or
         provide /bin/sh as a bind-mount of bash.

         Default: empty

         Deprecated alias: build-chroot-dirs, build-sandbox-paths

       • secret-key-files (#conf-secret-key-files)

         A whitespace-separated list of files containing secret (private) keys. These are used to
         sign locally-built paths. They can be generated using nix-store --generate-binary-cache-
         key.  The  corresponding public key can be distributed to other users, who can add it to
         trusted-public-keys in their nix.conf.

         Default: emptyshow-trace (#conf-show-trace)

         Whether Nix should print out a stack trace in case of Nix expression evaluation errors.

         Default: false

       • stalled-download-timeout (#conf-stalled-download-timeout)

         The timeout (in seconds) for receiving data from servers during  download.  Nix  cancels
         idle downloads after this timeout’s duration.

         Default: 300

       • store (#conf-store)

         The default Nix store to use.

         Default: auto

       • substitute (#conf-substitute)

         If  set to true (default), Nix will use binary substitutes if available. This option can
         be disabled to force building from source.

         Default: true

         Deprecated alias: build-use-substitutes

       • substituters (#conf-substituters)

         A list of URLs of substituters, separated by whitespace. Substituters are tried based on
         their  Priority  value,  which each substituter can set independently. Lower value means
         higher priority.  The default is https://cache.nixos.org, with a Priority of 40.

         Default: https://cache.nixos.org/

         Deprecated alias: binary-caches

       • sync-before-registering (#conf-sync-before-registering)

         Whether to call sync() before registering a path as valid.

         Default: false

       • system (#conf-system)

         This option specifies the canonical Nix system name of the current installation, such as
         i686-linux  or  x86_64-darwin.  Nix  can  only  build derivations whose system attribute
         equals the value specified here. In general, it never makes sense to modify  this  value
         from  its  default, since you can use it to ‘lie’ about the platform you are building on
         (e.g., perform a Mac OS build on a Linux machine; the result would obviously be  wrong).
         It  only makes sense if the Nix binaries can run on multiple platforms, e.g., ‘universal
         binaries’ that run on x86_64-linux and i686-linux.

         It defaults to the canonical Nix system name detected by configure at build time.

         Default: x86_64-linux

       • system-features (#conf-system-features)

         A set of system “features” supported by this machine, e.g. kvm.  Derivations can express
         a  dependency  on such features through the derivation attribute requiredSystemFeatures.
         For example, the attribute

       requiredSystemFeatures = [ "kvm" ];

              ensures that the derivation can only be built on a machine with the kvm feature.

              This setting by default includes kvm if /dev/kvm is  accessible,  and  the  pseudo-
              features  nixos-test,  benchmark and big-parallel that are used in Nixpkgs to route
              builds to specific machines.

              Default: machine-specifictarball-ttl (#conf-tarball-ttl)

         The number of seconds a downloaded tarball is considered fresh. If the cached tarball is
         stale,  Nix  will  check  whether it is still up to date using the ETag header. Nix will
         download a new version if the ETag header is unsupported, or  the  cached  ETag  doesn’t
         match.

         Setting the TTL to 0 forces Nix to always check if the tarball is up to date.

         Nix caches tarballs in $XDG_CACHE_HOME/nix/tarballs.

         Files fetched via NIX_PATH, fetchGit, fetchMercurial, fetchTarball, and fetchurl respect
         this TTL.

         Default: 3600

       • timeout (#conf-timeout)

         This option defines the maximum number of seconds that a builder can run. This is useful
         (for  instance  in  an  automated  build  system)  to  catch builds that are stuck in an
         infinite loop but keep writing to their standard output or standard  error.  It  can  be
         overridden using the --timeout command line switch.

         The value 0 means that there is no timeout. This is also the default.

         Default: 0

         Deprecated alias: build-timeout

       • trace-function-calls (#conf-trace-function-calls)

         If  set to true, the Nix evaluator will trace every function call.  Nix will print a log
         message at the “vomit” level for every function entrance and function exit.

       function-trace entered undefined position at 1565795816999559622
       function-trace exited undefined position at 1565795816999581277
       function-trace entered /nix/store/.../example.nix:226:41 at 1565795253249935150
       function-trace exited /nix/store/.../example.nix:226:41 at 1565795253249941684

              The undefined position means the function call is a builtin.

              Use the contrib/stack-collapse.py script distributed with the Nix  source  code  to
              convert the trace logs in to a format suitable for flamegraph.pl.

              Default: false

       • trusted-public-keys (#conf-trusted-public-keys)

         A whitespace-separated list of public keys. When paths are copied from another Nix store
         (such as a binary cache), they must be signed with  one  of  these  keys.  For  example:
         cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
         hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs=.

         Default: cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=

         Deprecated alias: binary-cache-public-keys

       • trusted-substituters (#conf-trusted-substituters)

         A list of URLs of substituters, separated by whitespace. These are not used by  default,
         but  can  be enabled by users of the Nix daemon by specifying --option substituters urls
         on the command line. Unprivileged users are only allowed to pass a subset  of  the  URLs
         listed in substituters and trusted-substituters.

         Default: empty

         Deprecated alias: trusted-binary-caches

       • trusted-users (#conf-trusted-users)

         A  list  of  names  of  users (separated by whitespace) that have additional rights when
         connecting to the Nix daemon, such as the ability to specify additional  binary  caches,
         or  to  import  unsigned NARs. You can also specify groups by prefixing them with @; for
         instance, @wheel means all users in the wheel group. The default is root.

                Warning

                Adding a user to trusted-users is essentially equivalent to giving that user root
                access  to  the  system.  For example, the user can set sandbox-paths and thereby
                obtain read access to directories that are otherwise inacessible to them.

         Default: root

       • use-case-hack (#conf-use-case-hack)

         Whether to enable a Darwin-specific hack for dealing with file name collisions.

         Default: false

       • use-registries (#conf-use-registries)

         Whether to use flake registries to resolve flake references.

         Default: true

       • use-sqlite-wal (#conf-use-sqlite-wal)

         Whether SQLite should use WAL mode.

         Default: true

       • user-agent-suffix (#conf-user-agent-suffix)

         String appended to the user agent in HTTP requests.

         Default: emptywarn-dirty (#conf-warn-dirty)

         Whether to warn about dirty Git/Mercurial trees.

         Default: true

                                                                                      nix.conf(5)