Personal macOS development environment bootstrap.
/\
/ \
/----\
| ++ |
| ++ |
| |
/|____|\
/_||||||_\
/_||_\
/ \
/____\
||
||
/__\
Install Xcode Command Line Tools first if Git is not available yet:
xcode-select --installClone and bootstrap:
git clone git@github.com:vitordwb/dotfiles.git ~/dotfiles
cd ~/dotfiles
./bootstrap.shIf SSH is not configured yet, clone over HTTPS first:
git clone https://github.com/vitordwb/dotfiles.git ~/dotfilesbootstrap.sh is safe to rerun. It installs system dependencies, links dotfiles, installs runtimes, installs tmux plugins, creates an SSH key when missing, applies macOS defaults, and runs a doctor check.
Homebrew packages and apps are defined in Brewfile.
Runtime setup:
Node 24 via nvm
Bun
global npm packages from runtime/npm-global.txt
Dotfile packages linked with GNU Stow:
git
tmux
nvim
zsh
borders
ssh
aerospace
btop
Secrets are not tracked. SSH private keys, tokens, local caches, and app runtime state stay outside this repo.
Edit config files normally. Symlinked configs are already inside this repo, so commit and push after changes:
cd ~/dotfiles
git status
git add .
git commit -m "Update dotfiles"
git pushInstall or relink all dotfiles:
./install.shInstall selected packages only:
./install.sh git zsh tmuxRun health checks:
./scripts/doctor.shIf a config still exists as a regular file or directory in ~, copy it into this repo before linking it:
cd ~/dotfiles
./sync-from-home.sh
git diff
./install.shinstall.sh backs up conflicting regular files to ~/.dotfiles-backup/<timestamp>/ before creating symlinks.
The bootstrap creates ~/.ssh/id_ed25519 only if it does not already exist. It copies the public key to the clipboard when possible so it can be added to GitHub.
After adding the key to GitHub, switch the repo remote to SSH if you cloned with HTTPS:
cd ~/dotfiles
git remote set-url origin git@github.com:vitordwb/dotfiles.gitSkip macOS defaults during bootstrap:
SKIP_MACOS_DEFAULTS=1 ./bootstrap.shUse a different Node major version:
NODE_VERSION=24 ./bootstrap.sh