@tnez/dotfiles
This is my collection of personal dotfiles.
- Clone this repo:
git clone https://github.com/tnez/dotfiles.git - Hop into directory:
cd dotfiles - Run the bootstrap script:
./bootstrap.sh
Dependencies are tracked in /Users/tnez/Code/tnez/dotfiles/brew/Brewfile and managed via brew bundle.
./scripts/brew-add.sh <package> # For formulas
./scripts/brew-add.sh <package> --cask # For casksThen manually:
- Edit
/Users/tnez/Code/tnez/dotfiles/brew/Brewfileto add description comment - Place entry alphabetically within its section
- Commit:
git add brew/Brewfile && git commit -m 'chore(brew): add <package>'
Weekly or as needed:
./scripts/brew-upgrade.shThis upgrades all installed packages. The Brewfile.lock.json tracks the "last known good" state but only updates when running a full brew bundle install --global (which installs ALL packages in the Brewfile).
- Brewfile: Desired packages (manually curated, commented, alphabetized)
- Brewfile.lock.json: Auto-generated snapshot of package versions from last successful
brew bundle install - The lockfile enables rollback:
git revert <commit>thenbrew bundle install --global
To update the lockfile (optional):
cd ~/Code/tnez/dotfiles
brew bundle install --global # Installs any missing packages and updates lockfile
git add brew/Brewfile.lock.json
git commit -m 'chore(brew): update lockfile'All packages use the --dotfiles flag to convert dot- prefixes:
stow --target=$HOME --dotfiles fish # Links fish/dot-config/fish → ~/.config/fish
stow --target=$HOME --dotfiles nvim # Links nvim/dot-config/nvim → ~/.config/nvim
stow --target=$HOME --dotfiles vim # Links vim/dot-vimrc → ~/.vimrc
stow --target=$HOME --dotfiles git # Links git/dot-gitconfig → ~/.gitconfigTo unstow a package:
stow --target=$HOME -D --dotfiles fish # Removes fish symlinks