nixos/powerManagement: add "med_power_with_dipm" scsiLinkPolicy

This commit is contained in:
Tad Fisher 2018-05-04 10:33:42 -07:00
parent 7873fe2669
commit 19445fa145

View file

@ -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}"
'';