My unified nix flake for all configuration management.
  • Nix 70.8%
  • Rust 12.9%
  • Shell 9.3%
  • Python 3.6%
  • TypeScript 1.6%
  • Other 1.7%
Find a file
Daniel Flanagan 01ce95f32c
All checks were successful
/ check-format (push) Successful in 14s
/ build (push) Has been skipped
fix(steamdeck/noctalia): stop locking on suspend, drop lock from the power menu
A Deck with the idle lock already off still came back to a password
prompt after the power menu suspended it, on a machine whose touchscreen
cannot clear one.

Two separate causes, and turning off the idle ladder addressed neither:

  - noctalia holds a logind sleep-DELAY inhibitor called "Lock before
    sleep" (src/dbus/logind/logind_service.cpp), so it locks in front of
    ANY suspend logind announces -- power button, `systemctl suspend`,
    lid. The idle rungs only cover suspends noctalia itself starts.
    Cleared with lockscreen.lock_before_suspend, which is one of the two
    conditions in shouldLockBeforeSuspend (config_types.h).
  - the power menu default row is `lock_and_suspend`, which locks by
    definition. The session panel has a plain `suspend` action that the
    idle ladder does not, so here it can simply be swapped.

`lockscreen.enabled = false` was the other way to reach both, and is
rejected on purpose: it would also kill Super+Shift+Control+L, which the
file argues is the one lock a Deck can clear, since a keyboard is
attached by the time anyone types that.

`lock` leaves the power menu because it is unclearable by touch and
sits one mis-tap away. niri renders ONLY the lock surface while locked
(src/niri.rs, the `if self.is_locked()` arm draws that surface and a
solid colour and returns), so no layer-shell client is on screen --
wvkbd included -- and noctalia lockscreen has no keyboard widget of its
own; its widget set is stickers, clock and audio visualizer. An on-screen
keyboard over a lock screen needs a patch to one of the two, not config.
The keybind stays for the keyboard-attached case.

Tested: parsed the file with tomllib and asserted the merged action list
is logout/suspend/reboot/shutdown with lock_before_suspend false.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PHF4XrJ6RQkyktYT5QE5En
2026-09-20 21:53:47 -05:00
.forgejo/workflows fix(ci): fail fast on a wedged build instead of holding the runner for 3h 2026-09-19 01:04:29 -05:00
.helix Format 2025-02-14 13:31:18 -06:00
dotfiles fix(steamdeck/noctalia): stop locking on suspend, drop lock from the power menu 2026-09-20 21:53:47 -05:00
issues docs(issue): close the CI hang -- narinfo sqlite was on virtiofs 2026-09-19 01:06:20 -05:00
lib fix(steamdeck/niri): suspend from the power button in the desktop session 2026-09-20 21:53:35 -05:00
packages fix(beefcake): put nix cache on the SSD -- it broke CI for five days 2026-09-19 01:04:39 -05:00
prototypes/beefcake-impermanence feat(home-assistant): notify through self-hosted ntfy, and enable stream for clips 2026-09-14 13:20:21 -05:00
secrets feat(home-assistant): notify through self-hosted ntfy, and enable stream for clips 2026-09-14 13:20:21 -05:00
.envrc feat: fix nix-direnv since removal of home-manager 2026-07-07 09:37:20 -05:00
.gitignore chore: drop accidentally-committed __pycache__; gitignore python bytecode 2026-07-22 16:00:46 -05:00
.sops.yaml feat(beefcake): set daniel's login password declaratively from sops 2026-09-05 10:56:40 -05:00
AGENTS.md feat(deploy): live-switch by default, reboot only when nixpkgs moves 2026-09-05 11:26:55 -05:00
CLAUDE.md refactor: make CLAUDE.md a symlink to AGENTS.md 2026-03-23 17:14:34 -05:00
flake.lock feat(assistant): make Hermes the brain, on local MLX weights 2026-09-09 13:31:28 -05:00
flake.nix feat(assistant): make Hermes the brain, on local MLX weights 2026-09-09 13:31:28 -05:00
readme.md refactor(modules): relocate lib/modules/home out of the misleading "home" name 2026-07-17 10:01:13 -05:00
run-claude-sandbox.sh feat: add n8n 2025-11-20 21:15:27 -06:00