wiki-vault/Sources/Homelab/cli-standardization.md
Travis Herbranson 34a268d8dc migration: copy 62 notes from pbs-projects and homelab-projects
Two-layer structure: Sources (raw notes) + Wiki (compile output)
Four domains: Dev (40), Venture (3), Homelab (23), Reference (0)
Includes CLAUDE.md spec, index pages at all levels, compile log

Co-Authored-By: Lovebug <lovebug@herbylab.dev>
2026-05-08 17:21:13 -04:00

75 lines
3.0 KiB
Markdown

---
created: 2026-04-23
path: Sources/Homelab
project: cli-standardization
status: active
tags:
- pbs
- tech-setup
- automation
type: project-plan
updated: 2026-04-23
---
# CLI Standardization: Fish, Starship & Cross-Node Sync
Standardize the terminal experience across the Manjaro dev rig, Proxmox
nodes, and Ubuntu NAS. This project moves away from manual "server pet"
configuration in favor of an automated, immutable CLI environment.
## Objectives
- Deploy Fish 4.x+ and Starship to all primary nodes via Ansible.
- Establish a single source of truth for dotfiles using Chezmoi.
- Implement the `docker debug` protocol to avoid shell-bloat in containers.
## Phase 1: Host Automation (Ansible) — COMPLETE
- [x] Create Ansible role `cli_modern` to install `fish`, `starship`, `fzf`,
`zoxide`, `bat`, `eza`, `fd`, `ripgrep`, `fastfetch`.
- [x] Handle Fish PPA for Ubuntu/Debian to get 4.x.
- [x] Add task to set Fish as the default shell for the primary user.
- [x] Deploy Fisher plugin manager with fzf.fish, z, sponge, autopair.
- [x] Write Fish config template (aliases, env vars, fastfetch on login).
- [x] Write Starship config template (git, Python/Go/Node, SSH hostname).
- [x] Support both Arch (Manjaro) and Debian (Ubuntu/Proxmox) via OS detection.
- [x] Pass ansible-lint at production profile.
- [ ] Fill in inventory with actual hosts.
- [ ] Deploy role to Proxmox cluster and Ubuntu NAS.
## Phase 2: Dotfile Orchestration (Chezmoi) — COMPLETE (placeholders)
- [x] Initialize dotfiles Git repository with Chezmoi structure.
- [x] Create placeholder configs: Fish, Starship, Ghostty, Zellij.
- [x] Machine-type awareness (.chezmoiignore skips Ghostty/Zellij on servers).
- [x] Add Chezmoi install + apply tasks to cli_modern role (opt-in).
- [x] Configure `fish_plugins` file for Fisher automated plugin sync.
- [ ] Replace placeholder configs with real dotfiles from Manjaro rig.
- [ ] Push dotfiles repo to Gitea.
- [ ] Test `chezmoi apply` workflow on Manjaro rig.
## Phase 3: Container Workflow
- [ ] Verify `docker debug` binary availability on nodes.
- [ ] Create an alias/function for `ddebug` that defaults to the Fish shell.
- [ ] Document the VS Code Dev Container configuration for consistent
project-level shells.
## Repos
| Repo | Location | Purpose |
|------|----------|---------|
| cli-standardization | `/opt/projects/pbs-workshop/cli-standardization/` | Ansible project with cli_modern role |
| dotfiles | `/opt/projects/pbs-workshop/dotfiles/` | Chezmoi-managed dotfiles (push to Gitea) |
## Tools Installed
| Tool | Purpose | Arch pkg | Ubuntu pkg |
|------|---------|----------|------------|
| Fish | Shell | fish | fish (PPA) |
| Starship | Prompt | binary | binary |
| fzf | Fuzzy finder | fzf | fzf |
| zoxide | Smart cd | zoxide | zoxide |
| bat | cat++ | bat | bat/batcat |
| eza | ls++ | eza | eza |
| fd | find++ | fd | fd-find |
| ripgrep | grep++ | ripgrep | ripgrep |
| fastfetch | System info | fastfetch | fastfetch |
| Fisher | Fish plugins | via script | via script |
| Chezmoi | Dotfiles | chezmoi | binary |