147 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <section xmlns="http://docbook.org/ns/docbook"
 | ||
|          xmlns:xlink="http://www.w3.org/1999/xlink"
 | ||
|          xml:id="sec-conf-file">
 | ||
| 
 | ||
| <title>Nix configuration file</title>
 | ||
| 
 | ||
| 
 | ||
| <para>A number of persistent settings of Nix are stored in the file
 | ||
| <filename><replaceable>prefix</replaceable>/etc/nix/nix.conf</filename>.
 | ||
| This file is a list of <literal><replaceable>name</replaceable> =
 | ||
| <replaceable>value</replaceable></literal> pairs, one per line.
 | ||
| Comments start with a <literal>#</literal> character.  An example
 | ||
| configuration file is shown in <xref linkend="ex-nix-conf" />.</para>
 | ||
| 
 | ||
| <example xml:id='ex-nix-conf'><title>Nix configuration file</title>
 | ||
| 
 | ||
| <programlisting>
 | ||
| gc-keep-outputs = true       # Nice for developers
 | ||
| gc-keep-derivations = true   # Idem
 | ||
| env-keep-derivations = false
 | ||
| </programlisting>
 | ||
| </example>
 | ||
| 
 | ||
| <para>The following variables are currently available: 
 | ||
| 
 | ||
| <variablelist>
 | ||
| 
 | ||
|   
 | ||
|   <varlistentry xml:id="conf-gc-keep-outputs"><term><literal>gc-keep-outputs</literal></term>
 | ||
| 
 | ||
|     <listitem><para>If <literal>true</literal>, the garbage collector
 | ||
|     will keep the outputs of non-garbage derivations.  If
 | ||
|     <literal>false</literal> (default), outputs will be deleted unless
 | ||
|     they are GC roots themselves (or reachable from other roots).</para>
 | ||
|  
 | ||
|     <para>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 <literal>true</literal>.</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
|   
 | ||
| 
 | ||
|   <varlistentry xml:id="conf-gc-keep-derivations"><term><literal>gc-keep-derivations</literal></term>
 | ||
| 
 | ||
|     <listitem><para>If <literal>true</literal> (default), the garbage
 | ||
|     collector will keep the derivations from which non-garbage store
 | ||
|     paths were built.  If <literal>false</literal>, they will be
 | ||
|     deleted unless explicitly registered as a root (or reachable from
 | ||
|     other roots).</para>
 | ||
| 
 | ||
|     <para>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
 | ||
|     <literal>gc-keep-outputs</literal> is also turned on).</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
| 
 | ||
|   
 | ||
|   <varlistentry xml:id="conf-gc-reserved-space"><term><literal>gc-reserved-space</literal></term>
 | ||
| 
 | ||
|     <listitem><para>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.</para>
 | ||
| 
 | ||
|     <para>For this reason, when Nix is run, it allocates a file
 | ||
|     <filename>/nix/var/nix/db/reserved</filename> 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.</para>
 | ||
| 
 | ||
|     <para>The default is <literal>1048576</literal> (1
 | ||
|     MiB).</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
| 
 | ||
|   
 | ||
|   <varlistentry><term><literal>env-keep-derivations</literal></term>
 | ||
| 
 | ||
|     <listitem><para>If <literal>false</literal> (default), derivations
 | ||
|     are not stored in Nix user environments.  That is, the derivation
 | ||
|     any build-time-only dependencies may be garbage-collected.</para>
 | ||
| 
 | ||
|     <para>If <literal>true</literal>, 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
 | ||
|     (<command>nix-env --delete-generations</command>).  To prevent
 | ||
|     build-time-only dependencies from being collected, you should also
 | ||
|     turn on <literal>gc-keep-outputs</literal>.</para>
 | ||
| 
 | ||
|     <para>The difference between this option and
 | ||
|     <literal>gc-keep-derivations</literal> is that this one is
 | ||
|     “sticky”: it applies to any user environment created while this
 | ||
|     option was enabled, while <literal>gc-keep-derivations</literal>
 | ||
|     only applies at the moment the garbage collector is
 | ||
|     run.</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
| 
 | ||
|   
 | ||
|   <varlistentry xml:id="conf-build-max-jobs"><term><literal>build-max-jobs</literal></term>
 | ||
| 
 | ||
|     <listitem><para>This option defines the maximum number of jobs
 | ||
|     that Nix will try to build in parallel.  The default is
 | ||
|     <literal>1</literal>.  You should generally set it to the number
 | ||
|     of CPUs in your system (e.g., <literal>2</literal> on a Athlon 64
 | ||
|     X2).  It can be overriden using the <option
 | ||
|     linkend='opt-max-jobs'>--max-jobs</option> (<option>-j</option>)
 | ||
|     command line switch.</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
| 
 | ||
| 
 | ||
|   <varlistentry><term><literal>system</literal></term>
 | ||
| 
 | ||
|     <listitem><para>This option specifies the canonical Nix system
 | ||
|     name of the current installation, such as
 | ||
|     <literal>i686-linux</literal> or
 | ||
|     <literal>powerpc-darwin</literal>.  Nix can only build derivations
 | ||
|     whose <literal>system</literal> 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 <literal>powerpc-darwin</literal> and
 | ||
|     <literal>i686-darwin</literal>.</para>
 | ||
| 
 | ||
|     <para>It defaults to the canonical Nix system name detected by
 | ||
|     <filename>configure</filename> at build time.</para></listitem>
 | ||
| 
 | ||
|   </varlistentry>
 | ||
|   
 | ||
|     
 | ||
| </variablelist>
 | ||
| 
 | ||
| </para>
 | ||
| 
 | ||
| 
 | ||
| </section>
 |