summary refs log tree commit diff
path: root/nixos/modules/installer/tools
diff options
context:
space:
mode:
authorLinus Heckemann <git@sphalerite.org>2022-07-28 14:34:44 +0200
committerLinus Heckemann <git@sphalerite.org>2023-07-10 16:39:35 +0200
commit0b277bcc2b40c6ecd728c44635fa92262bedf620 (patch)
treeaa04f28a53d623a508dd98ec819cc706ff0a9eca /nixos/modules/installer/tools
parent408c0e8c15a1c9cf5c3226931b6f283c9867c484 (diff)
downloadnixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar.gz
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar.bz2
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar.lz
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar.xz
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.tar.zst
nixpkgs-0b277bcc2b40c6ecd728c44635fa92262bedf620.zip
nixos/swraid: make entire module optional
swraid support will now only be enabled by default if stateVersion is
older than 23.11. nixos-generate-config will now generate explicit
config for enabling support if needed.
Diffstat (limited to 'nixos/modules/installer/tools')
-rw-r--r--nixos/modules/installer/tools/nixos-generate-config.pl11
1 files changed, 9 insertions, 2 deletions
diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl
index 2e572ef0247..b08bf1e45d1 100644
--- a/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -381,6 +381,7 @@ sub in {
 
 my $fileSystems;
 my %fsByDev;
+my $useSwraid = 0;
 foreach my $fs (read_file("/proc/self/mountinfo")) {
     chomp $fs;
     my @fields = split / /, $fs;
@@ -510,8 +511,8 @@ EOF
     # boot.initrd.luks.devices entry.
     if (-e $device) {
         my $deviceName = basename(abs_path($device));
-        if (-e "/sys/class/block/$deviceName"
-            && read_file("/sys/class/block/$deviceName/dm/uuid",  err_mode => 'quiet') =~ /^CRYPT-LUKS/)
+        my $dmUuid = read_file("/sys/class/block/$deviceName/dm/uuid",  err_mode => 'quiet');
+        if ($dmUuid =~ /^CRYPT-LUKS/)
         {
             my @slaves = glob("/sys/class/block/$deviceName/slaves/*");
             if (scalar @slaves == 1) {
@@ -527,8 +528,14 @@ EOF
                 }
             }
         }
+        if (-e "/sys/class/block/$deviceName/md/uuid") {
+            $useSwraid = 1;
+        }
     }
 }
+if ($useSwraid) {
+    push @attrs, "boot.initrd.services.swraid.enable = true;\n\n";
+}
 
 
 # Generate the hardware configuration file.