1
0
Fork 0
My dot files organized via chezmoi
Find a file
rain a6582de626 Install bat via cargo on debian (skip apt's batcat rename)
Debian's 'bat' package is renamed 'batcat' to avoid clashing with an
unrelated Debian package. The rename makes .zshrc's 'alias cat=bat'
fail.

Install upstream bat via cargo instead — gets the real binary at
$HOME/.cargo/bin/bat, version-aligned with arch's pacman install.

Drop 'bat' from the debian apt install list (no more batcat conflict
to work around).
2026-06-21 21:36:00 -04:00
dot_config Drop pacstall, use pinned binary tarball + topgrade update hook 2026-06-21 21:24:43 -04:00
dot_local/bin Fix neovim symlink target: was basename(tarball), now explicit NVIM_EXTRACT_DIR 2026-06-21 21:31:44 -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 Install bat via cargo on debian (skip apt's batcat rename) 2026-06-21 21:36:00 -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.