about summary refs log tree commit diff
path: root/doc/manual/glossary.xml
blob: efbf96f0afa6000a354031aaab3dfbffb37c8c6e (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<appendix xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink">

<title>Glossary</title>


<glosslist>


<glossentry xml: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 xml: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 packages and
  compositions thereof.  Deploying software using Nix entails writing
  Nix expressions for your packages.  Nix expressions are translated
  to derivations that are stored in the Nix store.  These derivations
  can then be built.</para></glossdef>

</glossentry>


<glossentry xml: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 xml: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 xml:id="gloss-output-path"><glossterm>output path</glossterm>

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

</glossentry>


<glossentry xml: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 xml: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>


<glossentry xml:id="gloss-user-env"><glossterm>user environment</glossterm>

  <glossdef><para>An automatically generated store object that
  consists of a set of symlinks to “active” applications, i.e., other
  store paths.  These are generated automatically by <link
  linkend="sec-nix-env"><command>nix-env</command></link>.  See <xref
  linkend="sec-profiles" />.</para>

  </glossdef>
  
</glossentry>


<glossentry xml:id="gloss-profile"><glossterm>profile</glossterm>

  <glossdef><para>A symlink to the current <link
  linkend="gloss-user-env">user environment</link> of a user, e.g.,
  <filename>/nix/var/nix/profiles/default</filename>.</para></glossdef>

</glossentry>



</glosslist>


</appendix>