feat(idle): suspend on battery only, cohering with power management

hypridle's suspend listener now runs `nomarchy-on-ac || systemctl
suspend`, so a plugged-in machine no longer suspends itself mid-idle
(long builds, media, presentations survive). It also fires sooner —
15 min, vs the old fixed 30 — since it now only applies unplugged.
Lock and screen-off are unchanged on both power sources, and logind's
lid handling stays at its sensible defaults (suspend on lid close,
ignore when docked).

Closes the idle-cohesion follow-up under the laptop-power roadmap item.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 17:53:49 +01:00
parent 6a22eba0c4
commit 51c11e1df3
2 changed files with 28 additions and 6 deletions

View File

@@ -454,10 +454,15 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
default; the installer scaffolds it commented-out on laptops.
-**installer:** writes `power.laptop = true` (battery probe) and
`power.thermal.enable` (Intel) into the generated `system.nix`.
- Remaining: **cohere** with `modules/home/idle.nix` (AC-vs-battery idle
timeouts / no auto-suspend on AC) and review logind lid handling, plus a
boot-only→event-driven charge-limit re-apply (udev) if a firmware resets
the threshold on unplug.
- **idle cohesion:** `modules/home/idle.nix` now suspends only on
battery (and sooner — 15 min vs the old fixed 30), gating the hypridle
suspend listener on a `nomarchy-on-ac` probe so a plugged-in machine
stays up mid-idle; lock/screen-off are unchanged on both sources.
logind's lid handling is left at its defaults (suspend on lid close,
ignore when docked) — an explicit "I'm done" that coheres with the
idle behaviour.
- Remaining: a boot-only→event-driven charge-limit re-apply (udev) if a
firmware resets the threshold on unplug.
- **Opt-in services & integrations:** the counterpart to the opt-*out*
application suite above — heavier or more personal integrations shipped
**off by default**, each a `nomarchy.services.<name>.enable` toggle a