From 11e17c916868eeb74655d3beea39b11ad14f8ddf Mon Sep 17 00:00:00 2001 From: Arpit Sivakumar Date: Thu, 3 Sep 2026 18:59:37 +0530 Subject: [PATCH 1/5] feat: add staged deployment update notifier --- .../system/aurora-deployment-check.service | 8 ++ .../system/aurora-deployment-check.timer | 12 ++ .../aurora-deployment-check.conf | 2 + .../user/aurora-deployment-notifier.path | 10 ++ .../user/aurora-deployment-notifier.service | 11 ++ .../aurora-deployment-notifier.conf | 1 + .../usr/libexec/aurora-deployment-check | 113 ++++++++++++++++++ .../usr/libexec/aurora-deployment-notifier | 36 ++++++ .../usr/share/ublue-os/just/00-entry.just | 1 + .../just/60-aurora-deployment-notifier.just | 37 ++++++ 10 files changed, 231 insertions(+) create mode 100644 system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service create mode 100644 system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer create mode 100644 system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf create mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path create mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service create mode 100644 system_files/shared/usr/lib/tmpfiles.d/aurora-deployment-notifier.conf create mode 100755 system_files/shared/usr/libexec/aurora-deployment-check create mode 100755 system_files/shared/usr/libexec/aurora-deployment-notifier create mode 100644 system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service new file mode 100644 index 00000000..c810fc16 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service @@ -0,0 +1,8 @@ +[Unit] +Description=Check for staged Aurora deployments +Documentation=https://docs.getaurora.dev/ +After=uupd.service rpm-ostreed.service + +[Service] +Type=oneshot +ExecStart=/usr/libexec/aurora-deployment-check diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer new file mode 100644 index 00000000..2b581126 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer @@ -0,0 +1,12 @@ +[Unit] +Description=Periodically check for staged Aurora deployments + +[Timer] +OnBootSec=5min +OnUnitActiveSec=1h +AccuracySec=5min +Persistent=false +Unit=aurora-deployment-check.service + +[Install] +WantedBy=timers.target diff --git a/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf b/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf new file mode 100644 index 00000000..63131b28 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf @@ -0,0 +1,2 @@ +[Unit] +OnSuccess=aurora-deployment-check.service diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path new file mode 100644 index 00000000..03df6a0b --- /dev/null +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path @@ -0,0 +1,10 @@ +[Unit] +Description=Watch for staged Aurora deployment status +Documentation=https://docs.getaurora.dev/ + +[Path] +PathExists=/run/aurora/staged-ready +Unit=aurora-deployment-notifier.service + +[Install] +WantedBy=default.target diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service new file mode 100644 index 00000000..903b9f82 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service @@ -0,0 +1,11 @@ +[Unit] +Description=Notify when an Aurora deployment is ready to boot +Documentation=https://docs.getaurora.dev/ + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/libexec/aurora-deployment-notifier + +[Install] +WantedBy=default.target diff --git a/system_files/shared/usr/lib/tmpfiles.d/aurora-deployment-notifier.conf b/system_files/shared/usr/lib/tmpfiles.d/aurora-deployment-notifier.conf new file mode 100644 index 00000000..5fb98525 --- /dev/null +++ b/system_files/shared/usr/lib/tmpfiles.d/aurora-deployment-notifier.conf @@ -0,0 +1 @@ +d /run/aurora 0755 root root - diff --git a/system_files/shared/usr/libexec/aurora-deployment-check b/system_files/shared/usr/libexec/aurora-deployment-check new file mode 100755 index 00000000..53d71058 --- /dev/null +++ b/system_files/shared/usr/libexec/aurora-deployment-check @@ -0,0 +1,113 @@ +#!/usr/bin/env bash + +set -euo pipefail + +STATUS_DIR="${AURORA_DEPLOYMENT_STATUS_DIR:-/run/aurora}" +FLAG_FILE="${STATUS_DIR}/staged-ready" +STATUS_FILE="${STATUS_DIR}/deployment-status.json" + +SOURCE="" +STAGED_ID="" +BOOTED_ID="" + +write_status() { + local tmpfile + tmpfile="$(mktemp "${STATUS_DIR}/deployment-status.XXXXXX")" + + jq -n \ + --arg source "${SOURCE}" \ + --arg staged_id "${STAGED_ID}" \ + --arg booted_id "${BOOTED_ID}" \ + --arg created_at "$(date --iso-8601=seconds)" \ + '{ + ready: true, + source: $source, + staged_id: $staged_id, + booted_id: $booted_id, + created_at: $created_at + }' > "${tmpfile}" + + chmod 0644 "${tmpfile}" + mv -f "${tmpfile}" "${STATUS_FILE}" + printf 'ready\n' > "${FLAG_FILE}" + chmod 0644 "${FLAG_FILE}" +} + +clear_status() { + rm -f "${FLAG_FILE}" "${STATUS_FILE}" +} + +check_bootc() { + local bootc_json + local staged_id + local booted_id + + command -v bootc >/dev/null 2>&1 || return 1 + bootc_json="$(bootc status --json 2>/dev/null)" || return 1 + + staged_id="$(jq -er ' + .status as $status + | select($status.staged != null and $status.staged != {}) + | ( + $status.staged.image.imageDigest + // $status.staged.image.digest + // $status.staged.ostree.checksum + // $status.staged.checksum + // ($status.staged | tostring) + ) + ' <<< "${bootc_json}" 2>/dev/null)" || return 1 + + booted_id="$(jq -r ' + .status.booted.image.imageDigest + // .status.booted.image.digest + // .status.booted.ostree.checksum + // .status.booted.checksum + // empty + ' <<< "${bootc_json}" 2>/dev/null)" + + if [[ -n "${staged_id}" && "${staged_id}" != "${booted_id}" ]]; then + SOURCE="bootc" + STAGED_ID="${staged_id}" + BOOTED_ID="${booted_id}" + return 0 + fi + + return 1 +} + +check_rpm_ostree() { + local ostree_json + local staged_json + local staged_id + local booted_id + + command -v rpm-ostree >/dev/null 2>&1 || return 1 + ostree_json="$(rpm-ostree status --json 2>/dev/null)" || return 1 + + staged_json="$(jq -ec '[.deployments[]? | select(.staged == true)] | first // empty' <<< "${ostree_json}" 2>/dev/null)" || return 1 + [[ -n "${staged_json}" ]] || return 1 + + staged_id="$(jq -r '.checksum // .version // .origin // tostring' <<< "${staged_json}" 2>/dev/null)" + booted_id="$(jq -r '[.deployments[]? | select(.booted == true)] | first | .checksum // .version // .origin // empty' <<< "${ostree_json}" 2>/dev/null)" + + if [[ -n "${staged_id}" && "${staged_id}" != "${booted_id}" ]]; then + SOURCE="rpm-ostree" + STAGED_ID="${staged_id}" + BOOTED_ID="${booted_id}" + return 0 + fi + + return 1 +} + +main() { + install -d -m 0755 -o root -g root "${STATUS_DIR}" + + if check_bootc || check_rpm_ostree; then + write_status + else + clear_status + fi +} + +main "$@" diff --git a/system_files/shared/usr/libexec/aurora-deployment-notifier b/system_files/shared/usr/libexec/aurora-deployment-notifier new file mode 100755 index 00000000..4147a9c1 --- /dev/null +++ b/system_files/shared/usr/libexec/aurora-deployment-notifier @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail + +STATUS_DIR="${AURORA_DEPLOYMENT_STATUS_DIR:-/run/aurora}" +FLAG_FILE="${STATUS_DIR}/staged-ready" +STATUS_FILE="${STATUS_DIR}/deployment-status.json" +STATE_DIR="${XDG_STATE_HOME:-${HOME}/.local/state}/aurora/deployment-notifier" +LAST_NOTIFIED_FILE="${STATE_DIR}/last-notified" + +[[ -f "${FLAG_FILE}" ]] || exit 0 +command -v notify-send >/dev/null 2>&1 || exit 0 + +staged_id="" +if [[ -f "${STATUS_FILE}" ]] && command -v jq >/dev/null 2>&1; then + staged_id="$(jq -r '.staged_id // empty' "${STATUS_FILE}" 2>/dev/null || true)" +fi + +if [[ -z "${staged_id}" ]]; then + staged_id="$(sha256sum "${FLAG_FILE}" | cut -d ' ' -f 1)" +fi + +mkdir -p "${STATE_DIR}" + +if [[ -f "${LAST_NOTIFIED_FILE}" ]] && [[ "$(<"${LAST_NOTIFIED_FILE}")" == "${staged_id}" ]]; then + exit 0 +fi + +notify-send \ + --app-name="Aurora" \ + --icon="system-software-update" \ + --urgency=normal \ + "System update ready" \ + "Restart your device to finish applying the staged Aurora update." + +printf '%s\n' "${staged_id}" > "${LAST_NOTIFIED_FILE}" diff --git a/system_files/shared/usr/share/ublue-os/just/00-entry.just b/system_files/shared/usr/share/ublue-os/just/00-entry.just index e5a321c4..3740a5fc 100644 --- a/system_files/shared/usr/share/ublue-os/just/00-entry.just +++ b/system_files/shared/usr/share/ublue-os/just/00-entry.just @@ -13,4 +13,5 @@ import "/usr/share/ublue-os/just/apps.just" import "/usr/share/ublue-os/just/default.just" import "/usr/share/ublue-os/just/shared.just" import "/usr/share/ublue-os/just/update.just" +import "/usr/share/ublue-os/just/60-aurora-deployment-notifier.just" import? "/usr/share/ublue-os/just/60-custom.just" diff --git a/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just b/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just new file mode 100644 index 00000000..444f8e68 --- /dev/null +++ b/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just @@ -0,0 +1,37 @@ +# Toggle Aurora staged deployment desktop notifications. + +[group('Aurora')] +aurora-update-notifier action="status": + #!/usr/bin/env bash + set -euo pipefail + + action="{{ action }}" + system_timer="aurora-deployment-check.timer" + system_service="aurora-deployment-check.service" + user_path="aurora-deployment-notifier.path" + + case "${action}" in + enable|on) + systemctl --user enable --now "${user_path}" + sudo systemctl enable --now "${system_timer}" + sudo systemctl start "${system_service}" || true + echo "Aurora update notifications enabled." + ;; + disable|off) + systemctl --user disable --now "${user_path}" || true + sudo systemctl disable --now "${system_timer}" || true + rm -f "${XDG_STATE_HOME:-${HOME}/.local/state}/aurora/deployment-notifier/last-notified" + echo "Aurora update notifications disabled." + ;; + status) + echo "User notifier:" + systemctl --user --no-pager status "${user_path}" || true + echo + echo "System checker:" + systemctl --no-pager status "${system_timer}" || true + ;; + *) + echo "Usage: ujust aurora-update-notifier [enable|disable|status]" + exit 2 + ;; + esac From ea9317f5fce068e16c688b30123563561ecf8e8d Mon Sep 17 00:00:00 2001 From: Arpit Sivakumar Date: Thu, 1 Oct 2026 16:38:47 +0530 Subject: [PATCH 2/5] refactor(notifier): always-on system checks, retriggerable user service The system units only write a world-readable status file under /run/aurora (digests, no secrets), so there is no per-user state on the root side to warrant opt-in. Enable them via a systemd preset instead, making them image plumbing like uupd itself. Notifications remain off by default because nothing consumes the flag until a user enables the .path unit. Drop RemainAfterExit from the user service: it latched per session, so a second staged deployment within one login could never re-notify, since systemd will not re-run an already-active unit. The script's last-notified file already dedups per deployment id, so a plain retriggerable oneshot is safe: same id exits silently, new id notifies once. Also remove the [Install] section - only the .path unit should reference it. Add After=graphical-session.target so the .path unit cannot fire before the session bus exists; a failed notify-send leaves the dedup file unwritten so the next trigger retries instead of losing the notification. --- .../lib/systemd/system-preset/85-aurora-deployment.preset | 1 + .../usr/lib/systemd/user/aurora-deployment-notifier.service | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 system_files/shared/usr/lib/systemd/system-preset/85-aurora-deployment.preset diff --git a/system_files/shared/usr/lib/systemd/system-preset/85-aurora-deployment.preset b/system_files/shared/usr/lib/systemd/system-preset/85-aurora-deployment.preset new file mode 100644 index 00000000..3c5f6e05 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system-preset/85-aurora-deployment.preset @@ -0,0 +1 @@ +enable aurora-deployment-check.timer diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service index 903b9f82..3cab3464 100644 --- a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service @@ -1,11 +1,8 @@ [Unit] Description=Notify when an Aurora deployment is ready to boot Documentation=https://docs.getaurora.dev/ +After=graphical-session.target [Service] Type=oneshot -RemainAfterExit=yes ExecStart=/usr/libexec/aurora-deployment-notifier - -[Install] -WantedBy=default.target From 376d3ea506bcd3b132b5562b553f6228e279108a Mon Sep 17 00:00:00 2001 From: Arpit Sivakumar Date: Thu, 1 Oct 2026 16:38:47 +0530 Subject: [PATCH 3/5] refactor(ujust): single gum entrypoint for the update notifier Follow the repo convention (toggle-updates): one entrypoint with a gum choose menu, with the ACTION argument still honored for users who want ujust aurora-update-notifier enable directly. Now that the system units are enabled via preset, the recipe no longer needs to juggle two scopes with sudo - it toggles exactly one --user unit (the .path). The .path unit's activation-time PathExists check means enabling while a deployment is already staged still notifies immediately, without starting the check service manually. Disable also removes the last-notified state so re-enabling deliberately re-asks. Co-authored-by: renner <80410025+renner0e@users.noreply.github.com> --- .../just/60-aurora-deployment-notifier.just | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just b/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just index 444f8e68..4f243070 100644 --- a/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just +++ b/system_files/shared/usr/share/ublue-os/just/60-aurora-deployment-notifier.just @@ -1,34 +1,43 @@ # Toggle Aurora staged deployment desktop notifications. - [group('Aurora')] -aurora-update-notifier action="status": +aurora-update-notifier ACTION="prompt": #!/usr/bin/env bash set -euo pipefail - action="{{ action }}" - system_timer="aurora-deployment-check.timer" - system_service="aurora-deployment-check.service" + action="{{ ACTION }}" user_path="aurora-deployment-notifier.path" + current="disabled" + if [[ "$(systemctl --user is-enabled "${user_path}" 2>/dev/null || true)" == "enabled" ]]; then + current="enabled" + fi + echo "Aurora update notifications are currently ${current}." + + if [[ "${action}" == "prompt" ]]; then + action="$(gum choose --header="Toggle Aurora update notifications?" "Enable" "Disable" "Status" "Cancel")" + if [[ "${action}" == "Cancel" || -z "${action}" ]]; then + exit 0 + fi + fi + case "${action}" in - enable|on) + [Ee]nable|on) systemctl --user enable --now "${user_path}" - sudo systemctl enable --now "${system_timer}" - sudo systemctl start "${system_service}" || true echo "Aurora update notifications enabled." + echo "You will be notified when a staged update is ready, until you reboot into it." ;; - disable|off) + [Dd]isable|off) systemctl --user disable --now "${user_path}" || true - sudo systemctl disable --now "${system_timer}" || true rm -f "${XDG_STATE_HOME:-${HOME}/.local/state}/aurora/deployment-notifier/last-notified" echo "Aurora update notifications disabled." ;; - status) - echo "User notifier:" + [Ss]tatus) systemctl --user --no-pager status "${user_path}" || true - echo - echo "System checker:" - systemctl --no-pager status "${system_timer}" || true + if [[ -f /run/aurora/deployment-status.json ]] && command -v jq >/dev/null 2>&1; then + jq -r '"Staged deployment ready: \(.staged_id) (via \(.source))"' /run/aurora/deployment-status.json + else + echo "No staged deployment pending." + fi ;; *) echo "Usage: ujust aurora-update-notifier [enable|disable|status]" From 36faa32bd9ce8e8c1327eb2fbabbfef301bbe723 Mon Sep 17 00:00:00 2001 From: Arpit Sivakumar Date: Sun, 4 Oct 2026 21:58:44 +0530 Subject: [PATCH 4/5] refactor(notifier): dedupe check/notifier services into aurora-deployment@.service template Replace the separate system check and user notifier service units with identical aurora-deployment@.service templates instantiated as aurora-deployment@check.service (system) and aurora-deployment@notifier.service (user), with instance-specific drop-ins carrying each manager's ordering dependencies. --- .../lib/systemd/system/aurora-deployment-check.service | 8 -------- .../usr/lib/systemd/system/aurora-deployment-check.timer | 2 +- .../usr/lib/systemd/system/aurora-deployment@.service | 7 +++++++ .../aurora-deployment@check.service.d/dependencies.conf | 2 ++ .../system/uupd.service.d/aurora-deployment-check.conf | 2 +- .../usr/lib/systemd/user/aurora-deployment-notifier.path | 2 +- .../lib/systemd/user/aurora-deployment-notifier.service | 8 -------- .../usr/lib/systemd/user/aurora-deployment@.service | 7 +++++++ .../dependencies.conf | 2 ++ 9 files changed, 21 insertions(+), 19 deletions(-) delete mode 100644 system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service create mode 100644 system_files/shared/usr/lib/systemd/system/aurora-deployment@.service create mode 100644 system_files/shared/usr/lib/systemd/system/aurora-deployment@check.service.d/dependencies.conf delete mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service create mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment@.service create mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/dependencies.conf diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service deleted file mode 100644 index c810fc16..00000000 --- a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Check for staged Aurora deployments -Documentation=https://docs.getaurora.dev/ -After=uupd.service rpm-ostreed.service - -[Service] -Type=oneshot -ExecStart=/usr/libexec/aurora-deployment-check diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer index 2b581126..25b0c3b6 100644 --- a/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer +++ b/system_files/shared/usr/lib/systemd/system/aurora-deployment-check.timer @@ -6,7 +6,7 @@ OnBootSec=5min OnUnitActiveSec=1h AccuracySec=5min Persistent=false -Unit=aurora-deployment-check.service +Unit=aurora-deployment@check.service [Install] WantedBy=timers.target diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment@.service b/system_files/shared/usr/lib/systemd/system/aurora-deployment@.service new file mode 100644 index 00000000..891d612e --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system/aurora-deployment@.service @@ -0,0 +1,7 @@ +[Unit] +Description=Aurora staged deployment %i +Documentation=https://docs.getaurora.dev/ + +[Service] +Type=oneshot +ExecStart=/usr/libexec/aurora-deployment-%i diff --git a/system_files/shared/usr/lib/systemd/system/aurora-deployment@check.service.d/dependencies.conf b/system_files/shared/usr/lib/systemd/system/aurora-deployment@check.service.d/dependencies.conf new file mode 100644 index 00000000..4c714973 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/system/aurora-deployment@check.service.d/dependencies.conf @@ -0,0 +1,2 @@ +[Unit] +After=uupd.service rpm-ostreed.service diff --git a/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf b/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf index 63131b28..91b00d36 100644 --- a/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf +++ b/system_files/shared/usr/lib/systemd/system/uupd.service.d/aurora-deployment-check.conf @@ -1,2 +1,2 @@ [Unit] -OnSuccess=aurora-deployment-check.service +OnSuccess=aurora-deployment@check.service diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path index 03df6a0b..4965eb32 100644 --- a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.path @@ -4,7 +4,7 @@ Documentation=https://docs.getaurora.dev/ [Path] PathExists=/run/aurora/staged-ready -Unit=aurora-deployment-notifier.service +Unit=aurora-deployment@notifier.service [Install] WantedBy=default.target diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service b/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service deleted file mode 100644 index 3cab3464..00000000 --- a/system_files/shared/usr/lib/systemd/user/aurora-deployment-notifier.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Notify when an Aurora deployment is ready to boot -Documentation=https://docs.getaurora.dev/ -After=graphical-session.target - -[Service] -Type=oneshot -ExecStart=/usr/libexec/aurora-deployment-notifier diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment@.service b/system_files/shared/usr/lib/systemd/user/aurora-deployment@.service new file mode 100644 index 00000000..891d612e --- /dev/null +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment@.service @@ -0,0 +1,7 @@ +[Unit] +Description=Aurora staged deployment %i +Documentation=https://docs.getaurora.dev/ + +[Service] +Type=oneshot +ExecStart=/usr/libexec/aurora-deployment-%i diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/dependencies.conf b/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/dependencies.conf new file mode 100644 index 00000000..ca8b3c14 --- /dev/null +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/dependencies.conf @@ -0,0 +1,2 @@ +[Unit] +After=graphical-session.target From 6d3c2c7fe398ecd17a12d196ef839852a583382c Mon Sep 17 00:00:00 2001 From: Arpit Sivakumar Date: Mon, 5 Oct 2026 12:11:49 +0530 Subject: [PATCH 5/5] fix(notifier): readd RemainAfterExit to the notifier service PathExists units re-check conditions when the triggered unit deactivates, so the persistent staged-ready flag caused a start loop bounded only by rate limiting. Keep the notifier service active (exited) after notifying; a new staged_id in a fresh session still re-notifies via the dedup check. --- .../user/aurora-deployment@notifier.service.d/lifetime.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/lifetime.conf diff --git a/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/lifetime.conf b/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/lifetime.conf new file mode 100644 index 00000000..75039e3a --- /dev/null +++ b/system_files/shared/usr/lib/systemd/user/aurora-deployment@notifier.service.d/lifetime.conf @@ -0,0 +1,2 @@ +[Service] +RemainAfterExit=yes