vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / tasks / scsi-link-power-management.nix
blob549c35fc5b8d7c7c04f2b58f6188e039f35b7efa
1 { config, lib, ... }:
3 with lib;
5 let
7   cfg = config.powerManagement.scsiLinkPolicy;
9   kernel = config.boot.kernelPackages.kernel;
11   allowedValues = [
12     "min_power"
13     "max_performance"
14     "medium_power"
15     "med_power_with_dipm"
16   ];
21   ###### interface
23   options = {
25     powerManagement.scsiLinkPolicy = mkOption {
26       default = null;
27       type = types.nullOr (types.enum allowedValues);
28       description = ''
29         SCSI link power management policy. The kernel default is
30         "max_performance".
32         "med_power_with_dipm" is supported by kernel versions
33         4.15 and newer.
34       '';
35     };
37   };
40   ###### implementation
42   config = mkIf (cfg != null) {
44     assertions = singleton {
45       assertion = (cfg == "med_power_with_dipm") -> versionAtLeast kernel.version "4.15";
46       message = "med_power_with_dipm is not supported for kernels older than 4.15";
47     };
49     services.udev.extraRules = ''
50       SUBSYSTEM=="scsi_host", ACTION=="add", KERNEL=="host*", ATTR{link_power_management_policy}="${cfg}"
51     '';
52   };