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

37
home/hypr/services.nix Normal file
View File

@@ -0,0 +1,37 @@
{
config,
pkgs,
...
}:
let
# The Wayland session target used by the home-manager Wayland modules
# (resolves to graphical-session.target). start-hyprland activates it.
sessionTarget = config.wayland.systemd.target;
in
{
# PolicyKit agent (replaces the old hl.exec_cmd autostart).
services.hyprpolkitagent.enable = true;
# Clipboard history. The module runs both the text and image watchers as
# systemd user services and adds the cliphist package.
services.cliphist.enable = true;
# mako has no systemd service in home-manager, so declare one here.
# Configuration lives next to the rest of the desktop theme in default.nix.
systemd.user.services.mako = {
Unit = {
Description = "mako notification daemon";
After = [ sessionTarget ];
PartOf = [ sessionTarget ];
};
Service = {
ExecStart = "${pkgs.mako}/bin/mako";
Restart = "always";
RestartSec = 2;
};
Install.WantedBy = [ sessionTarget ];
};
}