diff options
author | Janne Heß <janne@hess.ooo> | 2022-04-11 19:25:20 +0100 |
---|---|---|
committer | Janne Heß <janne@hess.ooo> | 2022-04-14 11:39:57 +0100 |
commit | dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee (patch) | |
tree | 75afad3c0c72a3b3ef240da804315ccc51240edd /nixos/modules | |
parent | 65cc198539f7c78f13c6003339ed2928ce0ac6f0 (diff) | |
download | nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar.gz nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar.bz2 nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar.lz nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar.xz nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.tar.zst nixpkgs-dda7e9e3ee801d9fbe0cc4d0b3dde024966bc8ee.zip |
nixos/stage-1-systemd: Add mdraid support (+ test)
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/system/boot/stage-1.nix | 15 | ||||
-rw-r--r-- | nixos/modules/system/boot/systemd/initrd-mdraid.nix | 32 |
3 files changed, 38 insertions, 10 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2901df81bf2..7fa7924f4c1 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1186,6 +1186,7 @@ ./system/boot/systemd/tmpfiles.nix ./system/boot/systemd/user.nix ./system/boot/systemd/initrd.nix + ./system/boot/systemd/initrd-mdraid.nix ./system/boot/timesyncd.nix ./system/boot/tmp.nix ./system/etc/etc-activation.nix diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 04753a6767d..3ab873604d3 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -355,7 +355,7 @@ let [ { object = bootStage1; symlink = "/init"; } - { object = pkgs.writeText "mdadm.conf" config.boot.initrd.mdadmConf; + { object = pkgs.writeText "mdadm.conf" config.boot.initrd.services.mdraid.mdadmConf; symlink = "/etc/mdadm.conf"; } { object = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" { @@ -505,14 +505,6 @@ in ''; }; - boot.initrd.mdadmConf = mkOption { - default = ""; - type = types.lines; - description = '' - Contents of <filename>/etc/mdadm.conf</filename> in stage 1. - ''; - }; - boot.initrd.preLVMCommands = mkOption { default = ""; type = types.lines; @@ -736,6 +728,9 @@ in ]; boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems; - }; + + imports = [ + (mkRenamedOptionModule [ "boot" "initrd" "mdadmConf" ] [ "boot" "initrd" "services" "mdraid" "mdadmConf" ]) + ]; } diff --git a/nixos/modules/system/boot/systemd/initrd-mdraid.nix b/nixos/modules/system/boot/systemd/initrd-mdraid.nix new file mode 100644 index 00000000000..b30f2e083fd --- /dev/null +++ b/nixos/modules/system/boot/systemd/initrd-mdraid.nix @@ -0,0 +1,32 @@ +{ config, pkgs, lib, ... }: let + + cfg = config.boot.initrd.services.mdraid; + +in { + options.boot.initrd.services.mdraid = { + enable = (lib.mkEnableOption "mdraid support in initrd") // { + visible = false; + }; + + mdadmConf = lib.mkOption { + description = "Contents of <filename>/etc/mdadm.conf</filename> in initrd."; + type = lib.types.lines; + default = ""; + }; + }; + + config = lib.mkIf (config.boot.initrd.systemd.enable && cfg.enable) { + boot.initrd.systemd = { + contents."/etc/mdadm.conf" = lib.mkIf (cfg.mdadmConf != "") { + text = cfg.mdadmConf; + }; + + initrdBin = [ pkgs.mdadm ]; + }; + + boot.initrd.services.udev.packages = [ pkgs.mdadm ]; + boot.initrd.systemd.packages = [ pkgs.mdadm ]; + + boot.kernelModules = [ "dm-raid" ]; + }; +} |