Skip to main content

max / makenotwork

3.3 KB · 88 lines History Blame Raw
1 # Bento build topology: the native build hosts and the apps they ship.
2 # Install at ~/.config/bento/bento.toml (path set by `topology_path` in
3 # bento-daemon.toml). Paths under `repo` are tilde-expanded by the engine; the
4 # daemon-local paths in bento-daemon.toml are NOT — use absolute paths there.
5 #
6 # House rule: no cross-compilation. A target builds only on a host whose row
7 # lists it (topology::host_for); validate() rejects an app target no host
8 # declares, and a host with targets that doesn't grant `build`.
9
10 [[host]]
11 name = "fw13"
12 ssh = "fw13" # tailnet alias; the daemon's own host (local)
13 targets = ["linux/x86_64"]
14
15 [[host]]
16 name = "astra"
17 ssh = "astra"
18 targets = ["linux/aarch64"]
19
20 [[host]]
21 name = "mbp"
22 ssh = "mbp"
23 targets = ["macos/aarch64", "ios/universal"]
24 transport = "agent" # in-session ops-agent — required to codesign
25 agent_url = "http://mbp:8765" # tailnet addr of the Mac's ops-agent
26 actuate = ["build", "sign", "notarize", "staple"]
27 observe = ["build-log", "gatekeeper"]
28
29 [[host]]
30 name = "windows-x86"
31 ssh = "me@windows-x86"
32 targets = ["windows/x86_64"]
33 # transport defaults to "ssh"; actuate defaults to ["build", "package"]
34
35 [app.goingson]
36 repo = "~/Code/Apps/goingson"
37 [app.balanced_breakfast]
38 repo = "~/Code/Apps/balanced_breakfast"
39 [app.audiofiles]
40 repo = "~/Code/Apps/audiofiles"
41
42 # Library crates published to crates.io. Same two-file split as the apps: the
43 # pointer lives here, `kind = "library"` and the rest in each repo's bento.toml.
44 #
45 # crates.io credentials are NOT configured here. The token lives in cargo's own
46 # 0600 store (~/.cargo/credentials.toml) on whichever host publishes, set once
47 # with `cargo login`. Bento only checks it is present, during preflight, so a
48 # missing token fails in seconds rather than at the irreversible upload. Passing
49 # it through a recipe would put it in the process list on the build host.
50
51 [app.makeover]
52 repo = "~/Code/Libraries/makeover"
53
54 [app.pter]
55 repo = "~/Code/Libraries/pter"
56
57 [app.everycycle]
58 repo = "~/Code/Libraries/everycycle"
59
60 [app.supernote-push]
61 repo = "~/Code/Libraries/supernote-push"
62
63 [app.alloy_tui]
64 repo = "~/Code/Libraries/alloy_tui"
65
66 # Services: binaries Bento installs onto the hosts that run them, rather than
67 # distributing to users. Same two-file split again — the pointer lives here, and
68 # `kind = "service"` plus the `[[deploy]]` table (which target lands on which
69 # machine, at which path, restarting which unit) lives in the repo's bento.toml.
70 #
71 # A deploy destination is deliberately NOT a `[[host]]` above. Build hosts and
72 # service hosts are different grants: a build host gets `build`/`package`, a
73 # service host gets `deploy`/`restart` and never `build`, so a recipe cannot turn
74 # a production box into a build host. Its executor is constructed per run from
75 # the app's own manifest and exists only for that run.
76 #
77 # Each service host needs the privileged installer and its scoped sudoers line
78 # installed once. See pom/deploy/install-service.sh and bento-deploy.sudoers.
79 #
80 # pom also sets `tag_format = "pom-v{version}"` in its own bento.toml. MNW is one
81 # .git over several separately-versioned products, so the default `v{version}`
82 # names none of them in particular -- and pom and multithreaded are both at
83 # 0.4.1, so a bare tag is ambiguous immediately. A repo holding one product needs
84 # nothing here.
85
86 [app.pom]
87 repo = "~/Code/MNW/pom"
88