Fix internal links

This commit is contained in:
Eelco Dolstra 2020-07-24 15:46:16 +02:00
parent da3d776cb9
commit 05a282295f
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
21 changed files with 245 additions and 262 deletions

View file

@ -134,8 +134,7 @@ causes the list of machines in `/etc/nix/machines` to be included. (This
is the default.) is the default.)
If you want the builders to use caches, you likely want to set the If you want the builders to use caches, you likely want to set the
option [`builders-use-substitutes`](#conf-builders-use-substitutes) in option `builders-use-substitutes` in your local `nix.conf`.
your local `nix.conf`.
To build only on remote builders and disable building on the local To build only on remote builders and disable building on the local
machine, you can use the option `--max-jobs 0`. machine, you can use the option `--max-jobs 0`.

View file

@ -108,5 +108,4 @@ We now have a Nix installation configured to automatically sign and
upload every local build to a remote binary cache. upload every local build to a remote binary cache.
Before deploying this to production, be sure to consider the Before deploying this to production, be sure to consider the
implementation caveats in [Implementation [implementation caveats](#implementation-caveats).
Caveats](#chap-post-build-hook-caveats).

View file

@ -141,10 +141,10 @@ The following settings are currently available:
the builder should use all available CPU cores in the system. the builder should use all available CPU cores in the system.
- `diff-hook` - `diff-hook`
Absolute path to an executable capable of diffing build results. The Absolute path to an executable capable of diffing build
hook executes if [varlistentry\_title](#conf-run-diff-hook) is true, results. The hook is executed if `run-diff-hook` is true, and the
and the output of a build is known to not be the same. This program output of a build is known to not be the same. This program is not
is not executed to determine if two results are the same. executed to determine if two results are the same.
The diff hook is executed by the same user and group who ran the The diff hook is executed by the same user and group who ran the
build. However, the diff hook does not have write access to the build. However, the diff hook does not have write access to the
@ -169,7 +169,7 @@ The following settings are currently available:
configuration file, and cannot be passed at the command line. configuration file, and cannot be passed at the command line.
- `enforce-determinism` - `enforce-determinism`
See [varlistentry\_title](#conf-repeat). See `repeat`.
- `extra-sandbox-paths` - `extra-sandbox-paths`
A list of additional paths appended to `sandbox-paths`. Useful if A list of additional paths appended to `sandbox-paths`. Useful if
@ -343,7 +343,7 @@ The following settings are currently available:
password my-password password my-password
For the exact syntax, see [the `curl` For the exact syntax, see [the `curl`
documentation.](https://ec.haxx.se/usingcurl-netrc.html) documentation](https://ec.haxx.se/usingcurl-netrc.html).
> **Note** > **Note**
> >
@ -434,9 +434,9 @@ The following settings are currently available:
deterministic. The default value is 0. If the value is non-zero, deterministic. The default value is 0. If the value is non-zero,
every build is repeated the specified number of times. If the every build is repeated the specified number of times. If the
contents of any of the runs differs from the previous ones and contents of any of the runs differs from the previous ones and
[varlistentry\_title](#conf-enforce-determinism) is true, the build `enforce-determinism` is true, the build is rejected and the
is rejected and the resulting store paths are not registered as resulting store paths are not registered as “valid” in Nixs
“valid” in Nixs database. database.
- `require-sigs` - `require-sigs`
If set to `true` (the default), any non-content-addressed path added If set to `true` (the default), any non-content-addressed path added
@ -461,20 +461,21 @@ The following settings are currently available:
- `sandbox` - `sandbox`
If set to `true`, builds will be performed in a *sandboxed If set to `true`, builds will be performed in a *sandboxed
environment*, i.e., theyre isolated from the normal file system environment*, i.e., theyre isolated from the normal file system
hierarchy and will only see their dependencies in the Nix store, the hierarchy and will only see their dependencies in the Nix store,
temporary build directory, private versions of `/proc`, `/dev`, the temporary build directory, private versions of `/proc`,
`/dev/shm` and `/dev/pts` (on Linux), and the paths configured with `/dev`, `/dev/shm` and `/dev/pts` (on Linux), and the paths
the [`sandbox-paths` option](#conf-sandbox-paths). This is useful to configured with the `sandbox-paths` option. This is useful to
prevent undeclared dependencies on files in directories such as prevent undeclared dependencies on files in directories such as
`/usr/bin`. In addition, on Linux, builds run in private PID, mount, `/usr/bin`. In addition, on Linux, builds run in private PID,
network, IPC and UTS namespaces to isolate them from other processes mount, network, IPC and UTS namespaces to isolate them from other
in the system (except that fixed-output derivations do not run in processes in the system (except that fixed-output derivations do
private network namespace to ensure they can access the network). not run in private network namespace to ensure they can access the
network).
Currently, sandboxing only work on Linux and macOS. The use of a Currently, sandboxing only work on Linux and macOS. The use of a
sandbox requires that Nix is run as root (so you should use the sandbox requires that Nix is run as root (so you should use the
[“build users” feature](#conf-build-users-group) to perform the “build users” feature to perform the actual builds under different
actual builds under different users than root). users than root).
If this option is set to `relaxed`, then fixed-output derivations If this option is set to `relaxed`, then fixed-output derivations
and derivations that have the `__noChroot` attribute set to `true` and derivations that have the `__noChroot` attribute set to `true`
@ -631,81 +632,61 @@ The following settings are currently available:
## Deprecated Settings ## Deprecated Settings
- `binary-caches` - `binary-caches`
*Deprecated:* `binary-caches` is now an alias to *Deprecated:* `binary-caches` is now an alias to `substituters`.
[varlistentry\_title](#conf-substituters).
- `binary-cache-public-keys` - `binary-cache-public-keys`
*Deprecated:* `binary-cache-public-keys` is now an alias to *Deprecated:* `binary-cache-public-keys` is now an alias `trusted-public-keys`.
[varlistentry\_title](#conf-trusted-public-keys).
- `build-compress-log` - `build-compress-log`
*Deprecated:* `build-compress-log` is now an alias to *Deprecated:* `build-compress-log` is now an alias to `compress-build-log`.
[varlistentry\_title](#conf-compress-build-log).
- `build-cores` - `build-cores`
*Deprecated:* `build-cores` is now an alias to *Deprecated:* `build-cores` is now an alias to `cores`.
[varlistentry\_title](#conf-cores).
- `build-extra-chroot-dirs` - `build-extra-chroot-dirs`
*Deprecated:* `build-extra-chroot-dirs` is now an alias to *Deprecated:* `build-extra-chroot-dirs` is now an alias to `extra-sandbox-paths`.
[varlistentry\_title](#conf-extra-sandbox-paths).
- `build-extra-sandbox-paths` - `build-extra-sandbox-paths`
*Deprecated:* `build-extra-sandbox-paths` is now an alias to *Deprecated:* `build-extra-sandbox-paths` is now an alias to `extra-sandbox-paths`.
[varlistentry\_title](#conf-extra-sandbox-paths).
- `build-fallback` - `build-fallback`
*Deprecated:* `build-fallback` is now an alias to *Deprecated:* `build-fallback` is now an alias to `fallback`.
[varlistentry\_title](#conf-fallback).
- `build-max-jobs` - `build-max-jobs`
*Deprecated:* `build-max-jobs` is now an alias to *Deprecated:* `build-max-jobs` is now an alias to `max-jobs`.
[varlistentry\_title](#conf-max-jobs).
- `build-max-log-size` - `build-max-log-size`
*Deprecated:* `build-max-log-size` is now an alias to *Deprecated:* `build-max-log-size` is now an alias to `max-build-log-size`.
[varlistentry\_title](#conf-max-build-log-size).
- `build-max-silent-time` - `build-max-silent-time`
*Deprecated:* `build-max-silent-time` is now an alias to *Deprecated:* `build-max-silent-time` is now an alias to `max-silent-time`.
[varlistentry\_title](#conf-max-silent-time).
- `build-repeat` - `build-repeat`
*Deprecated:* `build-repeat` is now an alias to *Deprecated:* `build-repeat` is now an alias to `repeat`.
[varlistentry\_title](#conf-repeat).
- `build-timeout` - `build-timeout`
*Deprecated:* `build-timeout` is now an alias to *Deprecated:* `build-timeout` is now an alias to `timeout`.
[varlistentry\_title](#conf-timeout).
- `build-use-chroot` - `build-use-chroot`
*Deprecated:* `build-use-chroot` is now an alias to *Deprecated:* `build-use-chroot` is now an alias to `sandbox`.
[varlistentry\_title](#conf-sandbox).
- `build-use-sandbox` - `build-use-sandbox`
*Deprecated:* `build-use-sandbox` is now an alias to *Deprecated:* `build-use-sandbox` is now an alias to `sandbox`.
[varlistentry\_title](#conf-sandbox).
- `build-use-substitutes` - `build-use-substitutes`
*Deprecated:* `build-use-substitutes` is now an alias to *Deprecated:* `build-use-substitutes` is now an alias to `substitute`.
[varlistentry\_title](#conf-substitute).
- `gc-keep-derivations` - `gc-keep-derivations`
*Deprecated:* `gc-keep-derivations` is now an alias to *Deprecated:* `gc-keep-derivations` is now an alias to `keep-derivations`.
[varlistentry\_title](#conf-keep-derivations).
- `gc-keep-outputs` - `gc-keep-outputs`
*Deprecated:* `gc-keep-outputs` is now an alias to *Deprecated:* `gc-keep-outputs` is now an alias to `keep-outputs`.
[varlistentry\_title](#conf-keep-outputs).
- `env-keep-derivations` - `env-keep-derivations`
*Deprecated:* `env-keep-derivations` is now an alias to *Deprecated:* `env-keep-derivations` is now an alias to `keep-env-derivations`.
[varlistentry\_title](#conf-keep-env-derivations).
- `extra-binary-caches` - `extra-binary-caches`
*Deprecated:* `extra-binary-caches` is now an alias to *Deprecated:* `extra-binary-caches` is now an alias to `extra-substituters`.
[varlistentry\_title](#conf-extra-substituters).
- `trusted-binary-caches` - `trusted-binary-caches`
*Deprecated:* `trusted-binary-caches` is now an alias to *Deprecated:* `trusted-binary-caches` is now an alias to `trusted-substituters`.
[varlistentry\_title](#conf-trusted-substituters).

View file

@ -92,9 +92,10 @@ Most Nix commands interpret the following environment variables:
- `NIX_REMOTE` - `NIX_REMOTE`
This variable should be set to `daemon` if you want to use the Nix This variable should be set to `daemon` if you want to use the Nix
daemon to execute Nix operations. This is necessary in [multi-user daemon to execute Nix operations. This is necessary in [multi-user
Nix installations](#ssec-multi-user). If the Nix daemon's Unix Nix installations](../installation/multi-user.md). If the Nix
socket is at some non-standard path, this variable should be set to daemon's Unix socket is at some non-standard path, this variable
`unix://path/to/socket`. Otherwise, it should be left unset. should be set to `unix://path/to/socket`. Otherwise, it should be
left unset.
- `NIX_SHOW_STATS` - `NIX_SHOW_STATS`
If set to `1`, Nix will print some evaluation statistics, such as If set to `1`, Nix will print some evaluation statistics, such as

View file

@ -32,9 +32,10 @@ to a temporary location. The tarball must include a single top-level
directory containing at least a file named `default.nix`. directory containing at least a file named `default.nix`.
`nix-build` is essentially a wrapper around `nix-build` is essentially a wrapper around
[`nix-instantiate`](#sec-nix-instantiate) (to translate a high-level Nix [`nix-instantiate`](nix-instantiate.md) (to translate a high-level Nix
expression to a low-level store derivation) and [`nix-store expression to a low-level store derivation) and [`nix-store
--realise`](#rsec-nix-store-realise) (to build the store derivation). --realise`](nix-store.md#operation---realise) (to build the store
derivation).
> **Warning** > **Warning**
> >

View file

@ -11,16 +11,16 @@ Title: nix-collect-garbage
# Description # Description
The command `nix-collect-garbage` is mostly an alias of [`nix-store The command `nix-collect-garbage` is mostly an alias of [`nix-store
--gc`](#rsec-nix-store-gc), that is, it deletes all unreachable paths in --gc`](nix-store.md#operation---gc), that is, it deletes all
the Nix store to clean up your system. However, it provides two unreachable paths in the Nix store to clean up your system. However,
additional options: `-d` (`--delete-old`), which deletes all old it provides two additional options: `-d` (`--delete-old`), which
generations of all profiles in `/nix/var/nix/profiles` by invoking deletes all old generations of all profiles in `/nix/var/nix/profiles`
`nix-env --delete-generations old` on all profiles (of course, this by invoking `nix-env --delete-generations old` on all profiles (of
makes rollbacks to previous configurations impossible); and course, this makes rollbacks to previous configurations impossible);
`--delete-older-than` *period*, where period is a value such as `30d`, and `--delete-older-than` *period*, where period is a value such as
which deletes all generations older than the specified number of days in `30d`, which deletes all generations older than the specified number
all profiles in `/nix/var/nix/profiles` (except for the generations that of days in all profiles in `/nix/var/nix/profiles` (except for the
were active at that point in time). generations that were active at that point in time).
# Example # Example

View file

@ -92,7 +92,7 @@ have an effect.
done if this flag had not been specified, without actually doing it. done if this flag had not been specified, without actually doing it.
`--dry-run` also prints out which paths will be `--dry-run` also prints out which paths will be
[substituted](#gloss-substitute) (i.e., downloaded) and which paths [substituted](../glossary.md) (i.e., downloaded) and which paths
will be built from source (because no substitute is available). will be built from source (because no substitute is available).
- `--system-filter` *system* - `--system-filter` *system*
@ -186,11 +186,11 @@ a number of possible ways:
gcc-3.3.6 gcc-4.1.1` will install both version of GCC (and will gcc-3.3.6 gcc-4.1.1` will install both version of GCC (and will
probably cause a user environment conflict\!). probably cause a user environment conflict\!).
- If [`--attr`](#opt-attr) (`-A`) is specified, the arguments are - If `--attr` (`-A`) is specified, the arguments are *attribute
*attribute paths* that select attributes from the top-level Nix paths* that select attributes from the top-level Nix
expression. This is faster than using derivation names and expression. This is faster than using derivation names and
unambiguous. To find out the attribute paths of available packages, unambiguous. To find out the attribute paths of available
use `nix-env -qaP`. packages, use `nix-env -qaP`.
- If `--from-profile` *path* is given, *args* is a set of names - If `--from-profile` *path* is given, *args* is a set of names
denoting installed store paths in the profile *path*. This is an denoting installed store paths in the profile *path*. This is an
@ -198,18 +198,19 @@ a number of possible ways:
another. another.
- If `--from-expression` is given, *args* are Nix - If `--from-expression` is given, *args* are Nix
[functions](#ss-functions) that are called with the active Nix [functions](../expressions/language-constructs.md#functions)
expression as their single argument. The derivations returned by that are called with the active Nix expression as their single
those function calls are installed. This allows derivations to be argument. The derivations returned by those function calls are
specified in an unambiguous way, which is necessary if there are installed. This allows derivations to be specified in an
multiple derivations with the same name. unambiguous way, which is necessary if there are multiple
derivations with the same name.
- If *args* are store derivations, then these are - If *args* are store derivations, then these are
[realised](#rsec-nix-store-realise), and the resulting output paths [realised](nix-store.md#operation---realise), and the resulting output paths
are installed. are installed.
- If *args* are store paths that are not store derivations, then these - If *args* are store paths that are not store derivations, then these
are [realised](#rsec-nix-store-realise) and installed. are [realised](nix-store.md#operation---realise) and installed.
- By default all outputs are installed for each derivation. That can - By default all outputs are installed for each derivation. That can
be reduced by setting `meta.outputsToInstall`. be reduced by setting `meta.outputsToInstall`.
@ -319,9 +320,9 @@ left untouched; this is not an error. It is also not an error if an
element of *args* matches no installed derivations. element of *args* matches no installed derivations.
For a description of how *args* is mapped to a set of store paths, see For a description of how *args* is mapped to a set of store paths, see
[`--install`](#rsec-nix-env-install). If *args* describes multiple store [`--install`](#operation---install). If *args* describes multiple
paths with the same symbolic name, only the one with the highest version store paths with the same symbolic name, only the one with the highest
is installed. version is installed.
## Flags ## Flags
@ -584,9 +585,9 @@ derivation is shown unless `--no-name` is specified.
- `--attr-path`; `-P` - `--attr-path`; `-P`
Print the *attribute path* of the derivation, which can be used to Print the *attribute path* of the derivation, which can be used to
unambiguously select it using the [`--attr` option](#opt-attr) unambiguously select it using the `--attr` option available in
available in commands that install derivations like `nix-env commands that install derivations like `nix-env --install`. This
--install`. This option only works together with `--available` option only works together with `--available`
- `--no-name` - `--no-name`
Suppress printing of the `name` attribute of each derivation. Suppress printing of the `name` attribute of each derivation.

View file

@ -21,13 +21,13 @@ is printed in hexadecimal. To generate the same hash as
`nix-prefetch-url` you have to specify multiple arguments, see below for `nix-prefetch-url` you have to specify multiple arguments, see below for
an example. an example.
The hash is computed over a *serialisation* of each path: a dump of the The hash is computed over a *serialisation* of each path: a dump of
file system tree rooted at the path. This allows directories and the file system tree rooted at the path. This allows directories and
symlinks to be hashed as well as regular files. The dump is in the *NAR symlinks to be hashed as well as regular files. The dump is in the
format* produced by [`nix-store` `--dump`](#refsec-nix-store-dump). *NAR format* produced by [`nix-store
Thus, `nix-hash --dump`](nix-store.md#operation---dump). Thus, `nix-hash path`
path` yields the same cryptographic hash as `nix-store --dump yields the same cryptographic hash as `nix-store --dump path |
path | md5sum`. md5sum`.
# Options # Options

View file

@ -21,11 +21,11 @@ Title: nix-instantiate
# Description # Description
The command `nix-instantiate` generates [store The command `nix-instantiate` generates [store
derivations](#gloss-derivation) from (high-level) Nix expressions. It derivations](../glossary.md) from (high-level) Nix expressions. It
evaluates the Nix expressions in each of *files* (which defaults to evaluates the Nix expressions in each of *files* (which defaults to
*./default.nix*). Each top-level expression should evaluate to a *./default.nix*). Each top-level expression should evaluate to a
derivation, a list of derivations, or a set of derivations. The paths of derivation, a list of derivations, or a set of derivations. The paths
the resulting store derivations are printed on standard output. of the resulting store derivations are printed on standard output.
If *files* is the character `-`, then a Nix expression will be read from If *files* is the character `-`, then a Nix expression will be read from
standard input. standard input.
@ -33,7 +33,7 @@ standard input.
# Options # Options
- `--add-root` *path*; `--indirect` - `--add-root` *path*; `--indirect`
See the [corresponding options](#opt-add-root) in `nix-store`. See the [corresponding options](nix-store.md) in `nix-store`.
- `--parse` - `--parse`
Just parse the input files, and print their abstract syntax trees on Just parse the input files, and print their abstract syntax trees on
@ -69,7 +69,7 @@ standard input.
When used with `--eval`, print the resulting value as an XML When used with `--eval`, print the resulting value as an XML
representation of the abstract syntax tree rather than as an ATerm. representation of the abstract syntax tree rather than as an ATerm.
The schema is the same as that used by the [`toXML` The schema is the same as that used by the [`toXML`
built-in](#builtin-toXML). built-in](../expressions/builtins.md).
- `--read-write-mode` - `--read-write-mode`
When used with `--eval`, perform evaluation in read/write mode so When used with `--eval`, perform evaluation in read/write mode so

View file

@ -79,13 +79,14 @@ The operation `--realise` essentially “builds” the specified store
paths. Realisation is a somewhat overloaded term: paths. Realisation is a somewhat overloaded term:
- If the store path is a *derivation*, realisation ensures that the - If the store path is a *derivation*, realisation ensures that the
output paths of the derivation are [valid](#gloss-validity) (i.e., output paths of the derivation are [valid](../glossary.md) (i.e.,
the output path and its closure exist in the file system). This can the output path and its closure exist in the file system). This
be done in several ways. First, it is possible that the outputs are can be done in several ways. First, it is possible that the
already valid, in which case we are done immediately. Otherwise, outputs are already valid, in which case we are done
there may be [substitutes](#gloss-substitute) that produce the immediately. Otherwise, there may be [substitutes](../glossary.md)
outputs (e.g., by downloading them). Finally, the outputs can be that produce the outputs (e.g., by downloading them). Finally, the
produced by performing the build action described by the derivation. outputs can be produced by performing the build action described
by the derivation.
- If the store path is not a derivation, realisation ensures that the - If the store path is not a derivation, realisation ensures that the
specified path is valid (i.e., it and its closure exist in the file specified path is valid (i.e., it and its closure exist in the file
@ -129,11 +130,12 @@ Special exit codes:
- `101` - `101`
Build timeout, the build was aborted because it did not complete Build timeout, the build was aborted because it did not complete
within the specified [`timeout`](#conf-timeout). within the specified `timeout`.
- `102` - `102`
Hash mismatch, the build output was rejected because it does not Hash mismatch, the build output was rejected because it does not
match the specified [`outputHash`](#fixed-output-drvs). match the [`outputHash` attribute of the
derivation](../expressions/advanced-attributes.md).
- `104` - `104`
Not deterministic, the build succeeded in check mode but the Not deterministic, the build succeeded in check mode but the
@ -153,12 +155,12 @@ or.
## Examples ## Examples
This operation is typically used to build store derivations produced by This operation is typically used to build store derivations produced by
[`nix-instantiate`](#sec-nix-instantiate): [`nix-instantiate`](nix-instantiate.md):
$ nix-store -r $(nix-instantiate ./test.nix) $ nix-store -r $(nix-instantiate ./test.nix)
/nix/store/31axcgrlbfsxzmfff1gyj1bf62hvkby2-aterm-2.3.1 /nix/store/31axcgrlbfsxzmfff1gyj1bf62hvkby2-aterm-2.3.1
This is essentially what [`nix-build`](#sec-nix-build) does. This is essentially what [`nix-build`](nix-build.md) does.
To test whether a previously-built derivation is deterministic: To test whether a previously-built derivation is deterministic:
@ -232,8 +234,7 @@ control what gets deleted and in what order:
or TiB units. or TiB units.
The behaviour of the collector is also influenced by the The behaviour of the collector is also influenced by the
[`keep-outputs`](#conf-keep-outputs) and `keep-outputs` and `keep-derivations` variables in the Nix
[`keep-derivations`](#conf-keep-derivations) variables in the Nix
configuration file. configuration file.
By default, the collector prints the total number of freed bytes when it By default, the collector prints the total number of freed bytes when it
@ -307,17 +308,17 @@ symlink.
- `--force-realise`; `-f` - `--force-realise`; `-f`
Realise each argument to the query first (see [`nix-store Realise each argument to the query first (see [`nix-store
--realise`](#rsec-nix-store-realise)). --realise`](#operation---realise)).
## Queries ## Queries
- `--outputs` - `--outputs`
Prints out the [output paths](#gloss-output-path) of the store Prints out the [output paths](../glossary.md) of the store
derivations *paths*. These are the paths that will be produced when derivations *paths*. These are the paths that will be produced when
the derivation is built. the derivation is built.
- `--requisites`; `-R` - `--requisites`; `-R`
Prints out the [closure](#gloss-closure) of the store path *paths*. Prints out the [closure](../glossary.md) of the store path *paths*.
This query has one option: This query has one option:
@ -334,7 +335,7 @@ symlink.
derivation and specifying the option `--include-outputs`. derivation and specifying the option `--include-outputs`.
- `--references` - `--references`
Prints the set of [references](#gloss-reference) of the store paths Prints the set of [references](../glossary.md) of the store paths
*paths*, that is, their immediate dependencies. (For *all* *paths*, that is, their immediate dependencies. (For *all*
dependencies, use `--requisites`.) dependencies, use `--requisites`.)
@ -352,7 +353,7 @@ symlink.
in the Nix store that are dependent on *paths*. in the Nix store that are dependent on *paths*.
- `--deriver`; `-d` - `--deriver`; `-d`
Prints the [deriver](#gloss-deriver) of the store paths *paths*. If Prints the [deriver](../glossary.md) of the store paths *paths*. If
the path has no deriver (e.g., if it is a source file), or if the the path has no deriver (e.g., if it is a source file), or if the
deriver is not known (e.g., in the case of a binary-only deriver is not known (e.g., in the case of a binary-only
deployment), the string `unknown-deriver` is printed. deployment), the string `unknown-deriver` is printed.
@ -605,13 +606,12 @@ anyway. Likewise, all permissions are left out except for the execute
bit, because all files in the Nix store have 444 or 555 permission. bit, because all files in the Nix store have 444 or 555 permission.
Also, a NAR archive is *canonical*, meaning that “equal” paths always Also, a NAR archive is *canonical*, meaning that “equal” paths always
produce the same NAR archive. For instance, directory entries are always produce the same NAR archive. For instance, directory entries are
sorted so that the actual on-disk order doesnt influence the result. always sorted so that the actual on-disk order doesnt influence the
This means that the cryptographic hash of a NAR dump of a path is usable result. This means that the cryptographic hash of a NAR dump of a
as a fingerprint of the contents of the path. Indeed, the hashes of path is usable as a fingerprint of the contents of the path. Indeed,
store paths stored in Nixs database (see [`nix-store -q the hashes of store paths stored in Nixs database (see `nix-store -q
--hash`](#refsec-nix-store-query)) are SHA-256 hashes of the NAR dump of --hash`) are SHA-256 hashes of the NAR dump of each store path.
each store path.
NAR archives support filenames of unlimited length and 64-bit file NAR archives support filenames of unlimited length and 64-bit file
sizes. They can contain regular files, directories, and symbolic links, sizes. They can contain regular files, directories, and symbolic links,

View file

@ -71,35 +71,34 @@ Most Nix commands accept the following command-line options:
- `--max-jobs` / `-j` *number* - `--max-jobs` / `-j` *number*
Sets the maximum number of build jobs that Nix will perform in Sets the maximum number of build jobs that Nix will perform in
parallel to the specified number. Specify `auto` to use the number parallel to the specified number. Specify `auto` to use the number
of CPUs in the system. The default is specified by the of CPUs in the system. The default is specified by the `max-jobs`
[`max-jobs`](#conf-max-jobs) configuration setting, which itself configuration setting, which itself defaults to `1`. A higher
defaults to `1`. A higher value is useful on SMP systems or to value is useful on SMP systems or to exploit I/O latency.
exploit I/O latency.
Setting it to `0` disallows building on the local machine, which is Setting it to `0` disallows building on the local machine, which is
useful when you want builds to happen only on remote builders. useful when you want builds to happen only on remote builders.
- `--cores` - `--cores`
Sets the value of the `NIX_BUILD_CORES` environment variable in the Sets the value of the `NIX_BUILD_CORES` environment variable in
invocation of builders. Builders can use this variable at their the invocation of builders. Builders can use this variable at
discretion to control the maximum amount of parallelism. For their discretion to control the maximum amount of parallelism. For
instance, in Nixpkgs, if the derivation attribute instance, in Nixpkgs, if the derivation attribute
`enableParallelBuilding` is set to `true`, the builder passes the `enableParallelBuilding` is set to `true`, the builder passes the
`-jN` flag to GNU Make. It defaults to the value of the `-jN` flag to GNU Make. It defaults to the value of the `cores`
[`cores`](#conf-cores) configuration setting, if set, or `1` configuration setting, if set, or `1` otherwise. The value `0`
otherwise. The value `0` means that the builder should use all means that the builder should use all available CPU cores in the
available CPU cores in the system. system.
- `--max-silent-time` - `--max-silent-time`
Sets the maximum number of seconds that a builder can go without Sets the maximum number of seconds that a builder can go without
producing any data on standard output or standard error. The default producing any data on standard output or standard error. The
is specified by the [`max-silent-time`](#conf-max-silent-time) default is specified by the `max-silent-time` configuration
configuration setting. `0` means no time-out. setting. `0` means no time-out.
- `--timeout` - `--timeout`
Sets the maximum number of seconds that a builder can run. The Sets the maximum number of seconds that a builder can run. The
default is specified by the [`timeout`](#conf-timeout) configuration default is specified by the `timeout` configuration setting. `0`
setting. `0` means no timeout. means no timeout.
- `--keep-going` / `-k` - `--keep-going` / `-k`
Keep going in case of failed builds, to the greatest extent Keep going in case of failed builds, to the greatest extent
@ -145,16 +144,17 @@ Most Nix commands accept the following command-line options:
operations will fail. operations will fail.
- `--arg` *name* *value* - `--arg` *name* *value*
This option is accepted by `nix-env`, `nix-instantiate`, `nix-shell` This option is accepted by `nix-env`, `nix-instantiate`,
and `nix-build`. When evaluating Nix expressions, the expression `nix-shell` and `nix-build`. When evaluating Nix expressions, the
evaluator will automatically try to call functions that it expression evaluator will automatically try to call functions that
encounters. It can automatically call functions for which every it encounters. It can automatically call functions for which every
argument has a [default value](#ss-functions) (e.g., `{ argName ? argument has a [default
defaultValue }: value](../expressions/language-constructs.md#functions) (e.g.,
...`). With `--arg`, you can also call functions that have arguments `{ argName ? defaultValue }: ...`). With `--arg`, you can also
without a default value (or override a default value). That is, if call functions that have arguments without a default value (or
the evaluator encounters a function with an argument named *name*, override a default value). That is, if the evaluator encounters a
it will call it with value *value*. function with an argument named *name*, it will call it with value
*value*.
For instance, the top-level `default.nix` in Nixpkgs is actually a For instance, the top-level `default.nix` in Nixpkgs is actually a
function: function:
@ -165,28 +165,28 @@ Most Nix commands accept the following command-line options:
}: ... }: ...
So if you call this Nix expression (e.g., when you do `nix-env -i So if you call this Nix expression (e.g., when you do `nix-env -i
pkgname`), the function will be called automatically using the value pkgname`), the function will be called automatically using the
[`builtins.currentSystem`](#builtin-currentSystem) for the `system` value [`builtins.currentSystem`](../expressions/builtins.md) for
argument. You can override this using `--arg`, e.g., `nix-env -i the `system` argument. You can override this using `--arg`, e.g.,
pkgname --arg system `nix-env -i pkgname --arg system \"i686-freebsd\"`. (Note that
\"i686-freebsd\"`. (Note that since the argument is a Nix string since the argument is a Nix string literal, you have to escape the
literal, you have to escape the quotes.) quotes.)
- `--argstr` *name* *value* - `--argstr` *name* *value*
This option is like `--arg`, only the value is not a Nix expression This option is like `--arg`, only the value is not a Nix
but a string. So instead of `--arg system \"i686-linux\"` (the outer expression but a string. So instead of `--arg system
quotes are to keep the shell happy) you can say `--argstr system \"i686-linux\"` (the outer quotes are to keep the shell happy) you
i686-linux`. can say `--argstr system i686-linux`.
- `--attr` / `-A` *attrPath* - `--attr` / `-A` *attrPath*
Select an attribute from the top-level Nix expression being Select an attribute from the top-level Nix expression being
evaluated. (`nix-env`, `nix-instantiate`, `nix-build` and evaluated. (`nix-env`, `nix-instantiate`, `nix-build` and
`nix-shell` only.) The *attribute path* *attrPath* is a sequence of `nix-shell` only.) The *attribute path* *attrPath* is a sequence
attribute names separated by dots. For instance, given a top-level of attribute names separated by dots. For instance, given a
Nix expression *e*, the attribute path `xorg.xorgserver` would cause top-level Nix expression *e*, the attribute path `xorg.xorgserver`
the expression `e.xorg.xorgserver` to be used. See [`nix-env would cause the expression `e.xorg.xorgserver` to be used. See
--install`](#refsec-nix-env-install-examples) for some concrete [`nix-env --install`](nix-env.md#operation---install) for some
examples. concrete examples.
In addition to attribute names, you can also specify array indices. In addition to attribute names, you can also specify array indices.
For instance, the attribute path `foo.3.bar` selects the `bar` For instance, the attribute path `foo.3.bar` selects the `bar`

View file

@ -89,10 +89,10 @@ Derivations can declare some infrequently used optional attributes.
to make it use the proxy server configuration specified by the user to make it use the proxy server configuration specified by the user
in the environment variables `http_proxy` and friends. in the environment variables `http_proxy` and friends.
This attribute is only allowed in [fixed-output This attribute is only allowed in *fixed-output derivations* (see
derivations](#fixed-output-drvs), where impurities such as these are below), where impurities such as these are okay since (the hash
okay since (the hash of) the output is known in advance. It is of) the output is known in advance. It is ignored for all other
ignored for all other derivations. derivations.
> **Warning** > **Warning**
> >
@ -183,13 +183,14 @@ Derivations can declare some infrequently used optional attributes.
- `"recursive"` - `"recursive"`
The hash is computed over the NAR archive dump of the output The hash is computed over the NAR archive dump of the output
(i.e., the result of [`nix-store (i.e., the result of [`nix-store
--dump`](#refsec-nix-store-dump)). In this case, the output can --dump`](../command-ref/nix-store.md#operation---dump)). In
be anything, including a directory tree. this case, the output can be anything, including a directory
tree.
The `outputHash` attribute, finally, must be a string containing the The `outputHash` attribute, finally, must be a string containing
hash in either hexadecimal or base-32 notation. (See the [`nix-hash` the hash in either hexadecimal or base-32 notation. (See the
command](#sec-nix-hash) for information about converting to and from [`nix-hash` command](../command-ref/nix-hash.md) for information
base-32 notation.) about converting to and from base-32 notation.)
- `passAsFile` - `passAsFile`
A list of names of attributes that should be passed via files rather A list of names of attributes that should be passed via files rather
@ -213,10 +214,11 @@ Derivations can declare some infrequently used optional attributes.
- `preferLocalBuild` - `preferLocalBuild`
If this attribute is set to `true` and [distributed building is If this attribute is set to `true` and [distributed building is
enabled](#chap-distributed-builds), then, if possible, the derivaton enabled](../advanced-topics/distributed-builds.md), then, if
will be built locally instead of forwarded to a remote machine. This possible, the derivaton will be built locally instead of forwarded
is appropriate for trivial builders where the cost of doing a to a remote machine. This is appropriate for trivial builders
download or remote build would exceed the cost of building locally. where the cost of doing a download or remote build would exceed
the cost of building locally.
- `allowSubstitutes` - `allowSubstitutes`
If this attribute is set to `false`, then Nix will always build this If this attribute is set to `false`, then Nix will always build this

View file

@ -57,19 +57,19 @@ For instance, `derivation` is also available as `builtins.derivation`.
installations that dont have the desired built-in function. installations that dont have the desired built-in function.
- `builtins.compareVersions` *s1* *s2* - `builtins.compareVersions` *s1* *s2*
Compare two strings representing versions and return `-1` if version Compare two strings representing versions and return `-1` if
*s1* is older than version *s2*, `0` if they are the same, and `1` version *s1* is older than version *s2*, `0` if they are the same,
if *s1* is newer than *s2*. The version comparison algorithm is the and `1` if *s1* is newer than *s2*. The version comparison
same as the one used by [`nix-env algorithm is the same as the one used by [`nix-env
-u`](#ssec-version-comparisons). -u`](../command-ref/nix-env.md#operation---upgrade).
- `builtins.concatLists` *lists* - `builtins.concatLists` *lists*
Concatenate a list of lists into a single list. Concatenate a list of lists into a single list.
- `builtins.concatStringsSep` *separator* *list* - `builtins.concatStringsSep` *separator* *list*
Concatenate a list of strings with a separator between each element, Concatenate a list of strings with a separator between each
e.g. `concatStringsSep "/" element, e.g. `concatStringsSep "/" ["usr" "local" "bin"] ==
["usr" "local" "bin"] == "usr/local/bin"` "usr/local/bin"`
- `builtins.currentSystem` - `builtins.currentSystem`
The built-in value `currentSystem` evaluates to the Nix platform The built-in value `currentSystem` evaluates to the Nix platform
@ -77,10 +77,9 @@ For instance, `derivation` is also available as `builtins.derivation`.
evaluated, such as `"i686-linux"` or `"x86_64-darwin"`. evaluated, such as `"i686-linux"` or `"x86_64-darwin"`.
- `builtins.deepSeq` *e1* *e2* - `builtins.deepSeq` *e1* *e2*
This is like `seq This is like `seq e1 e2`, except that *e1* is evaluated *deeply*:
e1 if its a list or set, its elements or attributes are also
e2`, except that *e1* is evaluated *deeply*: if its a list or set, evaluated recursively.
its elements or attributes are also evaluated recursively.
- `derivation` *attrs*; `builtins.derivation` *attrs* - `derivation` *attrs*; `builtins.derivation` *attrs*
`derivation` is described in [its own section](derivations.md). `derivation` is described in [its own section](derivations.md).
@ -104,7 +103,7 @@ For instance, `derivation` is also available as `builtins.derivation`.
- `builtins.fetchurl` *url* - `builtins.fetchurl` *url*
Download the specified URL and return the path of the downloaded Download the specified URL and return the path of the downloaded
file. This function is not available if [restricted evaluation file. This function is not available if [restricted evaluation
mode](#conf-restrict-eval) is enabled. mode](../command-ref/conf-file.md) is enabled.
- `fetchTarball` *url*; `builtins.fetchTarball` *url* - `fetchTarball` *url*; `builtins.fetchTarball` *url*
Download the specified URL, unpack it and return the path of the Download the specified URL, unpack it and return the path of the
@ -140,7 +139,7 @@ For instance, `derivation` is also available as `builtins.derivation`.
stdenv.mkDerivation { … } stdenv.mkDerivation { … }
This function is not available if [restricted evaluation This function is not available if [restricted evaluation
mode](#conf-restrict-eval) is enabled. mode](../command-ref/conf-file.md) is enabled.
- `builtins.fetchGit` *args* - `builtins.fetchGit` *args*
Fetch a path from git. *args* can be a URL, in which case the HEAD Fetch a path from git. *args* can be a URL, in which case the HEAD
@ -491,9 +490,8 @@ For instance, `derivation` is also available as `builtins.derivation`.
name is everything up to but not including the first dash followed name is everything up to but not including the first dash followed
by a digit, and the version is everything following that dash. The by a digit, and the version is everything following that dash. The
result is returned in a set `{ name, version }`. Thus, result is returned in a set `{ name, version }`. Thus,
`builtins.parseDrvName "nix-0.12pre12876"` returns `{ name = "nix"; `builtins.parseDrvName "nix-0.12pre12876"` returns `{ name =
version = "0.12pre12876"; "nix"; version = "0.12pre12876"; }`.
}`.
- `builtins.path` *args* - `builtins.path` *args*
An enrichment of the built-in path type, based on the attributes An enrichment of the built-in path type, based on the attributes
@ -508,9 +506,8 @@ For instance, `derivation` is also available as `builtins.derivation`.
like `@`. like `@`.
- filter - filter
A function of the type expected by A function of the type expected by `builtins.filterSource`,
[builtins.filterSource](#builtin-filterSource), with the same with the same semantics.
semantics.
- recursive - recursive
When `false`, when `path` is added to the store it is with a When `false`, when `path` is added to the store it is with a
@ -609,7 +606,7 @@ For instance, `derivation` is also available as `builtins.derivation`.
- `builtins.splitVersion` *s* - `builtins.splitVersion` *s*
Split a string representing a version into its components, by the Split a string representing a version into its components, by the
same version splitting logic underlying the version comparison in same version splitting logic underlying the version comparison in
[`nix-env -u`](#ssec-version-comparisons). [`nix-env -u`](../command-ref/nix-env.md#operation---upgrade).
- `builtins.stringLength` *e* - `builtins.stringLength` *e*
Return the length of the string *e*. If *e* is not a string, Return the length of the string *e*. If *e* is not a string,

View file

@ -19,11 +19,11 @@ yet. The best way to test the package is by using the command
$ ./result/bin/hello $ ./result/bin/hello
Hello, world! Hello, world!
The [`-A`](#opt-attr) option selects the `hello` attribute. This is The `-A` option selects the `hello` attribute. This is faster than
faster than using the symbolic package name specified by the `name` using the symbolic package name specified by the `name` attribute
attribute (which also happens to be `hello`) and is unambiguous (there (which also happens to be `hello`) and is unambiguous (there can be
can be multiple packages with the symbolic name `hello`, but there can multiple packages with the symbolic name `hello`, but there can be
be only one attribute in a set named `hello`). only one attribute in a set named `hello`).
`nix-build` registers the `./result` symlink as a garbage collection `nix-build` registers the `./result` symlink as a garbage collection
root, so unless and until you delete the `./result` symlink, the output root, so unless and until you delete the `./result` symlink, the output

View file

@ -8,7 +8,7 @@ easiest way to install Nix is to run the following command:
``` ```
If you're using macOS 10.15 (Catalina) or newer, consult [the macOS If you're using macOS 10.15 (Catalina) or newer, consult [the macOS
installation instructions](#sect-macos-installation) before installing. installation instructions](#macos-installation) before installing.
As of Nix 2.1.0, the Nix installer will always default to creating a As of Nix 2.1.0, the Nix installer will always default to creating a
single-user installation, however opting in to the multi-user single-user installation, however opting in to the multi-user
@ -64,7 +64,7 @@ will invoke `sudo` as needed.
> >
> If you need Nix to use a different group ID or user ID set, you will > If you need Nix to use a different group ID or user ID set, you will
> have to download the tarball manually and [edit the install > have to download the tarball manually and [edit the install
> script](#sect-nix-install-binary-tarball). > script](#installing-from-a-binary-tarball).
The installer will modify `/etc/bashrc`, and `/etc/zshrc` if they exist. The installer will modify `/etc/bashrc`, and `/etc/zshrc` if they exist.
The installer will first back up these files with a `.backup-before-nix` The installer will first back up these files with a `.backup-before-nix`

View file

@ -39,16 +39,16 @@ expect to do many builds at the same time.
## Running the daemon ## Running the daemon
The [Nix daemon](#sec-nix-daemon) should be started as follows (as The [Nix daemon](../command-ref/nix-daemon.md) should be started as
`root`): follows (as `root`):
$ nix-daemon $ nix-daemon
Youll want to put that line somewhere in your systems boot scripts. Youll want to put that line somewhere in your systems boot scripts.
To let unprivileged users use the daemon, they should set the To let unprivileged users use the daemon, they should set the
[`NIX_REMOTE` environment variable](#envar-remote) to `daemon`. So you [`NIX_REMOTE` environment variable](../command-ref/env-common.md) to
should put a line like `daemon`. So you should put a line like
export NIX_REMOTE=daemon export NIX_REMOTE=daemon

View file

@ -1,8 +1,9 @@
# Basic Package Management # Basic Package Management
The main command for package management is [`nix-env`](#sec-nix-env). The main command for package management is
You can use it to install, upgrade, and erase packages, and to query [`nix-env`](../command-ref/nix-env.md). You can use it to install,
what packages are installed or are available for installation. upgrade, and erase packages, and to query what packages are installed
or are available for installation.
In Nix, different users can have different “views” on the set of In Nix, different users can have different “views” on the set of
installed applications. That is, there might be lots of applications installed applications. That is, there might be lots of applications

View file

@ -7,8 +7,8 @@ better way: *Nix channels*.
A Nix channel is just a URL that points to a place that contains a set A Nix channel is just a URL that points to a place that contains a set
of Nix expressions and a manifest. Using the command of Nix expressions and a manifest. Using the command
[`nix-channel`](#sec-nix-channel) you can automatically stay up to date [`nix-channel`](../command-ref/nix-channel.md) you can automatically
with whatever is available at that URL. stay up to date with whatever is available at that URL.
To see the list of official NixOS channels, visit To see the list of official NixOS channels, visit
<https://nixos.org/channels>. <https://nixos.org/channels>.

View file

@ -1,9 +1,9 @@
# Serving a Nix store via S3 # Serving a Nix store via S3
Nix has built-in support for storing and fetching store paths from Nix has built-in support for storing and fetching store paths from
Amazon S3 and S3-compatible services. This uses the same *binary* cache Amazon S3 and S3-compatible services. This uses the same *binary*
mechanism that Nix usually uses to fetch prebuilt binaries from cache mechanism that Nix usually uses to fetch prebuilt binaries from
[cache.nixos.org](cache.nixos.org). [cache.nixos.org](https://cache.nixos.org/).
The following options can be specified as URL parameters to the S3 URL: The following options can be specified as URL parameters to the S3 URL:
@ -85,8 +85,8 @@ caches.
Your bucket will need a bucket policy allowing the desired users to Your bucket will need a bucket policy allowing the desired users to
perform the `s3:GetObject` and `s3:GetBucketLocation` action on all perform the `s3:GetObject` and `s3:GetBucketLocation` action on all
objects in the bucket. The anonymous policy in [Anonymous Reads to your objects in the bucket. The [anonymous policy given
S3-compatible binary cache](#ssec-s3-substituter-anonymous-reads) can be above](#anonymous-reads-to-your-s3-compatible-binary-cache) can be
updated to have a restricted `Principal` to support this. updated to have a restricted `Principal` to support this.
## Authenticated Writes to your S3-compatible binary cache ## Authenticated Writes to your S3-compatible binary cache

View file

@ -148,11 +148,11 @@ This release has the following new features:
`nix-store `nix-store
--verify-path`. --verify-path`.
- `nix log` shows the build log of a package or path. If the build - `nix log` shows the build log of a package or path. If the
log is not available locally, it will try to obtain it from the build log is not available locally, it will try to obtain it
configured substituters (such as from the configured substituters (such as
[cache.nixos.org](cache.nixos.org), which now provides build [cache.nixos.org](https://cache.nixos.org/), which now
logs). provides build logs).
- `nix edit` opens the source code of a package in your editor. - `nix edit` opens the source code of a package in your editor.
@ -213,16 +213,17 @@ This release has the following new features:
current values. current values.
- The store abstraction that Nix has had for a long time to support - The store abstraction that Nix has had for a long time to support
store access via the Nix daemon has been extended significantly. In store access via the Nix daemon has been extended
particular, substituters (which used to be external programs such as significantly. In particular, substituters (which used to be
`download-from-binary-cache`) are now subclasses of the abstract external programs such as `download-from-binary-cache`) are now
`Store` class. This allows many Nix commands to operate on such subclasses of the abstract `Store` class. This allows many Nix
store types. For example, `nix path-info` shows information about commands to operate on such store types. For example, `nix
paths in your local Nix store, while `nix path-info --store path-info` shows information about paths in your local Nix store,
https://cache.nixos.org/` shows information about paths in the while `nix path-info --store https://cache.nixos.org/` shows
specified binary cache. Similarly, `nix-copy-closure`, `nix-push` information about paths in the specified binary cache. Similarly,
and substitution are all instances of the general notion of copying `nix-copy-closure`, `nix-push` and substitution are all instances
paths between different kinds of Nix stores. of the general notion of copying paths between different kinds of
Nix stores.
Stores are specified using an URI-like syntax, e.g. Stores are specified using an URI-like syntax, e.g.
<https://cache.nixos.org/> or <ssh://machine>. The following store <https://cache.nixos.org/> or <ssh://machine>. The following store
@ -241,7 +242,7 @@ This release has the following new features:
`/home/alice/nix/store`) to differ from its “logical” location `/home/alice/nix/store`) to differ from its “logical” location
(typically `/nix/store`). This allows non-root users to use Nix (typically `/nix/store`). This allows non-root users to use Nix
while still getting the benefits from prebuilt binaries from while still getting the benefits from prebuilt binaries from
[cache.nixos.org](cache.nixos.org). [cache.nixos.org](https://cache.nixos.org/).
- `BinaryCacheStore` is the abstract superclass of all binary - `BinaryCacheStore` is the abstract superclass of all binary
cache stores. It supports writing build logs and NAR content cache stores. It supports writing build logs and NAR content
@ -356,11 +357,11 @@ This release has the following new features:
- `NIX_PATH` is now lazy, so URIs in the path are only downloaded if - `NIX_PATH` is now lazy, so URIs in the path are only downloaded if
they are needed for evaluation. they are needed for evaluation.
- You can now use <channel:> as a short-hand for - You can now use `channel:` as a short-hand for
<https://nixos.org/channels//nixexprs.tar.xz>. For example, <https://nixos.org/channels//nixexprs.tar.xz>. For example,
`nix-build channel:nixos-15.09 -A hello` will build the GNU Hello `nix-build channel:nixos-15.09 -A hello` will build the GNU Hello
package from the `nixos-15.09` channel. In the future, this may use package from the `nixos-15.09` channel. In the future, this may
Git to fetch updates more efficiently. use Git to fetch updates more efficiently.
- When `--no-build-output` is given, the last 10 lines of the build - When `--no-build-output` is given, the last 10 lines of the build
log will be shown if a build fails. log will be shown if a build fails.
@ -382,7 +383,7 @@ This release has the following new features:
in all places where Nix allows URIs. in all places where Nix allows URIs.
- Brotli compression is now supported. In particular, - Brotli compression is now supported. In particular,
[cache.nixos.org](cache.nixos.org) build logs are now compressed [cache.nixos.org](https://cache.nixos.org/) build logs are now compressed
using Brotli. using Brotli.
- `nix-env` - `nix-env`

View file

@ -4,18 +4,18 @@ This is primarily a bug fix release. It also reduces memory consumption
in certain situations. In addition, it has the following new features: in certain situations. In addition, it has the following new features:
- The Nix installer will no longer default to the Multi-User - The Nix installer will no longer default to the Multi-User
installation for macOS. You can still [instruct the installer to run installation for macOS. You can still instruct the installer to
in multi-user mode](#sect-multi-user-installation). run in multi-user mode.
- The Nix installer now supports performing a Multi-User installation - The Nix installer now supports performing a Multi-User
for Linux computers which are running systemd. You can [select a installation for Linux computers which are running systemd. You
Multi-User installation](#sect-multi-user-installation) by passing can select a Multi-User installation by passing the `--daemon`
the `--daemon` flag to the installer: `sh <(curl flag to the installer: `sh <(curl https://nixos.org/nix/install)
https://nixos.org/nix/install) --daemon`. --daemon`.
The multi-user installer cannot handle systems with SELinux. If your The multi-user installer cannot handle systems with SELinux. If
system has SELinux enabled, you can [force the installer to run in your system has SELinux enabled, you can force the installer to
single-user mode](#sect-single-user-installation). run in single-user mode.
- New builtin functions: `builtins.bitAnd`, `builtins.bitOr`, - New builtin functions: `builtins.bitAnd`, `builtins.bitOr`,
`builtins.bitXor`, `builtins.fromTOML`, `builtins.concatMap`, `builtins.bitXor`, `builtins.fromTOML`, `builtins.concatMap`,