# dev_env Interactive developer environment for **workstation-class** boma hosts (`ubongo`, and later `mamba`). Gives the operator — and the `claude` agent user — a clean shell/editor setup over SSH: zsh + oh-my-zsh + oh-my-posh, tmux, and neovim. **This is not part of `base`.** `base` is the security/infra baseline every host gets; `dev_env` is only for human workstation-class hosts and must never be applied to servers or service VMs. ## What it does - Installs packages: `zsh, tmux, git, stow, build-essential, curl, ca-certificates, fzf, ripgrep, direnv, nodejs, npm` (`dev_env__packages`). - Installs **pinned** neovim (`dev_env__nvim_version`) and oh-my-posh (`dev_env__omp_version`) from GitHub releases, and the system-wide oh-my-posh theme `/etc/oh-my-posh/zen.toml`. - For each user in `dev_env__users`: sets the login shell to zsh, clones oh-my-zsh + custom plugins and the tmux/TPM plugins, and **stows** the dotfiles into `~`. ## Dotfiles Real files under `files/dotfiles/{zsh,tmux,nvim}/`, deployed to `~/.dotfiles/` and symlinked into the home directory with GNU **stow** (not Jinja templates — so they stay editable as live configs). nvim plugins self-bootstrap via lazy.nvim on first launch; LSPs/formatters self-install via mason (no system LSP packages needed). ## Variables | Variable | Default | Purpose | |---|---|---| | `dev_env__users` | `[]` | Users to configure. Set per group, e.g. `group_vars/control → [sjat, claude]`. Empty = no per-user work. | | `dev_env__nvim_version` | `v0.12.2` | Pinned neovim release. | | `dev_env__omp_version` | `29.0.1` | Pinned oh-my-posh release. | | `dev_env__packages` | see defaults | APT packages. | | `dev_env__omz_custom_plugins` | autosuggestions, syntax-highlighting | Cloned into `~/.oh-my-zsh/custom/plugins`. | | `dev_env__tmux_plugins` | tpm, tmux-sensible, vim-tmux-navigator, catppuccin@v1.0.3 | Cloned into `~/.tmux/plugins`. | ## Apply ```bash make test ROLE=dev_env # Molecule (Debian 13) make deploy PLAYBOOK=workstation # applies to the control group (ubongo) ``` ## Provenance Configs re-derived (ADR-013) from the heritage `AnsibleBaobabV4` repo and the operator's live `fisi` setup, on boma's terms — V4's structure was not imported. No Nerd Font is installed (headless host; fonts are a client-side concern).