Skip to content

Operator shell inventory (2026-07-22)

Sanitized snapshot of zsh / powerlevel10k / companion tooling across operator-facing hosts. Raw dumps stay local under gitignored artifacts/zsh-p10k-inventory/ and are not committed.

Related: operator/dotfiles/README.md, Atuin sync notes in that README.

TL;DR

Five systems already run Oh My Zsh + powerlevel10k for someone. Configs diverged (plugin lists, p10k size/mode, login shell). Prox and Proxmox LXCs had no zsh. Goal: one golden chezmoi source + Ansible operator-shell role.

Hosts with zsh (pre-golden)

Host zsh Login shell OMZ (short) p10k (short) p10k size Mode / notes
infra-services 5.9 bash df34d2b 604f19a ~9.5 KB Lean / Pure-style; MesloLGS NF fonts; eza aliases; atuin
saltierpoop 5.8.1 zsh 677a4592 8fa10f43 ~96 KB Full nerdfont-v3; docker/ansible aliases; Saltbox managed blocks in .zshrc
ubuncap 5.9 zsh 98fe9b8 8fa10f4 ~91 KB nerdfont-complete
recordurbate 5.9 zsh 677a459 8fa10f43 ~9.9 KB Lean p10k (like infra)
WSL CaptainKangapoo 5.9 zsh 677a459 36f3045 ~91 KB nerdfont-complete; fzf + zsh-autocomplete; bat/lsd aliases

.zshenv was byte-identical on saltierpoop / ubuncap / recordurbate / WSL (cargo env source). Not treated as a secret; still host-optional under golden (guarded source).

Plugin / theme matrix (pre-golden)

Host Theme Notable plugins
infra-services powerlevel10k git, sudo, systemd, ubuntu, autosuggestions, syntax-highlighting
saltierpoop powerlevel10k git, docker, docker-compose, ansible (+ syntax sourced after OMZ)
ubuncap powerlevel10k git, autosuggestions, syntax-highlighting
recordurbate powerlevel10k git, syntax-highlighting, autosuggestions
WSL powerlevel10k git, dirhistory, history, colored-man-pages, jsontools, autocomplete, autosuggestions, syntax-highlighting, fzf-zsh-plugin

Companion tools already present on some hosts: atuin (all five), tmux (WSL binary, no config), fzf / bat / eza (partial).

Reachable without zsh

Host Access used Result
prox patch-controller via infra-services bash only
graylog, pulse, harbor-registry, octoprint, phoenix patch-controller as root no zsh / no configs
mysql (CT 113) stopped skipped

Out of scope / unreachable

Target Notes
Synology DSM (whrrr) SSH on :65222; agent keys need whrrr-cursor pattern — see runbook
UniFi / HAOS Closed appliances; not operator-shell targets
SSH-config ghosts (unmatic, ubuntee, paperless, …) Torn down / TCP timeout
MacBook Same golden later (brew manifest); majority-rules

Atuin (sync)

Login-based sync (atuin register / atuin account login) with E2E encryption key. WSL had a session but sync returned HTTP 404 (stale/broken account). infra-services had a local key and no session (not sharing history).

Desired UX: local DB per host; filter_mode=global for cross-host search; Up-key binding filtered to host. Never commit key or session.

Golden direction

  • Full nerdfont p10k (WSL/ubuncap/saltierpoop majority), not lean Pure configs
  • Unified plugin set + guarded aliases (eza/bat/fzf/tmux OSC52)
  • Login shell zsh for managed someone (and root on prox)
  • Packages + chezmoi apply via Ansible; WSL via bootstrap.sh
flowchart TB
  subgraph before [Before]
    WSL[WSL full p10k]
    SP[saltierpoop full]
    Infra[infra lean + bash login]
    LXC[LXCs no zsh]
  end
  subgraph after [After]
    Golden[operator/dotfiles chezmoi]
    Role[operator-shell role]
    Golden --> Role
    Role --> Fleet[someone homes + prox root]
  end
  before --> Golden