From 7c6198be6f89d061feb46ca641ccb66a5ed7c6c2 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 25 Jan 2022 12:06:25 +0100 Subject: [PATCH] [Filesystems] Add disk-related udev rules both normally and to initrd --- filesystems.nix | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/filesystems.nix b/filesystems.nix index da83c07..b6fe602 100644 --- a/filesystems.nix +++ b/filesystems.nix @@ -33,19 +33,28 @@ in }; config = mkIf cfg.enable { - services.udev.extraRules = concatStringsSep "\n" ( - concatLists [ - (optional (!(builtins.isNull cfg.hddScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}!="none", ATTR{queue/scheduler}="${cfg.hddScheduler}"'' - ) - (optional (!(builtins.isNull cfg.slowFlashScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*|nvme[0-9]*n[0-9]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}"'' - ) - (optional (!(builtins.isNull cfg.nvmeScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="${cfg.nvmeScheduler}"'' - ) - ] - ); + + services.udev = + let + udevRules = concatStringsSep "\n" ( + concatLists [ + (optional (!(builtins.isNull cfg.hddScheduler)) + ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}!="none", ATTR{queue/scheduler}="${cfg.hddScheduler}"'' + ) + (optional (!(builtins.isNull cfg.slowFlashScheduler)) + ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*|nvme[0-9]*n[0-9]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}"'' + ) + (optional (!(builtins.isNull cfg.nvmeScheduler)) + ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="${cfg.nvmeScheduler}"'' + ) + ] + ); + in + { + extraRules = udevRules; + initrdRules = udevRules; + }; + services.smartd = { enable = mkDefault true;