Imported from prdlk/dotfiles master (efdd827). Drops the niri, Hyprland/Omarchy, macOS, and Blume docs-site layers; docs/ is plain Markdown.
cachyos
chezmoi source for a CachyOS machine running the
Umbriel compositor with the Noctalia shell.
Hosted at https://prad.codes/env/cachyos. Full documentation:
docs/README.md.
Install
One command on a fresh machine (installs chezmoi, clones this repo and its submodules, prompts once, installs packages, applies everything):
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://prad.codes/env/cachyos.git
Over SSH: ... init --apply git@prad.codes:env/cachyos.git.
The first apply asks for a name, an email, and a machine role:
| Role | Gets |
|---|---|
desktop (default) |
Universal toolset plus the Linux desktop layer (Umbriel, Noctalia, fontconfig, mimeapps, systemd user units) |
laptop |
Same as desktop |
server |
Universal toolset only |
Prerequisites
-
CachyOS / Arch Linux with
sudofor pacman.yayorparuis used for AUR packages; with neither, the install script bootstrapsyay(from a sync repo, elseyay-binfrom the AUR) or warns and skips AUR packages. -
age key: encrypted files need the key at
~/.config/chezmoi/key.txt. Copy it there beforechezmoi 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 -
gh auth loginonce per machine. Theghextension install script skips until then and runs again on the next apply.
What's managed
- Shells: fish (submodule), bash, and zsh with one alias list
(
.chezmoidata/aliases.yaml), starship, and atuin. - Terminal and tools: kitty, ghostty, tmux (+ tmux-palette), herdr, television, yazi, neovim, lazygit, lazydocker, gh and gh-dash, bat, git, topgrade, hunk, drydock.
- Desktop (roles
desktop/laptop): Umbriel compositor config (dot_config/umbriel), Noctalia shell (external), fontconfig, mimeapps, default terminal list, and systemd user units. - Scripts: standalone executables in
~/.local/binshared by every shell. - Packages:
.chezmoidata/packages.yaml(pacman, AUR, cargo, mise, gh extensions), installed by.chezmoiscriptsand re-run when the manifest changes. - Agent skills: not vendored.
.chezmoidata/skills.yamllists each skill and its upstream;run_onchange_after_25-skills.sh.tmplinstalls them with the Skills CLI.
Submodules and externals
| Kind | Path | Source |
|---|---|---|
| Submodule | dot_config/fish |
prdlk/fish |
| External | ~/.config/{kitty,ghostty,tmux,tmux-palette,television,yazi,herdr,noctalia,nvim}, ~/.omp |
prdlk/* repos on GitHub |
| External | ~/.local/bin/agent-root, ~/.config/tmux/plugins/tpm, bat PureScript syntax |
upstream projects |
The prdlk/* externals are separate repos that chezmoi clones into $HOME and
fast-forwards; this repo holds only their .toml declarations. Edit them in
their live checkout under ~/.config/<app>.
Layout
mode = "symlink" and age encryption are set in .chezmoi.toml.tmpl. Plain
files in $HOME are symlinks into this repo; *.tmpl, private_, and
executable_ targets are rendered copies. See AGENTS.md for the
repository rules and docs/README.md for per-tool pages.