diff options
author | Tad Fisher <tadfisher@gmail.com> | 2018-05-04 10:33:42 -0700 |
---|---|---|
committer | Tad Fisher <tadfisher@gmail.com> | 2018-05-04 10:33:42 -0700 |
commit | 19445fa145d17929ff09447b7670401d071c3da6 (patch) | |
tree | 47d66f68497d27305cc0f5fc71678340debcbdbe /nixos/modules/tasks/scsi-link-power-management.nix | |
parent | 7873fe26693e86e38195e07ee0fd31d1a7f44e6c (diff) |
nixos/powerManagement: add "med_power_with_dipm" scsiLinkPolicy
Diffstat (limited to 'nixos/modules/tasks/scsi-link-power-management.nix')
-rw-r--r-- | nixos/modules/tasks/scsi-link-power-management.nix | 26 |
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 484c0a0186d7f..69599bda6d32d 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}" ''; |