From: Anderson A. Giacomolli Date: Mon, 9 Nov 2026 02:03:01 +0000 (-0300) Subject: Shorten user service updates X-Git-Url: http://git.giacomolli.uk/onechat/commitdiff_plain/49566fe4e40a18434320829c5cb6a6eff1b4ec78?ds=sidebyside Shorten user service updates The user unit links through result-service, so each build replaces its package without another unit link. The update command builds with that out-link, reloads the user manager, and uses try-restart to restart only an active service. A stopped service stays stopped. The README gives the first link and the two update commands. The checks include shell lint for the update script. Issue: 99a5e07 --- diff --git a/README.rst b/README.rst index 5f4266a..09e048c 100644 --- a/README.rst +++ b/README.rst @@ -146,7 +146,7 @@ does not collect the package while the service uses it: .. code:: console nix build --out-link result-service - systemctl --user link --force "$(realpath result-service/share/systemd/user/onechat.service)" + systemctl --user link --force "$PWD/result-service/share/systemd/user/onechat.service" systemctl --user edit onechat.service In the editor, set the data directory with this drop-in. Replace @@ -195,15 +195,16 @@ the service: ONECHAT_DIR=DATA_DIR ./result-service/bin/onechat chat journalctl --user -u onechat.service -f -After ``git pull``, build with the same result link, link the unit -again, reload the user manager, and restart the service: +After a pull, update the package and unit with: .. code:: console - nix build --out-link result-service - systemctl --user link --force "$(realpath result-service/share/systemd/user/onechat.service)" - systemctl --user daemon-reload - systemctl --user restart onechat.service + git pull + bin/service-update + +The script builds with the same ``result-service`` link, reloads the +user manager, and restarts the service only if it is active. The unit +link follows ``result-service``, so no new link is needed. The service starts with the user manager at login, not at boot without a login. To stop it, or also remove its start at login: diff --git a/bin/check b/bin/check index 3bca026..4bd9b5c 100755 --- a/bin/check +++ b/bin/check @@ -19,4 +19,4 @@ go test -race -short ./... files '*.nix' | xargs nixfmt --check files '*.rst' | xargs rstfmt --check files '*.md' | xargs mdformat --check -shellcheck bin/check bin/format bin/reflow .githooks/commit-msg +shellcheck bin/check bin/format bin/reflow bin/service-update .githooks/commit-msg diff --git a/bin/service-update b/bin/service-update new file mode 100755 index 0000000..04e4c4e --- /dev/null +++ b/bin/service-update @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +nix build --out-link result-service +systemctl --user daemon-reload +systemctl --user try-restart onechat.service