summaryrefslogtreecommitdiff
path: root/machines/enzo/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'machines/enzo/default.nix')
-rw-r--r--machines/enzo/default.nix17
1 files changed, 17 insertions, 0 deletions
diff --git a/machines/enzo/default.nix b/machines/enzo/default.nix
index bcb92cb..7247a3e 100644
--- a/machines/enzo/default.nix
+++ b/machines/enzo/default.nix
@@ -77,6 +77,23 @@
services.logind.settings.Login.HandleLidSwitch = "suspend-then-hibernate";
systemd.sleep.settings.Sleep.HibernateDelaySec = "60min";
+ # Idle trigger. Bare niri has no power daemon watching for inactivity, so with
+ # the lid open the box never sleeps on its own. swayidle (a Wayland idle
+ # client) fires the same suspend-then-hibernate after 15 min of no input. niri
+ # binds it to graphical-session.target and exports WAYLAND_DISPLAY to the user
+ # manager, so this Just Works in the session. `-w` waits for the resume to
+ # finish before re-arming the timer.
+ systemd.user.services.swayidle = {
+ description = "Suspend-then-hibernate after idle";
+ wantedBy = [ "graphical-session.target" ];
+ partOf = [ "graphical-session.target" ];
+ after = [ "graphical-session.target" ];
+ serviceConfig = {
+ ExecStart = "${pkgs.swayidle}/bin/swayidle -w timeout 900 'systemctl suspend-then-hibernate'";
+ Restart = "on-failure";
+ };
+ };
+
# btrfs + SSD upkeep.
services.btrfs.autoScrub.enable = true;
services.fstrim.enable = true;