hd-idle.nix 790 B

123456789101112131415161718192021222324252627282930313233
  1. { lib, pkgs, ... }:
  2. let
  3. disks = [
  4. "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV023WG"
  5. "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV07RMA"
  6. "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV020CG"
  7. ];
  8. mkArgString = disks:
  9. lib.concatStringsSep " " (lib.map (disk: "-a ${disk} -i 600") disks);
  10. args = mkArgString disks;
  11. in
  12. {
  13. environment.systemPackages = [ pkgs.hd-idle ];
  14. systemd.services.hd-idle = {
  15. description = "hd-idle - spin down idle hard disks";
  16. after = [
  17. "suspend.target"
  18. "hibernate.target"
  19. "hybrid-sleep.target"
  20. "suspend-then-hibernate.target"
  21. ];
  22. wantedBy = [ "multi-user.target" ];
  23. serviceConfig = {
  24. Type = "simple";
  25. ExecStart = "${lib.getExe pkgs.hd-idle} ${args}";
  26. Restart = "always";
  27. };
  28. };
  29. }