A dotfiles management system using Chezmoi for orchestration and best-in-class tools (mise, homebrew) for package management.
This dotfiles repository provides a way for managing my development environment across multiple machines with a focus on:
- Lightweight operation: Everything runs on-demand, no background daemons
- Modular design: Clean separation of concerns with specialized tools
- Cross-platform compatibility: Works on macOS and Linux with OS-specific settings
- Reproducibility: Version-controlled configurations
Chezmoi serves as the central orchestrator for the entire dotfiles ecosystem:
- Manages configuration files with templating support
- Runs scripts in a controlled, ordered manner
- Handles machine-specific differences
- Provides a consistent way to update configurations
The repository integrates several specialized tools:
-
Mise: Manages language SDKs, runtimes, and CLI binaries
- Handles multiple versions of languages (Rust, Go, Node, Python, etc.)
- Manages global tool installations via pipx, npm, etc.
- Manages checksum-verified CLI binaries (kubectl, helm, etc.) via its
aqua:backend, with a checked-inmise.lockfor supply-chain integrity - Packages: .config/mise/config.toml
-
Homebrew: Manages system packages (Linux/MacOS) and GUI apps (macOS)
- Uses Brewfile for reproducible installations
- Handles GUI applications via Casks
- Packages:
- System: MacOS | Linux
- Docker: Brewfile.docker
- GUI: Brewfile.gui
-
Krew: Manages kubectl plugins (ctx, ns, stern, etc.)
- Uses a simple text file listing required plugins
- Packages: krew-plugins.txt
Install Chezmoi and initialize with this repository:
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply ppat/dotfilesChezmoi will:
- Install required tools (Homebrew, Mise)
- Set up environment files
- Configure your shell and environment
To update system/environment with latest version from git,
chezmoi updateChezmoi will:
- Fetch latest from git
- Apply all the updates
- DESIGN.md — why this repo is structured the way it is: the three-package-manager split, how the mise install/upgrade scripts straddle the render phase, secrets handling, and CI/Renovate design.
- TESTING.md — how a change here is actually verified before merging.
- CLAUDE.md — command reference and conventions for AI coding assistants working in this repo.