Personal macOS dotfiles managed with GNU Stow and mise. Configs for Neovim, zsh, tmux, git, and more, plus opinionated macOS defaults. mise installs the language runtimes and CLI tools; Homebrew covers only what mise can't (zsh, tmux, services, libraries, casks and fonts).
-
Install the Xcode command line tools (for
git) and Homebrew:xcode-select --install /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" eval "$(/opt/homebrew/bin/brew shellenv)"
-
Install mise (into
~/.local/bin;mise run updatekeeps it current withmise self-update) and log in to GitHub with theghit provides. mise uses the token for GitHub API calls; anonymously it runs out of rate limit partway through the install:curl https://mise.run | sh export PATH="$HOME/.local/bin:$PATH" mise exec gh -- gh auth login
On a network that blocks Sigstore (
*.sigstore.dev), mise can't verify release provenance and every install fails withTUF repository load failed. On such a machine, export these first (and keep them in the untracked~/.zshrc.work); SHA256 checksums still run:export MISE_GITHUB_ATTESTATIONS=false MISE_SLSA=false \ MISE_AQUA_GITHUB_ATTESTATIONS=false MISE_AQUA_COSIGN=false MISE_AQUA_SLSA=false \ MISE_GITHUB_GITHUB_ATTESTATIONS=false MISE_GITHUB_SLSA=false -
Clone the repo and run the bootstrap task:
git clone https://github.com/kevinrobayna/dotfiles ~/personal/dotfiles cd ~/personal/dotfiles touch ~/.secrets # KEY=value env vars the shell exports; never committed mise run bootstrap
It asks for your password a few times (
/etc/shells,chsh,tlmgr), and it is safe to re-run. -
Open a new terminal, start tmux, and press
prefix + Ito install the tmux plugins.
Every setup step is a mise file task in mise-tasks/. Run mise tasks to list them, or run any one on its own:
mise run bootstrap # Everything below, in order
mise run homebrew # Install Homebrew packages from the Brewfile
mise run link # Symlink configs into $HOME (via stow)
mise run shell # Set Homebrew zsh as the default shell
mise run macos # Apply macOS system defaults
mise run tools # Install runtimes and CLI tools from the mise config
mise run extras # nvim python/perl providers, LaTeX packages
mise run tmux # Install the tmux plugin manager
mise run docker # Docker CLI: Homebrew plugins (buildx), Keychain logins
mise run update # Upgrade mise, its tools and Homebrew packages, then brew-cleanup
mise run brew-cleanup # Uninstall formulae, casks and taps not in the Brewfileshomebrew and update both end with brew-cleanup, so anything installed with brew install but not added to the Brewfile (or the untracked ~/.Brewfile.work) is removed on the next run. Mac App Store apps are never touched.
To add a CLI tool, add it to config/.config/mise/config.toml (not the Brewfile) and run mise install.
Shell — zsh with starship prompt, zoxide smart cd, fzf fuzzy finder, eza ls replacement, and custom aliases
Editor — Neovim with LazyVim framework, language servers, treesitter, formatters, and git integration
Terminal — Ghostty and tmux with custom keybindings and status line
Git — delta for diffs, lazygit TUI, GPG commit signing, custom hooks
macOS — Hammerspoon hotkeys, Finder tweaks, keyboard repeat speed, Dock settings, and 30+ system defaults
Dev Tools — Docker via Colima, mise for language runtimes and CLI tools, AWS CLI, GCloud CLI, k9s
Scripts in bin/ are added to $PATH:
| Script | Description |
|---|---|
gwt |
Create a git worktree with interactive branch selection, opens in tmux |
gwt-rm |
Remove git worktrees and their associated tmux or Rex sessions |
gh-review |
List GitHub PRs requesting your review (direct + team) |
gh-reviewers |
Interactively add reviewers to a GitHub PR |
tmux-sessionizer |
Fuzzy-pick a project and open/attach a tmux session |
Configs are symlinked into $HOME using GNU Stow with three packages:
config/ -> $HOME (contains .config/ subtree: nvim, zsh, tmux, git, etc.)
gitconfig/ -> $HOME (--dotfiles flag: dot-gitconfig becomes .gitconfig)
claude/ -> $HOME (--dotfiles flag: dot-claude/ becomes .claude/)
Manual symlinks for apps that use ~/Library/Application Support/:
lazygit/config.yml -> ~/Library/Application Support/jesseduffield/lazygit/config.yml
lazydocker/config.yml -> ~/Library/Application Support/jesseduffield/lazydocker/config.yml
ghostty/config -> ~/Library/Application Support/com.mitchellh.ghostty/config
- macOS
- Homebrew and mise (see Bootstrapping a new laptop)
