nixos/lib, doc: remove references to mdDoc (#300738)

* doc: remove references to mdDoc in nixos/doc/manual/development/option-declarations.section.md

* nixos/lib: remove mdDoc in nixos/lib/make-options-doc/default.nix

* nixos/lib: remove mdDoc in nixos/lib/systemd-types.nix

* nixos/lib: remove mdDoc in nixos/lib/systemd-unit-options.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/driver.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/interactive.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/meta.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/name.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/network.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/nodes.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/run.nix

* nixos/lib: remove mdDoc in nixos/lib/testing/testScript.nix

+8 -11
nixos/doc/manual/development/option-declarations.section.md
···
type = type specification;
default = default value;
example = example value;
-
description = lib.mdDoc "Description for use in the NixOS manual.";
+
description = "Description for use in the NixOS manual.";
};
};
}
···
`description`
-
: A textual description of the option, in [Nixpkgs-flavored Markdown](
-
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format, that will be
-
included in the NixOS manual. During the migration process from DocBook
-
it is necessary to mark descriptions written in CommonMark with `lib.mdDoc`.
-
The description may still be written in DocBook (without any marker), but this
-
is discouraged and will be deprecated in the future.
+
: A textual description of the option in [Nixpkgs-flavored Markdown](
+
https://nixos.org/nixpkgs/manual/#sec-contributing-markup) format that will be
+
included in the NixOS manual.
## Utility functions for common option patterns {#sec-option-declarations-util}
···
::: {#ex-options-declarations-util-mkEnableOption-magic .example}
### `mkEnableOption` usage
```nix
-
lib.mkEnableOption (lib.mdDoc "magic")
+
lib.mkEnableOption "magic"
# is like
lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
-
description = lib.mdDoc "Whether to enable magic.";
+
description = "Whether to enable magic.";
}
```
:::
···
type = lib.types.package;
default = pkgs.hello;
defaultText = lib.literalExpression "pkgs.hello";
-
description = lib.mdDoc "The hello package to use.";
+
description = "The hello package to use.";
}
```
:::
···
default = pkgs.ghc;
defaultText = lib.literalExpression "pkgs.ghc";
example = lib.literalExpression "pkgs.haskell.packages.ghc92.ghc.withPackages (hkgs: [ hkgs.primes ])";
-
description = lib.mdDoc "The GHC package to use.";
+
description = "The GHC package to use.";
}
```
:::
+1 -3
nixos/lib/make-options-doc/default.nix
···
# deprecated since 23.11.
# TODO remove in a while.
, allowDocBook ? false
-
# whether lib.mdDoc is required for descriptions to be read as markdown.
-
# deprecated since 23.11.
-
# TODO remove in a while.
+
# TODO remove in a while (see https://github.com/NixOS/nixpkgs/issues/300735)
, markdownByDefault ? true
}:
+4 -5
nixos/lib/systemd-types.nix
···
;
inherit (lib)
-
mdDoc
mkDefault
mkDerivedConfig
mkEnableOption
···
initrdContents = attrsOf (submodule ({ config, options, name, ... }: {
options = {
-
enable = mkEnableOption (mdDoc "copying of this file and symlinking it") // { default = true; };
+
enable = (mkEnableOption "copying of this file and symlinking it") // { default = true; };
target = mkOption {
type = path;
-
description = mdDoc ''
+
description = ''
Path of the symlink.
'';
default = name;
···
text = mkOption {
default = null;
type = nullOr lines;
-
description = mdDoc "Text of the file.";
+
description = "Text of the file.";
};
source = mkOption {
type = path;
-
description = mdDoc "Path of the source file.";
+
description = "Path of the source file.";
};
};
+54 -55
nixos/lib/systemd-unit-options.nix
···
concatMap
filterOverrides
isList
-
mdDoc
mergeEqualOption
mkIf
mkMerge
···
enable = mkOption {
default = true;
type = types.bool;
-
description = mdDoc ''
+
description = ''
If set to false, this unit will be a symlink to
/dev/null. This is primarily useful to prevent specific
template instances
···
overrideStrategy = mkOption {
default = "asDropinIfExists";
type = types.enum [ "asDropinIfExists" "asDropin" ];
-
description = mdDoc ''
+
description = ''
Defines how unit configuration is provided for systemd:
`asDropinIfExists` creates a unit file when no unit file is provided by the package
···
requiredBy = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Units that require (i.e. depend on and need to go down with) this unit.
As discussed in the `wantedBy` option description this also creates
`.requires` symlinks automatically.
···
upheldBy = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Keep this unit running as long as the listed units are running. This is a continuously
enforced version of wantedBy.
'';
···
wantedBy = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Units that want (i.e. depend on) this unit. The default method for
starting a unit by default at boot time is to set this option to
`["multi-user.target"]` for system services. Likewise for user units
···
aliases = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc "Aliases of that unit.";
+
description = "Aliases of that unit.";
};
};
···
text = mkOption {
type = types.nullOr types.str;
default = null;
-
description = mdDoc "Text of this systemd unit.";
+
description = "Text of this systemd unit.";
};
unit = mkOption {
internal = true;
-
description = mdDoc "The generated unit.";
+
description = "The generated unit.";
};
};
···
description = mkOption {
default = "";
type = types.singleLineStr;
-
description = mdDoc "Description of this unit used in systemd messages and progress indicators.";
+
description = "Description of this unit used in systemd messages and progress indicators.";
};
documentation = mkOption {
default = [];
type = types.listOf types.str;
-
description = mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
+
description = "A list of URIs referencing documentation for this unit or its configuration.";
};
requires = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Start the specified units when this unit is started, and stop
this unit when the specified units are stopped or fail.
'';
···
wants = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Start the specified units when this unit is started.
'';
};
···
upholds = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Keeps the specified running while this unit is running. A continuous version of `wants`.
'';
};
···
after = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
If the specified units are started at the same time as
this unit, delay this unit until they have started.
'';
···
before = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
If the specified units are started at the same time as
this unit, delay them until this unit has started.
'';
···
bindsTo = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Like ‘requires’, but in addition, if the specified units
unexpectedly disappear, this unit will be stopped as well.
'';
···
partOf = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
If the specified units are stopped or restarted, then this
unit is stopped or restarted as well.
'';
···
conflicts = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
If the specified units are started, then this unit is stopped
and vice versa.
'';
···
requisite = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
Similar to requires. However if the units listed are not started,
they will not be started and the transaction will fail.
'';
···
default = {};
example = { RequiresMountsFor = "/data"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Unit]` section of the unit. See
{manpage}`systemd.unit(5)` for details.
···
onFailure = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
A list of one or more units that are activated when
this unit enters the "failed" state.
'';
···
onSuccess = mkOption {
default = [];
type = types.listOf unitNameType;
-
description = mdDoc ''
+
description = ''
A list of one or more units that are activated when
this unit enters the "inactive" state.
'';
···
startLimitBurst = mkOption {
type = types.int;
-
description = mdDoc ''
+
description = ''
Configure unit start rate limiting. Units which are started
more than startLimitBurst times within an interval time
interval are not permitted to start any more.
···
startLimitIntervalSec = mkOption {
type = types.int;
-
description = mdDoc ''
+
description = ''
Configure unit start rate limiting. Units which are started
more than startLimitBurst times within an interval time
interval are not permitted to start any more.
···
restartTriggers = mkOption {
default = [];
type = types.listOf types.unspecified;
-
description = mdDoc ''
+
description = ''
An arbitrary list of items such as derivations. If any item
in the list changes between reconfigurations, the service will
be restarted.
···
reloadTriggers = mkOption {
default = [];
type = types.listOf unitOption;
-
description = mdDoc ''
+
description = ''
An arbitrary list of items such as derivations. If any item
in the list changes between reconfigurations, the service will
be reloaded. If anything but a reload trigger changes in the
···
default = {};
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
-
description = mdDoc "Environment variables passed to the service's processes.";
+
description = "Environment variables passed to the service's processes.";
};
path = mkOption {
default = [];
type = with types; listOf (oneOf [ package str ]);
-
description = mdDoc ''
+
description = ''
Packages added to the service's {env}`PATH`
environment variable. Both the {file}`bin`
and {file}`sbin` subdirectories of each
···
{ RestartSec = 5;
};
type = types.addCheck (types.attrsOf unitOption) checkService;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Service]` section of the unit. See
{manpage}`systemd.service(5)` for details.
···
script = mkOption {
type = types.lines;
default = "";
-
description = mdDoc "Shell commands executed as the service's main process.";
+
description = "Shell commands executed as the service's main process.";
};
scriptArgs = mkOption {
type = types.str;
default = "";
example = "%i";
-
description = mdDoc ''
+
description = ''
Arguments passed to the main process script.
Can contain specifiers (`%` placeholders expanded by systemd, see {manpage}`systemd.unit(5)`).
'';
···
preStart = mkOption {
type = types.lines;
default = "";
-
description = mdDoc ''
+
description = ''
Shell commands executed before the service's main process
is started.
'';
···
postStart = mkOption {
type = types.lines;
default = "";
-
description = mdDoc ''
+
description = ''
Shell commands executed after the service's main process
is started.
'';
···
reload = mkOption {
type = types.lines;
default = "";
-
description = mdDoc ''
+
description = ''
Shell commands executed when the service's main process
is reloaded.
'';
···
preStop = mkOption {
type = types.lines;
default = "";
-
description = mdDoc ''
+
description = ''
Shell commands executed to stop the service.
'';
};
···
postStop = mkOption {
type = types.lines;
default = "";
-
description = mdDoc ''
+
description = ''
Shell commands executed after the service's main process
has exited.
'';
···
jobScripts = mkOption {
type = with types; coercedTo path singleton (listOf path);
internal = true;
-
description = mdDoc "A list of all job script derivations of this unit.";
+
description = "A list of all job script derivations of this unit.";
default = [];
};
···
restartIfChanged = mkOption {
type = types.bool;
default = true;
-
description = mdDoc ''
+
description = ''
Whether the service should be restarted during a NixOS
configuration switch if its definition has changed.
'';
···
reloadIfChanged = mkOption {
type = types.bool;
default = false;
-
description = mdDoc ''
+
description = ''
Whether the service should be reloaded during a NixOS
configuration switch if its definition has changed. If
enabled, the value of {option}`restartIfChanged` is
···
stopIfChanged = mkOption {
type = types.bool;
default = true;
-
description = mdDoc ''
+
description = ''
If set, a changed unit is restarted by calling
{command}`systemctl stop` in the old configuration,
then {command}`systemctl start` in the new one.
···
type = with types; either str (listOf str);
default = [];
example = "Sun 14:00:00";
-
description = mdDoc ''
+
description = ''
Automatically start this unit at the given date/time, which
must be in the format described in
{manpage}`systemd.time(7)`. This is equivalent
···
default = [];
type = types.listOf types.str;
example = [ "0.0.0.0:993" "/run/my-socket" ];
-
description = mdDoc ''
+
description = ''
For each item in this list, a `ListenStream`
option in the `[Socket]` section will be created.
'';
···
default = [];
type = types.listOf types.str;
example = [ "0.0.0.0:993" "/run/my-socket" ];
-
description = mdDoc ''
+
description = ''
For each item in this list, a `ListenDatagram`
option in the `[Socket]` section will be created.
'';
···
default = {};
example = { ListenStream = "/run/my-socket"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Socket]` section of the unit. See
{manpage}`systemd.socket(5)` for details.
···
default = {};
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Timer]` section of the unit. See
{manpage}`systemd.timer(5)` and
···
default = {};
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Path]` section of the unit. See
{manpage}`systemd.path(5)` for details.
···
what = mkOption {
example = "/dev/sda1";
type = types.str;
-
description = mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
+
description = "Absolute path of device node, file or other resource. (Mandatory)";
};
where = mkOption {
example = "/mnt";
type = types.str;
-
description = mdDoc ''
+
description = ''
Absolute path of a directory of the mount point.
Will be created if it doesn't exist. (Mandatory)
'';
···
default = "";
example = "ext4";
type = types.str;
-
description = mdDoc "File system type.";
+
description = "File system type.";
};
options = mkOption {
default = "";
example = "noatime";
type = types.commas;
-
description = mdDoc "Options used to mount the file system.";
+
description = "Options used to mount the file system.";
};
mountConfig = mkOption {
default = {};
example = { DirectoryMode = "0775"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Mount]` section of the unit. See
{manpage}`systemd.mount(5)` for details.
···
where = mkOption {
example = "/mnt";
type = types.str;
-
description = mdDoc ''
+
description = ''
Absolute path of a directory of the mount point.
Will be created if it doesn't exist. (Mandatory)
'';
···
default = {};
example = { DirectoryMode = "0775"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Automount]` section of the unit. See
{manpage}`systemd.automount(5)` for details.
···
default = {};
example = { MemoryMax = "2G"; };
type = types.attrsOf unitOption;
-
description = mdDoc ''
+
description = ''
Each attribute in this set specifies an option in the
`[Slice]` section of the unit. See
{manpage}`systemd.slice(5)` for details.
+10 -10
nixos/lib/testing/driver.nix
···
{ config, lib, hostPkgs, ... }:
let
-
inherit (lib) mkOption types literalMD mdDoc;
+
inherit (lib) mkOption types literalMD;
# Reifies and correctly wraps the python test driver for
# the respective qemu version and with or without ocr support
···
options = {
driver = mkOption {
-
description = mdDoc "Package containing a script that runs the test.";
+
description = "Package containing a script that runs the test.";
type = types.package;
defaultText = literalMD "set by the test framework";
};
hostPkgs = mkOption {
-
description = mdDoc "Nixpkgs attrset used outside the nodes.";
+
description = "Nixpkgs attrset used outside the nodes.";
type = types.raw;
example = lib.literalExpression ''
import nixpkgs { inherit system config overlays; }
···
};
qemu.package = mkOption {
-
description = mdDoc "Which qemu package to use for the virtualisation of [{option}`nodes`](#test-opt-nodes).";
+
description = "Which qemu package to use for the virtualisation of [{option}`nodes`](#test-opt-nodes).";
type = types.package;
default = hostPkgs.qemu_test;
defaultText = "hostPkgs.qemu_test";
};
globalTimeout = mkOption {
-
description = mdDoc ''
+
description = ''
A global timeout for the complete test, expressed in seconds.
Beyond that timeout, every resource will be killed and released and the test will fail.
···
};
enableOCR = mkOption {
-
description = mdDoc ''
+
description = ''
Whether to enable Optical Character Recognition functionality for
testing graphical programs. See [Machine objects](`ssec-machine-objects`).
'';
···
};
extraPythonPackages = mkOption {
-
description = mdDoc ''
+
description = ''
Python packages to add to the test driver.
The argument is a Python package set, similar to `pkgs.pythonPackages`.
···
};
extraDriverArgs = mkOption {
-
description = mdDoc ''
+
description = ''
Extra arguments to pass to the test driver.
They become part of [{option}`driver`](#test-opt-driver) via `wrapProgram`.
···
skipLint = mkOption {
type = types.bool;
default = false;
-
description = mdDoc ''
+
description = ''
Do not run the linters. This may speed up your iteration cycle, but it is not something you should commit.
'';
};
···
skipTypeCheck = mkOption {
type = types.bool;
default = false;
-
description = mdDoc ''
+
description = ''
Disable type checking. This must not be enabled for new NixOS tests.
This may speed up your iteration cycle, unless you're working on the [{option}`testScript`](#test-opt-testScript).
+2 -2
nixos/lib/testing/interactive.nix
···
{ config, lib, moduleType, hostPkgs, ... }:
let
-
inherit (lib) mkOption types mdDoc;
+
inherit (lib) mkOption types;
in
{
options = {
interactive = mkOption {
-
description = mdDoc ''
+
description = ''
Tests [can be run interactively](#sec-running-nixos-tests-interactively)
using the program in the test derivation's `.driverInteractive` attribute.
+5 -5
nixos/lib/testing/meta.nix
···
{ lib, ... }:
let
-
inherit (lib) types mkOption mdDoc;
+
inherit (lib) types mkOption;
in
{
options = {
meta = lib.mkOption {
-
description = mdDoc ''
+
description = ''
The [`meta`](https://nixos.org/manual/nixpkgs/stable/#chap-meta) attributes that will be set on the returned derivations.
Not all [`meta`](https://nixos.org/manual/nixpkgs/stable/#chap-meta) attributes are supported, but more can be added as desired.
···
maintainers = lib.mkOption {
type = types.listOf types.raw;
default = [];
-
description = mdDoc ''
+
description = ''
The [list of maintainers](https://nixos.org/manual/nixpkgs/stable/#var-meta-maintainers) for this test.
'';
};
timeout = lib.mkOption {
type = types.nullOr types.int;
default = 3600; # 1 hour
-
description = mdDoc ''
+
description = ''
The [{option}`test`](#test-opt-test)'s [`meta.timeout`](https://nixos.org/manual/nixpkgs/stable/#var-meta-timeout) in seconds.
'';
};
broken = lib.mkOption {
type = types.bool;
default = false;
-
description = mdDoc ''
+
description = ''
Sets the [`meta.broken`](https://nixos.org/manual/nixpkgs/stable/#var-meta-broken) attribute on the [{option}`test`](#test-opt-test) derivation.
'';
};
+2 -2
nixos/lib/testing/name.nix
···
{ lib, ... }:
let
-
inherit (lib) mkOption types mdDoc;
+
inherit (lib) mkOption types;
in
{
options.name = mkOption {
-
description = mdDoc ''
+
description = ''
The name of the test.
This is used in the derivation names of the [{option}`driver`](#test-opt-driver) and [{option}`test`](#test-opt-test) runner.
+2 -3
nixos/lib/testing/network.nix
···
attrNames concatMap concatMapStrings flip forEach head
listToAttrs mkDefault mkOption nameValuePair optionalString
range toLower types zipListsWith zipLists
-
mdDoc
;
nodeNumbers =
···
default = name;
# We need to force this in specilisations, otherwise it'd be
# readOnly = true;
-
description = mdDoc ''
+
description = ''
The `name` in `nodes.<name>`; stable across `specialisations`.
'';
};
···
type = types.int;
readOnly = true;
default = nodeNumbers.${config.virtualisation.test.nodeName};
-
description = mdDoc ''
+
description = ''
A unique number assigned for each node in `nodes`.
'';
};
+7 -8
nixos/lib/testing/nodes.nix
···
literalExpression
literalMD
mapAttrs
-
mdDoc
mkDefault
mkIf
mkOption mkForce
···
nodes = mkOption {
type = types.lazyAttrsOf config.node.type;
visible = "shallow";
-
description = mdDoc ''
+
description = ''
An attribute set of NixOS configuration modules.
The configurations are augmented by the [`defaults`](#test-opt-defaults) option.
···
};
defaults = mkOption {
-
description = mdDoc ''
+
description = ''
NixOS configuration that is applied to all [{option}`nodes`](#test-opt-nodes).
'';
type = types.deferredModule;
···
};
extraBaseModules = mkOption {
-
description = mdDoc ''
+
description = ''
NixOS configuration that, like [{option}`defaults`](#test-opt-defaults), is applied to all [{option}`nodes`](#test-opt-nodes) and can not be undone with [`specialisation.<name>.inheritParentConfig`](https://search.nixos.org/options?show=specialisation.%3Cname%3E.inheritParentConfig&from=0&size=50&sort=relevance&type=packages&query=specialisation).
'';
type = types.deferredModule;
···
};
node.pkgs = mkOption {
-
description = mdDoc ''
+
description = ''
The Nixpkgs to use for the nodes.
Setting this will make the `nixpkgs.*` options read-only, to avoid mistakenly testing with a Nixpkgs configuration that diverges from regular use.
···
};
node.pkgsReadOnly = mkOption {
-
description = mdDoc ''
+
description = ''
Whether to make the `nixpkgs.*` options read-only. This is only relevant when [`node.pkgs`](#test-opt-node.pkgs) is set.
Set this to `false` when any of the [`nodes`](#test-opt-nodes) needs to configure any of the `nixpkgs.*` options. This will slow down evaluation of your test a bit.
···
node.specialArgs = mkOption {
type = types.lazyAttrsOf types.raw;
default = { };
-
description = mdDoc ''
+
description = ''
An attribute set of arbitrary values that will be made available as module arguments during the resolution of module `imports`.
Note that it is not possible to override these from within the NixOS configurations. If you argument is not relevant to `imports`, consider setting {option}`defaults._module.args.<name>` instead.
···
nodesCompat = mkOption {
internal = true;
-
description = mdDoc ''
+
description = ''
Basically `_module.args.nodes`, but with backcompat and warnings added.
This will go away.
+4 -4
nixos/lib/testing/run.nix
···
{ config, hostPkgs, lib, ... }:
let
-
inherit (lib) types mkOption mdDoc;
+
inherit (lib) types mkOption;
in
{
options = {
passthru = mkOption {
type = types.lazyAttrsOf types.raw;
-
description = mdDoc ''
+
description = ''
Attributes to add to the returned derivations,
which are not necessarily part of the build.
···
rawTestDerivation = mkOption {
type = types.package;
-
description = mdDoc ''
+
description = ''
Unfiltered version of `test`, for troubleshooting the test framework and `testBuildFailure` in the test framework's test suite.
This is not intended for general use. Use `test` instead.
'';
···
test = mkOption {
type = types.package;
# TODO: can the interactive driver be configured to access the network?
-
description = mdDoc ''
+
description = ''
Derivation that runs the test as its "build" process.
This implies that NixOS tests run isolated from the network, making them
+3 -3
nixos/lib/testing/testScript.nix
···
testModuleArgs@{ config, lib, hostPkgs, nodes, moduleType, ... }:
let
-
inherit (lib) mkOption types mdDoc;
+
inherit (lib) mkOption types;
inherit (types) either str functionTo;
in
{
options = {
testScript = mkOption {
type = either str (functionTo str);
-
description = mdDoc ''
+
description = ''
A series of python declarations and statements that you write to perform
the test.
'';
···
};
withoutTestScriptReferences = mkOption {
type = moduleType;
-
description = mdDoc ''
+
description = ''
A parallel universe where the testScript is invalid and has no references.
'';
internal = true;