aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-08-15 15:03:21 +0200
committerGitHub <noreply@github.com>2019-08-15 15:03:21 +0200
commitb7ea98bf3409a29bb6412c6a17a896ba1c1f524a (patch)
tree5698059a62cab13c807c4376362b2b078f7a50f7 /doc
parent477f82e5a7d1a69777cb55e14bb377adeb4bedd1 (diff)
parent653c40778462b5921fbbe2abffd1a2822f08ec57 (diff)
Merge pull request #2945 from danidiaz/doc001
Expanded documentation for .nix-defexpr
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/command-ref/nix-env.xml40
1 files changed, 31 insertions, 9 deletions
diff --git a/doc/manual/command-ref/nix-env.xml b/doc/manual/command-ref/nix-env.xml
index 56c466268..693f23f7f 100644
--- a/doc/manual/command-ref/nix-env.xml
+++ b/doc/manual/command-ref/nix-env.xml
@@ -221,31 +221,53 @@ also <xref linkend="sec-common-options" />.</phrase></para>
<varlistentry><term><filename>~/.nix-defexpr</filename></term>
- <listitem><para>A directory that contains the default Nix
+ <listitem><para>The source for the default Nix
expressions used by the <option>--install</option>,
<option>--upgrade</option>, and <option>--query
- --available</option> operations to obtain derivations. The
+ --available</option> operations to obtain derivations. The
<option>--file</option> option may be used to override this
default.</para>
- <para>The Nix expressions in this directory are combined into a
- single set, with each file as an attribute that has the name of
- the file. Thus, if <filename>~/.nix-defexpr</filename> contains
- two files, <filename>foo</filename> and <filename>bar</filename>,
+ <para>If <filename>~/.nix-defexpr</filename> is a file,
+ it is loaded as a Nix expression. If the expression
+ is a set, it is used as the default Nix expression.
+ If the expression is a function, an empty set is passed
+ as argument and the return value is used as
+ the default Nix expression.</para>
+
+ <para>If <filename>~/.nix-defexpr</filename> is a directory
+ containing a <filename>default.nix</filename> file, that file
+ is loaded as in the above paragraph.</para>
+
+ <para>If <filename>~/.nix-defexpr</filename> is a directory without
+ a <filename>default.nix</filename> file, then its contents
+ (both files and subdirectories) are loaded as Nix expressions.
+ The expressions are combined into a single set, each expression
+ under an attribute with the same name as the original file
+ or subdirectory.
+ </para>
+
+ <para>For example, if <filename>~/.nix-defexpr</filename> contains
+ two files, <filename>foo.nix</filename> and <filename>bar.nix</filename>,
then the default Nix expression will essentially be
<programlisting>
{
- foo = import ~/.nix-defexpr/foo;
- bar = import ~/.nix-defexpr/bar;
+ foo = import ~/.nix-defexpr/foo.nix;
+ bar = import ~/.nix-defexpr/bar.nix;
}</programlisting>
</para>
+ <para>The file <filename>manifest.nix</filename> is always ignored.
+ Subdirectories without a <filename>default.nix</filename> file
+ are traversed recursively in search of more Nix expressions,
+ but the names of these intermediate directories are not
+ added to the attribute paths of the default Nix expression.</para>
+
<para>The command <command>nix-channel</command> places symlinks
to the downloaded Nix expressions from each subscribed channel in
this directory.</para>
-
</listitem>
</varlistentry>