| 1 |
# How Bento releases magicmirror. Lives here rather than in the daemon's config |
| 2 |
# so it is versioned with the code it describes. |
| 3 |
# |
| 4 |
# A service, not an app or a library: magicmirror is run rather than distributed. |
| 5 |
# There is no bundle for a user to download and no crate to publish. |
| 6 |
# |
| 7 |
# WHY THIS FILE EXISTS. astra's copy was a binary somebody had placed at |
| 8 |
# ~/.local/bin/magicmirror by hand, with no release history, no rollback and no |
| 9 |
# way to ask it what it was -- the only handle was the file's mtime. It was the |
| 10 |
# least stale of the three services on that host in that state, which is not the |
| 11 |
# same as being watched. Infra `e6acf532`. |
| 12 |
kind = "service" |
| 13 |
|
| 14 |
# aarch64 only. This runs on exactly one machine: it is drawn onto astra's tty1 |
| 15 |
# as an always-on wall panel, and there is no second instance anywhere. |
| 16 |
targets = ["linux/aarch64"] |
| 17 |
|
| 18 |
version_path = "Cargo.toml" |
| 19 |
|
| 20 |
# MNW is one .git over several separately-versioned products, so the default |
| 21 |
# `v{version}` names no product in particular here. |
| 22 |
tag_format = "magicmirror-v{version}" |
| 23 |
|
| 24 |
# One target, so inert either way. Stated rather than omitted so the answer does |
| 25 |
# not have to be reasoned out if a second is ever added. |
| 26 |
require_all_targets = true |
| 27 |
|
| 28 |
# CEREMONY, and this is the cheapest rung on purpose. A bad deploy here costs a |
| 29 |
# monitoring panel on a console going blank. Nobody's money, nobody's morning, |
| 30 |
# and no data. So it installs itself through Bento the way wam does rather than |
| 31 |
# paying for Sando's tiers, and the rollback is the installer's `<dst>.prev`. |
| 32 |
# See wiki `deploy-ceremony-tiers`. |
| 33 |
# |
| 34 |
# install_path is /usr/local/bin/magicmirror, which is a MOVE: the running |
| 35 |
# binary was at ~/.local/bin/magicmirror. install-service.sh refuses any dst |
| 36 |
# outside /usr/local/bin, and that guard is the only thing bounding a NOPASSWD |
| 37 |
# sudo grant, so the binary moves rather than the guard widening -- the same |
| 38 |
# call wam made on 2026-08-15. The unit's ExecStart moves with it. |
| 39 |
# |
| 40 |
# No `health_url`: this is a TUI drawn on a console, not a server, so there is |
| 41 |
# no port to probe and no status code to read. The recipe asserts the unit is |
| 42 |
# active, which is the whole of what "up" means for this one. |
| 43 |
[[deploy]] |
| 44 |
target = "linux/aarch64" |
| 45 |
host = "astra" |
| 46 |
install_path = "/usr/local/bin/magicmirror" |
| 47 |
service = "magicmirror-panel.service" |
| 48 |
|