{ lib, pkgs, ... }: let disks = [ "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV023WG" "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV07RMA" "/dev/disk/by-id/ata-ST8000VN002-2ZM188_WPV020CG" ]; mkArgString = disks: lib.concatStringsSep " " (lib.map (disk: "-a ${disk} -i 600") disks); args = mkArgString disks; in { environment.systemPackages = [ pkgs.hd-idle pkgs.fatrace ]; systemd.services.hd-idle = { description = "hd-idle - spin down idle hard disks"; after = [ "suspend.target" "hibernate.target" "hybrid-sleep.target" "suspend-then-hibernate.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "simple"; ExecStart = "${lib.getExe pkgs.hd-idle} ${args}"; Restart = "always"; }; }; systemd.services.fatrace = { description = "File access tracing service"; after = [ "local-fs.target" ]; wants = [ "local-fs.target" ]; serviceConfig = { ExecStart = "${lib.getExe pkgs.fatrace} --timestamp /mnt/storage"; Restart = "always"; User = "root"; }; }; }