From 2c0dc16cecd7850a888cc924c99d7c690ac10db7 Mon Sep 17 00:00:00 2001 From: LaserEyess Date: Mon, 24 Aug 2026 09:08:51 -0400 Subject: [PATCH] build: add systemd services Three convenience services 1. Default configuration location 2. Default configuration path, with -c flag for modifying config location 3. Modified configuration path Co-Authored-By: Axel Forsman --- CMakeLists.txt | 8 ++++++++ assets/quickshell-path@.service.in | 13 +++++++++++++ assets/quickshell.service.in | 13 +++++++++++++ assets/quickshell@.service.in | 13 +++++++++++++ default.nix | 5 ++++- 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 assets/quickshell-path@.service.in create mode 100644 assets/quickshell.service.in create mode 100644 assets/quickshell@.service.in diff --git a/CMakeLists.txt b/CMakeLists.txt index dca78f7d..4fcc7bff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -177,3 +177,11 @@ install( DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps RENAME org.quickshell.svg ) + +foreach (SYSTEMD_FILE "quickshell.service" "quickshell@.service" "quickshell-path@.service") + configure_file(assets/${SYSTEMD_FILE}.in ${SYSTEMD_FILE}) + install( + FILES ${CMAKE_BINARY_DIR}/${SYSTEMD_FILE} + DESTINATION lib/systemd/user + ) +endforeach() diff --git a/assets/quickshell-path@.service.in b/assets/quickshell-path@.service.in new file mode 100644 index 00000000..65994251 --- /dev/null +++ b/assets/quickshell-path@.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Quickshell Desktop Shell for config path %i +PartOf=graphical-session.target +Requisite=graphical-session.target +After=graphical-session.target + +[Service] +ExecStart=@CMAKE_INSTALL_BINDIR@/quickshell -p %i +Slice=session.slice +Restart=on-failure + +[Install] +WantedBy=graphical-session.target diff --git a/assets/quickshell.service.in b/assets/quickshell.service.in new file mode 100644 index 00000000..93fc07ea --- /dev/null +++ b/assets/quickshell.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Quickshell Desktop Shell +PartOf=graphical-session.target +Requisite=graphical-session.target +After=graphical-session.target + +[Service] +ExecStart=@CMAKE_INSTALL_BINDIR@/quickshell +Slice=session.slice +Restart=on-failure + +[Install] +WantedBy=graphical-session.target diff --git a/assets/quickshell@.service.in b/assets/quickshell@.service.in new file mode 100644 index 00000000..25e65f94 --- /dev/null +++ b/assets/quickshell@.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Quickshell Desktop Shell for config %i +PartOf=graphical-session.target +Requisite=graphical-session.target +After=graphical-session.target + +[Service] +ExecStart=@CMAKE_INSTALL_BINDIR@/quickshell -c %i +Slice=session.slice +Restart=on-failure + +[Install] +WantedBy=graphical-session.target diff --git a/default.nix b/default.nix index c6c97a82..cfcb0b65 100644 --- a/default.nix +++ b/default.nix @@ -139,10 +139,13 @@ dontUnpack = true; dontConfigure = true; dontBuild = true; + dontMoveSystemdUserUnits = true; installPhase = '' mkdir -p $out - cp -r ${unwrapped}/* $out + cp -r ${unwrapped} $out + substituteInPlace $out/lib/systemd/user/quickshell*.service \ + --replace-fail ${unwrapped} $out ''; passthru = {