Skip to content
Drew Daniels edited this page Oct 6, 2026 · 5 revisions

Dotfiles

Dotfiles and first-run setup are managed by chezmoi. Package installation and dev tool setup are handled by chezmoi hooks and run-once scripts.

New Machine Setup

macOS

  1. Sign into the App Store.
  2. Make sure git ls-remote https://github.com/Drew-Daniels/books.git works if private external repos should clone on the first run.
  3. Run:
sh -c "$(curl -fsLS https://get.chezmoi.io)" -- init --apply https://github.com/Drew-Daniels/dotfiles.git

If that check fails, apply once without externals, authenticate GitHub, then apply again:

sh -c "$(curl -fsLS https://get.chezmoi.io)" -- init --apply --exclude=externals https://github.com/Drew-Daniels/dotfiles.git
chezmoi apply
  1. Complete manual post-install steps.

Debian

  1. Set up sudoers
  2. Run:
sudo apt install -y git curl
sh -c "$(curl -fsLS https://get.chezmoi.io)" -- init --apply https://github.com/Drew-Daniels/dotfiles.git
systemctl reboot

Arch Linux

  1. Run:
sudo pacman -S git chezmoi
chezmoi init https://github.com/Drew-Daniels/dotfiles.git --apply
  1. Complete manual post-install steps (mandb, yay init, Wayland, etc.)

QubesOS

  1. From dom0: set up qubes and template packages via Salt
  2. From personal AppVM:
chezmoi init https://github.com/Drew-Daniels/dotfiles.git --apply
  1. Complete manual post-install steps (electrum-ltc, Whonix, Monero, i3)

FreeBSD

Follow the manual setup guide.

NixOS

Follow the NixOS guide.

How It Works

chezmoi init --apply triggers a bootstrap chain:

  1. Pre-hook creates baseline directories and installs the platform package manager.
  2. chezmoi applies dotfiles, templates, and externals.
  3. Run-once scripts install packages, runtimes, stubs, git hooks, and debug adapters.
  4. Post-apply hook removes the temporary /usr/local/bin/chezmoi installer binary on macOS.

See Bootstrap for package data, hook order, and update workflow.

Reference

Page Description
Bootstrap Hook order, package lists, update workflow
QubesOS Salt Salt states for template VM and qube setup
Secrets Secret export workflow (1Password, mise, fish)
Restic Backup strategy (S3)
Git Worktree workflow
SSH / GnuPG Key management
Theme Light/dark toggle

Per-Application Notes

Alacritty - Bat - Email - Flutter - Ghostty - kew - Mopidy - Navidrome - Neovim - Obsidian - Ollama - Podman - StreamRip - USB Drives - Vue.js - Wireguard

Clone this wiki locally