Many Rust crates (cargo-update, anything depending on openssl-sys) need libssl-dev + pkg-config at build time. Without these, `cargo install cargo-update` fails on debian with: Could not find openssl via pkg-config The system library `openssl` required by crate `openssl-sys` was not found. Add them to APT_PKGS in run_once_00-install-bootstrap-tools.sh.tmpl so new debian boxes have them from the start. Existing Pis (rye, crouton) need a one-time `sudo apt-get install -y libssl-dev pkg-config` after pulling this commit. |
||
|---|---|---|
| dot_config | ||
| dot_local/bin | ||
| dot_omp/agent | ||
| .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_05-install-hosts.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_05-install-hosts.sh.tmpl merge LAN host entries into /etc/hosts
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
One command. Copy/paste this on a fresh debian-stable or arch-base install:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/...")" -- -b "$HOME/.local/bin" \
&& export PATH="$HOME/.local/bin:$PATH" \
&& chezmoi init --apply https://git.melonbread.xyz/rain/gnu-plus-dotfiles.git
Or as a heredoc that installs chezmoi then runs the bootstrap (more verbose, easier to read):
export PATH="$HOME/.local/bin:$PATH"
sh -c "$(curl -fsSL get.chezmoi.io)" -- -b "$HOME/.local/bin"
chezmoi init --apply https://git.melonbread.xyz/rain/gnu-plus-dotfiles.git
The bootstrap scripts run automatically as part of chezmoi init --apply. They will:
- run_once_00: install
age,git,curl,ca-certificatesvia the OS package manager - run_once_05: merge LAN host entries (
miche.local,kaiser.local, etc.) into/etc/hostsso omp/curl can resolve them - run_once_10 (arch only): add Chaotic-AUR repo + signing key, install
paru - run_once_20: install zsh, tmux, neovim (binary tarball, arch-aware URL), oh-my-zsh + plugins (autosuggestions, syntax-highlighting, history-substring-search, fzf-tab), tpm, all modern CLI tools (
batvia cargo or PM,btop,eza,fzf,fd,ripgrep,zoxide,starship,lazygit,yt-dlp,jq, etc.), set zsh as login shell (viasudo chsh), install Maple Mono NF font (GitHub release zip) - run_onchange_30: ensure rustup/cargo; install topgrade (
pacmanon arch via chaotic-aur,cargoon debian) and cargo-update
After bootstrap completes (~5-10 min on x86_64, longer on aarch64 with cargo install bat):
exec zsh
fastfetch will run on shell start, starship prompt active, all tools on PATH.
Per-machine age key (required to decrypt secrets)
The repo contains encrypted secrets (~/.omp/agent/zai.key, ~/.omp/agent/.env) that only your per-machine age key can decrypt. After bootstrap, generate the key on this box:
age-keygen -o ~/.config/chezmoi/key.txt
# Paste the printed public key into ~/.local/share/chezmoi/.chezmoi.yaml.tmpl
# under the recipients list, then:
cd ~/.local/share/chezmoi
git pull
# (You'll be prompted to add --force if you have local changes)
chezmoi apply
If you skip this step, the omp config files will still land (they're not encrypted), but zai.key and .env will be missing and omp won't be able to authenticate against providers.
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.