# The client-triggered package update, as a root oneshot (planning: # host-update-from-web-console.md §7). Started — never enabled — by the unprivileged client via # `systemctl start punktfunk-client-update.service` (which is what `punktfunk-client # --apply-update`, and so the Decky plugin's one-tap update, runs), authorised by the polkit # rule (49-punktfunk-client-update.rules) for members of the `punktfunk-update` group. systemd # gives us single-flight (a second start while active fails) and journal capture for free; the # helper writes its machine-readable outcome to /var/lib/punktfunk/client-update-result.json. # # This is a SEPARATE unit from punktfunk-update.service, not a duplicate of it: the client and # the host are separate packages, and no packaging format we ship lets two packages own one # path. A client-only box — a Steam Deck, a handheld — must be able to install this without # pulling in the host. [Unit] Description=punktfunk client update (root helper) # Network is a hard prerequisite for every leg (package manager). Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/libexec/punktfunk/pf-update apply-client # The helper drives the distro package manager, which needs the real system — no sandboxing # directives here on purpose; the constraint is the FIXED ExecStart (no parameters exist).