Personal macOS dotfiles managed with GNU Stow.
To bootstrap a new machine, run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/relativesanity/dotfiles/refs/heads/main/bin/bootstrap.sh)"This will:
- Install Homebrew, Git, and Zsh
- Clone this repository to
~/.dotfiles - Detect environment (home vs work) and install appropriate packages
- Symlink all configurations using Stow
To test a specific branch:
DOTFILES_BRANCH=branch-name /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/relativesanity/dotfiles/refs/heads/branch-name/bin/bootstrap.sh)"GitHub CLI
gh auth loginHetzner Cloud CLI
Edit ~/.config/hcloud/cli.toml and add your API token.
Git Local Config
Create ~/.config/git/config.local for work-specific settings:
[user]
email = "work@example.com"Local Environment Variables
Create ~/.env.local.sh for machine-specific environment variables:
export OPENAI_API_KEY="sk-..."
export WORK_PROJECT_PATH="$HOME/work"Environment-Specific Packages
The dotfiles automatically detect your environment based on username:
- Home (
relativesanity): Installs core packages + all personal packages - Work (other usernames): Installs core packages only
Package files:
Brewfile- Core packages (git, stow, gh, neovim, starship, zoxide, fzf, tmux, ghostty)Brewfile.home- Personal packages (full setup)Brewfile.work- Work-specific packages (add as needed)Brewfile.local- Machine-specific overrides (gitignored)
To add packages on a work machine:
cd ~/.dotfiles
echo 'brew "package-name"' >> Brewfile.work
repackDock and Window Animations
~/.dotfiles/bin/m.shSystem Permissions Grant permissions when prompted:
- Accessibility (for Hammerspoon, AeroSpace)
- Input Monitoring (for Kanata, if installed)
- Screen Recording (for Hammerspoon screenshots)
Only needed for home row mods on MacBook internal keyboard.
See kanata/kanata.md for detailed instructions.
Update everything
redot # Alias for ./bin/redot.shUpdate packages only
repack # Alias for ./bin/repack.shRe-symlink configs
restow # Alias for ./bin/restow.sh