Skip to content

Repository files navigation

Dotfiles

Personal dev environment configuration files — shell, terminal, editor, prompt, and AI tooling.

What's included

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

Getting started

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.sh

After 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/main

Platform notes

The symlink setup (setup.sh) is platform-independent. Package installation varies:

  • macOS — Install Homebrew, then run brew bundle to install everything from the Brewfile.
  • Linux — Install the equivalent packages manually:
    # Example (Ubuntu/Debian)
    sudo apt install neovim fzf
    # Install starship, antidote, zoxide, and ghostty per their docs

Directory structure

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

How setup.sh works

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

./uninstall.sh

Removes 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.

About

Ghostty | Zsh | Antidote | Starship | Neovim | AstroNvim | asdf | zoxide | fzf

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages