feat(noctalia): upgrade to the native v5 shell

Noctalia v5 is the native C++/Wayland rewrite; the Quickshell-based v4 line (pkgs.noctalia-shell) is EOL and its JSON config is not migrated upstream.

- use the upstream home-manager programs.noctalia module (present at our pinned HM revision) instead of the hand-rolled package + symlink module: it installs pkgs.noctalia, validates config.toml at build time via checkConfig, and supports customPalettes; drop the v4 Qt/Qt6ct session setup
- replace the v4 settings.json/plugins.json with a minimal shared config.toml (font, Catppuccin shell palette, templates off, screenshot annotation, accessibility/bar scale, night light, wallpaper, location/weather); host-specific bits live in per-host files (shoukei's eDP-1 backlight in noctalia/host-shoukei.toml), which merge after config.toml. Application theming stays with catppuccin/nix
- treat config.toml as the single source of truth: do NOT persist ~/.local/state/noctalia and set setup_wizard_enabled = false, so UI tweaks are promoted back into the repo instead of accumulating in app-owned state
- port niri keybinds to 'noctalia msg ...', update spawn-at-startup and the backdrop layer namespace, fix the broken 'octalia-shell' media-previous bind, and replace the grim/slurp/satty screenshot stack with Noctalia's native region/fullscreen/annotate commands (drop the unused packages)
- drop the now-redundant swaybg and swaylock (Noctalia owns the wallpaper and lock screen, the latter authenticating against the PAM 'login' service) and its PAM entry; keep wlogout as an emergency fallback
- update hypridle's lock commands and the matching eval test
- refresh the noctalia docs
This commit is contained in:
Ryan Yin committed 2026-09-19 15:07:54 +08:00
1 parent 2dff4f062b
commit 001d180b22
19 files changed
+157 -843

No files matched your search

@@ -16,7 +16,7 @@ lib.genAttrs hosts (
listeners = hm.services.hypridle.settings.listener;
findByAction = action: lib.findFirst (l: (l."on-timeout" or "") == action) { } listeners;
screenOff = findByAction "niri msg action power-off-monitors";
lock = findByAction "noctalia-shell ipc call lockScreen lock";
lock = findByAction "noctalia msg session lock";
in
{
homeDirectory = hm.home.homeDirectory;