Add systemd --user service for the watch daemon
All checks were successful
Mirror to GitHub / mirror (push) Successful in 1s
release / build (push) Successful in 37s
Build and publish package / package (push) Successful in 1m0s

breadcrumbs had a watch subcommand meant to run continuously but no
systemd unit anywhere, so bakery installs never actually started it -
Wi-Fi profile config in bos-settings had no daemon consuming it.
This commit is contained in:
Breadway 2026-07-03 17:56:06 +08:00
parent 3b6e37ecfe
commit 2418cb900c
5 changed files with 32 additions and 3 deletions

View file

@ -33,6 +33,7 @@ jobs:
> "${PKG_DIR}/breadcrumbs-x86_64.sha256"
cp src/breadcrumbs.example.toml "${PKG_DIR}/"
cp src/bakery.toml "${PKG_DIR}/bakery.toml"
cp src/contrib/breadcrumbs.service "${PKG_DIR}/"
ln -sfn "${VERSION}" "/srv/breadway-dl/breadcrumbs/latest"
- name: regenerate index.json

2
Cargo.lock generated
View file

@ -54,7 +54,7 @@ dependencies = [
[[package]]
name = "breadcrumbs"
version = "2.1.1"
version = "2.1.2"
dependencies = [
"clap",
"serde",

View file

@ -1,6 +1,6 @@
[package]
name = "breadcrumbs"
version = "2.1.1"
version = "2.1.2"
edition = "2021"
description = "Profile-aware Wi-Fi state machine with Tailscale handling and self-healing watch daemon"
license = "MIT"

View file

@ -9,5 +9,11 @@ bread_deps = []
dir = "~/.config/breadcrumbs"
example = "breadcrumbs.example.toml"
[[service]]
unit = "breadcrumbs.service"
enable = true
[install]
post_install = []
post_install = [
"systemctl --user is-active --quiet breadcrumbs || systemctl --user start breadcrumbs",
]

View file

@ -0,0 +1,22 @@
[Unit]
Description=breadcrumbs Wi-Fi state machine watcher
Documentation=https://git.breadway.dev/Breadway/breadcrumbs
After=network.target NetworkManager.service graphical-session.target
Wants=network.target graphical-session.target
[Service]
Type=simple
# ExecStart is rewritten at install time by bakery to point at the real
# bin_dir (patch_exec_start in bakery's install.rs) — this path is only a
# placeholder for local testing.
ExecStart=%h/.local/bin/breadcrumbs watch
Restart=always
RestartSec=5
Nice=5
# Forward stdout/stderr to the journal so `journalctl --user -u breadcrumbs` works
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=graphical-session.target