Nix configuration file A number of persistent settings of Nix are stored in the file prefix/etc/nix/nix.conf. This file is a list of name = value pairs, one per line. Comments start with a # character. An example configuration file is shown in . Nix configuration file gc-keep-outputs = true # Nice for developers gc-keep-derivations = true # Idem env-keep-derivations = false The following variables are currently available: gc-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. gc-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 safe a bit of disk space (or a lot if gc-keep-outputs is also turned on). gc-reserved-space This option specifies how much space should be reserved in normal use so that the garbage collector can run succesfully. Since the garbage collector must perform Berkeley DB transactions, it needs some disk space for itself. However, when the disk is full, this space is not available, so the collector would not be able to run precisely when it is most needed. For this reason, when Nix is run, it allocates a file /nix/var/nix/db/reserved of the size specified by this option. When the garbage collector is run, this file is deleted before the Berkeley DB environment is opened. This should give it enough room to proceed. The default is 1048576 (1 MiB). env-keep-derivations If false (default), derivations are not stored in Nix user environments. That is, the derivation 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 gc-keep-outputs. The difference between this option and gc-keep-derivations is that this one is “sticky”: it applies to any user environment created while this option was enabled, while gc-keep-derivations only applies at the moment the garbage collector is run. build-max-jobs This option defines the maximum number of jobs that Nix will try to build in parallel. The default is 1. You should generally set it to the number of CPUs in your system (e.g., 2 on a Athlon 64 X2). It can be overriden using the () command line switch. system This option specifies the canonical Nix system name of the current installation, such as i686-linux or powerpc-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 powerpc-darwin and i686-darwin. It defaults to the canonical Nix system name detected by configure at build time.