feat(desktop): add the desktop group and Hyprland session (task 0021) #13
Reference in New Issue
Block a user
Delete Branch "task-0021-desktop-group-and-hyprland-session"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task:
.claude/tasks/0021-desktop-group-and-hyprland-session.mdSummary
The tracer bullet for the whole desktop: a keyboard-driven Hyprland session neogaia can log into and open a terminal in.
Adds the
modules/desktop/group behind a singlemodules.desktop.enableaggregator that hand-lists and turns on each piece at default priority, so a host enables the whole desktop with one flag yet can still override any single piece.hyprland/hyprland.nix— the compositor, in a subdirectory of the group. Sourced from nixpkgs, withprograms.hyprland(withUWSM) owning the session, portals, and polkit while home-manager writes the config against that one package (package = null). Ported hjkl keybinds (focus, window move, resize, workspaces 1–9, terminal, floating, fullscreen, split, close, force-kill), input tuning (US layout, Caps→Escape, snappy repeat, touchpad taps + natural scroll + disable-while-typing, flat mouse accel), subtle animations with modest rounding and small gaps, andbluras a host-overridable knob (off here).login.nix— greetd + tuigreet text login, launching the session through uwsm.terminal.nix— Ghostty, opened onSuper+Return.modules.desktop; builds green under the flake check.This branch is cherry-picked off
main; it also carries adocs:commit adding the spec, ADR 0003 (compositor choice), and the task breakdown (0021–0030).Deviations
configTypeto"lua"at stateVersion ≥ 26.05, which serialises$modvariables andbind=strings into invalid Lua without failing the build. Pinned toconfigType = "hyprlang"; recorded as aCLAUDE.mdgotcha.bindm) removed as outside the enumerated keyboard bindings. Hardware media/brightness keys deferred, as they depend on audio and backlight tooling not yet in scope.Review
Overall: MEDIUM
nix flake checkgates build/eval, but a graphical session cannot be exercised headless.Standards / Spec findings left unaddressed: none. Every Standards finding (three semicolons-in-comments, multi-line/alternative-justifying file headers, cross-file narration, and the out-of-scope
bindmbinds) was fixed in the diff. The Spec axis reported the implementation fully faithful.— Claude