Personal macOS development environment — clone and run install.sh to get a fully configured machine.
git clone https://github.com/kamykaze/dotfiles.git ~/personal/projects/dotfiles
cd ~/personal/projects/dotfiles
./install.shinstall.sh will:
- Install Xcode Command Line Tools (if missing)
- Install Homebrew and all packages from
Brewfile - Create all dotfile symlinks (
_*→~/.) - Set up VS Code settings and extensions
- Wire up the Kanata keyboard LaunchAgent
After running install.sh, see SETUP_NOTES.md for manual steps (SSH keys, app licenses, first-time app setup).
Files prefixed with _ are symlinked into $HOME with the prefix replaced by .:
_zshrc → ~/.zshrc
_gitconfig → ~/.gitconfig
_tmux.conf → ~/.tmux.conf
_configs/ → ~/.configs/
| Script | Purpose |
|---|---|
install.sh |
Main entry point — delegates to all scripts below |
scripts/symlinks.sh |
Creates all dotfile symlinks |
scripts/homebrew.sh |
Installs Homebrew and runs Brewfile |
scripts/macos.sh |
Applies macOS system preferences via defaults write |
scripts/launchagents.sh |
Installs launchd services (Kanata auto-start) |
scripts/sync.sh |
Exports configs from apps that own their files (run daily via LaunchAgent) |
All scripts are idempotent — safe to run multiple times.
_zshrc— Zsh configuration (primary shell)_tmux.conf— Tmux configuration
_vimrc— Full Vim config with Pathogen plugin management, focused on web development (HTML/CSS/JS, Python/Django)_vimrc_bare— Minimal Vim config without plugins_vim/— Vim plugins (git submodules via Pathogen)
_gitconfig— Git aliases and settings_gitignore— Global ignore patterns
_configs/kanata.kbd— Kanata keyboard remapping:- Home row modifiers (ASDF / JKL;)
- Layers: numbers, navigation, symbols, shortcuts, mirror, plain, disabled
qmk_mappings/— QMK firmware layouts for physical keyboards
_configs/vscode-settings.json/vscode-keybindings.json— VS Code settings (symlinked by install.sh)_configs/vscode-extensions.txt— VS Code extensions listbettertouchtool/— BetterTouchTool presets (trackpad, keyboard, touchbar)utilities/scripts/chrome-tab-focus.sh— Focuses Chrome tabs (Gmail, Docs, Sheets, etc.) by URL and title, called by BetterTouchTool shortcuts
Files with secrets are kept out of the repo. Instead:
_configs/*.templatefiles contain the structure with placeholders like"token": "YOUR_API_KEY"- Real values are stored in LastPass
- See SETUP_NOTES.md for which LastPass notes to use
Symlinked files (~/.zshrc, ~/.gitconfig, etc.) are always in sync — editing them is editing the repo. Just git commit when ready.
For apps that own their config files (VS Code extensions, etc.), run:
./scripts/sync.sh # copies latest app configs into the repo
git diff # review changes
git add -p && git commit -m "chore: sync configs"See SETUP_NOTES.md for the full patterns. Quick summary:
- Config at
~/.*→ copy to_*, runscripts/symlinks.sh - Config at
~/Library/...→ copy to_configs/, add tosync.shandsymlinks.sh - Config at
~/.config/<app>/→ copy to_config/<app>/, runscripts/symlinks.sh - New Homebrew app → add to
Brewfile - Manual-install app → add to
apps.md - Config with secrets →
.templatefile only, real values in LastPass