mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 23:36:17 +01:00
Merge pull request #226237 from ElvishJerricco/systemd-stage-1-unhide-docs
Systemd stage 1: Unhide docs and round out assertions about unsupported features.
This commit is contained in:
commit
7ad24e96ea
4 changed files with 62 additions and 33 deletions
|
@ -185,6 +185,10 @@ in
|
|||
assertion = cfg.loginAll -> cfg.target == null;
|
||||
message = "iSCSI target name is set while login on all portals is enabled.";
|
||||
}
|
||||
{
|
||||
assertion = !config.boot.initrd.systemd.enable;
|
||||
message = "systemd stage 1 does not support iscsi yet.";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -17,6 +17,11 @@ with lib;
|
|||
|
||||
config = mkIf config.boot.growPartition {
|
||||
|
||||
assertions = [{
|
||||
assertion = !config.boot.initrd.systemd.enable;
|
||||
message = "systemd stage 1 does not support 'boot.growPartition' yet.";
|
||||
}];
|
||||
|
||||
boot.initrd.extraUtilsCommands = ''
|
||||
copy_bin_and_libs ${pkgs.gawk}/bin/gawk
|
||||
copy_bin_and_libs ${pkgs.gnused}/bin/sed
|
||||
|
|
|
@ -2944,9 +2944,9 @@ let
|
|||
value.source = "${cfg.units.${name}.unit}/${name}";
|
||||
}) (attrNames cfg.units));
|
||||
|
||||
commonOptions = {
|
||||
commonOptions = visible: {
|
||||
|
||||
systemd.network.enable = mkOption {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc ''
|
||||
|
@ -2954,31 +2954,35 @@ let
|
|||
'';
|
||||
};
|
||||
|
||||
systemd.network.links = mkOption {
|
||||
links = mkOption {
|
||||
default = {};
|
||||
inherit visible;
|
||||
type = with types; attrsOf (submodule [ { options = linkOptions; } ]);
|
||||
description = lib.mdDoc "Definition of systemd network links.";
|
||||
};
|
||||
|
||||
systemd.network.netdevs = mkOption {
|
||||
netdevs = mkOption {
|
||||
default = {};
|
||||
inherit visible;
|
||||
type = with types; attrsOf (submodule [ { options = netdevOptions; } ]);
|
||||
description = lib.mdDoc "Definition of systemd network devices.";
|
||||
};
|
||||
|
||||
systemd.network.networks = mkOption {
|
||||
networks = mkOption {
|
||||
default = {};
|
||||
inherit visible;
|
||||
type = with types; attrsOf (submodule [ { options = networkOptions; } networkConfig ]);
|
||||
description = lib.mdDoc "Definition of systemd networks.";
|
||||
};
|
||||
|
||||
systemd.network.config = mkOption {
|
||||
config = mkOption {
|
||||
default = {};
|
||||
inherit visible;
|
||||
type = with types; submodule [ { options = networkdOptions; } networkdConfig ];
|
||||
description = lib.mdDoc "Definition of global systemd network config.";
|
||||
};
|
||||
|
||||
systemd.network.units = mkOption {
|
||||
units = mkOption {
|
||||
description = lib.mdDoc "Definition of networkd units.";
|
||||
default = {};
|
||||
internal = true;
|
||||
|
@ -2991,7 +2995,7 @@ let
|
|||
}));
|
||||
};
|
||||
|
||||
systemd.network.wait-online = {
|
||||
wait-online = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
|
@ -3225,8 +3229,9 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
options = commonOptions // {
|
||||
boot.initrd = commonOptions;
|
||||
options = {
|
||||
systemd.network = commonOptions true;
|
||||
boot.initrd.systemd.network = commonOptions "shallow";
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, config, utils, pkgs, ... }:
|
||||
{ lib, options, config, utils, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
|
@ -126,18 +126,20 @@ in {
|
|||
options.boot.initrd.systemd = {
|
||||
enable = mkEnableOption (lib.mdDoc "systemd in initrd") // {
|
||||
description = lib.mdDoc ''
|
||||
Whether to enable systemd in initrd.
|
||||
Whether to enable systemd in initrd. The unit options such as
|
||||
{option}`boot.initrd.systemd.services` are the same as their
|
||||
stage 2 counterparts such as {option}`systemd.services`,
|
||||
except that `restartTriggers` and `reloadTriggers` are not
|
||||
supported.
|
||||
|
||||
Note: This is in very early development and is highly
|
||||
experimental. Most of the features NixOS supports in initrd are
|
||||
not yet supported by the intrd generated with this option.
|
||||
Note: This is experimental. Some of the `boot.initrd` options
|
||||
are not supported when this is enabled, and the options under
|
||||
`boot.initrd.systemd` are subject to change.
|
||||
'';
|
||||
};
|
||||
|
||||
package = (mkPackageOptionMD pkgs "systemd" {
|
||||
package = mkPackageOptionMD pkgs "systemd" {
|
||||
default = "systemdStage1";
|
||||
}) // {
|
||||
visible = false;
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
|
@ -167,7 +169,6 @@ in {
|
|||
"/etc/hostname".text = "mymachine";
|
||||
}
|
||||
'';
|
||||
visible = false;
|
||||
default = {};
|
||||
type = utils.systemdUtils.types.initrdContents;
|
||||
};
|
||||
|
@ -217,7 +218,6 @@ in {
|
|||
|
||||
emergencyAccess = mkOption {
|
||||
type = with types; oneOf [ bool (nullOr (passwdEntry str)) ];
|
||||
visible = false;
|
||||
description = lib.mdDoc ''
|
||||
Set to true for unauthenticated emergency access, and false for
|
||||
no emergency access.
|
||||
|
@ -231,7 +231,6 @@ in {
|
|||
initrdBin = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [];
|
||||
visible = false;
|
||||
description = lib.mdDoc ''
|
||||
Packages to include in /bin for the stage 1 emergency shell.
|
||||
'';
|
||||
|
@ -240,7 +239,6 @@ in {
|
|||
additionalUpstreamUnits = mkOption {
|
||||
default = [ ];
|
||||
type = types.listOf types.str;
|
||||
visible = false;
|
||||
example = [ "debug-shell.service" "systemd-quotacheck.service" ];
|
||||
description = lib.mdDoc ''
|
||||
Additional units shipped with systemd that shall be enabled.
|
||||
|
@ -251,7 +249,6 @@ in {
|
|||
default = [ ];
|
||||
type = types.listOf types.str;
|
||||
example = [ "systemd-backlight@.service" ];
|
||||
visible = false;
|
||||
description = lib.mdDoc ''
|
||||
A list of units to skip when generating system systemd configuration directory. This has
|
||||
priority over upstream units, {option}`boot.initrd.systemd.units`, and
|
||||
|
@ -264,13 +261,12 @@ in {
|
|||
units = mkOption {
|
||||
description = lib.mdDoc "Definition of systemd units.";
|
||||
default = {};
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
type = systemdUtils.types.units;
|
||||
};
|
||||
|
||||
packages = mkOption {
|
||||
default = [];
|
||||
visible = false;
|
||||
type = types.listOf types.package;
|
||||
example = literalExpression "[ pkgs.systemd-cryptsetup-generator ]";
|
||||
description = lib.mdDoc "Packages providing systemd units and hooks.";
|
||||
|
@ -278,7 +274,7 @@ in {
|
|||
|
||||
targets = mkOption {
|
||||
default = {};
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
type = systemdUtils.types.initrdTargets;
|
||||
description = lib.mdDoc "Definition of systemd target units.";
|
||||
};
|
||||
|
@ -286,35 +282,35 @@ in {
|
|||
services = mkOption {
|
||||
default = {};
|
||||
type = systemdUtils.types.initrdServices;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc "Definition of systemd service units.";
|
||||
};
|
||||
|
||||
sockets = mkOption {
|
||||
default = {};
|
||||
type = systemdUtils.types.initrdSockets;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc "Definition of systemd socket units.";
|
||||
};
|
||||
|
||||
timers = mkOption {
|
||||
default = {};
|
||||
type = systemdUtils.types.initrdTimers;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc "Definition of systemd timer units.";
|
||||
};
|
||||
|
||||
paths = mkOption {
|
||||
default = {};
|
||||
type = systemdUtils.types.initrdPaths;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc "Definition of systemd path units.";
|
||||
};
|
||||
|
||||
mounts = mkOption {
|
||||
default = [];
|
||||
type = systemdUtils.types.initrdMounts;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc ''
|
||||
Definition of systemd mount units.
|
||||
This is a list instead of an attrSet, because systemd mandates the names to be derived from
|
||||
|
@ -325,7 +321,7 @@ in {
|
|||
automounts = mkOption {
|
||||
default = [];
|
||||
type = systemdUtils.types.automounts;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc ''
|
||||
Definition of systemd automount units.
|
||||
This is a list instead of an attrSet, because systemd mandates the names to be derived from
|
||||
|
@ -336,12 +332,31 @@ in {
|
|||
slices = mkOption {
|
||||
default = {};
|
||||
type = systemdUtils.types.slices;
|
||||
visible = false;
|
||||
visible = "shallow";
|
||||
description = lib.mdDoc "Definition of slice configurations.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (config.boot.initrd.enable && cfg.enable) {
|
||||
assertions = map (name: {
|
||||
assertion = config.boot.initrd.${name} == "";
|
||||
message = ''
|
||||
systemd stage 1 does not support 'boot.initrd.${name}'. Please
|
||||
convert it to analogous systemd units in 'boot.initrd.systemd'.
|
||||
|
||||
Definitions:
|
||||
${lib.concatMapStringsSep "\n" ({ file, ... }: "- ${file}") options.boot.initrd.${name}.definitionsWithLocations}
|
||||
'';
|
||||
}) [
|
||||
"preFailCommands"
|
||||
"preDeviceCommands"
|
||||
"preLVMCommands"
|
||||
"postDeviceCommands"
|
||||
"postMountCommands"
|
||||
"extraUtilsCommands"
|
||||
"extraUtilsCommandsTest"
|
||||
];
|
||||
|
||||
system.build = { inherit initialRamdisk; };
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
|
|
Loading…
Reference in a new issue