hypr: move session daemons from exec-once to systemd user services

Replace the hl.exec_cmd autostart block with declarative home-manager
services so the desktop shell has proper ordering and lifecycle:

- services.hyprpaper (with settings) for hyprpaper
- services.cliphist for the text/image clipboard watchers
- services.hyprpolkitagent for the polkit agent
- programs.quickshell.systemd for the quickshell shell
- a hand-written systemd.user.services.mako (home-manager has no unit)

All are tied to config.wayland.systemd.target (graphical-session.target),
which start-hyprland already activates. No UWSM required.
This commit is contained in:
2026-09-19 00:31:18 -07:00
parent 598a43eace
commit fb743d7353
4 changed files with 70 additions and 31 deletions

View File

@@ -18,6 +18,7 @@ in
./hyprlock.nix
./hypridle.nix
./quickshell.nix
./services.nix
];
home.packages = with pkgs; [
@@ -25,24 +26,32 @@ in
grim
slurp
wl-clipboard
cliphist
brightnessctl
jq
# Desktop Environment / Hyprland ecosystem
hyprpaper
hyprpolkitagent
];
# Build-time rendered wallpaper
xdg.dataFile."backgrounds/silicon-volt.png".source = wallpaper;
# hyprpaper: load the Silicon Volt wallpaper on every output
xdg.configFile."hypr/hyprpaper.conf".text = ''
preload = ${config.home.homeDirectory}/.local/share/backgrounds/silicon-volt.png
wallpaper = ,${config.home.homeDirectory}/.local/share/backgrounds/silicon-volt.png
splash = false
'';
# hyprpaper: load the Silicon Volt wallpaper on every output. The
# home-manager module writes hypr/hyprpaper.conf and runs the daemon as a
# systemd user service tied to the Wayland session.
services.hyprpaper = {
enable = true;
settings = {
splash = false;
preload = "${config.home.homeDirectory}/.local/share/backgrounds/silicon-volt.png";
wallpaper = [
{
monitor = "";
path = "${config.home.homeDirectory}/.local/share/backgrounds/silicon-volt.png";
}
];
};
};
# Notifications: flat brutalist-glass cards with volt accents
services.mako = {