Personal dev environment configuration files — shell, terminal, editor, prompt, and AI tooling.
| Tool | Config location | Description |
|---|---|---|
| Zsh | .zshrc, .zsh_plugins.txt |
Shell config with Antidote plugin manager |
| Ghostty | ghostty/config |
Terminal emulator (Dracula theme, Fira Code, vim-style splits) |
| NeoVim | nvim/ |
AstroNvim user config with Mason auto-installed LSPs |
| Starship | starship.toml |
Cross-shell prompt with git integration |
| tmux | tmux/ |
Terminal multiplexer with TPM plugin manager |
If you're a colleague picking this up, fork the repo first — then clone your fork. This gives you your own copy to customize while still being able to pull updates from upstream.
# Fork via GitHub, then clone wherever you like:
git clone git@github.com:<your-username>/dotfiles.git ~/dotfiles # or wherever
cd ~/dotfiles
# Track upstream for future updates
git remote add upstream git@github.com:WMahoney09/dotfiles.git
# Install packages (macOS — optional, see below)
brew bundle
# Create symlinks, secrets template, and MCP servers
./setup.shAfter running setup.sh, edit .secrets and fill in your own token values (see .secrets.example for what's needed).
Claude Code configuration (global CLAUDE.md, settings.json, hooks, skills, agents, statusline) lives in a separate repo: agent-harness. Clone it and run its setup.sh to install.
To pull future updates from upstream:
git fetch upstream
git merge upstream/mainThe symlink setup (setup.sh) is platform-independent. Package installation varies:
- macOS — Install Homebrew, then run
brew bundleto install everything from theBrewfile. - Linux — Install the equivalent packages manually:
# Example (Ubuntu/Debian) sudo apt install neovim fzf # Install starship, antidote, zoxide, and ghostty per their docs
dotfiles/
.zshrc # Shell config (symlinked to ~/.zshrc)
.zsh_plugins.txt # Antidote plugin list (symlinked to ~/.zsh_plugins.txt)
.secrets # Token env vars — gitignored (symlinked to ~/.secrets)
.secrets.example # Template showing required keys
ghostty/config # Ghostty terminal config (symlinked to ~/.config/ghostty)
nvim/ # AstroNvim user config (symlinked to ~/.config/nvim)
starship.toml # Starship prompt config (symlinked to ~/.config/starship.toml)
tmux/ # tmux config and themes (symlinked to ~/.tmux.conf)
Brewfile # Homebrew package list
setup.sh # Idempotent symlink script
setup.sh creates symlinks from standard config locations into this repo. If a file or directory already exists at a target location, it's backed up to ~/.dotfiles-backup/<timestamp>/ before being replaced. Running the script multiple times is safe — it skips symlinks that already point correctly.
./uninstall.shRemoves all symlinks that point into this repo, removes MCP servers, and cleans up TPM. Only touches symlinks that actually belong to this dotfiles repo. If setup.sh backed up your original configs, it points you to the backup directory so you can restore them.
Homebrew packages are not uninstalled automatically — they may be shared with other tools. To remove them manually, refer to the Brewfile for what was added or use brew bundle cleanup --file=Brewfile --force.