Files
dotfiles/README.md
T
Prad Nukala 30314160f1 chore(packages): declare every tool the configs reference
Audit of configs, scripts, tmux-palette items and television cables
against installed packages. Adds the missing pacman/AUR/brew entries,
a [omarchy] repo list installed only where that repo is configured,
and cargo installs in 40-post. 10-packages filters lists with pacman -T
so provider packages (mise-bin, yazi-git) are not replaced, and uses
yay with paru as fallback. noctalia-shell -> noctalia-git (AUR name).
2026-10-16 12:01:52 -04:00

69 lines
2.8 KiB
Markdown

# dotfiles
Managed with [chezmoi](https://chezmoi.io). Docs: <https://dots.prd.lk>.
One command on any machine:
```sh
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**: `yay` or `paru` for AUR packages (optional — the install script
warns and skips AUR if missing). `sudo` for pacman.
- **macOS**: [Homebrew](https://brew.sh).
- **Secrets**: `age`-encrypted files need the key at
`~/.config/chezmoi/key.txt`. Copy it there **before** `chezmoi apply`
(distributed manually, never committed):
```sh
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.