diff options
author | Joachim Fasting <joachifm@fastmail.fm> | 2015-10-25 18:58:48 +0100 |
---|---|---|
committer | Joachim Fasting <joachifm@fastmail.fm> | 2015-10-25 19:38:53 +0100 |
commit | 7b2b366552ac16e6852f674c95099b575888e99e (patch) | |
tree | 6587ca4b3d3779195122d4ac1e4fa2b7be2d5559 /nixos/modules/tasks/scsi-link-power-management.nix | |
parent | f7bfb4b466d76a314a3fa8044554a63dc5110fca (diff) |
nixos: set scsi link power policy using udev
Also improve option type checking by enumerating valid policy names.
Diffstat (limited to 'nixos/modules/tasks/scsi-link-power-management.nix')
-rw-r--r-- | nixos/modules/tasks/scsi-link-power-management.nix | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/nixos/modules/tasks/scsi-link-power-management.nix b/nixos/modules/tasks/scsi-link-power-management.nix index a74023dec21a9..484c0a0186d7f 100644 --- a/nixos/modules/tasks/scsi-link-power-management.nix +++ b/nixos/modules/tasks/scsi-link-power-management.nix @@ -2,18 +2,19 @@ with lib; +let cfg = config.powerManagement.scsiLinkPolicy; in + { ###### interface options = { powerManagement.scsiLinkPolicy = mkOption { - default = ""; - example = "min_power"; - type = types.str; + default = null; + type = types.nullOr (types.enum [ "min_power" "max_performance" "medium_power" ]); description = '' - Configure the SCSI link power management policy. By default, - the kernel configures "max_performance". + SCSI link power management policy. The kernel default is + "max_performance". ''; }; @@ -22,25 +23,10 @@ with lib; ###### implementation - config = mkIf (config.powerManagement.scsiLinkPolicy != "") { - - jobs."scsi-link-pm" = - { description = "SCSI Link Power Management Policy"; - - startOn = "stopped udevtrigger"; - - task = true; - - unitConfig.ConditionPathIsReadWrite = "/sys/class/scsi_host"; - - script = '' - shopt -s nullglob - for x in /sys/class/scsi_host/host*/link_power_management_policy; do - echo ${config.powerManagement.scsiLinkPolicy} > $x - done - ''; - }; - + config = mkIf (cfg != null) { + services.udev.extraRules = '' + SUBSYSTEM=="scsi_host", ACTION=="add", KERNEL=="host*", ATTR{link_power_management_policy}="${cfg}" + ''; }; } |