This repo now serves two jobs:
- bootstrap a new macOS workstation
- keep shared shell and git configuration synchronized with local escape hatches
The current system is built around three commands:
install.shfor first-run setupsync.shfor canonical dotfile linkingaudit.shfor migration guidance on existing machines
Run this on a new Mac:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/jnovack/dotfiles/HEAD/install.sh)"The installer will:
- ensure Xcode Command Line Tools and Homebrew are available
- clone or refresh the repo in
~/Source/dotfiles - prompt for a machine role
- install baseline apps and tools
- install
oh-my-zshandpowerlevel10k - install Meslo Nerd Font for
powerlevel10kterminal glyphs - sync canonical
.zshrc,.gitconfig, and.p10k.zsh
The repo owns the canonical shared files:
.zshrc.gitconfig.p10k.zsh
They are symlinked into $HOME by sync.sh.
Machine-local additions live outside the repo:
~/.zshrc.local~/.gitconfig.local~/.p10k.local.zsh
The canonical files load those local companions natively, so there is no generated merged file to maintain.
Use ./audit.sh on existing machines before syncing. It will review:
- package drift against the registry in
packages/ .zshrcdrift versus the canonical repo file.gitconfigdrift versus the canonical repo file- presence of local companion files
- shell tooling like
oh-my-zsh,powerlevel10k, and the current login shell
The package registry is intentionally simple:
- shared formulas:
packages/formulas.txt - shared casks:
packages/casks.txt - role-based additions:
packages/roles/*.txt - custom installers:
hooks/*.sh
Routine changes should mostly mean editing those files, not rewriting the installer.