My dotfiles for macOS and Linux, managed with chezmoi.
- Theme: Catppina, a custom theme based on Catppuccin.
- Font: JetBrains Mono.
- Terminal: Ghostty on macOS.
- Editors: Helix and Zed on macOS.
- Shell: Zsh.
- Prompt: Pure.
- Session manager: zmx.
- Tools:
btop,delta,eza,fzf,vivid,yazi, and more.
During chezmoi init, choose one profile:
| Profile | Platform | Package manager |
|---|---|---|
pinamac |
macOS | Homebrew Bundle |
isl-server |
Debian/Linux | APT, bin, and uv |
The selected profile is saved in chezmoi's generated configuration under [data].
Initialize and apply the dotfiles from GitHub:
sh -c "$(curl -fsLS https://get.chezmoi.io/lb)" -- init --apply pinanekOr, with wget:
sh -c "$(wget -qO- https://get.chezmoi.io/lb)" -- init --apply pinanekChoose pinamac or isl-server when prompted. To apply later changes:
chezmoi applyUse chezmoi diff to preview managed-file changes before applying them.
.chezmoiroot # Uses ./home as the chezmoi source root
home/
βββ .chezmoi.toml.tmpl # Prompts for and persists the selected profile
βββ .chezmoiignore # Profile-specific file and script filtering
βββ .chezmoiscripts/ # Ordered run_onchange bootstrap scripts
βββ .chezmoitemplates/ # Package manifests and shared script templates
βββ dot_config/ # Managed ~/.config contents
βββ dot_zshrc # Managed ~/.zshrc
dots update # Update all packages for the active profile
dots update system # Homebrew/MAS or APT only
dots update node # fnm and Node.js LTS
dots update rust # Rust toolchains and Cargo tools
dots update editors # Helix and Mitos
dots update tools # bin, pnpm, and uv tools/Python
dots theme update # Sync Catppina themes and apply dotfiles
dots diff # Preview managed-file changes
dots apply # Apply dotfiles, including bootstrap scripts
dots pull # Fast-forward from origin main without applying dotfiles
dots push # Commit all changes as "chore: update" and push to origin main
dots completion zsh # Generate Zsh completion
dots help # Show commands and active profileKeep machine-specific settings in unmanaged local files:
~/.zshrc_localis sourced by~/.zshrcand can contain local aliases, environment variables, or shell settings.~/.gitconfig.localis included by~/.gitconfigand can contain local Git identity or repository-specific settings.
# ~/.zshrc_local
export EXAMPLE_LOCAL_SETTING=value# ~/.gitconfig.local
[user]
name = Your Name
email = you@example.com