1
0
Fork 0
My dot files organized via chezmoi
Find a file
rain 5e2a3378cc Remove dead sway/config.d/ includes — main config is single-file
The main `~/.config/sway/config` is intentionally single-file (per
its own header comment: 'MINIMAL — single file, no includes. Tier-1+2+3
in one go.'). The `config.d/*.conf` files were leftovers from an
earlier split and are NOT included by the main config — so they were
dead weight in the repo.

Sway is NOT auto-launched. It's installed as a tool the user runs
manually from a TTY (`sway` from TTY1) for light desktops. The install
and configs sit ready; launching is the user's call.
2026-06-22 14:34:13 -04:00
dot_config Remove dead sway/config.d/ includes — main config is single-file 2026-06-22 14:34:13 -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
dot_omp/agent Add omp .env.age for provider API keys; install topgrade+cargo-update via PM 2026-06-22 01:34:02 -04:00
.chezmoi.yaml.tmpl Make sway hostname match support suffix forms (byte-arch etc.) 2026-06-22 14:26:01 -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: document sway/Wayland desktop stack and per-host toggle 2026-06-22 14:28:15 -04:00
run_once_00-install-bootstrap-tools.sh.tmpl Add libssl-dev pkg-config to debian bootstrap-tools 2026-06-22 12:11:56 -04:00
run_once_05-install-hosts.sh.tmpl Add LAN hosts script; clean up README onboarding 2026-06-22 01:50:30 -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 bun + pi-coding-agent + oh-my-pi to bootstrap; age encryption 2026-06-22 00:10:34 -04:00
run_once_40-install-sway.sh.tmpl Add sway/wofi/foot Wayland desktop stack with per-host toggle 2026-06-22 14:23:56 -04:00
run_onchange_30-ensure-cargo.sh.tmpl Add omp .env.age for provider API keys; install topgrade+cargo-update via PM 2026-06-22 01:34:02 -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
  sway/                         sway + wofi + foot configs (desktops only)
  foot/                         foot terminal config
  wofi/                         wofi launcher configs + CSS
  waybar/                       waybar status bar
  mako/                         (arch-only) mako notification daemon

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
run_once_40-install-sway.sh.tmpl               (desktops only) sway + wofi + foot

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:

  1. run_once_00: install age, git, curl, ca-certificates via the OS package manager
  2. run_once_05: merge LAN host entries (miche.local, kaiser.local, etc.) into /etc/hosts so omp/curl can resolve them
  3. run_once_10 (arch only): add Chaotic-AUR repo + signing key, install paru
  4. 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 (bat via cargo or PM, btop, eza, fzf, fd, ripgrep, zoxide, starship, lazygit, yt-dlp, jq, etc.), set zsh as login shell (via sudo chsh), install Maple Mono NF font (GitHub release zip)
  5. run_onchange_30: ensure rustup/cargo; install topgrade (pacman on arch via chaotic-aur, cargo on 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.

Sway / Wayland desktop stack

Sway + wofi + foot + waybar + swaybg/lock/idle + grim/slurp + wl-clipboard is opt-in per host. Pis don't get it (headless); x86_64 desktops do automatically.

Default behavior (set in .chezmoi.yaml.tmpl):

  • data.sway: true on hostnames matching miche, byte, kaiser (and any suffix like byte-arch)
  • data.sway: false on every other host

Manual override (per box, takes precedence over hostname rule):

# Force ON (e.g. you set up a new Pi with a screen):
touch ~/.config/chezmoi/features/sway
chezmoi apply

# Force OFF (e.g. running a desktop headless as a server):
touch ~/.config/chezmoi/features/no-sway
rm -f ~/.config/chezmoi/features/sway
chezmoi apply

The run_once_40-install-sway.sh script:

  • exits 0 with no side effects on non-sway boxes
  • installs sway wofi foot swaybg swaylock swayidle grim slurp waybar wl-clipboard via pacman (arch) or apt (debian)
  • adds dunst instead of mako on debian (mako isn't packaged for debian)
  • creates the ~/.config/chezmoi/features/sway marker so subsequent applies know it's enabled

The configs in dot_config/{sway,foot,wofi,waybar,mako}/ are placed unconditionally — they're harmless on Pis (no tools to read them).

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.