Development environment managed with symlinks and a single install script. Primarily macOS, with Linux support (see below).
git clone https://github.com/xeaser/dotfiles.git ~/dotfiles && cd ~/dotfiles && ./install.sh~/dotfiles/
├── zsh/ # Zsh + Powerlevel10k, plugins, custom scripts
├── tmux/ # oh-my-tmux config, gitmux, spotify status
├── nvim/ # LazyVim config, plugins, cheatsheet
├── kitty/ # Kitty terminal theme + settings
├── git/ # .gitconfig, .gitignore_global
├── k9s/ # Kubernetes UI: aliases, views, cluster templates
├── opencode/ # AI assistant: config, skills, commands, profiles
├── caddy/ # Caddyfile reverse proxy
├── dns/ # Homelab DNS config
├── finicky/ # macOS browser routing rules
├── codegraphcontext/ # Code graph MCP server
├── .superset/ # AI orchestration config
├── examples/ # Project-local config templates (.nvim.lua, .envrc)
├── Brewfile # Homebrew packages
├── install.sh # Idempotent setup script
├── .secrets.example # Template for secrets
└── .gitignore
Check what needs to be installed or linked without making any changes:
./install.sh --dry-runShows a color-coded report: green = installed, red = missing, blue = needs linking, yellow = wrong symlink target. Includes a summary count at the end.
| Tool | Description |
|---|---|
| zsh | Oh My Zsh + Powerlevel10k with fzf-tab, autosuggestions, fast-syntax-highlighting, atuin, zoxide, direnv |
| tmux | oh-my-tmux with gruvbox theme, gitmux status, spotify, session management via sesh |
| nvim | LazyVim with 21 extras: gruvbox-material theme, NeoTree, DAP debugging, neotest, illuminate, aerial, navic, indent-blankline, avante (AI), opencode.nvim, project manager. See cheatsheet |
| kitty | Gruvbox dark theme, Nerd Fonts, powerline tabs |
| k9s | Kubernetes terminal UI with custom aliases (dp, sec, jo), pod column layouts with image versions and resource usage |
| opencode | AI coding assistant with oh-my-opencode model routing, MCP servers (postgres, GitHub, Atlassian, JetBrains, Obsidian), custom skills (AWS SSO, CI status, PR status, code review), slash commands |
| caddy | Reverse proxy config (Caddyfile) for local/homelab services |
| dns | Homelab DNS configuration |
| finicky | macOS browser routing rules (finicky.ts) |
| codegraphcontext | Code graph MCP server for codebase analysis |
| .superset | AI orchestration config (setup/teardown/run hooks) |
| brew | All packages captured in Brewfile |
Secrets are never committed. The install script creates ~/.secrets from .secrets.example on first run.
# After install, edit:
vim ~/.secrets
chmod 600 ~/.secretsSourced automatically by .zshrc.
| Shortcut | Action |
|---|---|
vim / vi |
Opens Neovim |
viz |
Edit .zshrc |
soz |
Source .zshrc |
k |
kubectl |
tdaily |
Attach to tmux "daily" session |
| Shortcut | Action |
|---|---|
prefix + T |
sesh session picker (fzf) |
prefix + Z |
tmux-fzf launcher |
prefix + Space |
tmux-thumbs (copy hints) |
F12 |
Suspend tmux (nested sessions) |
Ctrl+h/j/k/l |
Navigate panes (vim-aware) |
| Shortcut | Action |
|---|---|
leader + aa |
Avante AI assistant |
leader + gg |
LazyGit |
leader + tt |
Run nearest test |
leader + td |
Debug nearest test |
leader + pp |
Browse projects |
leader + ph |
Project history |
leader + oo |
Toggle opencode |
leader + z |
Project debug configs (per-project .nvim.lua) |
leader + db |
Toggle breakpoint |
leader + dc |
Start/continue debugging |
leader + e |
Toggle NeoTree file explorer |
leader + cs |
Toggle aerial symbols sidebar |
leader + rs |
Refactoring picker |
leader + uC |
Colorscheme picker |
Ctrl+h/j/k/l |
Navigate splits (tmux-aware) |
Full keybinding reference: nvim/cheatsheet.md
The setup is primarily macOS but works on Linux with --skip-brew:
./install.sh --skip-brewThis skips Homebrew and installs all symlinks, clones oh-my-zsh, plugins, oh-my-tmux, and powerlevel10k.
Install packages manually on Linux using your distro's package manager before running the script:
# Debian/Ubuntu
sudo apt install zsh tmux neovim fzf kitty git curl
# Arch
sudo pacman -S zsh tmux neovim fzf kitty git curlThen install tools not in distro repos (zoxide, atuin, sesh, gitmux, lazygit, direnv) via their official install instructions or Homebrew for Linux.
macOS-only features (skipped automatically on Linux):
toggleNotch,volUpaliases (osascript)- Spotify status in tmux (requires osascript)
macos_option_as_altin kitty- Homebrew casks (GUI apps)
