diff options
author | Janne Heß <janne@hess.ooo> | 2022-04-15 16:28:41 +0100 |
---|---|---|
committer | Janne Heß <janne@hess.ooo> | 2022-04-15 19:57:16 +0100 |
commit | 01bc138a8ef25314e08843845655480c9b04e879 (patch) | |
tree | 15d2185ce3368430d95f862c947b225c6d05170e /nixos/modules/tasks/swraid.nix | |
parent | 0efb6720a4bbd88fa0e678cc43ba9971ea54991f (diff) |
nixos/stage-1-init: Merge mdraid module into swraid
Diffstat (limited to 'nixos/modules/tasks/swraid.nix')
-rw-r--r-- | nixos/modules/tasks/swraid.nix | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/nixos/modules/tasks/swraid.nix b/nixos/modules/tasks/swraid.nix index 8fa19194bed42..0b53a6d152d09 100644 --- a/nixos/modules/tasks/swraid.nix +++ b/nixos/modules/tasks/swraid.nix @@ -1,17 +1,43 @@ -{ pkgs, ... }: +{ config, pkgs, lib, ... }: let -{ + cfg = config.boot.initrd.services.swraid; - environment.systemPackages = [ pkgs.mdadm ]; +in { - services.udev.packages = [ pkgs.mdadm ]; + options.boot.initrd.services.swraid = { + enable = (lib.mkEnableOption "swraid support using mdadm") // { + visible = false; # only has effect when the new stage 1 is in place + }; - systemd.packages = [ pkgs.mdadm ]; + mdadmConf = lib.mkOption { + description = "Contents of <filename>/etc/mdadm.conf</filename> in initrd."; + type = lib.types.lines; + default = ""; + }; + }; - boot.initrd.availableKernelModules = [ "md_mod" "raid0" "raid1" "raid10" "raid456" ]; + config = { + environment.systemPackages = [ pkgs.mdadm ]; - boot.initrd.extraUdevRulesCommands = '' - cp -v ${pkgs.mdadm}/lib/udev/rules.d/*.rules $out/ - ''; + services.udev.packages = [ pkgs.mdadm ]; + systemd.packages = [ pkgs.mdadm ]; + + boot.initrd.availableKernelModules = lib.mkIf (config.boot.initrd.systemd.enable -> cfg.enable) [ "md_mod" "raid0" "raid1" "raid10" "raid456" ]; + + boot.initrd.extraUdevRulesCommands = lib.mkIf (!config.boot.initrd.systemd.enable) '' + cp -v ${pkgs.mdadm}/lib/udev/rules.d/*.rules $out/ + ''; + + boot.initrd.systemd = lib.mkIf cfg.enable { + contents."/etc/mdadm.conf" = lib.mkIf (cfg.mdadmConf != "") { + text = cfg.mdadmConf; + }; + + packages = [ pkgs.mdadm ]; + initrdBin = [ pkgs.mdadm ]; + }; + + boot.initrd.services.udev.packages = lib.mkIf cfg.enable [ pkgs.mdadm ]; + }; } |