Skip to content

Commit

Permalink
Start cross-referencing experimental features
Browse files Browse the repository at this point in the history
- Create a glossary entry for experimental features.

- Have the man page experimental feature notice link `nix-commmand`.

  (Eventually this should be programmed, based on whether the command is
  experimental, and if so what experimental feature does it depend on.)

- Document which installables depend on which experimental features.

  I tried to use the same style (bold warning and block quote) that the
  top of the man page uses.

Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
  • Loading branch information
Ericson2314 and fricklerhandwerk committed Apr 11, 2023
1 parent 3704643 commit 4ab7055
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 8 deletions.
4 changes: 3 additions & 1 deletion doc/manual/generate-manpage.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ let

result = ''
> **Warning** \
> This program is **experimental** and its interface is subject to change.
> This program is
> [**experimental**](@docroot@/contributing/experimental-features.md#xp-feature-nix-command)
> and its interface is subject to change.
# Name
Expand Down
2 changes: 1 addition & 1 deletion doc/manual/src/command-ref/experimental-commands.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Experimental Commands

This section lists experimental commands.
This section lists [experimental commands](@docroot@/contributing/experimental-features.md#xp-feature-nix-command).

> **Warning**
>
Expand Down
6 changes: 6 additions & 0 deletions doc/manual/src/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,3 +225,9 @@
[string]: ./language/values.md#type-string
[path]: ./language/values.md#type-path
[attribute name]: ./language/values.md#attribute-set

- [Experimental Features]{#gloss-experimental-features}\
Not yet stabilized functionality gated on named experimental features flags.
These flags are enabled or disabled with the [`experimental-features`](./command-ref/conf-file.html#conf-experimental-features) setting.

The purpose and lifecycle of experimental feaures is [thoroughly documented](@docroot@/contributing/experimental-features.md) in a section of the contribution guide.
26 changes: 21 additions & 5 deletions doc/manual/src/language/advanced-attributes.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,12 +208,26 @@ Derivations can declare some infrequently used optional attributes.
about converting to and from base-32 notation.)

- [`__contentAddressed`]{#adv-attr-__contentAddressed}
If this **experimental** attribute is set to true, then the derivation
> **Warning**
> This attribute is part of an [experimental feature](@docroot@/glossary.md#gloss-experimental-features).
>
> To use this attribute, you must enable the
> [`ca-derivations`](@docroot@/contributing/experimental-features.md#xp-feature-ca-derivations) experimental feature.
> For example, in [nix.conf](../command-ref/conf-file.md) you could add:
>
> ```
> extra-experimental-features = ca-derivations
> ```
If this attribute is set to `true`, then the derivation
outputs will be stored in a content-addressed location rather than the
traditional input-addressed one.
This only has an effect if the `ca-derivations` experimental feature is enabled.

Setting this attribute also requires setting `outputHashMode` and `outputHashAlgo` like for *fixed-output derivations* (see above).
Setting this attribute also requires setting
[`outputHashMode`](#adv-attr-outputHashMode)
and
[`outputHashAlgo`](#adv-attr-outputHashAlgo)
like for *fixed-output derivations* (see above).

- [`passAsFile`]{#adv-attr-passAsFile}\
A list of names of attributes that should be passed via files rather
Expand Down Expand Up @@ -307,9 +321,11 @@ Derivations can declare some infrequently used optional attributes.

- [`unsafeDiscardReferences`]{#adv-attr-unsafeDiscardReferences}\
> **Warning**
> This is an experimental feature.
> This attribute is part of an [experimental feature](@docroot@/glossary.md#gloss-experimental-features).
>
> To enable it, add the following to [nix.conf](../command-ref/conf-file.md):
> To use this attribute, you must enable the
> [`discard-references`](@docroot@/contributing/experimental-features.md#xp-feature-discard-references) experimental feature.
> For example, in [nix.conf](../command-ref/conf-file.md) you could add:
>
> ```
> extra-experimental-features = discard-references
Expand Down
16 changes: 15 additions & 1 deletion src/nix/nix.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,18 @@ manual](https://nixos.org/manual/nix/stable/).

# Installables

> **Warning** \
> Installables are part of the unstable
> [`nix-command`](@docroot@/contributing/experimental-features.md#xp-feature-nix-command)
> [experimental feature](@docroot@/glossary.md#gloss-experimental-features),
> and subject to change without notice.

Many `nix` subcommands operate on one or more *installables*.
These are command line arguments that represent something that can be realised in the Nix store.

The following types of installable are supported by most commands:

- [Flake output attribute](#flake-output-attribute)
- [Flake output attribute](#flake-output-attribute) (experimental)
- [Store path](#store-path)
- [Nix file](#nix-file), optionally qualified by an attribute path
- [Nix expression](#nix-expression), optionally qualified by an attribute path
Expand All @@ -63,6 +69,14 @@ That is, Nix will operate on the default flake output attribute of the flake in

### Flake output attribute

> **Warning** \
> Flake output attribute installables depend on both the
> [`flakes`](@docroot@/contributing/experimental-features.md#xp-feature-flakes)
> and
> [`nix-command`](@docroot@/contributing/experimental-features.md#xp-feature-nix-command)
> [experimental features](@docroot@/glossary.md#gloss-experimental-features),
> and subject to change without notice.

Example: `nixpkgs#hello`

These have the form *flakeref*[`#`*attrpath*], where *flakeref* is a
Expand Down

0 comments on commit 4ab7055

Please sign in to comment.