Simple dotfiles for macOS on Apple Silicon. Managed by make.
- macOS only β no Linux/Windows support needed. Bash-isms, macOS-specific tools (
defaults,scutil,pbcopy,hdiutil), and Homebrew paths are all intentional. - Apple Silicon only β Homebrew is assumed at
/opt/homebrew. Intel Mac compatibility is not a goal.
Flat layout β config files at the root or in small topic directories, symlinked to ~/ via make link.
Makefileβ Installer. Runmakefor full install, or individual targets (make link,make brew, etc.)zshrcβ All shell config in one file (PATH, env, options, prompt, aliases, functions)Brewfileβ All Homebrew packages and casksvim/vimrcβ Vim configurationnative-installs.shβ Native shell installers for tools not managed by Homebrew (e.g., Claude Code)macos/defaults.shβ macOS system preferences
make link creates these:
zshrcβ~/.zshrcgit/gitconfigβ~/.gitconfiggit/gitignoreβ~/.gitignoregit/gitmessageβ~/.gitmessagevim/vimrcβ~/.vimrcvim/vimrc.bundlesβ~/.vimrc.bundlesmacos/hushloginβ~/.hushlogin
- Keep secrets out of the repo. Use
~/.localrcfor private env vars. git/gitconfig.localis gitignored and holds user-specific git identity. Create viamake gitsetup.- When adding or removing a setting from
macos/defaults.sh, always updatemacos/audit.shto match. - When adding a new tool, check the vendor's recommended installation method. If the vendor recommends a native installer over Homebrew, add it to
native-installs.sh. Otherwise, add it toBrewfile. - When adding or modifying Makefile targets, verify the
alltarget order respects dependencies (e.g.,brewbefore targets that use Homebrew-installed tools,linkbefore anything that reads symlinked config). - When making structural changes (new files, new Makefile targets, new symlinks), update
README.mdto match.