about summary refs log tree commit diff
path: root/doc/manual/nix-store-reference.xml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual/nix-store-reference.xml')
-rw-r--r--doc/manual/nix-store-reference.xml444
1 files changed, 444 insertions, 0 deletions
diff --git a/doc/manual/nix-store-reference.xml b/doc/manual/nix-store-reference.xml
new file mode 100644
index 000000000000..686fe4c15643
--- /dev/null
+++ b/doc/manual/nix-store-reference.xml
@@ -0,0 +1,444 @@
+<refentry>
+  <refnamediv>
+    <refname>nix-store</refname>
+    <refpurpose>manipulate or query the Nix store</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>nix-store</command>
+      <group choice='opt'>
+        <arg><option>--path</option></arg>
+        <arg><option>-p</option></arg>
+      </group>
+      <group choice='opt' rep='repeat'>
+        <arg><option>--verbose</option></arg>
+        <arg><option>-v</option></arg>
+      </group>
+      <group choice='opt' rep='repeat'>
+        <arg><option>--keep-failed</option></arg>
+        <arg><option>-K</option></arg>
+      </group>
+      <arg choice='plain'><replaceable>operation</replaceable></arg>
+      <arg rep='repeat'><replaceable>options</replaceable></arg>
+      <arg rep='repeat'><replaceable>arguments</replaceable></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1>
+    <title>Description</title>
+
+    <para>
+      The command <command>nix</command> provides access to the Nix store. This
+      is the (set of) path(s) where Nix expressions and the file system objects
+      built by them are stored.
+    </para>
+
+    <para>
+      <command>nix</command> has many subcommands called
+      <emphasis>operations</emphasis>.  These are individually documented
+      below.  Exactly one operation must always be provided.
+    </para>
+
+  </refsect1>
+
+  <refsect1>
+    <title>Common Options</title>
+
+    <para>
+      In this section the options that are common to all Nix operations are
+      listed.  These options are allowed for every subcommand (although they
+      may not always have an effect).
+    </para>
+
+    <variablelist>
+
+      <varlistentry>
+        <term><option>--path</option></term>
+        <listitem>
+          <para>
+            Indicates that any identifier arguments to the operation are paths
+            in the store rather than identifiers.
+          </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><option>--verbose</option></term>
+        <listitem>
+          <para>
+            Increases the level of verbosity of diagnostic messages printed on
+            standard error.  For each Nix operation, the information printed on
+            standard output is well-defined and specified below in the
+            respective sections.  Any diagnostic information is printed on
+            standard error, never on standard output.
+          </para>
+
+          <para>
+            This option may be specified repeatedly.  Currently, the following
+            verbosity levels exist:
+          </para>
+
+          <variablelist>
+            <varlistentry>
+              <term>0</term>
+              <listitem>
+                <para>
+                  Print error messages only.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>1</term>
+              <listitem>
+                <para>
+                  Print informational messages.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>2</term>
+              <listitem>
+                <para>
+                  Print even more informational messages.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>3</term>
+              <listitem>
+                <para>
+                  Print messages that should only be useful for debugging.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>4</term>
+              <listitem>
+                <para>
+                  <quote>Vomit mode</quote>: print vast amounts of debug
+                  information.
+                </para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><option>--keep-failed</option></term>
+        <listitem>
+          <para>
+            Specifies that in case of a build failure, the temporary directory
+            (usually in <filename>/tmp</filename>) in which the build takes
+            place should not be deleted.  The path of the build directory is
+            printed as an informational message.
+          </para>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </refsect1>
+
+
+  <!--######################################################################-->
+
+  <refsect1>
+    <title>Operation <option>--install</option></title>
+
+    <refsect2>
+      <title>Synopsis</title>
+      <cmdsynopsis>
+        <command>nix</command>
+        <group>
+          <arg><option>--install</option></arg>
+          <arg><option>-i</option></arg>
+        </group>
+        <arg choice='plain' rep='repeat'><replaceable>ids</replaceable></arg>
+      </cmdsynopsis>
+    </refsect2>
+
+    <refsect2>
+      <title>Description</title>
+            
+      <para>
+        The operation <option>--install</option> realises the Nix expressions
+        identified by <replaceable>ids</replaceable> in the file system.  If
+        these expressions are derivation expressions, they are first
+        normalised.  That is, their target paths are are built, unless a normal
+        form is already known.
+      </para>
+
+      <para>
+        The identifiers of the normal forms of the given Nix expressions are
+        printed on standard output.
+      </para>
+
+    </refsect2>
+            
+  </refsect1>
+
+
+  <!--######################################################################-->
+
+  <refsect1>
+    <title>Operation <option>--delete</option></title>
+
+    <refsect2>
+      <title>Synopsis</title>
+      <cmdsynopsis>
+        <command>nix</command>
+        <group>
+          <arg><option>--delete</option></arg>
+          <arg><option>-d</option></arg>
+        </group>
+        <arg choice='plain' rep='repeat'><replaceable>paths</replaceable></arg>
+      </cmdsynopsis>
+    </refsect2>
+
+    <refsect2>
+      <title>Description</title>
+            
+      <para>
+        The operation <option>--delete</option> unconditionally deletes the
+        paths <replaceable>paths</replaceable> from the Nix store. It is an
+        error to attempt to delete paths outside of the store.
+      </para>
+
+      <warning>
+        <para>
+          This operation should almost never be called directly, since no
+          attempt is made to verify that no references exist to the paths to
+          be deleted.  Therefore, careless deletion can result in an
+          inconsistent system. Deletion of paths in the store is done by the
+          garbage collector (which uses <option>--delete</option> to delete
+          unreferenced paths).
+          
+        </para>
+      </warning>
+
+    </refsect2>
+            
+  </refsect1>
+
+
+  <!--######################################################################-->
+
+  <refsect1>
+    <title>Operation <option>--query</option></title>
+
+    <refsect2>
+      <title>Synopsis</title>
+      <cmdsynopsis>
+        <command>nix</command>
+        <group>
+          <arg><option>--query</option></arg>
+          <arg><option>-q</option></arg>
+        </group>
+        <group>
+          <group>
+            <arg><option>--list</option></arg>
+            <arg><option>-l</option></arg>
+          </group>
+          <group>
+            <arg><option>--requisites</option></arg>
+            <arg><option>-r</option></arg>
+          </group>
+          <group>
+            <arg><option>--expansion</option></arg>
+            <arg><option>-e</option></arg>
+          </group>
+          <group>
+            <arg><option>--graph</option></arg>
+            <arg><option>-g</option></arg>
+          </group>
+        </group>
+        <arg choice='plain' rep='repeat'><replaceable>args</replaceable></arg>
+      </cmdsynopsis>
+    </refsect2>
+
+    <refsect2>
+      <title>Description</title>
+            
+      <para>
+        The operation <option>--query</option> displays various bits of
+        information about Nix expressions or paths in the store.  The queries
+        are described in <xref linkend='nixref-queries' />.  At most one query
+        can be specified; the default query is <option>--list</option>.
+      </para>
+
+    </refsect2>
+
+    <refsect2 id='nixref-queries'>
+      <title>Queries</title>
+            
+      <variablelist>
+
+        <varlistentry>
+          <term><option>--list</option></term>
+          <listitem>
+            <para>
+              Prints out the target paths of the Nix expressions indicated by
+              the identifiers <replaceable>args</replaceable>.  In the case of
+              a derivation expression, these are the paths that will be
+              produced by the builder of the expression.  In the case of a
+              slice expression, these are the root paths (which are generally
+              the paths that were produced by the builder of the derivation
+              expression of which the slice is a normal form).
+            </para>
+
+            <para>
+              This query has one option:
+            </para>
+
+            <variablelist>
+
+              <varlistentry>
+                <term><option>--normalise</option></term>
+                <listitem>
+                  <para>
+                    Causes the target paths of the <emphasis>normal
+                      forms</emphasis> of the expressions to be printed, rather
+                    than the target paths of the expressions themselves.
+                  </para>
+                </listitem>
+              </varlistentry>
+
+            </variablelist>
+            
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--requisites</option></term>
+          <listitem>
+            <para>
+              Prints out the requisite paths of the Nix expressions indicated
+              by the identifiers <replaceable>args</replaceable>.  The
+              requisite paths of a Nix expression are the paths that need to be
+              present in the system to be able to realise the expression.  That
+              is, they form the <emphasis>closure</emphasis> of the expression
+              in the file system (i.e., no path in the set of requisite paths
+              points to anything outside the set of requisite paths).
+            </para>
+
+            <para>
+              The notion of requisite paths is very useful when one wants to
+              distribute Nix expressions.  Since they form a closure, they are
+              the only paths one needs to distribute to another system to be
+              able to realise the expression on the other system.
+            </para>
+
+            <para>
+              This query is generally used to implement various kinds of
+              distribution.  A <emphasis>source distribution</emphasis> is
+              obtained by distributing the requisite paths of a derivation
+              expression.  A <emphasis>binary distribution</emphasis> is
+              obtained by distributing the requisite paths of a slice
+              expression (i.e., the normal form of a derivation expression; you
+              can directly specify the identifier of the slice expression, or
+              use <option>--normalise</option> and specify the identifier of a
+              derivation expression).  A <emphasis>cache
+                distribution</emphasis> is obtained by distributing the
+              requisite paths of a derivation expression and specifying the
+              option <option>--include-successors</option>.  This will include
+              not just the paths of a source and binary distribution, but also
+              all expressions and paths of subterms of the source.  This is
+              useful if one wants to realise on the target system a Nix
+              expression that is similar but not quite the same as the one
+              being distributed, since any common subterms will be reused.
+            </para>
+
+            <para>
+              This query has a number of options:
+            </para> 
+
+            <variablelist>
+
+              <varlistentry>
+                <term><option>--normalise</option></term>
+                <listitem>
+                  <para>
+                    Causes the requisite paths of the <emphasis>normal
+                      forms</emphasis> of the expressions to be printed, rather
+                    than the requisite paths of the expressions themselves.
+                  </para>
+                </listitem>
+              </varlistentry>
+
+              <varlistentry>
+                <term><option>--exclude-exprs</option></term>
+                <listitem>
+                  <para>
+                    Excludes the paths of Nix expressions.  This causes the
+                    closure property to be lost, that is, the resulting set of
+                    paths is not enough to ensure realisibility.
+                  </para>
+                </listitem>
+              </varlistentry>
+
+              <varlistentry>
+                <term><option>--include-successors</option></term>
+                <listitem>
+                  <para>
+                    Also include the requisites of successors (normal forms).
+                    Only the requisites of <emphasis>known</emphasis>
+                    successors are included, i.e., the normal forms of
+                    derivation expressions that have never been normalised will
+                    not be included.
+                  </para>
+
+                  <para>
+                    Note that not just the successor of a derivation expression
+                    will be included, but also the successors of all input
+                    expressions of that derivation expression.  I.e., all
+                    normal forms of subterms involved in the normalisation of
+                    the top-level term are included.
+                  </para>
+                </listitem>
+              </varlistentry>
+
+            </variablelist>
+
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--expansion</option></term>
+          <listitem>
+            <para>
+              For each identifier in <replaceable>args</replaceable>, prints
+              all expansions of that identifier, that is, all paths whose
+              current content matches the identifier.
+            </para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term><option>--graph</option></term>
+          <listitem>
+            <para>
+              Prints a graph of the closure of the expressions identified by
+              <replaceable>args</replaceable> in the format of the
+              <command>dot</command> tool of AT&amp;T's GraphViz package.
+            </para>
+          </listitem>
+        </varlistentry>
+
+      </variablelist>
+
+    </refsect2>
+
+  </refsect1>
+
+
+</refentry>
+
+
+<!--
+local variables:
+sgml-parent-document: ("book.xml" "refentry")
+end:
+-->