My dotfiles for macOS on Apple Silicon.
Install Homebrew, then:
git clone https://github.com/riki-nishida/dotfiles.git ~/dotfiles
~/dotfiles/bootstrap.shbootstrap.sh runs brew bundle, install.sh and mise install, then makes fish the login shell. It is safe to rerun.
Rust comes from its own installer (PATH already covers it):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-pathinstall.sh only handles the links:
- Symlinks everything under
home/into$HOME, entry by entry inside.configand.claude - Moves anything already in the way to
*.backup.<timestamp> - Removes links to entries deleted from
home/ - Creates an empty
~/.gitconfigsogit config --globaldoesn't write into the repo - Is safe to rerun
home/
├── .zshenv, .zprofile, .zshrc
├── .claude/ settings.json, CLAUDE.md
└── .config/ fish, gh, ghostty, git, mise, nvim
- New tool: add its directory under
home/.config/and reruninstall.sh - Directly under
home/, only.configand.claudecan be directories;install.shrefuses others such as.localso it doesn't move the existing one aside - Files the tools write at runtime (credentials, state) go in
.gitignore - Some tracked files are rewritten by their tools and show up in
git status:.claude/settings.json,nvim/lazy-lock.json,nvim/lazyvim.json,gh/config.yml
- Homebrew at
/opt/homebrew - fish as the login shell; zsh is set up only so tools such as Claude Code get the same PATH and mise tools
- Languages via mise, except Rust via rustup