Small macOS dotfiles repo with one default setup.
The repo keeps tracked config readable and installs it conservatively:
install.shlinks tracked files only..configis linked file-by-file instead of as one giant symlink.- Private machine overrides stay out of git.
- Homebrew uses one canonical config.
git clone https://github.com/j-mes/dotfiles.git ~/Developer/dotfiles
cd ~/Developer/dotfiles
./install.shOptional install flows:
./install.sh --auto-brew
./install.sh --verify
./install.sh --dry-runSupported flags:
--auto-brew: runbrew bundle --file=.config/homebrew/Brewfile--repair-links: repair broken symlinks that already point into this repo--verify: report whether$HOMEresolves back to this repo without making changes, and exit non-zero on mismatches or missing files--dry-run: print link actions without mutating anything--force: allow links even when the destination parent already resolves inside the repo
If ~/.gitconfig does not exist, install.sh copies .gitconfig.example into place.
Tracked shell config lives in .zshrc and .config/oh-my-zsh.
.zshrc stays thin and loads:
exports.zshfor PATH and environment setupaliases.zshfor shell aliasesmachine.zshfor safe machine-specific logiclocal.zshfor private overrides
Shared package and editor config lives in:
.config/homebrew/Brewfile.config/zed/settings.json
Keep sensitive or machine-specific shell config in ~/.config/oh-my-zsh/local.zsh. That file is git-ignored.
Your real ~/.gitconfig is intentionally not tracked. Use .gitconfig.example as the starting point. The template uses zed --wait as the default editor.
The upgrade alias runs .config/upgrade.zsh, which updates Oh My Zsh, Homebrew, and Mac App Store packages when those tools are installed.
Run the installer regression test with:
zsh ./tests/install.sh