β¨ One command to rule them all β¨
Dotfiles for bootstrapping and backing up my Mac development environment.
A single ./install script symlinks configs into place and installs all dependencies via Homebrew.
| Module | Description | |
|---|---|---|
| π | zsh | Oh My Zsh + Powerlevel10k, autosuggestions, syntax highlighting, lazy NVM, custom aliases |
| π | nvim | Neovim with Lazy.nvim β LSP, Treesitter, Telescope, Neo-tree, DAP & 40+ plugins |
| π₯οΈ | tmux | Vi-mode, true color, mouse support, session persistence (resurrect/continuum), modular config |
| πΊ | homebrew | Brewfile with CLI tools, languages, services, and fonts |
| π¦₯ | lazygit | Tokyo Night-themed lazygit config |
| β‘ | scripts | t (tmux session switcher), update (update all tools), nvim-health (setup checker) |
| π | nvm | Default global npm packages (LSP servers, formatters, linters) |
| πΌοΈ | iterm | Exported iTerm2 profile backup |
| π§ | git | Git config with aliases, global gitignore |
| π | macos | macOS system preferences script (keyboard, Finder, Dock, screenshots) |
| π | editorconfig | 2-space indent (4 for PHP/Python), LF endings, UTF-8 |
| π€ | claude | Claude Code settings β ~/.claude/settings.json (gitignored) |
chmod +x install
./installπ What the install script does
| Step | Action |
|---|---|
| 1οΈβ£ | Install Xcode Command Line Tools (if missing) |
| 2οΈβ£ | Install Oh My Zsh (if missing) |
| 3οΈβ£ | Install Homebrew (if missing) |
| 4οΈβ£ | Symlink dotfiles (~/.zshrc, ~/.zprofile, ~/.p10k.zsh, ~/.tmux.conf, ~/.config/nvim, etc.) |
| 5οΈβ£ | Run brew bundle to install everything in the Brewfile |
| 6οΈβ£ | Set up NVM with default packages |
| 7οΈβ£ | Symlink lazygit, editorconfig, & git config |
| 8οΈβ£ | Clone TPM (Tmux Plugin Manager) |
| 9οΈβ£ | Apply macOS system preferences |
| π | Create ~/Code workspace directory |
You can also install modules selectively:
make brew # Just install Homebrew packages
make nvim # Just symlink Neovim config
make tmux # Just set up tmux
make zsh # Just link zsh config
make nvm # Just set up NVM defaults
make update # Update everything (brew, nvim plugins, tpm, omz)
make clean # Remove all symlinks (uninstall).
βββ πΊ homebrew/Brewfile # Homebrew dependencies
βββ βοΈ install # Bootstrap script
βββ ποΈ uninstall # Remove all symlinks
βββ π Makefile # Selective install targets
βββ πΌοΈ iterm/backup.itermexport # iTerm2 profile
βββ π¦₯ lazygit/config.yml # Lazygit theme
βββ π§ git/
β βββ gitconfig # Git aliases & settings
β βββ .gitignore_global # Global ignores
βββ π macos/
β βββ defaults.sh # macOS system preferences
βββ π nvim/ # Neovim config (Lazy.nvim)
β βββ init.lua
β βββ lua/user/ # Options, keymaps, plugin specs
β βββ snippets/ # Snippets (TS, TSX)
βββ π nvm/default-packages # Global npm packages
βββ β‘ scripts/
β βββ t # Tmux session switcher
β βββ update # Update all tools
β βββ nvim-health # Neovim setup health check
βββ π₯οΈ tmux/
β βββ tmux.conf # Core settings
β βββ theme.conf # Status line & colors
β βββ keybindings.conf # Key bindings
β βββ plugins.conf # TPM plugin declarations
βββ π zsh/
β βββ .zprofile # Login shell (Homebrew)
β βββ .zshrc # Shell config
β βββ .p10k.zsh # Powerlevel10k theme
β βββ custom/
β βββ aliases.zsh # Custom aliases
β βββ tools.zsh # pyenv & Docker init
β βββ local.zsh.example # Machine-specific template
βββ π .editorconfig # Editor formatting rules
βββ π€« .hushlogin # Suppress login banner
ripgrep Β· fzf Β· lazygit Β· awscli Β· kubectl Β· buf Β· wget Β· ngrok
π¨ Tokyo Night colorscheme Β· π Telescope fuzzy finder Β· π§ LSP (TypeScript, Lua, Bash, Vue, PHP, JSON, CSS/HTML) Β· π‘ nvim-cmp completions Β· π§Ή conform.nvim formatting Β· π nvim-lint Β· π DAP debugging Β· π Gitsigns Β· π Bufferline Β· π Lualine
| Alias | Command | Description |
|---|---|---|
lg |
lazygit |
π¦₯ Open lazygit |
wip |
git add . && git commit -m 'chore: wip' |
πΎ Quick work-in-progress commit |
code |
cd ~/Code |
π Jump to projects |
.. / ... / .... |
cd up 1/2/3 levels |
πΌ Quick navigation |
ll |
ls -lAFh |
π Detailed file listing |
mkcd <dir> |
mkdir -p && cd |
π Create & enter directory |
update # Run from anywhere β updates brew, nvim plugins, tpm, omz
nvim-health # Check that LSP servers, formatters, and tools are installedCreate zsh/custom/local.zsh (gitignored) for settings that shouldn't be committed:
cp zsh/custom/local.zsh.example zsh/custom/local.zsh| π | Neovim config heavily influenced by Jess Archer β see their course on Laracasts |
| β‘ | Tmux session script (t) inspired by ThePrimeagen |
| π‘ | More dotfile inspiration at dotfiles.github.io |
β‘ Happy hacking! β‘