summary refs log tree commit diff
path: root/nixos/modules/tasks
diff options
context:
space:
mode:
authorYegor Timoshenko <yegortimoshenko@riseup.net>2018-05-22 23:53:24 +0300
committerGitHub <noreply@github.com>2018-05-22 23:53:24 +0300
commit332e8b40389e2511cd719e8a7167eb433c530d53 (patch)
tree95a33eb43712b412a1bf57c3ef4f41ca0554bfed /nixos/modules/tasks
parent74083c8cd71071739712213410a6733c98f0af33 (diff)
parent19445fa145d17929ff09447b7670401d071c3da6 (diff)
downloadnixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar.gz
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar.bz2
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar.lz
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar.xz
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.tar.zst
nixlib-332e8b40389e2511cd719e8a7167eb433c530d53.zip
Merge pull request #39982 from tadfisher/scsi-link-policy
nixos/powerManagement: add "med_power_with_dipm" scsiLinkPolicy
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r--nixos/modules/tasks/scsi-link-power-management.nix26
1 files changed, 24 insertions, 2 deletions
diff --git a/nixos/modules/tasks/scsi-link-power-management.nix b/nixos/modules/tasks/scsi-link-power-management.nix
index 484c0a0186d7..69599bda6d32 100644
--- a/nixos/modules/tasks/scsi-link-power-management.nix
+++ b/nixos/modules/tasks/scsi-link-power-management.nix
@@ -2,7 +2,20 @@
 
 with lib;
 
-let cfg = config.powerManagement.scsiLinkPolicy; in
+let
+
+  cfg = config.powerManagement.scsiLinkPolicy;
+
+  kernel = config.boot.kernelPackages.kernel;
+
+  allowedValues = [
+    "min_power"
+    "max_performance"
+    "medium_power"
+    "med_power_with_dipm"
+  ];
+
+in
 
 {
   ###### interface
@@ -11,10 +24,13 @@ let cfg = config.powerManagement.scsiLinkPolicy; in
 
     powerManagement.scsiLinkPolicy = mkOption {
       default = null;
-      type = types.nullOr (types.enum [ "min_power" "max_performance" "medium_power" ]);
+      type = types.nullOr (types.enum allowedValues);
       description = ''
         SCSI link power management policy. The kernel default is
         "max_performance".
+        </para><para>
+        "med_power_with_dipm" is supported by kernel versions
+        4.15 and newer.
       '';
     };
 
@@ -24,6 +40,12 @@ let cfg = config.powerManagement.scsiLinkPolicy; in
   ###### implementation
 
   config = mkIf (cfg != null) {
+
+    assertions = singleton {
+      assertion = (cfg == "med_power_with_dipm") -> versionAtLeast kernel.version "4.15";
+      message = "med_power_with_dipm is not supported for kernels older than 4.15";
+    };
+
     services.udev.extraRules = ''
       SUBSYSTEM=="scsi_host", ACTION=="add", KERNEL=="host*", ATTR{link_power_management_policy}="${cfg}"
     '';