diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix index a3bbfa834b1..8cdd317b7b1 100644 --- a/pkgs/os-specific/linux/lvm2/default.nix +++ b/pkgs/os-specific/linux/lvm2/default.nix @@ -40,6 +40,11 @@ stdenv.mkDerivation { '' substituteInPlace $out/lib/udev/rules.d/13-dm-disk.rules \ --replace $out/sbin/blkid ${utillinux}/sbin/blkid + + # Systemd stuff + mkdir -p $out/etc/systemd/system $out/lib/systemd/system-generators + cp scripts/blk_availability_systemd_red_hat.service $out/etc/systemd/system + cp scripts/lvm2_activation_generator_systemd_red_hat $out/lib/systemd/system-generators ''; meta = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 21a3a3c87d0..b2066e82388 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6805,6 +6805,15 @@ let systemd = callPackage ../os-specific/linux/systemd { }; + # In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get + # LVM2 working in systemd. + systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: { + name = p.name + "-with-lvm2"; + postInstall = p.postInstall + '' + cp ${pkgs.lvm2}/lib/systemd/system-generators/* $out/lib/systemd/system-generat + ''; + }); + sysvinit = callPackage ../os-specific/linux/sysvinit { }; sysvtools = callPackage ../os-specific/linux/sysvinit {