Imported from prdlk/dotfiles master (efdd827). Drops the niri, Hyprland/Omarchy, macOS, and Blume docs-site layers; docs/ is plain Markdown.
3.5 KiB
Installation
Install chezmoi and apply the CachyOS dotfiles with one command.
One-liner
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://prad.codes/env/cachyos.git
get.chezmoi.io is chezmoi's official install script. It installs the chezmoi binary into ./bin of the current directory by default (pass -b ~/.local/bin before -- to change that), then runs chezmoi init --apply with the repo URL. chezmoi clones the repo to ~/.local/share/chezmoi and initializes its submodules (dot_config/fish) as part of init.
Before you run it
1. Package manager
sudo for pacman. AUR packages (topgrade, portop, and the desktop apps on desktop roles) go through yay or paru; when neither is installed the package script installs yay from a sync repo that ships it (CachyOS) or builds yay-bin from the AUR.
2. age key
chezmoi is configured for age encryption with the identity at ~/.config/chezmoi/key.txt. The key is never committed. Copy it from an existing machine before applying:
mkdir -p ~/.config/chezmoi
scp <existing-machine>:.config/chezmoi/key.txt ~/.config/chezmoi/key.txt
chmod 600 ~/.config/chezmoi/key.txt
3. Repo access
The repo at https://prad.codes/env/cachyos is public, so HTTPS needs no credentials. To clone over SSH instead, add the machine's key to the Gitea account and use git@prad.codes:env/cachyos.git.
Options
Arguments after -- go to chezmoi:
SSH
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply git@prad.codes:env/cachyos.git
Dry-run
sh -c "$(curl -fsLS get.chezmoi.io)" -- init https://prad.codes/env/cachyos.git
chezmoi diff
chezmoi apply
Install directory
sh -c "$(curl -fsLS get.chezmoi.io)" -- -b ~/.local/bin init --apply https://prad.codes/env/cachyos.git
Working on the repo
The checkout used day to day lives at ~/Code/prad.codes/env/cachyos. chezmoi expects its source directory at ~/.local/share/chezmoi, so either clone into that path or point chezmoi at the checkout:
chezmoi init --source ~/Code/prad.codes/env/cachyos
Both give the same model: one git checkout is the chezmoi source, and mode = "symlink" links files in $HOME back to it.
First apply
- Prompts:
.chezmoi.toml.tmplasks once for name, email, and role (desktop,laptop,server; the default isdesktop). Answers are stored in~/.config/chezmoi/chezmoi.tomland not asked again. See Configuration. - Packages:
run_onchange_before_10-packagesinstalls everything in.chezmoidata/packages.yamlwith pacman and yay before any file is written. See Scripts. - Files and externals: Configs are linked into
$HOME(symlink mode). The neovim config, fish, and the other externals are cloned or pulled. See Externals and ignore rules. - Post-apply scripts: rustup and cargo crates, the global mise tools (
ghq,bun,node,uv,opencode,crush, omp), strata on Linux desktops, then gh extensions (from a fish session), skills, the bat cache, the font cache, yazi plugins, and the systemd user services. tpm arrives earlier as an external.
Note
The gh extension script skips with a warning until
gh auth loginhas run. A skipped run still exits 0, so a plainchezmoi applydoes not retry it. See Scripts for how to re-run it.
Updating
chezmoi update # git pull + apply
chezmoi diff # what apply would change