Personal configs — zsh, tmux, neovim, wezterm, plus a pile of shell scripts. Managed with GNU Stow.
git clone git@github.com:drewvlaz/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.shinstall.sh is idempotent. It will:
- Ensure Xcode Command Line Tools are present
- Install Homebrew (if missing)
brew bundlethe Brewfile- Back up any colliding files in
$HOME, thenstowthis repo into$HOME - Install TPM for tmux plugins
- Set
zshas the default shell
After it finishes, open a new shell and inside tmux hit prefix + I to install
tmux plugins.
.dotfiles/
├── .config/ # ~/.config/* (nvim, tmux, zsh, alacritty, …)
├── .scripts/ # ~/.scripts/* (on PATH; see .zshrc)
├── .zshrc .vimrc .wezterm.lua .bashrc
├── Brewfile
└── install.sh
Stow treats the repo as a single package and mirrors its tree into $HOME:
cd ~
stow --target="$HOME" --restow .dotfiles # link / relink
stow --target="$HOME" --delete .dotfiles # unlinkOccasionally you'll want to:
- Add a new config: drop it in
.dotfiles/mirroring its target path (e.g.~/.config/foo/bar→.dotfiles/.config/foo/bar), thenstow --target="$HOME" --restow .dotfiles. - Ignore a file from stowing: add a pattern to
.stow-local-ignore. - Update packages: edit
Brewfileand runbrew bundle --file=~/.dotfiles/Brewfile. To clean up drift:brew bundle cleanup --file=~/.dotfiles/Brewfile.
~/.secris sourced by.zshrcfor machine-local secrets — keep it out of the repo..config/zsh/historyand.config/tmux/plugins/*are stow-ignored so they stay machine-local.