From db93e09912e7c6cd653c2bbad38e7e32d4a77114 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Tue, 12 Jan 2021 22:51:58 +0100
Subject: [PATCH] Add layer to change io schedulers

---
 layers/ioschedulers.nix | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 layers/ioschedulers.nix

diff --git a/layers/ioschedulers.nix b/layers/ioschedulers.nix
new file mode 100644
index 0000000..aff840c
--- /dev/null
+++ b/layers/ioschedulers.nix
@@ -0,0 +1,15 @@
+{ pkgs, ... }:
+let
+  ioschedulers-udev = pkgs.writeTextDir "/etc/udev/rules.d/60-ioschedulers.rules" ''
+    # set scheduler for NVMe
+    ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/scheduler}="bfq"
+    # set scheduler for SSD and eMMC
+    ACTION=="add|change", KERNEL=="[sv]d[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="bfq"
+    # set scheduler for rotating disks
+    ACTION=="add|change", KERNEL=="[sv]d[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
+  '';
+
+in
+{
+  services.udev.packages = [ ioschedulers-udev ];
+}
-- 
GitLab