Browse Source

feat(odin+hd-idle): spin down hdd's after 10 minutes idle

Zander Hawke 9 tháng trước cách đây
mục cha
commit
ceda0b63f0
2 tập tin đã thay đổi với 34 bổ sung0 xóa
  1. 1 0
      hosts/odin/system/default.nix
  2. 33 0
      hosts/odin/system/hd-idle.nix

+ 1 - 0
hosts/odin/system/default.nix

@@ -11,6 +11,7 @@
 
     ./age.nix
     ./disko.nix
+    ./hd-idle.nix
     ./impermanence.nix
     ./mergerfs.nix
   ];

+ 33 - 0
hosts/odin/system/hd-idle.nix

@@ -0,0 +1,33 @@
+{ 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 ];
+
+  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";
+    };
+  };
+}