mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-04 03:03:42 +00:00
Avoid top-level with ...;
in nixos/lib/systemd-unit-options.nix
This commit is contained in:
parent
7d130cf752
commit
ad920b32c2
@ -1,9 +1,33 @@
|
||||
{ lib, systemdUtils }:
|
||||
|
||||
with systemdUtils.lib;
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (systemdUtils.lib)
|
||||
assertValueOneOf
|
||||
automountConfig
|
||||
checkUnitConfig
|
||||
makeJobScript
|
||||
mountConfig
|
||||
serviceConfig
|
||||
unitConfig
|
||||
unitNameType
|
||||
;
|
||||
|
||||
inherit (lib)
|
||||
any
|
||||
concatMap
|
||||
filterOverrides
|
||||
isList
|
||||
mdDoc
|
||||
mergeEqualOption
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
mkOptionType
|
||||
singleton
|
||||
toList
|
||||
types
|
||||
;
|
||||
|
||||
checkService = checkUnitConfig "Service" [
|
||||
(assertValueOneOf "Type" [
|
||||
"exec" "simple" "forking" "oneshot" "dbus" "notify" "notify-reload" "idle"
|
||||
@ -31,7 +55,7 @@ in rec {
|
||||
enable = mkOption {
|
||||
default = true;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set to false, this unit will be a symlink to
|
||||
/dev/null. This is primarily useful to prevent specific
|
||||
template instances
|
||||
@ -45,7 +69,7 @@ in rec {
|
||||
overrideStrategy = mkOption {
|
||||
default = "asDropinIfExists";
|
||||
type = types.enum [ "asDropinIfExists" "asDropin" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Defines how unit configuration is provided for systemd:
|
||||
|
||||
`asDropinIfExists` creates a unit file when no unit file is provided by the package
|
||||
@ -61,7 +85,7 @@ in rec {
|
||||
requiredBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
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.
|
||||
@ -71,7 +95,7 @@ in rec {
|
||||
upheldBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keep this unit running as long as the listed units are running. This is a continuously
|
||||
enforced version of wantedBy.
|
||||
'';
|
||||
@ -80,7 +104,7 @@ in rec {
|
||||
wantedBy = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
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
|
||||
@ -98,7 +122,7 @@ in rec {
|
||||
aliases = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc "Aliases of that unit.";
|
||||
description = mdDoc "Aliases of that unit.";
|
||||
};
|
||||
|
||||
};
|
||||
@ -108,12 +132,12 @@ in rec {
|
||||
text = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = lib.mdDoc "Text of this systemd unit.";
|
||||
description = mdDoc "Text of this systemd unit.";
|
||||
};
|
||||
|
||||
unit = mkOption {
|
||||
internal = true;
|
||||
description = lib.mdDoc "The generated unit.";
|
||||
description = mdDoc "The generated unit.";
|
||||
};
|
||||
|
||||
};
|
||||
@ -124,19 +148,19 @@ in rec {
|
||||
description = mkOption {
|
||||
default = "";
|
||||
type = types.singleLineStr;
|
||||
description = lib.mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
description = mdDoc "Description of this unit used in systemd messages and progress indicators.";
|
||||
};
|
||||
|
||||
documentation = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
description = lib.mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
description = mdDoc "A list of URIs referencing documentation for this unit or its configuration.";
|
||||
};
|
||||
|
||||
requires = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started, and stop
|
||||
this unit when the specified units are stopped or fail.
|
||||
'';
|
||||
@ -145,7 +169,7 @@ in rec {
|
||||
wants = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Start the specified units when this unit is started.
|
||||
'';
|
||||
};
|
||||
@ -153,7 +177,7 @@ in rec {
|
||||
upholds = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Keeps the specified running while this unit is running. A continuous version of `wants`.
|
||||
'';
|
||||
};
|
||||
@ -161,7 +185,7 @@ in rec {
|
||||
after = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay this unit until they have started.
|
||||
'';
|
||||
@ -170,7 +194,7 @@ in rec {
|
||||
before = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started at the same time as
|
||||
this unit, delay them until this unit has started.
|
||||
'';
|
||||
@ -179,7 +203,7 @@ in rec {
|
||||
bindsTo = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Like ‘requires’, but in addition, if the specified units
|
||||
unexpectedly disappear, this unit will be stopped as well.
|
||||
'';
|
||||
@ -188,7 +212,7 @@ in rec {
|
||||
partOf = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are stopped or restarted, then this
|
||||
unit is stopped or restarted as well.
|
||||
'';
|
||||
@ -197,7 +221,7 @@ in rec {
|
||||
conflicts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If the specified units are started, then this unit is stopped
|
||||
and vice versa.
|
||||
'';
|
||||
@ -206,7 +230,7 @@ in rec {
|
||||
requisite = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Similar to requires. However if the units listed are not started,
|
||||
they will not be started and the transaction will fail.
|
||||
'';
|
||||
@ -216,7 +240,7 @@ in rec {
|
||||
default = {};
|
||||
example = { RequiresMountsFor = "/data"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Unit]` section of the unit. See
|
||||
{manpage}`systemd.unit(5)` for details.
|
||||
@ -226,7 +250,7 @@ in rec {
|
||||
onFailure = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "failed" state.
|
||||
'';
|
||||
@ -235,7 +259,7 @@ in rec {
|
||||
onSuccess = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitNameType;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
A list of one or more units that are activated when
|
||||
this unit enters the "inactive" state.
|
||||
'';
|
||||
@ -243,7 +267,7 @@ in rec {
|
||||
|
||||
startLimitBurst = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
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.
|
||||
@ -252,7 +276,7 @@ in rec {
|
||||
|
||||
startLimitIntervalSec = mkOption {
|
||||
type = types.int;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
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.
|
||||
@ -271,7 +295,7 @@ in rec {
|
||||
restartTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.unspecified;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
An arbitrary list of items such as derivations. If any item
|
||||
in the list changes between reconfigurations, the service will
|
||||
be restarted.
|
||||
@ -281,7 +305,7 @@ in rec {
|
||||
reloadTriggers = mkOption {
|
||||
default = [];
|
||||
type = types.listOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
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
|
||||
@ -299,13 +323,13 @@ in rec {
|
||||
default = {};
|
||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||
example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
|
||||
description = lib.mdDoc "Environment variables passed to the service's processes.";
|
||||
description = mdDoc "Environment variables passed to the service's processes.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
default = [];
|
||||
type = with types; listOf (oneOf [ package str ]);
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Packages added to the service's {env}`PATH`
|
||||
environment variable. Both the {file}`bin`
|
||||
and {file}`sbin` subdirectories of each
|
||||
@ -319,7 +343,7 @@ in rec {
|
||||
{ RestartSec = 5;
|
||||
};
|
||||
type = types.addCheck (types.attrsOf unitOption) checkService;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Service]` section of the unit. See
|
||||
{manpage}`systemd.service(5)` for details.
|
||||
@ -329,14 +353,14 @@ in rec {
|
||||
script = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc "Shell commands executed as the service's main process.";
|
||||
description = mdDoc "Shell commands executed as the service's main process.";
|
||||
};
|
||||
|
||||
scriptArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "%i";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Arguments passed to the main process script.
|
||||
Can contain specifiers (`%` placeholders expanded by systemd, see {manpage}`systemd.unit(5)`).
|
||||
'';
|
||||
@ -345,7 +369,7 @@ in rec {
|
||||
preStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed before the service's main process
|
||||
is started.
|
||||
'';
|
||||
@ -354,7 +378,7 @@ in rec {
|
||||
postStart = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
is started.
|
||||
'';
|
||||
@ -363,7 +387,7 @@ in rec {
|
||||
reload = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed when the service's main process
|
||||
is reloaded.
|
||||
'';
|
||||
@ -372,7 +396,7 @@ in rec {
|
||||
preStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed to stop the service.
|
||||
'';
|
||||
};
|
||||
@ -380,7 +404,7 @@ in rec {
|
||||
postStop = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Shell commands executed after the service's main process
|
||||
has exited.
|
||||
'';
|
||||
@ -389,7 +413,7 @@ in rec {
|
||||
jobScripts = mkOption {
|
||||
type = with types; coercedTo path singleton (listOf path);
|
||||
internal = true;
|
||||
description = lib.mdDoc "A list of all job script derivations of this unit.";
|
||||
description = mdDoc "A list of all job script derivations of this unit.";
|
||||
default = [];
|
||||
};
|
||||
|
||||
@ -434,7 +458,7 @@ in rec {
|
||||
restartIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be restarted during a NixOS
|
||||
configuration switch if its definition has changed.
|
||||
'';
|
||||
@ -443,7 +467,7 @@ in rec {
|
||||
reloadIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Whether the service should be reloaded during a NixOS
|
||||
configuration switch if its definition has changed. If
|
||||
enabled, the value of {option}`restartIfChanged` is
|
||||
@ -459,7 +483,7 @@ in rec {
|
||||
stopIfChanged = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
If set, a changed unit is restarted by calling
|
||||
{command}`systemctl stop` in the old configuration,
|
||||
then {command}`systemctl start` in the new one.
|
||||
@ -475,7 +499,7 @@ in rec {
|
||||
type = with types; either str (listOf str);
|
||||
default = [];
|
||||
example = "Sun 14:00:00";
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Automatically start this unit at the given date/time, which
|
||||
must be in the format described in
|
||||
{manpage}`systemd.time(7)`. This is equivalent
|
||||
@ -502,7 +526,7 @@ in rec {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenStream`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
@ -512,7 +536,7 @@ in rec {
|
||||
default = [];
|
||||
type = types.listOf types.str;
|
||||
example = [ "0.0.0.0:993" "/run/my-socket" ];
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
For each item in this list, a `ListenDatagram`
|
||||
option in the `[Socket]` section will be created.
|
||||
'';
|
||||
@ -522,7 +546,7 @@ in rec {
|
||||
default = {};
|
||||
example = { ListenStream = "/run/my-socket"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Socket]` section of the unit. See
|
||||
{manpage}`systemd.socket(5)` for details.
|
||||
@ -554,7 +578,7 @@ in rec {
|
||||
default = {};
|
||||
example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Timer]` section of the unit. See
|
||||
{manpage}`systemd.timer(5)` and
|
||||
@ -587,7 +611,7 @@ in rec {
|
||||
default = {};
|
||||
example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Path]` section of the unit. See
|
||||
{manpage}`systemd.path(5)` for details.
|
||||
@ -618,13 +642,13 @@ in rec {
|
||||
what = mkOption {
|
||||
example = "/dev/sda1";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
description = mdDoc "Absolute path of device node, file or other resource. (Mandatory)";
|
||||
};
|
||||
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
@ -634,21 +658,21 @@ in rec {
|
||||
default = "";
|
||||
example = "ext4";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "File system type.";
|
||||
description = mdDoc "File system type.";
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
default = "";
|
||||
example = "noatime";
|
||||
type = types.commas;
|
||||
description = lib.mdDoc "Options used to mount the file system.";
|
||||
description = mdDoc "Options used to mount the file system.";
|
||||
};
|
||||
|
||||
mountConfig = mkOption {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Mount]` section of the unit. See
|
||||
{manpage}`systemd.mount(5)` for details.
|
||||
@ -678,7 +702,7 @@ in rec {
|
||||
where = mkOption {
|
||||
example = "/mnt";
|
||||
type = types.str;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Absolute path of a directory of the mount point.
|
||||
Will be created if it doesn't exist. (Mandatory)
|
||||
'';
|
||||
@ -688,7 +712,7 @@ in rec {
|
||||
default = {};
|
||||
example = { DirectoryMode = "0775"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Automount]` section of the unit. See
|
||||
{manpage}`systemd.automount(5)` for details.
|
||||
@ -719,7 +743,7 @@ in rec {
|
||||
default = {};
|
||||
example = { MemoryMax = "2G"; };
|
||||
type = types.attrsOf unitOption;
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
Each attribute in this set specifies an option in the
|
||||
`[Slice]` section of the unit. See
|
||||
{manpage}`systemd.slice(5)` for details.
|
||||
|
Loading…
Reference in New Issue
Block a user