about summary refs log tree commit diff
path: root/doc/manual/glossary.xml
blob: cee6dac254d673ff9e4a43929865d6546ef7f642 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<appendix><title>Glossary</title>

<glosslist>


<glossentry id="gloss-derivation"><glossterm>derivation</glossterm>

  <glossdef><para>A description of a build action.  The result of a
  derivation is a store object.  Derivations are typically specified
  in Nix expressions using the <link
  linkend="ssec-derivation"><function>derivation</function>
  primitive</link>.  These are translated into low-level
  <emphasis>store derivations</emphasis> (implicitly by
  <command>nix-env</command> and <command>nix-build</command>, or
  explicitly by <command>nix-instantiate</command>).</para></glossdef>

</glossentry>


<glossentry><glossterm>store</glossterm>

  <glossdef><para>The location in the file system where store objects
  live.  Typically <filename>/nix/store</filename>.</para></glossdef>

</glossentry>


<glossentry><glossterm>store path</glossterm>

  <glossdef><para>The location in the file system of a store object,
  i.e., an immediate child of the Nix store
  directory.</para></glossdef>

</glossentry>


<glossentry><glossterm>store object</glossterm>

  <glossdef><para>A file that is an immediate child of the Nix store
  directory.  These can be regular files, but also entire directory
  trees.  Store objects can be sources (objects copied from outside of
  the store), derivation outputs (objects produced by running a build
  action), or derivations (files describing a build
  action).</para></glossdef>

</glossentry>


<glossentry id="gloss-substitute"><glossterm>substitute</glossterm>

  <glossdef><para>A substitute is a command invocation stored in the
  Nix database that describes how to build a store object, bypassing
  normal the build mechanism (i.e., derivations).  Typically, the
  substitute builds the store object by downloading a pre-built
  version of the store object from some server.</para></glossdef>

</glossentry>


<glossentry><glossterm>purity</glossterm>

  <glossdef><para>The assumption that equal Nix derivations when run
  always produce the same output.  This cannot be guaranteed in
  general (e.g., a builder can rely on external inputs such as the
  network or the system time) but the Nix model assumes
  it.</para></glossdef>

</glossentry>


<glossentry><glossterm>Nix expression</glossterm>

  <glossdef><para>A high-level description of software components and
  compositions thereof.  Deploying software using Nix entails writing
  Nix expressions for your components.  Nix expressions are translated
  to derivations that are stored in the Nix store.  These derivations
  can then be built.</para></glossdef>

</glossentry>


<glossentry id="gloss-reference"><glossterm>reference</glossterm>

  <glossdef><para>A store path <varname>P</varname> is said to have a
  reference to a store path <varname>Q</varname> if the store object
  at <varname>P</varname> contains the path <varname>Q</varname>
  somewhere.  This implies than an execution involving
  <varname>P</varname> potentially needs <varname>Q</varname> to be
  present.  The <emphasis>references</emphasis> of a store path are
  the set of store paths to which it has a reference.</para></glossdef>

</glossentry>


<glossentry id="gloss-closure"><glossterm>closure</glossterm>

  <glossdef><para>The closure of a store path is the set of store
  paths that are directly or indirectly “reachable” from that store
  path; that is, it’s the closure of the path under the <link
  linkend="gloss-reference">references</link> relation.  For instance,
  if the store object at path <varname>P</varname> contains a
  reference to path <varname>Q</varname>, then <varname>Q</varname> is
  in the closure of <varname>P</varname>.  For correct deployment it
  is necessary to deploy whole closures, since otherwise at runtime
  files could be missing.  The command <command>nix-store
  -qR</command> prints out closures of store paths.</para></glossdef>

</glossentry>


<glossentry id="gloss-output-path"><glossterm>output path</glossterm>

  <glossdef><para>A store path produced by a derivation.</para></glossdef>

</glossentry>


<glossentry id="gloss-deriver"><glossterm>deriver</glossterm>

  <glossdef><para>The deriver of an <link
  linkend="gloss-output-path">output path</link> is the store
  derivation that built it.</para></glossdef>

</glossentry>


<glossentry id="gloss-validity"><glossterm>validity</glossterm>

  <glossdef><para>A store path is considered
  <emphasis>valid</emphasis> if it exists in the file system, is
  listed in the Nix database as being valid, and if all paths in its
  closure are also valid.</para></glossdef>

</glossentry>


</glosslist>


</appendix>