Merge pull request #18511 from ericsagnes/feat/remove-optionSet
modules: optionSet -> submodule
This commit is contained in:
commit
7e80c42b0e
@ -261,7 +261,7 @@ rec {
|
||||
# declarations from the ‘options’ attribute of containing option
|
||||
# declaration.
|
||||
optionSet = mkOptionType {
|
||||
name = /* builtins.trace "types.optionSet is deprecated; use types.submodule instead" */ "option set";
|
||||
name = builtins.trace "types.optionSet is deprecated; use types.submodule instead" "option set";
|
||||
};
|
||||
|
||||
# Augment the given type with an additional type check function.
|
||||
|
@ -131,13 +131,12 @@ let
|
||||
};
|
||||
|
||||
subUidRanges = mkOption {
|
||||
type = types.listOf types.optionSet;
|
||||
type = with types; listOf (submodule subordinateUidRange);
|
||||
default = [];
|
||||
example = [
|
||||
{ startUid = 1000; count = 1; }
|
||||
{ startUid = 100001; count = 65534; }
|
||||
];
|
||||
options = [ subordinateUidRange ];
|
||||
description = ''
|
||||
Subordinate user ids that user is allowed to use.
|
||||
They are set into <filename>/etc/subuid</filename> and are used
|
||||
@ -146,13 +145,12 @@ let
|
||||
};
|
||||
|
||||
subGidRanges = mkOption {
|
||||
type = types.listOf types.optionSet;
|
||||
type = with types; listOf (submodule subordinateGidRange);
|
||||
default = [];
|
||||
example = [
|
||||
{ startGid = 100; count = 1; }
|
||||
{ startGid = 1001; count = 999; }
|
||||
];
|
||||
options = [ subordinateGidRange ];
|
||||
description = ''
|
||||
Subordinate group ids that user is allowed to use.
|
||||
They are set into <filename>/etc/subgid</filename> and are used
|
||||
@ -310,6 +308,7 @@ let
|
||||
};
|
||||
|
||||
subordinateUidRange = {
|
||||
options = {
|
||||
startUid = mkOption {
|
||||
type = types.int;
|
||||
description = ''
|
||||
@ -323,8 +322,10 @@ let
|
||||
description = ''Count of subordinate user ids'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
subordinateGidRange = {
|
||||
options = {
|
||||
startGid = mkOption {
|
||||
type = types.int;
|
||||
description = ''
|
||||
@ -338,6 +339,7 @@ let
|
||||
description = ''Count of subordinate group ids'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mkSubuidEntry = user: concatStrings (
|
||||
map (range: "${user.name}:${toString range.startUid}:${toString range.count}\n")
|
||||
@ -428,7 +430,7 @@ in {
|
||||
|
||||
users.users = mkOption {
|
||||
default = {};
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule userOpts);
|
||||
example = {
|
||||
alice = {
|
||||
uid = 1234;
|
||||
@ -444,7 +446,6 @@ in {
|
||||
Additional user accounts to be created automatically by the system.
|
||||
This can also be used to set options for root.
|
||||
'';
|
||||
options = [ userOpts ];
|
||||
};
|
||||
|
||||
users.groups = mkOption {
|
||||
@ -453,11 +454,10 @@ in {
|
||||
{ students.gid = 1001;
|
||||
hackers = { };
|
||||
};
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule groupOpts);
|
||||
description = ''
|
||||
Additional groups to be created automatically by the system.
|
||||
'';
|
||||
options = [ groupOpts ];
|
||||
};
|
||||
|
||||
# FIXME: obsolete - will remove.
|
||||
|
@ -129,11 +129,10 @@ in
|
||||
|
||||
certs = mkOption {
|
||||
default = { };
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule certOpts);
|
||||
description = ''
|
||||
Attribute set of certificates to get signed and renewed.
|
||||
'';
|
||||
options = [ certOpts ];
|
||||
example = {
|
||||
"example.com" = {
|
||||
webroot = "/var/www/challenges/";
|
||||
|
@ -386,8 +386,7 @@ in
|
||||
|
||||
security.pam.services = mkOption {
|
||||
default = [];
|
||||
type = types.loaOf types.optionSet;
|
||||
options = [ pamOpts ];
|
||||
type = with types; loaOf (submodule pamOpts);
|
||||
description =
|
||||
''
|
||||
This option defines the PAM services. A service typically
|
||||
|
@ -198,8 +198,7 @@ in {
|
||||
description = ''
|
||||
This option defines director resources in Bacula File Daemon.
|
||||
'';
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ directorOptions ];
|
||||
type = with types; attrsOf (submodule directorOptions);
|
||||
};
|
||||
|
||||
extraClientConfig = mkOption {
|
||||
@ -253,8 +252,7 @@ in {
|
||||
description = ''
|
||||
This option defines Director resources in Bacula Storage Daemon.
|
||||
'';
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ directorOptions ];
|
||||
type = with types; attrsOf (submodule directorOptions);
|
||||
};
|
||||
|
||||
device = mkOption {
|
||||
@ -262,8 +260,7 @@ in {
|
||||
description = ''
|
||||
This option defines Device resources in Bacula Storage Daemon.
|
||||
'';
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ deviceOptions ];
|
||||
type = with types; attrsOf (submodule deviceOptions);
|
||||
};
|
||||
|
||||
extraStorageConfig = mkOption {
|
||||
|
@ -81,12 +81,11 @@ in
|
||||
{ office1 = { model = "MFC-7860DW"; ip = "192.168.1.2"; };
|
||||
office2 = { model = "MFC-7860DW"; nodename = "BRW0080927AFBCE"; };
|
||||
};
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule netDeviceOpts);
|
||||
description = ''
|
||||
The list of network devices that will be registered against the brscan4
|
||||
sane backend.
|
||||
'';
|
||||
options = [ netDeviceOpts ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -62,6 +62,7 @@ let
|
||||
};
|
||||
|
||||
ignoreOptions = {
|
||||
options = {
|
||||
level = levelOption;
|
||||
|
||||
regex = mkOption {
|
||||
@ -72,8 +73,10 @@ let
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ignoreCronOptions = {
|
||||
options = {
|
||||
user = mkOption {
|
||||
default = "root";
|
||||
type = types.str;
|
||||
@ -100,6 +103,7 @@ let
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
@ -180,8 +184,7 @@ in
|
||||
description = ''
|
||||
This option defines extra ignore rules.
|
||||
'';
|
||||
type = types.loaOf types.optionSet;
|
||||
options = [ ignoreOptions ];
|
||||
type = with types; loaOf (submodule ignoreOptions);
|
||||
};
|
||||
|
||||
ignoreCron = mkOption {
|
||||
@ -189,8 +192,7 @@ in
|
||||
description = ''
|
||||
This option defines extra ignore rules for cronjobs.
|
||||
'';
|
||||
type = types.loaOf types.optionSet;
|
||||
options = [ ignoreOptions ignoreCronOptions ];
|
||||
type = with types; loaOf (submodule ignoreCronOptions);
|
||||
};
|
||||
|
||||
extraGroups = mkOption {
|
||||
|
@ -154,6 +154,7 @@ let
|
||||
};
|
||||
|
||||
dbOptions = {
|
||||
options = {
|
||||
type = mkOption {
|
||||
description = "Rippled database type.";
|
||||
type = types.enum ["rocksdb" "nudb"];
|
||||
@ -193,6 +194,7 @@ let
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@ -213,8 +215,7 @@ in
|
||||
|
||||
ports = mkOption {
|
||||
description = "Ports exposed by rippled";
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [portOptions];
|
||||
type = with types; attrsOf (submodule portOptions);
|
||||
default = {
|
||||
rpc = {
|
||||
port = 5005;
|
||||
@ -238,8 +239,7 @@ in
|
||||
|
||||
nodeDb = mkOption {
|
||||
description = "Rippled main database options.";
|
||||
type = types.nullOr types.optionSet;
|
||||
options = dbOptions;
|
||||
type = with types; nullOr (submodule dbOptions);
|
||||
default = {
|
||||
type = "rocksdb";
|
||||
extraOpts = ''
|
||||
@ -254,15 +254,13 @@ in
|
||||
|
||||
tempDb = mkOption {
|
||||
description = "Rippled temporary database options.";
|
||||
type = types.nullOr types.optionSet;
|
||||
options = dbOptions;
|
||||
type = with types; nullOr (submodule dbOptions);
|
||||
default = null;
|
||||
};
|
||||
|
||||
importDb = mkOption {
|
||||
description = "Settings for performing a one-time import.";
|
||||
type = types.nullOr types.optionSet;
|
||||
options = dbOptions;
|
||||
type = with types; nullOr (submodule dbOptions);
|
||||
default = null;
|
||||
};
|
||||
|
||||
|
@ -197,8 +197,7 @@ in
|
||||
devices = mkOption {
|
||||
default = [];
|
||||
example = [ { device = "/dev/sda"; } { device = "/dev/sdb"; options = "-d sat"; } ];
|
||||
type = types.listOf types.optionSet;
|
||||
options = [ smartdOpts ];
|
||||
type = with types; listOf (submodule smartdOpts);
|
||||
description = "List of devices to monitor.";
|
||||
};
|
||||
|
||||
|
@ -169,8 +169,7 @@ in
|
||||
monitoring directly. These are usually attached to serial ports,
|
||||
but USB devices are also supported.
|
||||
'';
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ upsOptions ];
|
||||
type = with types; attrsOf (submodule upsOptions);
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -8,10 +8,7 @@ in
|
||||
options.services.tahoe = {
|
||||
introducers = mkOption {
|
||||
default = {};
|
||||
type = types.loaOf types.optionSet;
|
||||
description = ''
|
||||
The Tahoe introducers.
|
||||
'';
|
||||
type = with types; loaOf (submodule {
|
||||
options = {
|
||||
nickname = mkOption {
|
||||
type = types.str;
|
||||
@ -45,13 +42,14 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
description = ''
|
||||
The Tahoe introducers.
|
||||
'';
|
||||
};
|
||||
nodes = mkOption {
|
||||
default = {};
|
||||
type = types.loaOf types.optionSet;
|
||||
description = ''
|
||||
The Tahoe nodes.
|
||||
'';
|
||||
type = with types; loaOf (submodule {
|
||||
options = {
|
||||
nickname = mkOption {
|
||||
type = types.str;
|
||||
@ -150,6 +148,10 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
description = ''
|
||||
The Tahoe nodes.
|
||||
'';
|
||||
};
|
||||
};
|
||||
config = mkMerge [
|
||||
|
@ -187,26 +187,23 @@ in
|
||||
|
||||
outTunnels = mkOption {
|
||||
default = {};
|
||||
type = with types; loaOf optionSet;
|
||||
description = ''
|
||||
Connect to someone as a client and establish a local accept endpoint
|
||||
'';
|
||||
options = [ ({ name, config, ... }: {
|
||||
type = with types; loaOf (submodule (
|
||||
{ name, config, ... }: {
|
||||
options = commonTunOpts name;
|
||||
config = {
|
||||
name = mkDefault name;
|
||||
};
|
||||
}) ];
|
||||
}
|
||||
));
|
||||
description = ''
|
||||
Connect to someone as a client and establish a local accept endpoint
|
||||
'';
|
||||
};
|
||||
|
||||
inTunnels = mkOption {
|
||||
default = {};
|
||||
type = with types; loaOf optionSet;
|
||||
description = ''
|
||||
Serve something on I2P network at port and delegate requests to address inPort.
|
||||
'';
|
||||
options = [ ({ name, config, ... }: {
|
||||
|
||||
type = with types; loaOf (submodule (
|
||||
{ name, config, ... }: {
|
||||
options = {
|
||||
inPort = mkOption {
|
||||
type = types.int;
|
||||
@ -219,12 +216,14 @@ in
|
||||
description = "I2P nodes that are allowed to connect to this service.";
|
||||
};
|
||||
} // commonTunOpts name;
|
||||
|
||||
config = {
|
||||
name = mkDefault name;
|
||||
};
|
||||
|
||||
}) ];
|
||||
}
|
||||
));
|
||||
description = ''
|
||||
Serve something on I2P network at port and delegate requests to address inPort.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -122,9 +122,7 @@ in
|
||||
};
|
||||
|
||||
networking.nat.forwardPorts = mkOption {
|
||||
type = types.listOf types.optionSet;
|
||||
default = [];
|
||||
example = [ { sourcePort = 8080; destination = "10.0.0.1:80"; } ];
|
||||
type = with types; listOf (submodule {
|
||||
options = {
|
||||
sourcePort = mkOption {
|
||||
type = types.int;
|
||||
@ -138,7 +136,9 @@ in
|
||||
description = "Forward tcp connection to destination ip:port";
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
default = [];
|
||||
example = [ { sourcePort = 8080; destination = "10.0.0.1:80"; } ];
|
||||
description =
|
||||
''
|
||||
List of forwarded ports from the external interface to
|
||||
|
@ -116,7 +116,7 @@ in
|
||||
attribute name.
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -163,6 +163,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -164,7 +164,7 @@ in
|
||||
|
||||
description = "Define the virtual hosts";
|
||||
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule vHostOpts);
|
||||
|
||||
example = {
|
||||
myhost = {
|
||||
@ -180,7 +180,6 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
options = [ vHostOpts ];
|
||||
};
|
||||
|
||||
ssl = mkOption {
|
||||
|
@ -129,17 +129,7 @@ in
|
||||
};
|
||||
|
||||
listenAddresses = mkOption {
|
||||
type = types.listOf types.optionSet;
|
||||
default = [];
|
||||
example = [ { addr = "192.168.3.1"; port = 22; } { addr = "0.0.0.0"; port = 64022; } ];
|
||||
description = ''
|
||||
List of addresses and ports to listen on (ListenAddress directive
|
||||
in config). If port is not specified for address sshd will listen
|
||||
on all ports specified by <literal>ports</literal> option.
|
||||
NOTE: this will override default listening on all local addresses and port 22.
|
||||
NOTE: setting this option won't automatically enable given ports
|
||||
in firewall configuration.
|
||||
'';
|
||||
type = with types; listOf (submodule {
|
||||
options = {
|
||||
addr = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
@ -156,6 +146,17 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
default = [];
|
||||
example = [ { addr = "192.168.3.1"; port = 22; } { addr = "0.0.0.0"; port = 64022; } ];
|
||||
description = ''
|
||||
List of addresses and ports to listen on (ListenAddress directive
|
||||
in config). If port is not specified for address sshd will listen
|
||||
on all ports specified by <literal>ports</literal> option.
|
||||
NOTE: this will override default listening on all local addresses and port 22.
|
||||
NOTE: setting this option won't automatically enable given ports
|
||||
in firewall configuration.
|
||||
'';
|
||||
};
|
||||
|
||||
passwordAuthentication = mkOption {
|
||||
|
@ -75,40 +75,7 @@ in
|
||||
options = {
|
||||
|
||||
networking.supplicant = mkOption {
|
||||
type = types.attrsOf types.optionSet;
|
||||
|
||||
default = { };
|
||||
|
||||
example = {
|
||||
"wlan0 wlan1" = {
|
||||
configFile = "/etc/wpa_supplicant";
|
||||
userControlled.group = "network";
|
||||
extraConf = ''
|
||||
ap_scan=1
|
||||
p2p_disabled=1
|
||||
'';
|
||||
extraCmdArgs = "-u -W";
|
||||
bridge = "br0";
|
||||
};
|
||||
};
|
||||
|
||||
description = ''
|
||||
Interfaces for which to start <command>wpa_supplicant</command>.
|
||||
The supplicant is used to scan for and associate with wireless networks,
|
||||
or to authenticate with 802.1x capable network switches.
|
||||
|
||||
The value of this option is an attribute set. Each attribute configures a
|
||||
<command>wpa_supplicant</command> service, where the attribute name specifies
|
||||
the name of the interface that <command>wpa_supplicant</command> operates on.
|
||||
The attribute name can be a space separated list of interfaces.
|
||||
The attribute names <literal>WLAN</literal>, <literal>LAN</literal> and <literal>DBUS</literal>
|
||||
have a special meaning. <literal>WLAN</literal> and <literal>LAN</literal> are
|
||||
configurations for universal <command>wpa_supplicant</command> service that is
|
||||
started for each WLAN interface or for each LAN interface, respectively.
|
||||
<literal>DBUS</literal> defines a device-unrelated <command>wpa_supplicant</command>
|
||||
service that can be accessed through <literal>D-Bus</literal>.
|
||||
'';
|
||||
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
|
||||
configFile = {
|
||||
@ -207,8 +174,40 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
default = { };
|
||||
|
||||
example = {
|
||||
"wlan0 wlan1" = {
|
||||
configFile = "/etc/wpa_supplicant";
|
||||
userControlled.group = "network";
|
||||
extraConf = ''
|
||||
ap_scan=1
|
||||
p2p_disabled=1
|
||||
'';
|
||||
extraCmdArgs = "-u -W";
|
||||
bridge = "br0";
|
||||
};
|
||||
};
|
||||
|
||||
description = ''
|
||||
Interfaces for which to start <command>wpa_supplicant</command>.
|
||||
The supplicant is used to scan for and associate with wireless networks,
|
||||
or to authenticate with 802.1x capable network switches.
|
||||
|
||||
The value of this option is an attribute set. Each attribute configures a
|
||||
<command>wpa_supplicant</command> service, where the attribute name specifies
|
||||
the name of the interface that <command>wpa_supplicant</command> operates on.
|
||||
The attribute name can be a space separated list of interfaces.
|
||||
The attribute names <literal>WLAN</literal>, <literal>LAN</literal> and <literal>DBUS</literal>
|
||||
have a special meaning. <literal>WLAN</literal> and <literal>LAN</literal> are
|
||||
configurations for universal <command>wpa_supplicant</command> service that is
|
||||
started for each WLAN interface or for each LAN interface, respectively.
|
||||
<literal>DBUS</literal> defines a device-unrelated <command>wpa_supplicant</command>
|
||||
service that can be accessed through <literal>D-Bus</literal>.
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
|
@ -18,11 +18,7 @@ in
|
||||
|
||||
networks = mkOption {
|
||||
default = { };
|
||||
type = types.loaOf types.optionSet;
|
||||
description = ''
|
||||
Defines the tinc networks which will be started.
|
||||
Each network invokes a different daemon.
|
||||
'';
|
||||
type = with types; loaOf (submodule {
|
||||
options = {
|
||||
|
||||
extraConfig = mkOption {
|
||||
@ -106,6 +102,12 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
description = ''
|
||||
Defines the tinc networks which will be started.
|
||||
Each network invokes a different daemon.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -65,7 +65,7 @@ in
|
||||
A list of services provided by xinetd.
|
||||
'';
|
||||
|
||||
type = types.listOf types.optionSet;
|
||||
type = with types; listOf (submodule ({
|
||||
|
||||
options = {
|
||||
|
||||
@ -131,6 +131,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -113,8 +113,7 @@ in {
|
||||
options = {
|
||||
services.winstone = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ winstoneOpts ];
|
||||
type = with types; attrsOf (submodule winstoneOpts);
|
||||
description = ''
|
||||
Defines independent Winstone services, each serving one WAR-file.
|
||||
'';
|
||||
|
@ -74,7 +74,7 @@ in
|
||||
|
||||
services.zope2.instances = mkOption {
|
||||
default = {};
|
||||
type = types.loaOf types.optionSet;
|
||||
type = with types; loaOf (submodule zope2Opts);
|
||||
example = literalExample ''
|
||||
{
|
||||
plone01 = {
|
||||
@ -96,7 +96,6 @@ in
|
||||
}
|
||||
'';
|
||||
description = "zope2 instances to be created automaticaly by the system.";
|
||||
options = [ zope2Opts ];
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -131,8 +131,7 @@ in
|
||||
to the respective devices corresponding to those partitions.
|
||||
'';
|
||||
|
||||
type = types.listOf types.optionSet;
|
||||
|
||||
type = with types; listOf (submodule {
|
||||
options = {
|
||||
|
||||
path = mkOption {
|
||||
@ -176,6 +175,7 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
configurationName = mkOption {
|
||||
|
@ -236,9 +236,8 @@ in
|
||||
<filename>/dev/mapper/<replaceable>name</replaceable></filename>.
|
||||
'';
|
||||
|
||||
type = types.loaOf types.optionSet;
|
||||
|
||||
options = { name, ... }: { options = {
|
||||
type = with types; loaOf (submodule (
|
||||
{ name, ... }: { options = {
|
||||
|
||||
name = mkOption {
|
||||
visible = false;
|
||||
@ -307,12 +306,12 @@ in
|
||||
|
||||
yubikey = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.optionSet;
|
||||
description = ''
|
||||
The options to use for this LUKS device in Yubikey-PBA.
|
||||
If null (the default), Yubikey-PBA will be disabled for this device.
|
||||
'';
|
||||
|
||||
type = with types; nullOr (submodule {
|
||||
options = {
|
||||
twoFactor = mkOption {
|
||||
default = true;
|
||||
@ -392,9 +391,10 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
}; };
|
||||
}; }));
|
||||
};
|
||||
|
||||
boot.initrd.luks.yubikeySupport = mkOption {
|
||||
|
@ -471,8 +471,7 @@ let
|
||||
|
||||
addresses = mkOption {
|
||||
default = [ ];
|
||||
type = types.listOf types.optionSet;
|
||||
options = [ addressOptions ];
|
||||
type = with types; listOf (submodule [ addressOptions ]);
|
||||
description = ''
|
||||
A list of address sections to be added to the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
@ -482,8 +481,7 @@ let
|
||||
|
||||
routes = mkOption {
|
||||
default = [ ];
|
||||
type = types.listOf types.optionSet;
|
||||
options = [ routeOptions ];
|
||||
type = with types; listOf (submodule [ routeOptions ]);
|
||||
description = ''
|
||||
A list of route sections to be added to the unit. See
|
||||
<citerefentry><refentrytitle>systemd.network</refentrytitle>
|
||||
@ -624,35 +622,32 @@ in
|
||||
|
||||
systemd.network.links = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ linkOptions ];
|
||||
type = with types; attrsOf (submodule [ linkOptions ]);
|
||||
description = "Definition of systemd network links.";
|
||||
};
|
||||
|
||||
systemd.network.netdevs = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ netdevOptions ];
|
||||
type = with types; attrsOf (submodule [ netdevOptions ]);
|
||||
description = "Definition of systemd network devices.";
|
||||
};
|
||||
|
||||
systemd.network.networks = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ networkOptions networkConfig ];
|
||||
type = with types; attrsOf (submodule [ networkOptions networkConfig ]);
|
||||
description = "Definition of systemd networks.";
|
||||
};
|
||||
|
||||
systemd.network.units = mkOption {
|
||||
description = "Definition of networkd units.";
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = { name, config, ... }:
|
||||
type = with types; attrsOf (submodule (
|
||||
{ name, config, ... }:
|
||||
{ options = concreteUnitOptions;
|
||||
config = {
|
||||
unit = mkDefault (makeUnit name config);
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -389,13 +389,13 @@ in
|
||||
systemd.units = mkOption {
|
||||
description = "Definition of systemd units.";
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = { name, config, ... }:
|
||||
type = with types; attrsOf (submodule (
|
||||
{ name, config, ... }:
|
||||
{ options = concreteUnitOptions;
|
||||
config = {
|
||||
unit = mkDefault (makeUnit name config);
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
systemd.packages = mkOption {
|
||||
@ -406,43 +406,37 @@ in
|
||||
|
||||
systemd.targets = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ targetOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig] );
|
||||
description = "Definition of systemd target units.";
|
||||
};
|
||||
|
||||
systemd.services = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ serviceOptions unitConfig serviceConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ]);
|
||||
description = "Definition of systemd service units.";
|
||||
};
|
||||
|
||||
systemd.sockets = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ socketOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = socketOptions; } unitConfig ]);
|
||||
description = "Definition of systemd socket units.";
|
||||
};
|
||||
|
||||
systemd.timers = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ timerOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = timerOptions; } unitConfig ]);
|
||||
description = "Definition of systemd timer units.";
|
||||
};
|
||||
|
||||
systemd.paths = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ pathOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = pathOptions; } unitConfig ]);
|
||||
description = "Definition of systemd path units.";
|
||||
};
|
||||
|
||||
systemd.mounts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.optionSet;
|
||||
options = [ mountOptions unitConfig mountConfig ];
|
||||
type = with types; listOf (submodule [ { options = mountOptions; } unitConfig mountConfig ]);
|
||||
description = ''
|
||||
Definition of systemd mount units.
|
||||
This is a list instead of an attrSet, because systemd mandates the names to be derived from
|
||||
@ -452,8 +446,7 @@ in
|
||||
|
||||
systemd.automounts = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.optionSet;
|
||||
options = [ automountOptions unitConfig automountConfig ];
|
||||
type = with types; listOf (submodule [ { options = automountOptions; } unitConfig automountConfig ]);
|
||||
description = ''
|
||||
Definition of systemd automount units.
|
||||
This is a list instead of an attrSet, because systemd mandates the names to be derived from
|
||||
@ -600,33 +593,30 @@ in
|
||||
systemd.user.units = mkOption {
|
||||
description = "Definition of systemd per-user units.";
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = { name, config, ... }:
|
||||
type = with types; attrsOf (submodule (
|
||||
{ name, config, ... }:
|
||||
{ options = concreteUnitOptions;
|
||||
config = {
|
||||
unit = mkDefault (makeUnit name config);
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
|
||||
systemd.user.services = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ serviceOptions unitConfig serviceConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ] );
|
||||
description = "Definition of systemd per-user service units.";
|
||||
};
|
||||
|
||||
systemd.user.timers = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ timerOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = timerOptions; } unitConfig ] );
|
||||
description = "Definition of systemd per-user timer units.";
|
||||
};
|
||||
|
||||
systemd.user.sockets = mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.optionSet;
|
||||
options = [ socketOptions unitConfig ];
|
||||
type = with types; attrsOf (submodule [ { options = socketOptions; } unitConfig ] );
|
||||
description = "Definition of systemd per-user socket units.";
|
||||
};
|
||||
|
||||
|
@ -33,7 +33,6 @@ in
|
||||
options = {
|
||||
|
||||
environment.etc = mkOption {
|
||||
type = types.loaOf types.optionSet;
|
||||
default = {};
|
||||
example = literalExample ''
|
||||
{ example-configuration-file =
|
||||
@ -47,7 +46,8 @@ in
|
||||
Set of files that have to be linked in <filename>/etc</filename>.
|
||||
'';
|
||||
|
||||
options = singleton ({ name, config, ... }:
|
||||
type = with types; loaOf (submodule (
|
||||
{ name, config, ... }:
|
||||
{ options = {
|
||||
|
||||
enable = mkOption {
|
||||
@ -117,7 +117,7 @@ in
|
||||
in mkDefault (pkgs.writeText name' config.text));
|
||||
};
|
||||
|
||||
});
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
|
@ -97,7 +97,7 @@ let
|
||||
|
||||
addrOpts = v:
|
||||
assert v == 4 || v == 6;
|
||||
{
|
||||
{ options = {
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
@ -114,6 +114,7 @@ let
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
interfaceOpts = { name, ... }: {
|
||||
|
||||
@ -141,8 +142,7 @@ let
|
||||
{ address = "10.0.0.1"; prefixLength = 16; }
|
||||
{ address = "192.168.1.1"; prefixLength = 24; }
|
||||
];
|
||||
type = types.listOf types.optionSet;
|
||||
options = addrOpts 4;
|
||||
type = with types; listOf (submodule (addrOpts 4));
|
||||
description = ''
|
||||
List of IPv4 addresses that will be statically assigned to the interface.
|
||||
'';
|
||||
@ -154,8 +154,7 @@ let
|
||||
{ address = "fdfd:b3f0:482::1"; prefixLength = 48; }
|
||||
{ address = "2001:1470:fffd:2098::e006"; prefixLength = 64; }
|
||||
];
|
||||
type = types.listOf types.optionSet;
|
||||
options = addrOpts 6;
|
||||
type = with types; listOf (submodule (addrOpts 6));
|
||||
description = ''
|
||||
List of IPv6 addresses that will be statically assigned to the interface.
|
||||
'';
|
||||
@ -415,8 +414,7 @@ in
|
||||
<option>networking.useDHCP</option> is true, then every
|
||||
interface not listed here will be configured using DHCP.
|
||||
'';
|
||||
type = types.loaOf types.optionSet;
|
||||
options = [ interfaceOpts ];
|
||||
type = with types; loaOf (submodule interfaceOpts);
|
||||
};
|
||||
|
||||
networking.vswitches = mkOption {
|
||||
@ -434,7 +432,7 @@ in
|
||||
interface.
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -482,6 +480,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
networking.bridges = mkOption {
|
||||
@ -499,7 +499,7 @@ in
|
||||
bridge's network interface.
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -519,6 +519,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
networking.bonds = mkOption {
|
||||
@ -538,7 +540,7 @@ in
|
||||
name specifying the name of the bond's network interface
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -593,10 +595,11 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
networking.macvlans = mkOption {
|
||||
type = types.attrsOf types.optionSet;
|
||||
default = { };
|
||||
example = literalExample {
|
||||
wan = {
|
||||
@ -608,6 +611,7 @@ in
|
||||
This option allows you to define macvlan interfaces which should
|
||||
be automatically created.
|
||||
'';
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
|
||||
interface = mkOption {
|
||||
@ -624,10 +628,11 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
networking.sits = mkOption {
|
||||
type = types.attrsOf types.optionSet;
|
||||
default = { };
|
||||
example = literalExample {
|
||||
hurricane = {
|
||||
@ -644,6 +649,7 @@ in
|
||||
description = ''
|
||||
This option allows you to define 6-to-4 interfaces which should be automatically created.
|
||||
'';
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
|
||||
remote = mkOption {
|
||||
@ -684,6 +690,8 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
networking.vlans = mkOption {
|
||||
@ -706,7 +714,7 @@ in
|
||||
specifying the name of the vlan interface.
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -723,6 +731,9 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
networking.wlanInterfaces = mkOption {
|
||||
@ -760,7 +771,7 @@ in
|
||||
would have to be created explicitly.
|
||||
'';
|
||||
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule {
|
||||
|
||||
options = {
|
||||
|
||||
@ -827,6 +838,9 @@ in
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
networking.useDHCP = mkOption {
|
||||
|
@ -473,9 +473,8 @@ in
|
||||
};
|
||||
|
||||
extraVeths = mkOption {
|
||||
type = types.attrsOf types.optionSet;
|
||||
type = with types; attrsOf (submodule networkOptions);
|
||||
default = {};
|
||||
options = networkOptions;
|
||||
description = ''
|
||||
Extra veth-pairs to be created for the container
|
||||
'';
|
||||
@ -490,8 +489,7 @@ in
|
||||
};
|
||||
|
||||
bindMounts = mkOption {
|
||||
type = types.loaOf types.optionSet;
|
||||
options = [ bindMountOpts ];
|
||||
type = with types; loaOf (submodule bindMountOpts);
|
||||
default = {};
|
||||
example = { "/home" = { hostPath = "/home/alice";
|
||||
isReadOnly = false; };
|
||||
|
Loading…
x
Reference in New Issue
Block a user