doc: Module arguments

This commit is contained in:
Robert Hensing
2025-04-15 13:42:29 +02:00
parent 38bb05d169
commit 1de329f5e1
2 changed files with 63 additions and 0 deletions
@@ -115,3 +115,48 @@ A nominal type marker, always `"configuration"`.
#### `class` {#module-system-lib-evalModules-return-value-_configurationClass}
The [`class` argument](#module-system-lib-evalModules-param-class).
## Module arguments {#module-system-module-arguments}
Module arguments are the attribute values passed to modules when they are evaluated.
They originate from these sources:
1. Built-in arguments
- `lib`,
- `config`,
- `options`,
- `_class`,
- `_prefix`,
2. Attributes from the [`specialArgs`] which were passed to [`evalModules`] or `submoduleWith`. These are application-specific.
3. Attributes from the `_module.args` option value. These are application-specific and can be provided by any module.
The prior two categories are available while evaluating the `imports`, whereas
the last category is only available after the `imports` have been resolved.
### `lib` {#module-system-module-argument-lib}
A reference to the Nixpkgs library.
### `config` {#module-system-module-argument-config}
All option values.
Unlike the `evalModules` [`config` return attribute](#module-system-lib-evalModules-return-value-config), this includes `_module`.
### `options` {#module-system-module-argument-options}
All evaluated option declarations.
### `_class` {#module-system-module-argument-_class}
The [expected class](#module-system-lib-evalModules-param-class) of the loaded modules.
### `_prefix` {#module-system-module-argument-_prefix}
The location under which the module is evaluated. This is used to improve error reporting and find the implicit `name` module argument in submodules.
It is a good practice not to rely on `_prefix`. A module should not make assumptions about its location in the configuration tree.
For example, the root of a NixOS configuration may have a non-empty prefix, for example when it is a specialisation, or when it is part of a larger, multi-host configuration such as a [NixOS test](https://nixos.org/manual/nixos/unstable/#sec-nixos-tests).
Any dependencies on `_prefix` should be replaced with explicit options, whose default definitions can be provided by the module that imports them.
[`evalModules`]: #module-system-lib-evalModules
[`specialArgs`]: #module-system-lib-evalModules-param-specialArgs
+18
View File
@@ -4363,5 +4363,23 @@
],
"sec-interop.cylonedx-fod": [
"index.html#sec-interop.cylonedx-fod"
],
"module-system-module-argument-_prefix": [
"index.html#module-system-module-argument-_prefix"
],
"module-system-module-argument-lib": [
"index.html#module-system-module-argument-lib"
],
"module-system-module-argument-config": [
"index.html#module-system-module-argument-config"
],
"module-system-module-arguments": [
"index.html#module-system-module-arguments"
],
"module-system-module-argument-_class": [
"index.html#module-system-module-argument-_class"
],
"module-system-module-argument-options": [
"index.html#module-system-module-argument-options"
]
}