1
0
Fork 0
My dot files organized via chezmoi
Find a file
rain 6160efeb23 Drop paru for Maple font install on arch; use GitHub release zip directly
paru's post-build 'sudo pacman -U' step requires a TTY for sudo,
which fails in non-interactive chezmoi runs (miche doesn't have
NOPASSWD sudo for this case). The font package has no deps, so
the AUR build step adds complexity for no real benefit.

Download MappleMono-NF.zip from subframe7536/Maple-font v7.9 GitHub
release directly on both arch and debian. Same install path, no
paru dependency, no sudo, ~30 second install.

The maplemono-nf-cn AUR package is still available for users who
want it via system package management — this just makes the bootstrap
not depend on AUR helpers working non-interactively.
2026-06-21 23:42:44 -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 Add fzf-tab plugin (navigable Tab completion menu) 2026-06-21 23:06:25 -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 Drop paru for Maple font install on arch; use GitHub release zip directly 2026-06-21 23:42:44 -04:00
run_onchange_30-ensure-cargo.sh.tmpl Move bat cargo install from run_once_20 to run_onchange_30 2026-06-21 22:50:08 -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.