Repository navigation
Bootstrap
Drew Daniels edited this page Oct 6, 2026
·
1 revision
chezmoi owns both dotfiles and first-run setup. The setup path is intentionally shell-based so it is easy to inspect and rerun.
bare system
-> chezmoi init --apply
-> read-source-state.pre hook
-> .install-directories.sh
-> .install-package-manager.sh
-> .install-password-manager.sh
-> chezmoi applies dotfiles
-> run_once_after_01-install-primary-packages.sh.tmpl
-> run_once_after_02-install-secondary-packages.sh.tmpl
-> run_once_after_03-install-stubs.sh.tmpl
-> run_once_after_05-install-git-hooks.sh.tmpl
-> run_once_after_06-install-codelldb.sh.tmpl
-> run_once_after_07-install-vscode-js-debug.sh.tmpl
-> run_once_after_08-install-vscode-chrome-debug.sh.tmpl
-> run_once_after_09-install-vscode-xml.sh.tmpl
-> apply.post hook
Package lists live in the chezmoi source directory:
| Platform | File |
|---|---|
| macOS, Debian, Fedora/QubesOS | ~/.local/share/chezmoi/.chezmoidata/packages.yaml |
| Arch Linux | ~/.local/share/chezmoi/.chezmoidata/archpackages.jsonc |
macOS uses Homebrew taps, formulae, casks, and Mac App Store apps. Arch uses pacman and yay when available. Debian uses apt plus selected cargo packages. Fedora/QubesOS uses dnf, COPR, cargo, and npm.
The macOS package hook:
- loads Homebrew with
/opt/homebrew/bin/brew shellenv - trusts
homebrew-zathura/zathurabefore installing zathura - installs
kotlin-lspas a Homebrew cask - installs zathura as formulae from the zathura tap
- installs
mdbtools, not the oldmdb-toolsname
Edit the package data file, then run:
chezmoi applyOn macOS, brew bundle check runs first and brew bundle runs only when dependencies are missing or outdated.
For normal Homebrew maintenance:
hupgradeArch Linux maintenance still uses:
archlinux-upgrade.sh