A neon-cobalt + magenta development environment for macOS. Themed end-to-end across nvim, tmux, starship, lazygit, fzf, bat, and ccstatusline. Reproducible from one script.
git clone https://github.com/jsgerman-oss/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.shThen:
- Set your terminal (cmux / Ghostty / iTerm2) font to JetBrainsMono Nerd Font (already brewed)
- Open a fresh shell —
exec zsh - Drop secrets in
~/.zshrc.local(see caveats)
The installer handles symlinks, brews, oh-my-zsh, plugins, fzf bindings, tmux plugins (headless), Neovim plugins (headless), and Mason LSPs.
What ./install.sh actually does, command by command →
- 🐚 zsh + oh-my-zsh + starship
- ⚡ fzf + fzf-tab + zsh-autosuggestions
- 🪟 tmux with TPM (sessions auto-restore)
- 📝 Neovim (LazyVim) — Go, K8s/YAML, Docker, AI
- 🐙 lazygit — TUI git client
- 🤖 CodeCompanion — local AI via MLX or LM Studio
- 🐳 Colima — on-demand Docker / k8s VM, with a 🐳 prompt indicator
| Old | New | Aliases / Notes |
|---|---|---|
ls |
eza | ls, ll, la, lt, ltt |
cat |
bat | bcat. Plain cat still works. Used as MANPAGER. |
grep |
ripgrep | rg. fzf uses it under the hood. |
find |
fd | sane defaults, gitignore-aware |
cd |
zoxide | j foo jumps; ji picks interactively |
git diff |
delta | wired into gitconfig |
top |
btop | mouse-able, GPU + thermals + processes |
du |
dust | sorted disk-usage tree |
man |
tldr | practical examples first |
The same 12-token palette is shared across every TUI surface so context-switching never breaks visual flow.
| Role | Hex | Used in |
|---|---|---|
| Background | #000000 |
terminal, panels, status bar |
| Surface | #0a0a14 |
floats, code blocks, raised UI |
| Active | #1a1a3e |
nvim Visual / CursorLine |
| Foreground | #e0e0ee |
primary text |
| Cobalt (primary) | #2D5BFF |
dirs, prompts, keywords, k8s context |
| Cobalt-light | #3B82F6 |
hover / recessive cobalt |
| Cobalt-deep | #0050E0 |
recessive accent (mkdocs) |
| Magenta (accent) | #FF1FE7 |
git, errors, search, active borders |
| Purple | #c0a3ff |
terraform / agents-running |
| Grey | #6b7280 |
inactive chrome, separators, time |
| Cyan | #22D3EE |
k8s context, golang, info |
| Amber | #F59E0B |
cmd duration, battery warn |
| Green | #22EE99 |
python venv, colima alive, vimcmd |
| Red | #FF4D4D |
failure, battery critical |
zsh/starship.toml is the source of truth; nvim, tmux, lazygit, ccstatusline, fzf, mkdocs all consume the same hex values.
dotfiles/
├── README.md ← you're here (short version)
├── Brewfile ← brews + casks (fresh-machine spec)
├── install.sh ← idempotent one-shot installer
├── macos.sh ← macOS system defaults
├── mkdocs.yml ← live docs site config
├── PRODUCT.md ← strategic design context
├── DESIGN.md ← visual system + token reference
├── docs/ ← live docs site source
├── site/ ← built docs site (deployed to GitHub Pages)
├── zsh/ ← .zshrc, .zprofile, starship.toml
├── nvim/ ← LazyVim config, plugins, colorscheme
├── tmux/ ← tmux config (loaded into ~/.tmux.conf)
├── lazygit/ ← lazygit config + theme
├── ccstatusline/ ← Claude Code statusline config
├── bat/ ← bat config
├── git/ ← git config + aliases
├── ssh/ ← ssh config (machine-local secrets in .ssh-local)
├── vim/ ← legacy vim fallback
├── scripts/ ← one-off helpers
└── .github/ ← CI for the docs deploy
The full walkthrough lives at jsgerman-oss.github.io/dotfiles/ — every section, every command, every recipe.
| Surface | Doc |
|---|---|
| 3-line starship prompt | Prompt → |
| Modern CLI stack | CLI → |
| fzf shortcuts | fzf → |
| LazyVim + Go + K8s + AI | Neovim → |
| Local AI in nvim | Local AI → |
| Tmux with cobalt + magenta status bar | Tmux → |
| Git workflow + delta | Git → |
| Lazygit | Lazygit → |
| On-demand Docker / k8s via Colima | Colima → |
| Claude Code statusline | ccstatusline → |
| Install walkthrough | Install → |
| Repository layout | Layout → |
| Caveats and gotchas | Caveats → |
A few of the gotchas worth knowing before you run ./install.sh. The full list lives at caveats →.
- Brewfile is a fresh-machine spec, not an inventory. Manual one-off
brew installwon't be in the file. Don't runbrew bundle cleanup --forceagainst it. - Set the terminal font in the terminal app's UI. JetBrainsMono Nerd Font is brewed but you must point your terminal at it.
- Secrets live in
~/.zshrc.local. This file is gitignored. Drop Azure/AKS switchers, MLX model paths, and machine-local aliases there. - The Brewfile pins to Apple Silicon. Intel Macs will install but some casks may not have arm64-only equivalents.
docs-serveruns the site locally on:8000. Use it before pushing to verify the live deploy will look right.
This is a personal dotfiles repo, but if you're forking it the design system is documented:
PRODUCT.md— strategic context (audience, brand personality, anti-references, design principles)DESIGN.md— visual system (12-color palette, typography, elevation, components, do's and don'ts)DESIGN.json— Stitch-compatible sidecar with OKLCH canonicals, tonal ramps, and self-contained component snippets
The fonts (Satoshi for body, JetBrains Mono for code) were chosen for look and mass compatability.
MIT. See LICENSE for the long version.
Built on the shoulders of: oh-my-zsh, starship, LazyVim, tmux, TPM, lazygit, tokyonight.nvim, CodeCompanion.nvim, mkdocs-material, Satoshi by Indian Type Foundry, and JetBrains Mono.