1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-15 21:41:04 +01:00

WIP document derivations and deriving paths

And get rid of "store derivation" nonsense.
This commit is contained in:
John Ericson 2023-11-16 11:04:19 -05:00
parent 7ebeceaf3d
commit a654cc2a72
31 changed files with 359 additions and 186 deletions

View file

@ -37,11 +37,11 @@ directory containing at least a file named `default.nix`.
`nix-build` is essentially a wrapper around
[`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 [derivation]) and [`nix-store
--realise`](@docroot@/command-ref/nix-store/realise.md) (to build the store
derivation).
[store derivation]: @docroot@/glossary.md#gloss-store-derivation
[derivation]: @docroot@/glossary.md#gloss-derivation
> **Warning**
>
@ -80,7 +80,7 @@ except for `--arg` and `--attr` / `-A` which are passed to [`nix-instantiate`](n
```console
$ nix-build '<nixpkgs>' --attr firefox
store derivation is /nix/store/qybprl8sz2lc...-firefox-1.5.0.7.drv
derivation is /nix/store/qybprl8sz2lc...-firefox-1.5.0.7.drv
/nix/store/d18hyl92g30l...-firefox-1.5.0.7
$ ls -l result

View file

@ -42,9 +42,9 @@ When using public key authentication, you can avoid typing the passphrase with `
- `--include-outputs`
Also copy the outputs of [store derivation]s included in the closure.
Also copy the outputs of [derivation]s included in the closure.
[store derivation]: @docroot@/glossary.md#gloss-store-derivation
[derivation]: @docroot@/glossary.md#gloss-store-derivation
- `--use-substitutes` / `-s`

View file

@ -25,7 +25,7 @@ The arguments *args* map to store paths in a number of possible ways:
These are [realised], and the resulting output paths are installed.
Currently installed derivations with a name equal to the name of a derivation being added are removed unless the option `--preserve-installed` is specified.
[derivation]: @docroot@/glossary.md#gloss-derivation
[derivation expression]: @docroot@/glossary.md#gloss-derivation-expression
[default Nix expression]: @docroot@/command-ref/files/default-nix-expression.md
[realised]: @docroot@/glossary.md#gloss-realise
@ -61,9 +61,9 @@ The arguments *args* map to store paths in a number of possible ways:
The derivations returned by those function calls are installed.
This allows derivations to be specified in an unambiguous way, which is necessary if there are multiple derivations with the same name.
- If *args* are [store derivations](@docroot@/glossary.md#gloss-store-derivation), then these are [realised], and the resulting output paths are installed.
- If *args* are [store paths] to [derivations](@docroot@/glossary.md#gloss-derivation), then those derivations are [realised], and the resulting output paths are installed.
- If *args* are [store paths] that are not store derivations, then these are [realised] and installed.
- If *args* are [store paths] not to derivations, then these are [realised] and installed.
- By default all [outputs](@docroot@/language/derivations.md#attr-outputs) are installed for each [derivation].
This can be overridden by adding a `meta.outputsToInstall` attribute on the derivation listing a subset of the output names.
@ -193,7 +193,7 @@ To copy the store path with symbolic name `gcc` from another profile:
$ nix-env --install --from-profile /nix/var/nix/profiles/foo gcc
```
To install a specific [store derivation] (typically created by
To install a specific [derivation] (typically created by
`nix-instantiate`):
```console

View file

@ -125,7 +125,10 @@ derivation is shown unless `--no-name` is specified.
- `--drv-path`
Print the path of the [store derivation](@docroot@/glossary.md#gloss-store-derivation).
Print the [store path] to the [derivation].
[store path]: @docroot@/glossary.md#gloss-store-path
[derivation]: @docroot@/glossary.md#gloss-derivation
- `--out-path`

View file

@ -1,6 +1,6 @@
# Name
`nix-instantiate` - instantiate store derivations from Nix expressions
`nix-instantiate` - instantiate derivations from Nix expressions
# Synopsis
@ -17,13 +17,13 @@
# Description
The command `nix-instantiate` produces [store derivation]s from (high-level) Nix expressions.
The command `nix-instantiate` produces [derivation]s from (high-level) Nix expressions.
It evaluates the Nix expressions in each of *files* (which defaults to
*./default.nix*). Each top-level expression should evaluate to a
derivation, a list of derivations, or a set of derivations. The paths
of the resulting store derivations are printed on standard output.
of the resulting derivations are printed on standard output.
[store derivation]: @docroot@/glossary.md#gloss-store-derivation
[derivation]: @docroot@/glossary.md#gloss-derivation
If *files* is the character `-`, then a Nix expression will be read from
standard input.
@ -42,8 +42,8 @@ standard input.
- `--eval`
Just parse and evaluate the input files, and print the resulting
values on standard output. No instantiation of store derivations
takes place.
values on standard output.
Derivations are not serialized and written to the store, but instead just discarded.
> **Warning**
>
@ -128,7 +128,7 @@ standard input.
# Examples
Instantiate [store derivation]s from a Nix expression, and build them using `nix-store`:
Instantiate [derivation]s from a Nix expression, and build them using `nix-store`:
```console
$ nix-instantiate test.nix (instantiate)

View file

@ -26,14 +26,14 @@ symlink.
- `--use-output` / `-u`
For each argument to the query that is a [store derivation], apply the
For each argument to the query that is a [derivation], apply the
query to the output path of the derivation instead.
- `--force-realise` / `-f`
Realise each argument to the query first (see [`nix-store --realise`](./realise.md)).
[store derivation]: @docroot@/glossary.md#gloss-store-derivation
[derivation]: @docroot@/glossary.md#gloss-derivation
# Queries
@ -54,12 +54,12 @@ symlink.
This query has one option:
- `--include-outputs`
Also include the existing output paths of [store derivation]s,
Also include the existing output paths of [derivation]s,
and their closures.
This query can be used to implement various kinds of deployment. A
*source deployment* is obtained by distributing the closure of a
store derivation. A *binary deployment* is obtained by distributing
derivation. A *binary deployment* is obtained by distributing
the closure of an output path. A *cache deployment* (combined
source/binary deployment, including binaries of build-time-only
dependencies) is obtained by distributing the closure of a store
@ -112,7 +112,7 @@ symlink.
of the `dot` tool of AT\&T's [Graphviz
package](http://www.graphviz.org/). This can be used to visualise
dependency graphs. To obtain a build-time dependency graph, apply
this to a store derivation. To obtain a runtime dependency graph,
this to a derivation. To obtain a runtime dependency graph,
apply it to an output path.
- `--tree`
@ -128,13 +128,13 @@ symlink.
Prints the references graph of the store paths *paths* in the
[GraphML](http://graphml.graphdrawing.org/) file format. This can be
used to visualise dependency graphs. To obtain a build-time
dependency graph, apply this to a [store derivation]. To obtain a
dependency graph, apply this to a [derivation]. To obtain a
runtime dependency graph, apply it to an output path.
- `--binding` *name* / `-b` *name*
Prints the value of the attribute *name* (i.e., environment
variable) of the [store derivation]s *paths*. It is an error for a
variable) of the [derivation]s *paths*. It is an error for a
derivation to not have the specified attribute.
- `--hash`

View file

@ -11,10 +11,10 @@
Each of *paths* is processed as follows:
- If the path leads to a [store derivation]:
1. If it is not [valid], substitute the store derivation file itself.
- If the path leads to a [derivation]:
1. If it is not [valid], substitute the derivation file itself.
2. Realise its [output paths]:
- Try to fetch from [substituters] the [store objects] associated with the output paths in the store derivation's [closure].
- Try to fetch from [substituters] the [store objects] associated with the output paths in the derivation's [closure].
- With [content-addressed derivations] (experimental):
Determine the output paths to realise by querying content-addressed realisation entries in the [Nix database].
- For any store paths that cannot be substituted, produce the required store objects:
@ -23,11 +23,11 @@ Each of *paths* is processed as follows:
<!-- TODO: Link to build process page #8888 -->
- Otherwise, and if the path is not already valid: Try to fetch the associated [store objects] in the path's [closure] from [substituters].
If no substitutes are available and no store derivation is given, realisation fails.
If no substitutes are available and no derivation is given, realisation fails.
[store paths]: @docroot@/store/store-path.md
[valid]: @docroot@/glossary.md#gloss-validity
[store derivation]: @docroot@/glossary.md#gloss-store-derivation
[derivation]: @docroot@/glossary.md#gloss-derivation
[output paths]: @docroot@/glossary.md#gloss-output-path
[store objects]: @docroot@/store/store-object.md
[closure]: @docroot@/glossary.md#gloss-closure
@ -71,7 +71,7 @@ For non-derivation arguments, the argument itself is printed.
# Examples
This operation is typically used to build [store derivation]s produced by
This operation is typically used to build [derivation]s produced by
[`nix-instantiate`](@docroot@/command-ref/nix-instantiate.md):
```console