diff options
Diffstat (limited to 'modules/system/kernel/bfq/default.nix')
-rw-r--r-- | modules/system/kernel/bfq/default.nix | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/modules/system/kernel/bfq/default.nix b/modules/system/kernel/bfq/default.nix new file mode 100644 index 00000000..a4b593ee --- /dev/null +++ b/modules/system/kernel/bfq/default.nix @@ -0,0 +1,36 @@ +{ config, lib, ... }: + +let + inherit (config.boot.kernelPackages.kernel) version; + inherit (lib) optionalString versionAtLeast versionOlder; +in { + options.vuizvui.system.kernel.bfq = { + enable = lib.mkEnableOption "Enable the BFQ scheduler by default"; + }; + + config = lib.mkIf config.vuizvui.system.kernel.bfq.enable { + boot.kernelPatches = lib.singleton { + name = "bfq"; + patch = + if versionAtLeast version "5.4" then ./bfq-by-default-5.4.patch + else if versionAtLeast version "4.18" then ./bfq-by-default-4.18.patch + else if versionAtLeast version "4.15" then ./bfq-by-default-4.15.patch + else ./bfq-by-default.patch; + extraConfig = '' + SCSI_MQ_DEFAULT? y + DM_MQ_DEFAULT? y + IOSCHED_BFQ y + BFQ_GROUP_IOSCHED y + ''; + }; + + vuizvui.requiresTests = lib.singleton ["vuizvui" "system" "kernel" "bfq"]; + + assertions = lib.singleton { + assertion = versionAtLeast version "4.12"; + + message = "The BFQ scheduler in conjunction with blk-mq requires " + + "at least kernel 4.12."; + }; + }; +} |