Prad Nukala c3828a747c fix(atuin): use the packaged binary only
~/.atuin/bin held an old standalone atuin (18.19.0) that the shells
prepended to PATH, shadowing pacman's /usr/bin/atuin (18.21.0). The
daemon runs the packaged binary and migrated the history DB, so every
shell command through the old one failed with "migration 20260818000000
was previously applied but is missing in the resolved migrations".

Drop conf.d/atuin.env.fish, the `. ~/.atuin/bin/env` lines in .bashrc
and .zshrc (atuin init is now guarded on `command -v atuin`), the
cargo-dist receipt, and atuin-pick's ~/.atuin/bin fallback. Also drop
`atuin ai init fish`, which 18.21 removed; config.fish already carries
the `?` binding it emitted.
2026-10-05 11:00:15 -04:00

dotfiles

Managed with chezmoi. Docs: https://dots.prd.lk. One command on any machine:

curl -fsSL https://dots.prd.lk/install | sh
# or, cloning over SSH:
sh -c "$(curl -fsSL https://dots.prd.lk/install)" -- init --apply --ssh prdlk/dotfiles

/install is chezmoi's get.chezmoi.io/lb script vendored in public/install, defaulting to init --apply prdlk/dotfiles. The docs site (docs/, public/, blume.config.ts) deploys to GitHub Pages via .github/workflows/docs.yml.

First apply prompts once for name, email, and machine role (desktop | laptop | mac | server). Role gates the Linux desktop layer (niri, noctalia, fontconfig, systemd user units) — mac and server get the universal toolset only.

Prerequisites

  • Arch: paru for AUR packages (optional — the install script warns and skips AUR if missing). sudo for pacman.

  • macOS: Homebrew.

  • Secrets: age-encrypted files need the key at ~/.config/chezmoi/key.txt. Copy it there before chezmoi apply (distributed manually, never committed):

    mkdir -p ~/.config/chezmoi
    scp <existing-machine>:.config/chezmoi/key.txt ~/.config/chezmoi/key.txt
    chmod 600 ~/.config/chezmoi/key.txt
    

What's managed

Universal: fish, bash + zsh (starship prompt, shared aliases), nvim (AstroNvim), tmux, kitty, yazi, lazygit, lazydocker, gh (+ extensions), starship, git, ssh config, Claude Code (settings/commands/hooks/skills). Packages declared in .chezmoidata/packages.yaml, installed by .chezmoiscripts (idempotent, re-run when the manifest changes).

Aliases are defined once in .chezmoidata/aliases.yaml and rendered into fish (fish/conf.d/20-aliases.fish) and bash/zsh (~/.config/shell/aliases.sh, sourced by .bashrc/.zshrc).

Shell utilities live as standalone sh/bash executables in ~/.local/bin (ai, c2p, fab, gdc, ghn, ghg-clone, git-summary, mdp, mdcp, mtime-sort, pj, …) so all shells share one implementation. Helpers that must mutate shell state (cd-style: yy, c, cd, ghg/ghn wrappers, gho, clip-last) are per-shell functions in fish/functions/, bash/functions/, and zsh/functions/.

Agent skills are not vendored: .chezmoidata/skills.yaml lists every skill and its upstream source, and .chezmoiscripts/run_onchange_after_25-skills.sh.tmpl installs them into ~/.agents/skills (plus ~/.claude/skills links) with the Skills CLI whenever that file changes, removing skills it installed earlier that are no longer listed.

Linux desktop (role desktop/laptop only): niri, noctalia, fontconfig, mimeapps, systemd user units, niri-launch.

gh needs gh auth login once per machine; the extension install script skips gracefully until then, and re-runs on the next apply.

See MIGRATION-NOTES.md for the dotstate → chezmoi migration record.

S
Description
No description provided
Readme
35 MiB
0 Stars 1 Watchers 0 Forks
Languages
Shell 78%
Go Template 10.4%
Python 9%
CSS 2.4%
TypeScript 0.2%