My dot files organized via chezmoi
Two bugs hit on rye: 1. neovim tarball URL hardcoded to nvim-linux64.tar.gz (x86_64 only). On aarch64 boxes (rye is arm64), curl would 404 the tarball, the unpack would create a binary that won't run, or apt's bundled neovim might not even be installed. 2. The 'apt's neovim is too old' branch only ran if apt had successfully installed an old neovim. If apt didn't install neovim at all (or installed a recent enough version), the tarball fallback never triggered. On rye, the script reached the final 'nvim --version' verification line and crashed with 'command not found'. Fix: - Detect arch via uname -m, map to correct tarball name (x86_64 -> nvim-linux64.tar.gz, aarch64 -> nvim-linux-arm64.tar.gz) - If command -v nvim returns false at all, skip the version check entirely and go straight to the GitHub tarball - If apt's neovim IS recent enough (>= 0.9), keep it and skip the tarball - Final 'nvim --version' verification preceded by a PATH-ensure for /usr/local/bin in case the freshly-installed tarball binary isn't yet on PATH for this script's environment Verified template renders cleanly on arch. |
||
|---|---|---|
| dot_config | ||
| .chezmoi.yaml.tmpl | ||
| .chezmoiignore | ||
| dot_gitconfig.tmpl | ||
| dot_tmux.conf | ||
| dot_zshrc.tmpl | ||
| README.md | ||
| run_once_00-install-bootstrap-tools.sh.tmpl | ||
| run_once_10-add-chaotic-aur.sh.tmpl | ||
| run_once_20-install-user-packages.sh.tmpl | ||
| run_onchange_30-ensure-cargo.sh.tmpl | ||
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_20detects 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 -Syuthenchezmoi apply. - fastfetch not running: command not found, install via package manager. Debian needs
apt install fastfetch(bookworm+). Maple Mono NFfont warning in nvim: bootstrap should have installed it. Verify withfc-list | grep -i maple. If missing, see runbook skillchezmoi-bootstrap-runbookfor 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.