Personal dotfiles and macOS workstation provisioning.
# Lightweight bootstrap: symlinks, shell config, utilities
./bootstrap.sh
# Full macOS provisioning (Homebrew, defaults, apps, shortcuts)
./macos_setup.sh [work|personal|server]This repo's remote is git@github.com:soldni/dotfiles.git, but on this machine the global ~/.ssh/config can inject the wrong identity via a broad Host * stanza. Setting only -i ~/.ssh/personal is not enough, because SSH still reads the global config and may offer another key first.
If git push starts authenticating as the wrong GitHub account, set a repo-local SSH command that ignores global SSH config entirely:
git config core.sshCommand 'ssh -F /dev/null -i ~/.ssh/personal -o IdentitiesOnly=yes'Why this works:
-F /dev/nulltellssshnot to read~/.ssh/config.-i ~/.ssh/personalpins the key for this repo.-o IdentitiesOnly=yespreventssshfrom offering extra identities from the agent or config.
Verify it with:
GIT_TRACE=1 git push --dry-run origin HEADYou should see Git invoke ssh -F /dev/null -i ~/.ssh/personal -o IdentitiesOnly=yes ... and the dry run should succeed.
- Shell config --
.bashrc(shared by bash/zsh),.tmux.conf,.vimrc - Editor/terminal settings -- Ghostty, Zed, VS Code, Cursor, Sublime Text, iTerm2
- macOS app preferences -- backed up and restored via
plist_manager.shusingdefaults export/import(quits and relaunches apps automatically) - macOS defaults and shortcuts --
macos_setup.sh,macos_shortcuts.sh - Utility scripts --
home-symlink/.local/scripts/
# Back up all tracked app preferences
./plist_manager.sh backup
# Restore all tracked app preferences
./plist_manager.sh restoreThe script derives the app name from the preference domain, quits it before export/import, and relaunches afterward. Sensitive keys (license, email, etc.) are stripped automatically during backup.
See AGENTS.md for full details.
