# cachyos [chezmoi](https://chezmoi.io) source for a CachyOS machine running the Umbriel compositor with the Noctalia shell. Hosted at . Full documentation: [`docs/README.md`](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 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): ```sh mkdir -p ~/.config/chezmoi scp :.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](https://github.com/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/`. ## 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`](AGENTS.md) for the repository rules and [`docs/README.md`](docs/README.md) for per-tool pages.