Skip to main content

max / mountaineer-sysop

5.9 KB · 255 lines History Blame Raw
1 # Mountaineer role → tool registry.
2 #
3 # Each role is a stable name for a job the OS needs done. The tool filling
4 # the role is implementation detail and may change between releases; the
5 # role name does not. `sysop info <role>` reads this file.
6 #
7 # Order matters: roles are presented in the list view in the order they
8 # appear here. Group by concern (core → network → graphical).
9
10 # --- core ---
11
12 [[role]]
13 name = "init"
14 description = "Service supervisor and runlevel manager"
15 tool = "s6 + s6-rc"
16 packages = ["s6", "s6-rc"]
17 config_paths = ["/etc/s6/", "/etc/s6-rc/"]
18
19 [[role]]
20 name = "shell-login"
21 description = "POSIX /bin/sh"
22 tool = "busybox ash"
23 packages = ["busybox"]
24 config_paths = ["/etc/profile", "/etc/profile.d/"]
25
26 [[role]]
27 name = "shell-interactive"
28 description = "Login interactive shell with structured pipelines"
29 tool = "nushell"
30 packages = ["nushell"]
31 config_paths = ["~/.config/nushell/"]
32
33 [[role]]
34 name = "editor"
35 description = "Modal editor with LSP and tree-sitter"
36 tool = "helix"
37 packages = ["helix"]
38 config_paths = ["~/.config/helix/"]
39
40 [[role]]
41 name = "multiplexer"
42 description = "Terminal multiplexer with discoverable keybindings"
43 tool = "zellij"
44 packages = ["zellij"]
45 config_paths = ["~/.config/zellij/"]
46
47 [[role]]
48 name = "container-runtime"
49 description = "Rootless container runtime"
50 tool = "podman"
51 packages = ["podman"]
52 config_paths = ["/etc/containers/", "~/.config/containers/"]
53
54 [[role]]
55 name = "filesystem"
56 description = "Root filesystem and pool/dataset management"
57 tool = "ZFS"
58 packages = ["zfs", "zfs-lts"]
59 config_paths = ["/etc/zfs/"]
60
61 [[role]]
62 name = "ssh"
63 description = "SSH server, hardened defaults"
64 tool = "OpenSSH"
65 packages = ["openssh"]
66 config_paths = ["/etc/ssh/sshd_config", "/etc/ssh/sshd_config.d/"]
67
68 # --- network ---
69
70 [[role]]
71 name = "firewall"
72 description = "Stateful packet filter, default-deny"
73 tool = "nftables"
74 packages = ["nftables"]
75 config_paths = ["/etc/nftables.nft", "/etc/nftables.d/"]
76
77 [[role]]
78 name = "resolver"
79 description = "Local validating recursive DNS resolver"
80 tool = "unbound"
81 packages = ["unbound"]
82 config_paths = ["/etc/unbound/unbound.conf", "/etc/unbound/conf.d/"]
83
84 [[role]]
85 name = "time"
86 description = "NTP client and time synchronisation"
87 tool = "chrony"
88 packages = ["chrony"]
89 config_paths = ["/etc/chrony/chrony.conf"]
90
91 [[role]]
92 name = "network-wired"
93 description = "Wired interface configuration"
94 tool = "ifupdown-ng"
95 packages = ["ifupdown-ng"]
96 config_paths = ["/etc/network/interfaces", "/etc/network/interfaces.d/"]
97
98 [[role]]
99 name = "network-wireless"
100 description = "Wireless interface daemon"
101 tool = "iwd"
102 packages = ["iwd"]
103 config_paths = ["/etc/iwd/", "/var/lib/iwd/"]
104
105 [[role]]
106 name = "mesh"
107 description = "Overlay mesh VPN with mutual auth"
108 tool = "Nebula"
109 packages = ["nebula"]
110 config_paths = ["/etc/nebula/"]
111
112 [[role]]
113 name = "reverse-proxy"
114 description = "HTTPS-terminating reverse proxy with auto-TLS"
115 tool = "Caddy"
116 packages = ["caddy"]
117 config_paths = ["/etc/caddy/Caddyfile", "/etc/caddy/conf.d/"]
118
119 [[role]]
120 name = "mail-outbound"
121 description = "Outbound mail relay (notifications, alerts)"
122 tool = "msmtp"
123 packages = ["msmtp"]
124 config_paths = ["/etc/msmtprc"]
125
126 # --- observability / data ---
127
128 [[role]]
129 name = "logs-router"
130 description = "Structured log collection and routing"
131 tool = "Vector"
132 packages = ["vector"]
133 config_paths = ["/etc/vector/vector.toml"]
134
135 [[role]]
136 name = "logs-viewer"
137 description = "Interactive log browser"
138 tool = "lnav"
139 packages = ["lnav"]
140 config_paths = ["~/.config/lnav/"]
141
142 [[role]]
143 name = "secrets"
144 description = "Age-encrypted secrets with sops integration"
145 tool = "age + sops"
146 packages = ["age", "sops"]
147 config_paths = ["~/.config/sops/", ".sops.yaml"]
148
149 [[role]]
150 name = "backup"
151 description = "Encrypted, deduplicated backups"
152 tool = "restic"
153 packages = ["restic"]
154 config_paths = ["~/.config/restic/"]
155
156 # --- graphical layer (Sysadmin build only) ---
157
158 [[role]]
159 name = "compositor"
160 description = "Tiling Wayland compositor"
161 tool = "river"
162 packages = ["river"]
163 config_paths = ["~/.config/river/init"]
164
165 [[role]]
166 name = "terminal"
167 description = "Wayland terminal emulator"
168 tool = "foot"
169 packages = ["foot"]
170 config_paths = ["~/.config/foot/foot.ini"]
171
172 [[role]]
173 name = "bar"
174 description = "Status bar (read-only system surface)"
175 tool = "yambar"
176 packages = ["yambar"]
177 config_paths = ["~/.config/yambar/config.yml"]
178
179 [[role]]
180 name = "launcher"
181 description = "Application launcher"
182 tool = "fuzzel"
183 packages = ["fuzzel"]
184 config_paths = ["~/.config/fuzzel/fuzzel.ini"]
185
186 [[role]]
187 name = "clipboard"
188 description = "Clipboard history"
189 tool = "cliphist"
190 packages = ["cliphist"]
191 config_paths = []
192
193 [[role]]
194 name = "notifications"
195 description = "Wayland notification daemon"
196 tool = "fnott"
197 packages = ["fnott"]
198 config_paths = ["~/.config/fnott/fnott.ini"]
199
200 [[role]]
201 name = "screenshots"
202 description = "Region capture, annotation, pipeline"
203 tool = "grim + slurp + swappy"
204 packages = ["grim", "slurp", "swappy"]
205 config_paths = ["~/.config/swappy/"]
206
207 [[role]]
208 name = "lock"
209 description = "Screen locker"
210 tool = "swaylock"
211 packages = ["swaylock"]
212 config_paths = ["~/.config/swaylock/config"]
213
214 [[role]]
215 name = "idle"
216 description = "Idle event dispatcher"
217 tool = "swayidle"
218 packages = ["swayidle"]
219 config_paths = ["~/.config/swayidle/config"]
220
221 [[role]]
222 name = "wallpaper"
223 description = "Wallpaper / background"
224 tool = "swaybg"
225 packages = ["swaybg"]
226 config_paths = []
227
228 [[role]]
229 name = "audio"
230 description = "Audio server and session manager"
231 tool = "pipewire + wireplumber"
232 packages = ["pipewire", "wireplumber"]
233 config_paths = ["/etc/pipewire/", "~/.config/pipewire/", "~/.config/wireplumber/"]
234
235 [[role]]
236 name = "seat"
237 description = "Seat / device management for non-root Wayland"
238 tool = "seatd"
239 packages = ["seatd"]
240 config_paths = []
241
242 [[role]]
243 name = "brightness"
244 description = "Backlight control"
245 tool = "brightnessctl"
246 packages = ["brightnessctl"]
247 config_paths = []
248
249 [[role]]
250 name = "power"
251 description = "Laptop power management profiles"
252 tool = "tlp"
253 packages = ["tlp"]
254 config_paths = ["/etc/tlp.conf", "/etc/tlp.d/"]
255