Imported from prdlk/dotfiles master (efdd827). Drops the niri, Hyprland/Omarchy, macOS, and Blume docs-site layers; docs/ is plain Markdown.
81 lines
3.3 KiB
Markdown
81 lines
3.3 KiB
Markdown
# cachyos
|
|
|
|
[chezmoi](https://chezmoi.io) 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`](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 <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](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/<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`](AGENTS.md) for the
|
|
repository rules and [`docs/README.md`](docs/README.md) for per-tool pages.
|