Prad Nukala ee355bcfd5 Initial import: chezmoi source for CachyOS + Umbriel + Noctalia
Imported from prdlk/dotfiles master (efdd827). Drops the niri, Hyprland/Omarchy,
macOS, and Blume docs-site layers; docs/ is plain Markdown.
2026-11-02 09:14:11 -05:00

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 sudo for pacman. yay or paru is used for AUR packages; with neither, the install script bootstraps yay (from a sync repo, else yay-bin from the AUR) or warns and skips AUR packages.

  • age key: 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
    
  • gh auth login once per machine. The gh extension 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/bin shared by every shell.
  • Packages: .chezmoidata/packages.yaml (pacman, AUR, cargo, mise, gh extensions), installed by .chezmoiscripts and re-run when the manifest changes.
  • Agent skills: not vendored. .chezmoidata/skills.yaml lists each skill and its upstream; run_onchange_after_25-skills.sh.tmpl installs 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.

S
Description
No description provided
Readme
250 KiB
0 Stars 1 Watchers 0 Forks
Languages
Shell 75.3%
Go Template 13.8%
Python 10.9%