1{ config, lib, pkgs, ... }:
2
3with lib;
4
5{
6 ###### interface
7
8 options = {
9
10 powerManagement.scsiLinkPolicy = mkOption {
11 default = "";
12 example = "min_power";
13 type = types.str;
14 description = ''
15 Configure the SCSI link power management policy. By default,
16 the kernel configures "max_performance".
17 '';
18 };
19
20 };
21
22
23 ###### implementation
24
25 config = mkIf (config.powerManagement.scsiLinkPolicy != "") {
26
27 jobs."scsi-link-pm" =
28 { description = "SCSI Link Power Management Policy";
29
30 startOn = "stopped udevtrigger";
31
32 task = true;
33
34 unitConfig.ConditionPathIsReadWrite = "/sys/class/scsi_host";
35
36 script = ''
37 shopt -s nullglob
38 for x in /sys/class/scsi_host/host*/link_power_management_policy; do
39 echo ${config.powerManagement.scsiLinkPolicy} > $x
40 done
41 '';
42 };
43
44 };
45
46}