Phase 1 of macOS setup. A clean, idempotent way to spin up a new Mac with Zsh, dotfiles, and a few sane defaults. Easy to read, easy to trust.
- Safe by default. Any conflicting dotfiles get backed up. Defaults come with a rollback script.
- Idempotent. Run it again anytime.
git clone https://github.com/sevmorris/mrk1.git ~/mrk1
cd ~/mrk1
make fix-exec && make install
make fix-execjust makes sure all scripts are executable before install.
You can also run./scripts/installdirectly.
- Zsh as your login shell
- Dotfiles safely linked into
$HOMEwith timestamped backups - Scripts & tools from both
scripts/andbin/linked into~/bin - macOS defaults applied by
scripts/defaults.sh, with an automatic rollback script
make fix-exec # ensure scripts/* and bin/* are executable
make install # full bootstrap (dotfiles → tools → defaults)
make update # pull latest changes and reinstall
make tools # link scripts/bin into ~/bin
make dotfiles # link dotfiles with backups
make defaults # apply defaults + write rollback script
make status # check installation status
make uninstall # unlink scripts and optionally roll back defaults
# Run specific phase only
./scripts/install --only dotfiles
./scripts/install --only tools
./scripts/install --only defaults
# Preview changes without applying
./scripts/install --dry-run
# Validate configuration before installing
./scripts/install --validate
# Continue even if a phase fails
./scripts/install --continue-on-error
# Skip specific phases
./scripts/install --no-dotfiles --no-defaults
# See all options
./scripts/install --help# Check what's installed and linked
./scripts/status
# or
make status./scripts/uninstallWhat it does:
- Removes symlinks created in
~/bin - Optionally runs
~/.mrk1/defaults-rollback.sh - Leaves your personal files and dotfiles alone
Whenever you run make defaults or the main installer, a rollback helper is generated:
~/.mrk1/defaults-rollback.sh
It only records keys changed by mrk1, so you can safely undo tweaks later.
bin/ # small user-facing tools
scripts/
install # main installer
uninstall # removes symlinks + optional defaults rollback
defaults.sh # apply defaults + author rollback
dotfiles/ # shell/editor/git configs, etc.
Makefile
README.md
Both
scripts/andbin/are linked into~/bin.
Keep "end-user" commands inbin/, bootstrap helpers inscripts/.
Installer output goes to:
~/mrk1-install.log
Uninstall logs straight to the terminal.
- Keep scripts short and clear.
- Comment every macOS default you touch.
- Avoid "cleanup" or destructive operations.
- mrk2 — Phase 2: Homebrew packages, applications, and Mac App Store apps