feat(services): run quickshell as a user service

Mirrors the unit moonarch now ships. spawn-at-startup never restarted it, so a
crash cost the bar for the rest of the session.
This commit is contained in:
nevaforget committed 2026-08-31 12:55:16 +02:00
1 parent e14b1d3659
commit b81f7ca7f2
2 files changed
+19 -4

No files matched your search

Generated
+4 -4
View File
@@ -24,11 +24,11 @@
"moonarch": { "moonarch": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1788173356, "lastModified": 1788173707,
"narHash": "sha256-SbTfjyMc5qBhatIJGPdpwqGB/1m3TV+asCM3anVl+ak=", "narHash": "sha256-ukAWqcRbT696x3qeDTKUdAKcdOdhv8dBS9V4kS02mtI=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "e5eb946f66ccfc2ff8566cbe8de1e7974aa8c4d3", "rev": "56eae1d81d34ad1cb6b80f69056a735d445809b5",
"revCount": 172, "revCount": 173,
"type": "git", "type": "git",
"url": "https://gitea.moonarch.de/nevaforget/moonarch.git" "url": "https://gitea.moonarch.de/nevaforget/moonarch.git"
}, },
+15
View File
@@ -96,6 +96,21 @@
}; };
}; };
# The bar, launcher and every popout. A unit rather than a spawn-at-startup so
# a crash does not leave the session without a bar until the next login.
systemd.user.services.quickshell = {
description = "Quickshell bar and shell";
partOf = [ "graphical-session.target" ];
after = [ "graphical-session.target" ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${lib.getExe pkgs.quickshell} -c moonarch";
Restart = "on-failure";
RestartSec = 3;
};
};
# nixpkgs ships the package but no module, and the package carries no unit of # nixpkgs ships the package but no module, and the package carries no unit of
# its own, so it is declared here. Mirrors /usr/lib/systemd/user/stasis.service. # its own, so it is declared here. Mirrors /usr/lib/systemd/user/stasis.service.
systemd.user.services.stasis = { systemd.user.services.stasis = {