# dotfiles Managed with [chezmoi](https://chezmoi.io). Docs: . 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 :.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.