1
0
Fork 0
My dot files organized via chezmoi
Find a file
rain 919afd26fd Guard run_once_10 with os_family conditional + sudo everywhere
Script claimed to be arch-only in its comment but had no actual guard.
The body always ran, so on debian it tried pacman-key (which doesn't
exist), failed with 'command not found', and aborted the whole bootstrap
chain (run_once_20 and run_onchange_30 never executed).

Fixes:
1. Wrap entire body in {{ if eq .os_family "arch" }} ... {{ end }} so
   the script is a no-op on debian (logs a skip message instead of dying)
2. Prepend sudo to pacman-key, pacman -U, pacman -Syu, pacman -S, and
   grep /etc/pacman.conf — same user-vs-root pattern that bit run_once_00
2026-06-21 20:17:39 -04:00
dot_config Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00
.chezmoi.yaml.tmpl Fix .chezmoi.yaml.tmpl: handle missing ID_LIKE on debian-stable 2026-06-21 19:37:06 -04:00
.chezmoiignore Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00
dot_gitconfig.tmpl Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00
dot_tmux.conf Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00
dot_zshrc.tmpl Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00
README.md README: use HTTPS URL for bootstrap clone 2026-06-21 18:45:53 -04:00
run_once_00-install-bootstrap-tools.sh.tmpl Fix run_once_00: prepend sudo to all package operations 2026-06-21 19:46:54 -04:00
run_once_10-add-chaotic-aur.sh.tmpl Guard run_once_10 with os_family conditional + sudo everywhere 2026-06-21 20:17:39 -04:00
run_once_20-install-user-packages.sh.tmpl Add Maple Mono NF font install to bootstrap 2026-06-21 18:25:21 -04:00
run_onchange_30-ensure-cargo.sh.tmpl Initial chezmoi-managed dotfiles with bootstrap scripts 2026-06-21 18:10:54 -04:00

gnu-plus-dotfiles

Chezmoi-managed dotfiles synced across all your linux boxes. Source of truth: ~/.local/share/chezmoi on your main workstation. Remote: https://git.melonbread.xyz/rain/gnu-plus-dotfiles.git (HTTPS for bootstrap, SSH from your main workstation for push — see Onboarding below).

Branches

  • main — current, bootstrap-enabled. All active work.
  • legacy-2025 — frozen snapshot of the pre-chezmoi-bootstrap config. Read-only.

What's in here

.chezmoi.yaml.tmpl              os_family detection (debian | arch)
dot_zshrc.tmpl                  zsh config with os_family-conditional aliases
dot_tmux.conf                   tmux + tpm + gruvbox plugin stack
dot_gitconfig.tmpl              git + delta
dot_config/
  bat/                          bat config
  btop/                         btop theme + options
  ghostty/                      ghostty terminal + gruvbox themes
  kitty/                        kitty terminal + gruvbox themes
  nvim/                         LazyVim + custom plugins
  paru/                         (arch-only) paru config

run_once_00-install-bootstrap-tools.sh.tmpl
run_once_10-add-chaotic-aur.sh.tmpl            (arch-only)
run_once_20-install-user-packages.sh.tmpl
run_onchange_30-ensure-cargo.sh.tmpl

Onboarding a new box

On a fresh debian-stable or arch-base install:

# 1. Install chezmoi binary itself (one-time, before this repo's run_once runs)
sh -c "$(curl -fsSL get.chezmoi.io)" -- -b "$HOME/.local/bin"

# 2. Initialize from your repo (HTTPS — works without SSH keys on a fresh box)
chezmoi init --apply https://git.melonbread.xyz/rain/gnu-plus-dotfiles.git

# 3. The bootstrap scripts run automatically. They will:
#    - install age, git, curl (run_once_00)
#    - on arch: add Chaotic-AUR + install paru (run_once_10)
#    - install zsh, tmux, neovim, oh-my-zsh, all CLI tools, Maple Mono NF font (run_once_20)
#    - install rustup if cargo missing (run_onchange_30)

# 4. Reboot or `exec zsh` to start using the new shell
exec zsh

The first run will take a few minutes (downloading packages, cloning oh-my-zsh plugins, tpm, LazyVim plugins via nvim).

Adding age encryption (when you have secrets)

# On your main workstation:
mkdir -p ~/.config/chezmoi/keys
age-keygen -o ~/.config/chezmoi/keys/recovery.key
# Save the printed secret key in your password manager.

# On each machine, generate a per-machine identity:
age-keygen -o ~/.config/chezmoi/key.txt
# Paste the public key back to your main workstation.

# In .chezmoi.yaml.tmpl, uncomment and fill the recipients block, then:
chezmoi age rekey

Editing dotfiles

chezmoi edit ~/.zshrc          # opens in $EDITOR, auto-applies on save
chezmoi diff                   # see what's pending
chezmoi apply                  # apply pending changes
chezmoi cd                     # jump to the source repo

From inside ~/.local/share/chezmoi, you can git status, git diff, git push like any normal repo.

Common gotchas

  • Neovim too old on Debian: run_once_20 detects this and installs the official binary. If you see "Edit: command not found" inside LazyVim, neovim <0.9.
  • zsh plugins not loading: check ~/.oh-my-zsh/custom/plugins/ exists. Bootstrap installs them.
  • paru 404 on arch: Chaotic-AUR mirrors occasionally lag. Re-run sudo pacman -Syu then chezmoi apply.
  • fastfetch not running: command not found, install via package manager. Debian needs apt install fastfetch (bookworm+).
  • Maple Mono NF font warning in nvim: bootstrap should have installed it. Verify with fc-list | grep -i maple. If missing, see runbook skill chezmoi-bootstrap-runbook for manual install.

Out of scope (intentionally not in repo)

  • ~/.config/zsh/functions.zsh — host-specific (reads ~/AI/llama.cpp/key.txt). Recreate per host.
  • KDE plasma configs (kwinrc, kdeglobals, etc.) — live state, varies wildly per host.
  • Alacritty, foot, fish — not in use, drop if you want.
  • mpv, topgrade, mako — out of scope unless re-added.