diff options
author | Domen Kožar <domen@dev.si> | 2015-11-16 13:21:36 +0100 |
---|---|---|
committer | Domen Kožar <domen@dev.si> | 2015-11-16 13:21:36 +0100 |
commit | 0567714b99cfc906bd11c8458b195badc711812c (patch) | |
tree | e7bb0b5ba3aa3f9ded817bcf319daff5f3a34e12 /nixos/modules/tasks | |
parent | b76519069d297241c1337ea48d8783181d9c7bfb (diff) | |
parent | 7b2b366552ac16e6852f674c95099b575888e99e (diff) | |
download | nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar.gz nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar.bz2 nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar.lz nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar.xz nixlib-0567714b99cfc906bd11c8458b195badc711812c.tar.zst nixlib-0567714b99cfc906bd11c8458b195badc711812c.zip |
Merge pull request #10610 from joachifm/scsi-link-pm
nixos: set scsi link power policy using udev
Diffstat (limited to 'nixos/modules/tasks')
-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 a74023dec21a..484c0a0186d7 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}" + ''; }; } |