diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index d196c9e..2ccf445 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -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 diff --git a/Cargo.lock b/Cargo.lock index 441dae3..eac0657 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,7 +54,7 @@ dependencies = [ [[package]] name = "breadcrumbs" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap", "serde", diff --git a/Cargo.toml b/Cargo.toml index b48ab9c..ca37817 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/bakery.toml b/bakery.toml index d26fd8e..58d8b32 100644 --- a/bakery.toml +++ b/bakery.toml @@ -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", +] diff --git a/contrib/breadcrumbs.service b/contrib/breadcrumbs.service new file mode 100644 index 0000000..ef78976 --- /dev/null +++ b/contrib/breadcrumbs.service @@ -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