feat(power): clamshell — ignore lid suspend when docked (#86)
Some checks failed
Check / eval (push) Has been cancelled

Explicit HandleLidSwitchDocked=ignore under services.logind so closing
the lid with an external display connected does not suspend. Undocked
lid path left to upstream defaults. checks.clamshell-logind asserts the
baked logind.conf and active logind; real multi-monitor lid V3 queued.

Verified: V2 — flake check --no-build; checks.clamshell-logind green.
V3 pending: HARDWARE-QUEUE #86 lid+external on a laptop.
This commit is contained in:
Bernardo Magri
2026-07-11 10:32:18 +01:00
parent ce05eed754
commit 27f18e4ccc
9 changed files with 73 additions and 13 deletions

View File

@@ -55,13 +55,6 @@ runtime-computed `resume_offset` into the boot cmdline, and the dev box runs
exactly this layout (`/proc/cmdline` verified) but isn't Nomarchy. Steps in
HARDWARE-QUEUE. Close #76 on PASS.
### 86. Clamshell dock: lid + external monitor (`VISION § C`)
Lid closed with external monitor connected must not suspend
(`logind` `lidSwitchDocked` / `ExternalPower` audit + display-profile
interplay); wake behaves. Display profiles + auto-switch already exist —
this is the lid/suspend edge case. VM where possible; residual V3 on
real dock hardware.
### 87. Dock audio sink follows plug/unplug (`VISION § C`)
Default audio sink: dock sink on plug, internal on unplug (WirePlumber
policy or udev hook). Complements #86; can ship independently.
@@ -118,8 +111,8 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.*
2026-07-10). Keep #59 commented install guidance; no
`nomarchy.hardware.nvidia.*` until a hybrid maintainer + queue.
_(#80#83 + #85 shipped 2026-07-11. #84 split → **NEXT #86#87** dock
clamshell + dock audio.)_
_(#80#83 + #85#86 shipped 2026-07-11. Remaining dock slice: **#87**
dock audio. #86 V3 clamshell on real external display → HARDWARE-QUEUE.)_
### v1.0 pointer

View File

@@ -11,6 +11,14 @@ the **T14s** (webcam case).
## Any machine (dev box is fine)
- [ ] **#86 clamshell lid + external display** — V2 asserts
`HandleLidSwitchDocked=ignore` in logind.conf. On a laptop with a
real external monitor: open a session, plug external, close lid —
machine must **stay awake** (no suspend); external panel remains
usable (or wakes with keyboard if DPMS). Unplug external, close lid
— should suspend as usual. Optional: with a docked display-profile
(`eDP-1` disable), confirm clamshell layout still looks right after
lid close. Pass = no surprise suspend when docked.
- [ ] **#55 fingerprint enroll on real reader** — with
`nomarchy.hardware.fingerprint.enable` and a physical reader: System
Fingerprint Enroll a finger; List shows it; Verify succeeds; optional

View File

@@ -19,6 +19,18 @@ Template:
---
## 2026-07-11 — #86 clamshell HandleLidSwitchDocked
- **Task:** NEXT #86 — lid closed + external monitor must not suspend.
- **Did:** Explicit `HandleLidSwitchDocked=ignore` in
`modules/nixos/power.nix` (logind settings.Login). Undocked lid
behaviour unchanged. idle.nix comment corrected. `checks.clamshell-logind`
asserts conf + active logind. V3 steps in HARDWARE-QUEUE. Closed #86.
- **Verified:** **V2**`nix flake check --no-build`;
`checks.clamshell-logind` green (`HandleLidSwitchDocked=ignore` +
logind active).
- **Pending:** V3 real lid+external on laptop (HARDWARE-QUEUE).
- **Next suggestion:** #87 dock audio sink follow.
## 2026-07-11 — #85 hardware hall of fame + split #84
- **Task:** NEXT #85 docs hall of fame; #84 was `[big]` → split.
- **Did:** HARDWARE.md §9 install-tested table (T14s Gen 4 AMD, Latitude