mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
Merge pull request #14469 from roberth/doc-check-link-fragments
Manual: fix and check link fragments
This commit is contained in:
commit
af41eccb31
33 changed files with 102 additions and 59 deletions
|
|
@ -107,12 +107,29 @@ rec {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
disable =
|
||||||
|
let
|
||||||
|
inherit (pkgs.stdenv) hostPlatform;
|
||||||
|
in
|
||||||
|
args@{
|
||||||
|
pkgName,
|
||||||
|
testName,
|
||||||
|
test,
|
||||||
|
}:
|
||||||
|
lib.any (b: b) [
|
||||||
|
# FIXME: Nix manual is impure and does not produce all settings on darwin
|
||||||
|
(hostPlatform.isDarwin && pkgName == "nix-manual" && testName == "linkcheck")
|
||||||
|
];
|
||||||
|
|
||||||
componentTests =
|
componentTests =
|
||||||
(lib.concatMapAttrs (
|
(lib.concatMapAttrs (
|
||||||
pkgName: pkg:
|
pkgName: pkg:
|
||||||
lib.concatMapAttrs (testName: test: {
|
lib.concatMapAttrs (
|
||||||
|
testName: test:
|
||||||
|
lib.optionalAttrs (!disable { inherit pkgName testName test; }) {
|
||||||
"${componentTestsPrefix}${pkgName}-${testName}" = test;
|
"${componentTestsPrefix}${pkgName}-${testName}" = test;
|
||||||
}) (pkg.tests or { })
|
}
|
||||||
|
) (pkg.tests or { })
|
||||||
) nixComponentsInstrumented)
|
) nixComponentsInstrumented)
|
||||||
// lib.optionalAttrs (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) {
|
// lib.optionalAttrs (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) {
|
||||||
"${componentTestsPrefix}nix-functional-tests" = nixComponentsInstrumented.nix-functional-tests;
|
"${componentTestsPrefix}nix-functional-tests" = nixComponentsInstrumented.nix-functional-tests;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
|
|
||||||
def transform_anchors_html:
|
def transform_anchors_html:
|
||||||
. | gsub($empty_anchor_regex; "<a name=\"" + .anchor + "\"></a>")
|
. | gsub($empty_anchor_regex; "<a id=\"" + .anchor + "\"></a>")
|
||||||
| gsub($anchor_regex; "<a href=\"#" + .anchor + "\" id=\"" + .anchor + "\">" + .text + "</a>");
|
| gsub($anchor_regex; "<a href=\"#" + .anchor + "\" id=\"" + .anchor + "\">" + .text + "</a>");
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,9 @@
|
||||||
# Configuration Options
|
# Configuration Options
|
||||||
|
|
||||||
version,
|
version,
|
||||||
|
|
||||||
|
# `tests` attribute
|
||||||
|
testers,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -87,6 +90,29 @@ mkMesonDerivation (finalAttrs: {
|
||||||
echo "doc manual ''$out/share/doc/nix/manual" >> ''$out/nix-support/hydra-build-products
|
echo "doc manual ''$out/share/doc/nix/manual" >> ''$out/nix-support/hydra-build-products
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
/**
|
||||||
|
The root of the HTML manual.
|
||||||
|
E.g. "${nix-manual.site}/index.html" exists.
|
||||||
|
*/
|
||||||
|
passthru.site = finalAttrs.finalPackage + "/share/doc/nix/manual";
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
# https://nixos.org/manual/nixpkgs/stable/index.html#tester-lycheeLinkCheck
|
||||||
|
linkcheck = testers.lycheeLinkCheck {
|
||||||
|
inherit (finalAttrs.finalPackage) site;
|
||||||
|
extraConfig = {
|
||||||
|
exclude = [
|
||||||
|
# Exclude auto-generated JSON schema documentation which has
|
||||||
|
# auto-generated fragment IDs that don't match the link references
|
||||||
|
".*/protocols/json/.*\\.html"
|
||||||
|
# Exclude undocumented builtins
|
||||||
|
".*/language/builtins\\.html#builtins-addErrorContext"
|
||||||
|
".*/language/builtins\\.html#builtins-appendContext"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
platforms = lib.platforms.all;
|
platforms = lib.platforms.all;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ The moving parts of channels are:
|
||||||
- The official channels listed at <https://nixos.org/channels>
|
- The official channels listed at <https://nixos.org/channels>
|
||||||
- The user-specific list of [subscribed channels](#subscribed-channels)
|
- The user-specific list of [subscribed channels](#subscribed-channels)
|
||||||
- The [downloaded channel contents](#channels)
|
- The [downloaded channel contents](#channels)
|
||||||
- The [Nix expression search path](@docroot@/command-ref/conf-file.md#conf-nix-path), set with the [`-I` option](#opt-i) or the [`NIX_PATH` environment variable](#env-NIX_PATH)
|
- The [Nix expression search path](@docroot@/command-ref/conf-file.md#conf-nix-path), set with the [`-I` option](#opt-I) or the [`NIX_PATH` environment variable](#env-NIX_PATH)
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ 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`](#operation---install). If *args* describes multiple
|
[`--install`](./install.md). If *args* describes multiple
|
||||||
store paths with the same symbolic name, only the one with the highest
|
store paths with the same symbolic name, only the one with the highest
|
||||||
version is installed.
|
version is installed.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ You can also build Nix for one of the [supported platforms](#platforms).
|
||||||
This section assumes you are using Nix with the [`flakes`] and [`nix-command`] experimental features enabled.
|
This section assumes you are using Nix with the [`flakes`] and [`nix-command`] experimental features enabled.
|
||||||
|
|
||||||
[`flakes`]: @docroot@/development/experimental-features.md#xp-feature-flakes
|
[`flakes`]: @docroot@/development/experimental-features.md#xp-feature-flakes
|
||||||
[`nix-command`]: @docroot@/development/experimental-features.md#xp-nix-command
|
[`nix-command`]: @docroot@/development/experimental-features.md#xp-feature-nix-command
|
||||||
|
|
||||||
To build all dependencies and start a shell in which all environment variables are set up so that those dependencies can be found:
|
To build all dependencies and start a shell in which all environment variables are set up so that those dependencies can be found:
|
||||||
|
|
||||||
|
|
@ -256,7 +256,7 @@ You can use any of the other supported environments in place of `nix-cli-ccacheS
|
||||||
## Editor integration
|
## Editor integration
|
||||||
|
|
||||||
The `clangd` LSP server is installed by default on the `clang`-based `devShell`s.
|
The `clangd` LSP server is installed by default on the `clang`-based `devShell`s.
|
||||||
See [supported compilation environments](#compilation-environments) and instructions how to set up a shell [with flakes](#nix-with-flakes) or in [classic Nix](#classic-nix).
|
See [supported compilation environments](#compilation-environments) and instructions how to set up a shell [with flakes](#building-nix-with-flakes) or in [classic Nix](#building-nix).
|
||||||
|
|
||||||
To use the LSP with your editor, you will want a `compile_commands.json` file telling `clangd` how we are compiling the code.
|
To use the LSP with your editor, you will want a `compile_commands.json` file telling `clangd` how we are compiling the code.
|
||||||
Meson's configure always produces this inside the build directory.
|
Meson's configure always produces this inside the build directory.
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ This will:
|
||||||
|
|
||||||
3. Stop the program when the test fails, allowing the user to then issue arbitrary commands to GDB.
|
3. Stop the program when the test fails, allowing the user to then issue arbitrary commands to GDB.
|
||||||
|
|
||||||
### Characterisation testing { #characaterisation-testing-unit }
|
### Characterisation testing { #characterisation-testing-unit }
|
||||||
|
|
||||||
See [functional characterisation testing](#characterisation-testing-functional) for a broader discussion of characterisation testing.
|
See [functional characterisation testing](#characterisation-testing-functional) for a broader discussion of characterisation testing.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@
|
||||||
|
|
||||||
- [impure derivation]{#gloss-impure-derivation}
|
- [impure derivation]{#gloss-impure-derivation}
|
||||||
|
|
||||||
[An experimental feature](#@docroot@/development/experimental-features.md#xp-feature-impure-derivations) that allows derivations to be explicitly marked as impure,
|
[An experimental feature](@docroot@/development/experimental-features.md#xp-feature-impure-derivations) that allows derivations to be explicitly marked as impure,
|
||||||
so that they are always rebuilt, and their outputs not reused by subsequent calls to realise them.
|
so that they are always rebuilt, and their outputs not reused by subsequent calls to realise them.
|
||||||
|
|
||||||
- [Nix database]{#gloss-nix-database}
|
- [Nix database]{#gloss-nix-database}
|
||||||
|
|
@ -279,7 +279,7 @@
|
||||||
|
|
||||||
See [References](@docroot@/store/store-object.md#references) for details.
|
See [References](@docroot@/store/store-object.md#references) for details.
|
||||||
|
|
||||||
- [referrer]{#gloss-reference}
|
- [referrer]{#gloss-referrer}
|
||||||
|
|
||||||
A reversed edge from one [store object] to another.
|
A reversed edge from one [store object] to another.
|
||||||
|
|
||||||
|
|
@ -367,8 +367,8 @@
|
||||||
|
|
||||||
Nix represents files as [file system objects][file system object], and how they belong together is encoded as [references][reference] between [store objects][store object] that contain these file system objects.
|
Nix represents files as [file system objects][file system object], and how they belong together is encoded as [references][reference] between [store objects][store object] that contain these file system objects.
|
||||||
|
|
||||||
The [Nix language] allows denoting packages in terms of [attribute sets](@docroot@/language/types.md#attribute-set) containing:
|
The [Nix language] allows denoting packages in terms of [attribute sets](@docroot@/language/types.md#type-attrs) containing:
|
||||||
- attributes that refer to the files of a package, typically in the form of [derivation outputs](#output),
|
- attributes that refer to the files of a package, typically in the form of [derivation outputs](#gloss-output),
|
||||||
- attributes with metadata, such as information about how the package is supposed to be used.
|
- attributes with metadata, such as information about how the package is supposed to be used.
|
||||||
|
|
||||||
The exact shape of these attribute sets is up to convention.
|
The exact shape of these attribute sets is up to convention.
|
||||||
|
|
@ -383,7 +383,7 @@
|
||||||
|
|
||||||
[string]: ./language/types.md#type-string
|
[string]: ./language/types.md#type-string
|
||||||
[path]: ./language/types.md#type-path
|
[path]: ./language/types.md#type-path
|
||||||
[attribute name]: ./language/types.md#attribute-set
|
[attribute name]: ./language/types.md#type-attrs
|
||||||
|
|
||||||
- [base directory]{#gloss-base-directory}
|
- [base directory]{#gloss-base-directory}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -333,7 +333,7 @@ Here is more information on the `output*` attributes, and what values they may b
|
||||||
|
|
||||||
`outputHashAlgo` can only be `null` when `outputHash` follows the SRI format, because in that case the choice of hash algorithm is determined by `outputHash`.
|
`outputHashAlgo` can only be `null` when `outputHash` follows the SRI format, because in that case the choice of hash algorithm is determined by `outputHash`.
|
||||||
|
|
||||||
- [`outputHash`]{#adv-attr-outputHashAlgo}; [`outputHash`]{#adv-attr-outputHashMode}
|
- [`outputHash`]{#adv-attr-outputHash}
|
||||||
|
|
||||||
This will specify the output hash of the single output of a [fixed-output derivation].
|
This will specify the output hash of the single output of a [fixed-output derivation].
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ It outputs an attribute set, and produces a [store derivation] as a side effect
|
||||||
- [`name`]{#attr-name} ([String](@docroot@/language/types.md#type-string))
|
- [`name`]{#attr-name} ([String](@docroot@/language/types.md#type-string))
|
||||||
|
|
||||||
A symbolic name for the derivation.
|
A symbolic name for the derivation.
|
||||||
See [derivation outputs](@docroot@/store/derivation/index.md#outputs) for what this is affects.
|
See [derivation outputs](@docroot@/store/derivation/outputs/index.md#outputs) for what this is affects.
|
||||||
|
|
||||||
[store path]: @docroot@/store/store-path.md
|
[store path]: @docroot@/store/store-path.md
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ An *identifier* is an [ASCII](https://en.wikipedia.org/wiki/ASCII) character seq
|
||||||
|
|
||||||
# Names
|
# Names
|
||||||
|
|
||||||
A *name* can be written as an [identifier](#identifier) or a [string literal](./string-literals.md).
|
A *name* can be written as an [identifier](#identifiers) or a [string literal](./string-literals.md).
|
||||||
|
|
||||||
> **Syntax**
|
> **Syntax**
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ This is an incomplete overview of language features, by example.
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
[Booleans](@docroot@/language/types.md#type-boolean)
|
[Booleans](@docroot@/language/types.md#type-bool)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -245,7 +245,7 @@ This is an incomplete overview of language features, by example.
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
An [attribute set](@docroot@/language/types.md#attribute-set) with attributes named `x` and `y`
|
An [attribute set](@docroot@/language/types.md#type-attrs) with attributes named `x` and `y`
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -285,7 +285,7 @@ This is an incomplete overview of language features, by example.
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
[Lists](@docroot@/language/types.md#list) with three elements.
|
[Lists](@docroot@/language/types.md#type-list) with three elements.
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -369,7 +369,7 @@ This is an incomplete overview of language features, by example.
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
[Attribute selection](@docroot@/language/types.md#attribute-set) (evaluates to `1`)
|
[Attribute selection](@docroot@/language/types.md#type-attrs) (evaluates to `1`)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -381,7 +381,7 @@ This is an incomplete overview of language features, by example.
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
[Attribute selection](@docroot@/language/types.md#attribute-set) with default (evaluates to `3`)
|
[Attribute selection](@docroot@/language/types.md#type-attrs) with default (evaluates to `3`)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ It creates an [attribute set] representing the string context, which can be insp
|
||||||
|
|
||||||
[`builtins.hasContext`]: ./builtins.md#builtins-hasContext
|
[`builtins.hasContext`]: ./builtins.md#builtins-hasContext
|
||||||
[`builtins.getContext`]: ./builtins.md#builtins-getContext
|
[`builtins.getContext`]: ./builtins.md#builtins-getContext
|
||||||
[attribute set]: ./types.md#attribute-set
|
[attribute set]: ./types.md#type-attrs
|
||||||
|
|
||||||
## Clearing string contexts
|
## Clearing string contexts
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ Such a construct is called *interpolated string*, and the expression inside is a
|
||||||
|
|
||||||
[string]: ./types.md#type-string
|
[string]: ./types.md#type-string
|
||||||
[path]: ./types.md#type-path
|
[path]: ./types.md#type-path
|
||||||
[attribute set]: ./types.md#attribute-set
|
[attribute set]: ./types.md#type-attrs
|
||||||
|
|
||||||
> **Syntax**
|
> **Syntax**
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ See [String literals](string-literals.md).
|
||||||
|
|
||||||
Path literals can also include [string interpolation], besides being [interpolated into other expressions].
|
Path literals can also include [string interpolation], besides being [interpolated into other expressions].
|
||||||
|
|
||||||
[interpolated into other expressions]: ./string-interpolation.md#interpolated-expressions
|
[interpolated into other expressions]: ./string-interpolation.md#interpolated-expression
|
||||||
|
|
||||||
At least one slash (`/`) must appear *before* any interpolated expression for the result to be recognized as a path.
|
At least one slash (`/`) must appear *before* any interpolated expression for the result to be recognized as a path.
|
||||||
|
|
||||||
|
|
@ -235,7 +235,7 @@ of object-oriented programming, for example.
|
||||||
|
|
||||||
## Recursive sets
|
## Recursive sets
|
||||||
|
|
||||||
Recursive sets are like normal [attribute sets](./types.md#attribute-set), but the attributes can refer to each other.
|
Recursive sets are like normal [attribute sets](./types.md#type-attrs), but the attributes can refer to each other.
|
||||||
|
|
||||||
> *rec-attrset* = `rec {` [ *name* `=` *expr* `;` `]`... `}`
|
> *rec-attrset* = `rec {` [ *name* `=` *expr* `;` `]`... `}`
|
||||||
|
|
||||||
|
|
@ -287,7 +287,7 @@ This evaluates to `"foobar"`.
|
||||||
|
|
||||||
## Inheriting attributes
|
## Inheriting attributes
|
||||||
|
|
||||||
When defining an [attribute set](./types.md#attribute-set) or in a [let-expression](#let-expressions) it is often convenient to copy variables from the surrounding lexical scope (e.g., when you want to propagate attributes).
|
When defining an [attribute set](./types.md#type-attrs) or in a [let-expression](#let-expressions) it is often convenient to copy variables from the surrounding lexical scope (e.g., when you want to propagate attributes).
|
||||||
This can be shortened using the `inherit` keyword.
|
This can be shortened using the `inherit` keyword.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
|
||||||
|
|
@ -51,4 +51,4 @@ additionalProperties: false
|
||||||
description: |
|
description: |
|
||||||
The hash algorithm used to compute the hash value.
|
The hash algorithm used to compute the hash value.
|
||||||
|
|
||||||
`blake3` is currently experimental and requires the [`blake-hashing`](@docroot@/development/experimental-features.md#xp-feature-blake-hashing) experimental feature.
|
`blake3` is currently experimental and requires the [`blake-hashing`](@docroot@/development/experimental-features.md#xp-feature-blake3-hashes) experimental feature.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ This is the complete specification of the [Nix Archive] format.
|
||||||
The Nix Archive format closely follows the abstract specification of a [file system object] tree,
|
The Nix Archive format closely follows the abstract specification of a [file system object] tree,
|
||||||
because it is designed to serialize exactly that data structure.
|
because it is designed to serialize exactly that data structure.
|
||||||
|
|
||||||
[Nix Archive]: @docroot@/store/file-system-object/content-address.md#nix-archive
|
[Nix Archive]: @docroot@/store/file-system-object/content-address.md#serial-nix-archive
|
||||||
[file system object]: @docroot@/store/file-system-object.md
|
[file system object]: @docroot@/store/file-system-object.md
|
||||||
|
|
||||||
The format of this specification is close to [Extended Backus–Naur form](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form), with the exception of the `str(..)` function / parameterized rule, which length-prefixes and pads strings.
|
The format of this specification is close to [Extended Backus–Naur form](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form), with the exception of the `str(..)` function / parameterized rule, which length-prefixes and pads strings.
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
- The `discard-references` feature has been stabilized.
|
- The `discard-references` feature has been stabilized.
|
||||||
This means that the
|
This means that the
|
||||||
[unsafeDiscardReferences](@docroot@/development/experimental-features.md#xp-feature-discard-references)
|
[unsafeDiscardReferences](@docroot@/language/advanced-attributes.md#adv-attr-unsafeDiscardReferences)
|
||||||
attribute is no longer guarded by an experimental flag and can be used
|
attribute is no longer guarded by an experimental flag and can be used
|
||||||
freely.
|
freely.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@
|
||||||
|
|
||||||
- `nix-shell` shebang lines now support single-quoted arguments.
|
- `nix-shell` shebang lines now support single-quoted arguments.
|
||||||
|
|
||||||
- `builtins.fetchTree` is now its own experimental feature, [`fetch-tree`](@docroot@/development/experimental-features.md#xp-fetch-tree).
|
- `builtins.fetchTree` is now its own experimental feature, [`fetch-tree`](@docroot@/development/experimental-features.md#xp-feature-fetch-tree).
|
||||||
This allows stabilising it independently of the rest of what is encompassed by [`flakes`](@docroot@/development/experimental-features.md#xp-fetch-tree).
|
This allows stabilising it independently of the rest of what is encompassed by [`flakes`](@docroot@/development/experimental-features.md#xp-feature-flakes).
|
||||||
|
|
||||||
- The interface for creating and updating lock files has been overhauled:
|
- The interface for creating and updating lock files has been overhauled:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
- Modify `nix derivation {add,show}` JSON format [#9866](https://github.com/NixOS/nix/issues/9866) [#10722](https://github.com/NixOS/nix/pull/10722)
|
- Modify `nix derivation {add,show}` JSON format [#9866](https://github.com/NixOS/nix/issues/9866) [#10722](https://github.com/NixOS/nix/pull/10722)
|
||||||
|
|
||||||
The JSON format for derivations has been slightly revised to better conform to our [JSON guidelines](@docroot@/development/cli-guideline.md#returning-future-proof-json).
|
The JSON format for derivations has been slightly revised to better conform to our [JSON guidelines](@docroot@/development/json-guideline.md).
|
||||||
In particular, the hash algorithm and content addressing method of content-addressed derivation outputs are now separated into two fields `hashAlgo` and `method`,
|
In particular, the hash algorithm and content addressing method of content-addressed derivation outputs are now separated into two fields `hashAlgo` and `method`,
|
||||||
rather than one field with an arcane `:`-separated format.
|
rather than one field with an arcane `:`-separated format.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@
|
||||||
|
|
||||||
- Support unit prefixes in configuration settings [#10668](https://github.com/NixOS/nix/pull/10668)
|
- Support unit prefixes in configuration settings [#10668](https://github.com/NixOS/nix/pull/10668)
|
||||||
|
|
||||||
Configuration settings in Nix now support unit prefixes, allowing for more intuitive and readable configurations. For example, you can now specify [`--min-free 1G`](@docroot@/command-ref/opt-common.md#opt-min-free) to set the minimum free space to 1 gigabyte.
|
Configuration settings in Nix now support unit prefixes, allowing for more intuitive and readable configurations. For example, you can now specify [`--min-free 1G`](@docroot@/command-ref/conf-file.md#conf-min-free) to set the minimum free space to 1 gigabyte.
|
||||||
|
|
||||||
This enhancement was extracted from [#7851](https://github.com/NixOS/nix/pull/7851) and is also useful for PR [#10661](https://github.com/NixOS/nix/pull/10661).
|
This enhancement was extracted from [#7851](https://github.com/NixOS/nix/pull/7851) and is also useful for PR [#10661](https://github.com/NixOS/nix/pull/10661).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
- Once this is done, the derivation is *normalized*, replacing each input deriving path with its store path, which we now know from realising the input.
|
- Once this is done, the derivation is *normalized*, replacing each input deriving path with its store path, which we now know from realising the input.
|
||||||
|
|
||||||
## Builder Execution
|
## Builder Execution {#builder-execution}
|
||||||
|
|
||||||
The [`builder`](./derivation/index.md#builder) is executed as follows:
|
The [`builder`](./derivation/index.md#builder) is executed as follows:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ But rather than somehow scanning all the other fields for inputs, Nix requires t
|
||||||
|
|
||||||
### System {#system}
|
### System {#system}
|
||||||
|
|
||||||
The system type on which the [`builder`](#attr-builder) executable is meant to be run.
|
The system type on which the [`builder`](#builder) executable is meant to be run.
|
||||||
|
|
||||||
A necessary condition for Nix to schedule a given derivation on some [Nix instance] is for the "system" of that derivation to match that instance's [`system` configuration option] or [`extra-platforms` configuration option].
|
A necessary condition for Nix to schedule a given derivation on some [Nix instance] is for the "system" of that derivation to match that instance's [`system` configuration option] or [`extra-platforms` configuration option].
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ In particular, the specification decides:
|
||||||
|
|
||||||
- if the content is content-addressed, how is it content addressed
|
- if the content is content-addressed, how is it content addressed
|
||||||
|
|
||||||
- if the content is content-addressed, [what is its content address](./content-address.md#fixed-content-addressing) (and thus what is its [store path])
|
- if the content is content-addressed, [what is its content address](./content-address.md#fixed) (and thus what is its [store path])
|
||||||
|
|
||||||
## Types of derivations
|
## Types of derivations
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Content-Addressing Store Objects
|
# Content-Addressing Store Objects
|
||||||
|
|
||||||
Just [like][fso-ca] [File System Objects][File System Object],
|
Just [like][fso-ca] [File System Objects][File System Object],
|
||||||
[Store Objects][Store Object] can also be [content-addressed](@docroot@/glossary.md#gloss-content-addressed),
|
[Store Objects][Store Object] can also be [content-addressed](@docroot@/glossary.md#gloss-content-address),
|
||||||
unless they are [input-addressed](@docroot@/glossary.md#gloss-input-addressed-store-object).
|
unless they are [input-addressed](@docroot@/glossary.md#gloss-input-addressed-store-object).
|
||||||
|
|
||||||
For store objects, the content address we produce will take the form of a [Store Path] rather than regular hash.
|
For store objects, the content address we produce will take the form of a [Store Path] rather than regular hash.
|
||||||
|
|
@ -107,7 +107,7 @@ References (to other store objects and self-references alike) are supported so l
|
||||||
>
|
>
|
||||||
> This method is part of the [`git-hashing`][xp-feature-git-hashing] experimental feature.
|
> This method is part of the [`git-hashing`][xp-feature-git-hashing] experimental feature.
|
||||||
|
|
||||||
This uses the corresponding [Git](../file-system-object/content-address.md#serial-git) method of file system object content addressing.
|
This uses the corresponding [Git](../file-system-object/content-address.md#git) method of file system object content addressing.
|
||||||
|
|
||||||
References are not supported.
|
References are not supported.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
>
|
>
|
||||||
> A rendered store path
|
> A rendered store path
|
||||||
|
|
||||||
Nix implements references to [store objects](./index.md#store-object) as *store paths*.
|
Nix implements references to [store objects](./store-object.md) as *store paths*.
|
||||||
|
|
||||||
Think of a store path as an [opaque], [unique identifier]:
|
Think of a store path as an [opaque], [unique identifier]:
|
||||||
The only way to obtain store path is by adding or building store objects.
|
The only way to obtain store path is by adding or building store objects.
|
||||||
|
|
|
||||||
|
|
@ -485,10 +485,10 @@
|
||||||
open-manual = {
|
open-manual = {
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${pkgs.writeShellScript "open-nix-manual" ''
|
program = "${pkgs.writeShellScript "open-nix-manual" ''
|
||||||
manual_path="${self.packages.${system}.nix-manual}/share/doc/nix/manual/index.html"
|
path="${self.packages.${system}.nix-manual.site}/index.html"
|
||||||
if ! ${opener} "$manual_path"; then
|
if ! ${opener} "$path"; then
|
||||||
echo "Failed to open manual with ${opener}. Manual is located at:"
|
echo "Failed to open manual with ${opener}. Manual is located at:"
|
||||||
echo "$manual_path"
|
echo "$path"
|
||||||
fi
|
fi
|
||||||
''}";
|
''}";
|
||||||
meta.description = "Open the Nix manual in your browser";
|
meta.description = "Open the Nix manual in your browser";
|
||||||
|
|
|
||||||
|
|
@ -825,10 +825,10 @@ static RegisterPrimOp primop_genericClosure(
|
||||||
|
|
||||||
- [Int](@docroot@/language/types.md#type-int)
|
- [Int](@docroot@/language/types.md#type-int)
|
||||||
- [Float](@docroot@/language/types.md#type-float)
|
- [Float](@docroot@/language/types.md#type-float)
|
||||||
- [Boolean](@docroot@/language/types.md#type-boolean)
|
- [Boolean](@docroot@/language/types.md#type-bool)
|
||||||
- [String](@docroot@/language/types.md#type-string)
|
- [String](@docroot@/language/types.md#type-string)
|
||||||
- [Path](@docroot@/language/types.md#type-path)
|
- [Path](@docroot@/language/types.md#type-path)
|
||||||
- [List](@docroot@/language/types.md#list)
|
- [List](@docroot@/language/types.md#type-list)
|
||||||
|
|
||||||
The result is produced by calling the `operator` on each `item` that has not been called yet, including newly added items, until no new items are added.
|
The result is produced by calling the `operator` on each `item` that has not been called yet, including newly added items, until no new items are added.
|
||||||
Items are compared by their `key` attribute.
|
Items are compared by their `key` attribute.
|
||||||
|
|
@ -2103,7 +2103,7 @@ static RegisterPrimOp primop_findFile(
|
||||||
builtins.findFile builtins.nixPath "nixpkgs"
|
builtins.findFile builtins.nixPath "nixpkgs"
|
||||||
```
|
```
|
||||||
|
|
||||||
A search path is represented as a list of [attribute sets](./types.md#attribute-set) with two attributes:
|
A search path is represented as a list of [attribute sets](./types.md#type-attrs) with two attributes:
|
||||||
- `prefix` is a relative path.
|
- `prefix` is a relative path.
|
||||||
- `path` denotes a file system location
|
- `path` denotes a file system location
|
||||||
|
|
||||||
|
|
@ -2395,7 +2395,7 @@ static RegisterPrimOp primop_outputOf({
|
||||||
|
|
||||||
returns an input placeholder for the output of the output of `myDrv`.
|
returns an input placeholder for the output of the output of `myDrv`.
|
||||||
|
|
||||||
This primop corresponds to the `^` sigil for [deriving paths](@docroot@/glossary.md#gloss-deriving-paths), e.g. as part of installable syntax on the command line.
|
This primop corresponds to the `^` sigil for [deriving paths](@docroot@/glossary.md#gloss-deriving-path), e.g. as part of installable syntax on the command line.
|
||||||
)",
|
)",
|
||||||
.fun = prim_outputOf,
|
.fun = prim_outputOf,
|
||||||
.experimentalFeature = Xp::DynamicDerivations,
|
.experimentalFeature = Xp::DynamicDerivations,
|
||||||
|
|
@ -4966,7 +4966,7 @@ static RegisterPrimOp primop_compareVersions({
|
||||||
version *s1* is older than version *s2*, `0` if they are the same,
|
version *s1* is older than version *s2*, `0` if they are the same,
|
||||||
and `1` if *s1* is newer than *s2*. The version comparison
|
and `1` if *s1* is newer than *s2*. The version comparison
|
||||||
algorithm is the same as the one used by [`nix-env
|
algorithm is the same as the one used by [`nix-env
|
||||||
-u`](../command-ref/nix-env.md#operation---upgrade).
|
-u`](../command-ref/nix-env/upgrade.md).
|
||||||
)",
|
)",
|
||||||
.fun = prim_compareVersions,
|
.fun = prim_compareVersions,
|
||||||
});
|
});
|
||||||
|
|
@ -4995,7 +4995,7 @@ static RegisterPrimOp primop_splitVersion({
|
||||||
.doc = R"(
|
.doc = R"(
|
||||||
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`](../command-ref/nix-env.md#operation---upgrade).
|
[`nix-env -u`](../command-ref/nix-env/upgrade.md).
|
||||||
)",
|
)",
|
||||||
.fun = prim_splitVersion,
|
.fun = prim_splitVersion,
|
||||||
});
|
});
|
||||||
|
|
@ -5045,9 +5045,9 @@ void EvalState::createBaseEnv(const EvalSettings & evalSettings)
|
||||||
Primitive value.
|
Primitive value.
|
||||||
|
|
||||||
It can be returned by
|
It can be returned by
|
||||||
[comparison operators](@docroot@/language/operators.md#Comparison)
|
[comparison operators](@docroot@/language/operators.md#comparison)
|
||||||
and used in
|
and used in
|
||||||
[conditional expressions](@docroot@/language/syntax.md#Conditionals).
|
[conditional expressions](@docroot@/language/syntax.md#conditionals).
|
||||||
|
|
||||||
The name `true` is not special, and can be shadowed:
|
The name `true` is not special, and can be shadowed:
|
||||||
|
|
||||||
|
|
@ -5068,9 +5068,9 @@ void EvalState::createBaseEnv(const EvalSettings & evalSettings)
|
||||||
Primitive value.
|
Primitive value.
|
||||||
|
|
||||||
It can be returned by
|
It can be returned by
|
||||||
[comparison operators](@docroot@/language/operators.md#Comparison)
|
[comparison operators](@docroot@/language/operators.md#comparison)
|
||||||
and used in
|
and used in
|
||||||
[conditional expressions](@docroot@/language/syntax.md#Conditionals).
|
[conditional expressions](@docroot@/language/syntax.md#conditionals).
|
||||||
|
|
||||||
The name `false` is not special, and can be shadowed:
|
The name `false` is not special, and can be shadowed:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ static RegisterPrimOp primop_unsafeDiscardOutputDependency(
|
||||||
Create a copy of the given string where every
|
Create a copy of the given string where every
|
||||||
[derivation deep](@docroot@/language/string-context.md#string-context-element-derivation-deep)
|
[derivation deep](@docroot@/language/string-context.md#string-context-element-derivation-deep)
|
||||||
string context element is turned into a
|
string context element is turned into a
|
||||||
[constant](@docroot@/language/string-context.md#string-context-element-constant)
|
[constant](@docroot@/language/string-context.md#string-context-constant)
|
||||||
string context element.
|
string context element.
|
||||||
|
|
||||||
This is the opposite of [`builtins.addDrvOutputDependencies`](#builtins-addDrvOutputDependencies).
|
This is the opposite of [`builtins.addDrvOutputDependencies`](#builtins-addDrvOutputDependencies).
|
||||||
|
|
@ -145,7 +145,7 @@ static RegisterPrimOp primop_addDrvOutputDependencies(
|
||||||
.args = {"s"},
|
.args = {"s"},
|
||||||
.doc = R"(
|
.doc = R"(
|
||||||
Create a copy of the given string where a single
|
Create a copy of the given string where a single
|
||||||
[constant](@docroot@/language/string-context.md#string-context-element-constant)
|
[constant](@docroot@/language/string-context.md#string-context-constant)
|
||||||
string context element is turned into a
|
string context element is turned into a
|
||||||
[derivation deep](@docroot@/language/string-context.md#string-context-element-derivation-deep)
|
[derivation deep](@docroot@/language/string-context.md#string-context-element-derivation-deep)
|
||||||
string context element.
|
string context element.
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ public:
|
||||||
0,
|
0,
|
||||||
"cores",
|
"cores",
|
||||||
R"(
|
R"(
|
||||||
Sets the value of the `NIX_BUILD_CORES` environment variable in the [invocation of the `builder` executable](@docroot@/language/derivations.md#builder-execution) of a derivation.
|
Sets the value of the `NIX_BUILD_CORES` environment variable in the [invocation of the `builder` executable](@docroot@/store/building.md#builder-execution) of a derivation.
|
||||||
The `builder` executable can use this variable to control its own maximum amount of parallelism.
|
The `builder` executable can use this variable to control its own maximum amount of parallelism.
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ private:
|
||||||
|
|
||||||
This is also the location where [`--keep-failed`](@docroot@/command-ref/opt-common.md#opt-keep-failed) leaves its files.
|
This is also the location where [`--keep-failed`](@docroot@/command-ref/opt-common.md#opt-keep-failed) leaves its files.
|
||||||
|
|
||||||
If Nix runs without sandbox, or if the platform does not support sandboxing with bind mounts (e.g. macOS), then the [`builder`](@docroot@/language/derivations.md#attr-builder)'s environment will contain this directory, instead of the virtual location [`sandbox-build-dir`](#conf-sandbox-build-dir).
|
If Nix runs without sandbox, or if the platform does not support sandboxing with bind mounts (e.g. macOS), then the [`builder`](@docroot@/language/derivations.md#attr-builder)'s environment will contain this directory, instead of the virtual location [`sandbox-build-dir`](@docroot@/command-ref/conf-file.md#conf-sandbox-build-dir).
|
||||||
|
|
||||||
> **Warning**
|
> **Warning**
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ constexpr std::array<ExperimentalFeatureDetails, numXpFeatures> xpFeatureDetails
|
||||||
.tag = Xp::LocalOverlayStore,
|
.tag = Xp::LocalOverlayStore,
|
||||||
.name = "local-overlay-store",
|
.name = "local-overlay-store",
|
||||||
.description = R"(
|
.description = R"(
|
||||||
Allow the use of [local overlay store](@docroot@/command-ref/new-cli/nix3-help-stores.md#local-overlay-store).
|
Allow the use of [local overlay store](@docroot@/command-ref/new-cli/nix3-help-stores.md#experimental-local-overlay-store).
|
||||||
)",
|
)",
|
||||||
.trackingUrl = "https://github.com/NixOS/nix/milestone/50",
|
.trackingUrl = "https://github.com/NixOS/nix/milestone/50",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ Currently the `type` attribute can be one of the following:
|
||||||
* `nixpkgs/nixos-unstable/a3a3dda3bacf61e8a39258a0ed9c924eeca8e293`
|
* `nixpkgs/nixos-unstable/a3a3dda3bacf61e8a39258a0ed9c924eeca8e293`
|
||||||
* `sub/dir` (if a flake named `sub` is in the registry)
|
* `sub/dir` (if a flake named `sub` is in the registry)
|
||||||
|
|
||||||
* <a name="path-fetcher"></a>`path`: arbitrary local directories. The required attribute `path`
|
* <a id="path-fetcher"></a>`path`: arbitrary local directories. The required attribute `path`
|
||||||
specifies the path of the flake. The URL form is
|
specifies the path of the flake. The URL form is
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue