Personal configuration files managed with GNU Stow.
| Package | Description |
|---|---|
claude |
Claude Code settings (skills fetched separately) |
git |
Global git config and gitignore (XDG-based) |
ghostty |
Ghostty terminal emulator |
mise |
Mise version manager |
nvim |
Neovim configuration |
starship |
Cross-shell prompt |
zellij |
Zellij terminal multiplexer |
zsh |
Zsh shell configuration (.zshrc, .zshenv, .zprofile) |
Run the bootstrap script to install all dependencies and deploy configurations:
git clone git@github.com:foxtrottwist/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup.shThe script will:
- Install Homebrew (if not present)
- Install required packages via Brewfile (stow, neovim, ripgrep, fd, zellij, mise, zsh, starship, ghostty)
- Install Oh My Zsh (if not present)
- Install Rust toolchain (if not present)
- Deploy all configurations via stow
- Fetch latest standalone skills from GitHub releases
If you prefer manual installation:
# Install all packages via Brewfile
brew bundle --file=Brewfile
# Or install individually:
# brew install stow neovim ripgrep fd zellij mise zsh starship
# brew install --cask ghostty
# Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Rust (optional but recommended)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shcd ~/dotfiles
# Deploy all configurations
stow claude git ghostty mise nvim starship zellij zsh
# Or deploy individually
stow nvim
stow zshRun the update command to pull latest, restow, and fetch skills:
./setup.sh --updateOr manually:
cd ~/dotfiles
git pull
stow -R claude git ghostty mise nvim starship zellij zsh
./setup.sh --fetch-onlyCheck that everything is working:
./setup.sh --verify# Create package structure
mkdir -p ~/dotfiles/[app]/.config/[app]
# Move existing config
mv ~/.config/[app]/* ~/dotfiles/[app]/.config/[app]/
# Deploy with stow
cd ~/dotfiles && stow [app]
# Commit
git add [app]
git commit -m "add [app] configuration"For configs that live in $HOME (not .config):
mkdir -p ~/dotfiles/[app]
mv ~/.[app]rc ~/dotfiles/[app]/
cd ~/dotfiles && stow [app]cd ~/dotfiles
stow -D [package] # Removes symlinksMost skills (iter, write, prompt-dev, chat-migration, code-audit) and the shortcuts-mcp server are bundled in the workflow-tools Claude Code plugin. The setup script fetches the two standalone skills from GitHub releases:
- dotfiles-skill — Manages this dotfiles repo from Claude Code
- submodule-sync — Git submodule workflow automation
Downloaded as .skill files and unpacked to ~/.claude/skills/.
To update standalone skills to latest releases:
./setup.sh --fetch-onlyThe git package stows a global git config and gitignore to ~/.config/git/ (the XDG default path). Shared settings like pull.rebase, push.autoSetupRemote, and rerere are tracked in the repo. Machine-specific settings (name, email) live in a local file that isn't stowed.
After stowing, create your local config:
git config --file ~/.config/git/config.local user.name "Your Name"
git config --file ~/.config/git/config.local user.email "you@example.com"If you already have a ~/.gitconfig, remove it so git uses the XDG path:
rm ~/.gitconfigThese tools are detected and configured automatically if present:
- Miniconda - Python environment manager (
~/miniconda3/) - LM Studio CLI - Local LLM tooling (
~/.lmstudio/) - Rover - Apollo GraphQL CLI (
~/.rover/)
If stow reports conflicts, existing files may need to be removed or backed up:
# Check what exists
ls -la ~/.config/nvim
# Back up and retry
mv ~/.config/nvim ~/.config/nvim.bak
stow nvimThe zsh configuration includes existence checks for optional tools. If you see errors:
- Run
./setup.sh --verifyto identify missing dependencies - Install missing tools or remove references from
.zshrc