These are my personal dotfiles, managed with chezmoi, for setting up a consistent development environment across macOS and Linux systems.
This repository configures the following tools and applications:
- oh-my-zsh - Framework for managing Zsh configuration
- zsh - Shell configuration with custom prompt and aliases
- Claude Code - AI coding assistant CLI from Anthropic (Modular profile only)
- uv - Fast Python package installer and resolver
- nvm - Node Version Manager for managing Node.js versions
- pnpm - Fast, disk space efficient package manager for Node.js
- FiraCode Nerd Font - Monospaced font with programming ligatures and icons
- Neovim - Hyperextensible Vim-based text editor
- GitHub CLI (gh) - GitHub's official command line tool
- Ghostty - Fast GPU-accelerated terminal emulator
- Homebrew - Package manager for macOS (macOS only)
- Secrets Management - 1Password integration via chezmoi for injecting API tokens and credentials
- Pixi - Package manager for Modular/MAX environments (Modular profile only)
Clone this repository and run the bootstrapper:
git clone <your-repo-url> ~/.dotfiles
cd ~/.dotfiles
./install.shThe bootstrapper installs chezmoi (if needed) and runs chezmoi init --apply with the personal profile by default. To install the Modular profile:
DOTFILES_PROFILE=modular ./install.shThe bootstrapper then:
- Installs required tools and applications for the selected profile via the
run_once_before_install-packages.sh.tmplscript (skipping anything already present) - Deploys all configuration files to their correct locations
- Sets zsh as the default shell
This repo is a chezmoi source directory. Files use chezmoi naming conventions:
dot_config/→~/.config/(ghostty, gh, nvim, zsh, karabiner)dot_claude/→~/.claude/(Claude Code settings; Modular profile only)dot_zshenv→~/.zshenv(sets ZDOTDIR)symlink_dot_zshrc→~/.zshrc(symlink to.config/zsh/.zshrc)dot_config/zsh/dot_zshrc.tmpl→~/.config/zsh/.zshrc(zsh configuration with optional 1Password-backed secrets)max/→~/max/(MAX/Modular project workspace; Modular profile only)run_once_before_install-packages.sh.tmpl→ package installation (runs once).chezmoi.toml.tmpl→ generated local chezmoi config with persisted profile data
Shared secrets are loaded opportunistically from 1Password at shell startup when available, but missing 1Password access should not prevent chezmoi from applying dotfiles.
Note: This repo lives at ~/dotfiles, not the chezmoi default (~/.local/share/chezmoi). When running chezmoi commands manually, pass -S ~/dotfiles:
chezmoi -S ~/dotfiles diff
chezmoi -S ~/dotfiles apply ~/.config/ghostty/configThe install.sh bootstrapper handles this automatically via chezmoi init --apply.
Karabiner configuration is automatically skipped on non-macOS systems.
If you fork this repository for your own use, make sure to update the following:
- Review the shell aliases and functions in
dot_config/zsh/dot_zshrcto match your preferences - Modify the Claude Code permissions in
dot_claude/settings.jsonif desired - Ensure no API keys or tokens are committed to the repo
These dotfiles are designed to work on:
- macOS (tested on Apple Silicon only)
- Linux (Ubuntu/Debian-based distributions)
Platform-specific packages are handled via chezmoi templates in the run_once_before_install-packages.sh.tmpl script.
This work has been dedicated to the public domain under CC0 1.0 Universal. You can copy, modify, distribute and use the work, even for commercial purposes, all without asking permission. See the LICENSE file for details.
To the extent possible under law, the author has waived all copyright and related rights to this work.