# Mountaineer role → tool registry. # # Each role is a stable name for a job the OS needs done. The tool filling # the role is implementation detail and may change between releases; the # role name does not. `sysop info ` reads this file. # # Order matters: roles are presented in the list view in the order they # appear here. Group by concern (core → network → graphical). # --- core --- [[role]] name = "init" description = "Service supervisor and runlevel manager" tool = "s6 + s6-rc" packages = ["s6", "s6-rc"] config_paths = ["/etc/s6/", "/etc/s6-rc/"] [[role]] name = "shell-login" description = "POSIX /bin/sh" tool = "busybox ash" packages = ["busybox"] config_paths = ["/etc/profile", "/etc/profile.d/"] [[role]] name = "shell-interactive" description = "Login interactive shell with structured pipelines" tool = "nushell" packages = ["nushell"] config_paths = ["~/.config/nushell/"] [[role]] name = "editor" description = "Modal editor with LSP and tree-sitter" tool = "helix" packages = ["helix"] config_paths = ["~/.config/helix/"] [[role]] name = "multiplexer" description = "Terminal multiplexer with discoverable keybindings" tool = "zellij" packages = ["zellij"] config_paths = ["~/.config/zellij/"] [[role]] name = "container-runtime" description = "Rootless container runtime" tool = "podman" packages = ["podman"] config_paths = ["/etc/containers/", "~/.config/containers/"] [[role]] name = "filesystem" description = "Root filesystem and pool/dataset management" tool = "ZFS" packages = ["zfs", "zfs-lts"] config_paths = ["/etc/zfs/"] [[role]] name = "ssh" description = "SSH server, hardened defaults" tool = "OpenSSH" packages = ["openssh"] config_paths = ["/etc/ssh/sshd_config", "/etc/ssh/sshd_config.d/"] # --- network --- [[role]] name = "firewall" description = "Stateful packet filter, default-deny" tool = "nftables" packages = ["nftables"] config_paths = ["/etc/nftables.nft", "/etc/nftables.d/"] [[role]] name = "resolver" description = "Local validating recursive DNS resolver" tool = "unbound" packages = ["unbound"] config_paths = ["/etc/unbound/unbound.conf", "/etc/unbound/conf.d/"] [[role]] name = "time" description = "NTP client and time synchronisation" tool = "chrony" packages = ["chrony"] config_paths = ["/etc/chrony/chrony.conf"] [[role]] name = "network-wired" description = "Wired interface configuration" tool = "ifupdown-ng" packages = ["ifupdown-ng"] config_paths = ["/etc/network/interfaces", "/etc/network/interfaces.d/"] [[role]] name = "network-wireless" description = "Wireless interface daemon" tool = "iwd" packages = ["iwd"] config_paths = ["/etc/iwd/", "/var/lib/iwd/"] [[role]] name = "mesh" description = "Overlay mesh VPN with mutual auth" tool = "Nebula" packages = ["nebula"] config_paths = ["/etc/nebula/"] [[role]] name = "reverse-proxy" description = "HTTPS-terminating reverse proxy with auto-TLS" tool = "Caddy" packages = ["caddy"] config_paths = ["/etc/caddy/Caddyfile", "/etc/caddy/conf.d/"] [[role]] name = "mail-outbound" description = "Outbound mail relay (notifications, alerts)" tool = "msmtp" packages = ["msmtp"] config_paths = ["/etc/msmtprc"] # --- observability / data --- [[role]] name = "logs-router" description = "Structured log collection and routing" tool = "Vector" packages = ["vector"] config_paths = ["/etc/vector/vector.toml"] [[role]] name = "logs-viewer" description = "Interactive log browser" tool = "lnav" packages = ["lnav"] config_paths = ["~/.config/lnav/"] [[role]] name = "secrets" description = "Age-encrypted secrets with sops integration" tool = "age + sops" packages = ["age", "sops"] config_paths = ["~/.config/sops/", ".sops.yaml"] [[role]] name = "backup" description = "Encrypted, deduplicated backups" tool = "restic" packages = ["restic"] config_paths = ["~/.config/restic/"] # --- graphical layer (Sysadmin build only) --- [[role]] name = "compositor" description = "Tiling Wayland compositor" tool = "river" packages = ["river"] config_paths = ["~/.config/river/init"] [[role]] name = "terminal" description = "Wayland terminal emulator" tool = "foot" packages = ["foot"] config_paths = ["~/.config/foot/foot.ini"] [[role]] name = "bar" description = "Status bar (read-only system surface)" tool = "yambar" packages = ["yambar"] config_paths = ["~/.config/yambar/config.yml"] [[role]] name = "launcher" description = "Application launcher" tool = "fuzzel" packages = ["fuzzel"] config_paths = ["~/.config/fuzzel/fuzzel.ini"] [[role]] name = "clipboard" description = "Clipboard history" tool = "cliphist" packages = ["cliphist"] config_paths = [] [[role]] name = "notifications" description = "Wayland notification daemon" tool = "fnott" packages = ["fnott"] config_paths = ["~/.config/fnott/fnott.ini"] [[role]] name = "screenshots" description = "Region capture, annotation, pipeline" tool = "grim + slurp + swappy" packages = ["grim", "slurp", "swappy"] config_paths = ["~/.config/swappy/"] [[role]] name = "lock" description = "Screen locker" tool = "swaylock" packages = ["swaylock"] config_paths = ["~/.config/swaylock/config"] [[role]] name = "idle" description = "Idle event dispatcher" tool = "swayidle" packages = ["swayidle"] config_paths = ["~/.config/swayidle/config"] [[role]] name = "wallpaper" description = "Wallpaper / background" tool = "swaybg" packages = ["swaybg"] config_paths = [] [[role]] name = "audio" description = "Audio server and session manager" tool = "pipewire + wireplumber" packages = ["pipewire", "wireplumber"] config_paths = ["/etc/pipewire/", "~/.config/pipewire/", "~/.config/wireplumber/"] [[role]] name = "seat" description = "Seat / device management for non-root Wayland" tool = "seatd" packages = ["seatd"] config_paths = [] [[role]] name = "brightness" description = "Backlight control" tool = "brightnessctl" packages = ["brightnessctl"] config_paths = [] [[role]] name = "power" description = "Laptop power management profiles" tool = "tlp" packages = ["tlp"] config_paths = ["/etc/tlp.conf", "/etc/tlp.d/"]