Skip to main content

max / makenotwork

3.9 KB · 96 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 # `repo` is where the checkout lives on every host that does not say otherwise.
36 # `repo_by_host` overrides it for one host, which is how a Windows checkout at a
37 # Windows path stays addressable: without it a recipe has to hard-code the path,
38 # and a hard-coded path cannot use repo() or checkout_sha(). Keys must name a
39 # declared [[host]].
40 [app.goingson]
41 repo = "~/Code/Apps/goingson"
42 repo_by_host = { windows-x86 = "C:/Users/me/Code/Apps/goingson" }
43 [app.balanced_breakfast]
44 repo = "~/Code/Apps/balanced_breakfast"
45 repo_by_host = { windows-x86 = "C:/Users/me/Code/Apps/balanced_breakfast" }
46 [app.audiofiles]
47 repo = "~/Code/Apps/audiofiles"
48 repo_by_host = { windows-x86 = "C:/Users/me/Code/Apps/audiofiles" }
49
50 # Library crates published to crates.io. Same two-file split as the apps: the
51 # pointer lives here, `kind = "library"` and the rest in each repo's bento.toml.
52 #
53 # crates.io credentials are NOT configured here. The token lives in cargo's own
54 # 0600 store (~/.cargo/credentials.toml) on whichever host publishes, set once
55 # with `cargo login`. Bento only checks it is present, during preflight, so a
56 # missing token fails in seconds rather than at the irreversible upload. Passing
57 # it through a recipe would put it in the process list on the build host.
58
59 [app.makeover]
60 repo = "~/Code/Libraries/makeover"
61
62 [app.pter]
63 repo = "~/Code/Libraries/pter"
64
65 [app.everycycle]
66 repo = "~/Code/Libraries/everycycle"
67
68 [app.supernote-push]
69 repo = "~/Code/Libraries/supernote-push"
70
71 [app.alloy_tui]
72 repo = "~/Code/Libraries/alloy_tui"
73
74 # Services: binaries Bento installs onto the hosts that run them, rather than
75 # distributing to users. Same two-file split again — the pointer lives here, and
76 # `kind = "service"` plus the `[[deploy]]` table (which target lands on which
77 # machine, at which path, restarting which unit) lives in the repo's bento.toml.
78 #
79 # A deploy destination is deliberately NOT a `[[host]]` above. Build hosts and
80 # service hosts are different grants: a build host gets `build`/`package`, a
81 # service host gets `deploy`/`restart` and never `build`, so a recipe cannot turn
82 # a production box into a build host. Its executor is constructed per run from
83 # the app's own manifest and exists only for that run.
84 #
85 # Each service host needs the privileged installer and its scoped sudoers line
86 # installed once. See pom/deploy/install-service.sh and bento-deploy.sudoers.
87 #
88 # pom also sets `tag_format = "pom-v{version}"` in its own bento.toml. MNW is one
89 # .git over several separately-versioned products, so the default `v{version}`
90 # names none of them in particular -- and pom and multithreaded are both at
91 # 0.4.1, so a bare tag is ambiguous immediately. A repo holding one product needs
92 # nothing here.
93
94 [app.pom]
95 repo = "~/Code/MNW/pom"
96