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>
75 lines
3.0 KiB
Markdown
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 | |