Minimal macOS/Linux dotfiles for a modern terminal setup with Catppuccin Mocha theming throughout.
Shell & Config:
- Zsh - History, completion, custom prompt with command timer
- Git - Sensible defaults, delta diffs, common aliases
- Vim/Helix - Catppuccin theme, sensible defaults
- Tmux - Catppuccin theme, session persistence
Modern CLI tools:
- bat -
catwith syntax highlighting - eza -
lswith icons and git status - fd - Fast
findalternative - ripgrep - Fast
grepalternative - fzf - Fuzzy finder
- zoxide - Smart
cdthat learns your paths - lazygit - Git TUI
- yazi - Terminal file manager
- btop - Resource monitor
| Instead of | Use | Why |
|---|---|---|
ls |
ls (eza) |
Icons, colors, git status |
ls -la |
la |
Long format with hidden files |
tree |
lt |
Tree view with icons |
cat file |
bat file |
Syntax highlighting |
cd path |
z partial |
Jump to frequently used dirs |
find -name |
fd pattern |
Simpler, faster |
grep -r |
rg pattern |
Faster, respects .gitignore |
git status/add/commit |
lazygit |
Visual TUI for git |
| File browsing | yazi |
Navigate, preview, bulk ops |
htop |
btop |
Prettier, more info |
vim |
hx |
Modern editor, LSP built-in |
Commands (user-invokable via /name):
| Command | Description |
|---|---|
/work |
Full development flow: issue → code → PR → merge → reflect |
/parallel-work |
Manage git worktrees for parallel PR development |
/im-lost |
Show current workflow position and context |
/pr-create |
Commit changes and create/update a PR |
/pr-review |
Review code via local analysis or remote reviewer comments |
/watch-ci |
Monitor CI in background with notification when complete |
/event-bus-status |
Overview of active sessions and recent events |
/broadcast |
Send message to other Claude Code sessions |
/session-dump |
Dump recent conversation to file |
Agents (invoked via Task tool for background/complex work):
| Agent | Description |
|---|---|
status-report |
Repo status with recent work, open PRs/issues, and recommendations |
summarize-work |
Summarize current branch work for PR creation |
audit-codebase |
Code quality, anti-patterns, Evergreen violations |
audit-tests |
Test redundancy, staleness, coverage gaps |
audit-issues |
Issue triage, priority alignment, staleness |
audit-docs |
CLAUDE.md, README, and documentation quality |
audit-workflows |
Command contradictions and inconsistencies |
improve-workflow |
Data-driven workflow improvements from session analytics |
rfc-create |
Create RFC-style issues with structured analysis |
rfc-respond |
Respond to RFC-style issues |
Usage examples:
# Start tracked work on an issue (full workflow)
/work 42
# Check where you are in the workflow
/im-lost
# Self-review before creating PR
/pr-review local
# Create a PR for current work
/pr-create
# Monitor CI with notification
/watch-ci 123
# Data-driven workflow improvements (agent)
/improve-workflowClone with submodules and run bootstrap:
git clone --recursive https://github.com/evansenter/dotfiles.git
cd dotfiles
./bootstrap.shRestart your terminal or run source ~/.zshrc to apply changes.
On a bare macOS install, in order:
- Install the Xcode Command Line Tools (provides
git, needed before anything else):xcode-select --install
- Clone with submodules:
git clone --recursive https://github.com/evansenter/dotfiles.git ~/projects/dotfiles cd ~/projects/dotfiles
- Create
~/.extrawith any secrets before the full bootstrap, so package/MCP setup can use them (see the env vars under Customization —GITHUB_TOKEN, and on the gateway hostOPENCLAW_GATEWAY_TOKEN/OBSIDIAN_API_KEY). - Run the full bootstrap (installs Homebrew if missing, installs packages, inits submodules + themes, symlinks dotfiles, registers MCP servers, installs LaunchAgents, and applies macOS system defaults):
The
./bootstrap.sh -p # -p = pull + install/update packages, then sync-prun also applieshome/.macos(Dock, Finder, keyboard, trackpad, hot corners, etc. — see macOS system defaults) and restarts Dock/Finder. Re-running./bootstrap.sh -flater is safe and idempotent (and restores symlinks that atomic-writing tools like btop/zellij/CC replace) — but-fdoes not touch system defaults, so it won't restart your Dock. - Restart the terminal (or
source ~/.zshrc). - Manual post-install steps (bootstrap can't automate these):
- tmux: press
prefix + Ito install TPM plugins. - iTerm2: import the Catppuccin color preset (
preferences//vendor/iterm-catppuccin/). - zellij:
zellij kill-all-sessionsso the symlinked config is picked up (hot-reload doesn't work with symlinks). - btop dark-mode switching (optional):
brew install cormacrelf/tap/dark-notifythen re-run./bootstrap.sh -f. - Gateway host only: open Obsidian with the Local REST API plugin enabled (obsidian-mcp's wrapper backs off until it's reachable).
- tmux: press
Dark mode theme switching (btop):
brew install cormacrelf/tap/dark-notify
./bootstrap.sh # Re-run to install LaunchAgentClaude Code (commands, hooks, settings symlinked to ~/.claude/):
./bootstrap.sh # Symlinks commands/, hooks/, settings.json, CLAUDE.mdAlso installs the GitHub MCP server and enables a curated set of official plugins (see enabledPlugins in home/.claude/settings.json). Several integrations read secrets from ~/.extra (not tracked):
export GITHUB_TOKEN="ghp_your_token_here" # GitHub MCP / gh
export OPENCLAW_GATEWAY_TOKEN="..." # OpenClaw gateway client
export OBSIDIAN_API_KEY="..." # obsidian-mcp (gateway host only; wrapper exits without it)Pull latest and sync:
cd dotfiles
./bootstrap.sh -f -p
git submodule update --init --remotecd dotfiles
./uninstall.shdotfiles/
├── home/ # Synced to ~/ on install
│ ├── .aliases
│ ├── .bin/
│ ├── .claude/
│ │ ├── CLAUDE.md # Global workflow preferences
│ │ ├── commands/ # Custom slash commands
│ │ ├── agents/ # Background task agents
│ │ ├── skills/ # Auto-applied domain expertise
│ │ ├── contrib/ # Shared scripts for hooks/commands
│ │ ├── hooks/ # Lifecycle event hooks
│ │ ├── statusline-command.sh # Statusline provider script
│ │ └── settings.json # Plugins and hook config
│ ├── .exports
│ ├── .gitconfig
│ ├── .tmux.conf
│ ├── .vim/
│ ├── .vimrc
│ ├── .zsh_prompt
│ └── .zshrc
├── vendor/ # Git submodules (themes)
├── preferences/ # App config backups
├── LaunchAgents/ # macOS LaunchAgent templates
└── bootstrap.sh
Create ~/.extra (not tracked) for personal settings:
# ~/.extra
export CUSTOM_VAR="value"
alias myalias="some command"home/.macos is a faithful snapshot of intentional macOS system settings — Dock
(autohide, size, hot corners), Finder (hidden files, list view, path bar),
keyboard/text (show extensions, no auto-correct, traditional scrolling),
trackpad (tap-to-click, three-finger drag), Stage Manager off, en_GB locale,
and a few misc tweaks. It's applied automatically by ./bootstrap.sh -p; you can
also re-run it any time:
~/.macos # (symlinked) or: bash home/.macosIt's macOS-only, idempotent, and restarts Dock/Finder/SystemUIServer to apply.
To change settings, edit home/.macos (it's a plain defaults write script).
Not captured (can't be, via defaults): iCloud/Apple-ID settings, Login
Items, TCC permissions, network/Wi-Fi, Touch ID, and sandboxed apps (Safari,
Control Center) — configure those manually.
Based on Mathias Bynens' dotfiles, heavily simplified.