These are my dotfiles. There are many like them but these ones are mine.
Built up over a few decades of Unix use, starting with zsh in 1995.
| Layer | Tool | Purpose |
|---|---|---|
| Dotfiles | chezmoi | Manage dotfiles across machines |
| System | nix-darwin | Declarative macOS configuration |
| Packages | Home Manager | User environment via Nix |
| Shell | zsh + Zim | Fast, minimal zsh framework |
| Prompt | Starship | Cross-shell prompt |
# Install chezmoi and apply dotfiles
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply ijcd
# Nix setup (if not already installed)
curl -L https://nixos.org/nix/install | sh
# Apply nix-darwin + Home Manager
darwin-rebuild switch --flake ~/.config/nix~/.local/share/chezmoi/
├── dot_config/
│ ├── nix/ # nix-darwin + Home Manager flake
│ ├── zsh/ # zsh config (zshrc, aliases, functions)
│ └── starship.toml # prompt config
├── dot_local/
│ └── bin/ # personal scripts (~/.local/bin)
├── dot_gitconfig # git configuration
├── dot_tmux.conf # tmux configuration
└── archive/ # historical configs (preserved for posterity)
Scripts live in ~/.local/bin with namespaced prefixes:
| Prefix | Domain |
|---|---|
git-* |
Git extensions (callable as git foo) |
docker-* |
Docker helpers |
term-* |
Terminal utilities |
macos-* |
macOS-specific tools |
| File | Purpose |
|---|---|
dot_config/zsh/zshrc |
Main zsh config |
dot_config/zsh/aliases.zsh |
Shell aliases |
dot_config/zsh/functions/ |
Autoloaded functions |
dot_gitconfig |
Git config with aliases |
dot_config/nix/flake.nix |
Nix system configuration |
# Chezmoi
chezmoi apply # Apply changes
chezmoi diff # See pending changes
chezmoi edit <file> # Edit a managed file
chezmoi cd # cd to chezmoi source dir
# Nix
darwin-rebuild switch --flake ~/.config/nix # Rebuild system
nix flake update # Update flake inputs
# Zim
zimfw update # Update Zim modules
zimfw compile # Recompile for speed- zmv:
zmv '(*).txt' '$1.md'- powerful bulk rename - fzf:
ctrl-rhistory,ctrl-tfiles - git aliases: See
git config --get-regexp aliasordot_gitconfig
I've been using zsh since 1995. The dotfiles have evolved through many incarnations:
- 1995-2000s: Scattered
.rcfiles, MIT Athena influence - 2000s: Custom module system with symlinks
- 2010s: zgen + oh-my-zsh + prezto modules
- 2024+: chezmoi + nix-darwin + Home Manager + Zim
See archive/ for historical configs preserved for posterity, including
my 1995 MIT Xresources, 2000s email infrastructure, and 2010s Ruby setup.