Personal dotfiles for macOS developer tooling.
git clone https://github.com/<you>/dotfiles_ng.git ~/dotfiles
cd ~/dotfiles
chmod +x bootstrap.sh
./bootstrap.shbootstrap.sh sets up a fresh machine end-to-end. It is idempotent — safe to re-run.
- Homebrew — installs if missing (supports Apple Silicon + Intel)
- Brew bundle — installs all packages and casks from
Brewfile - oh-my-zsh — installs if missing, preserves existing
.zshrc - Node.js LTS — via nvm (
nvm install --lts) - SDKMan — Java / Kotlin / Scala version manager
- gh copilot extension — skipped if
ghis not yet authenticated; rungh auth loginfirst if needed - Symlinks — runs
install.shto link all config files
Run this alone when you only want to refresh config symlinks without reinstalling tools.
./install.sh| Dotfile | Target | Description |
|---|---|---|
copilot/config.json |
~/.copilot/config.json |
GitHub Copilot CLI settings |
copilot/mcp.json |
~/.copilot/mcp.json |
MCP server configurations |
copilot/agents/ |
~/.copilot/agents/ |
Custom Copilot agents |
claude/settings.json |
~/.claude/settings.json |
Claude Code settings |
zsh/.zshrc |
~/.zshrc |
Zsh config — oh-my-zsh, PATH, aliases, toolchain |
zsh/mcalapurge.zsh-theme |
~/.oh-my-zsh/themes/mcalapurge.zsh-theme |
Custom oh-my-zsh prompt theme |
nvim/ |
~/.config/nvim/ |
Neovim config (AstroNvim-based) — synced via rsync, not symlinked |
Existing files are backed up as .bak before being replaced.
Note: Neovim config is copied with rsync rather than symlinked. This avoids issues with plugins and highlight groups that don't resolve paths correctly through symlinks.
install.shcallssync-nvim.sh --applyautomatically.
chmod +x vscode/extensions.sh
./vscode/extensions.shInstalls all extensions in parallel. Edit vscode/extensions.sh to add/remove extensions.
- Copilot —
config.jsonomits machine-specific fields. Rungh auth loginthengh extension install github/gh-copiloton a fresh machine (or re-runbootstrap.shafter authenticating). - MCP servers — set
MDB_MCP_CONNECTION_STRINGandTFE_TOKENin your environment for the MongoDB and Terraform MCP servers incopilot/mcp.json. - Neovim — run
:Lazy syncafter first launch to install plugins. To manually re-sync the config files after making changes in this repo, run./sync-nvim.sh --apply(use./sync-nvim.shwithout--applyfor a dry-run preview). - SDKMan — install a JDK after bootstrap:
sdk install java. Brewfile.lock.jsonis gitignored — generated bybrew bundle, not committed.