Topgrade
Topgrade config for the Arch/CachyOS machines, with paru as the package manager, chezmoi re-add before upgrades, and post-upgrade hooks.
Topgrade runs every updater on the machine in one pass: system packages, cargo, firmware, git repos, flatpak, and custom commands. The config is written for a CachyOS (Arch) box running fish; most keys are left at topgrade’s defaults.
| Source | dot_config/topgrade.toml |
| Target | ~/.config/topgrade.toml |
| Packages | Arch: topgrade (AUR, via paru). macOS: topgrade (Homebrew) |
[misc]
| Key | Value | Why |
|---|---|---|
pre_sudo |
true |
Caches sudo credentials up front so an unattended run does not stop at a password prompt partway through. |
no_self_update |
true |
The [cargo] step already updates the topgrade binary; two updaters would fight over it. |
cleanup |
true |
Runs distro cleanup afterwards (paccache needs pacman-contrib; skipped if absent). |
show_distribution_summary |
true |
Surfaces *.pacnew / *.pacsave files to merge. |
disable |
["containers", "config_update"] |
Skips pulling :latest for every local container image, and skips topgrade’s config-update step. |
ignore_failures |
["uv", "containers"] |
Failures in these steps do not fail the run. |
The Python pip/conda steps stay off (topgrade’s default), which protects a pinned ROCm build of torch from blind upgrades. A remote_topgrades entry for another host is present but commented out.
[linux]
| Key | Value | Why |
|---|---|---|
arch_package_manager |
"paru" |
Pins the Arch backend so topgrade does not fall back to bare pacman, which would skip the AUR. |
show_arch_news |
true |
Prints archlinux.org news before upgrading; CachyOS tracks Arch, so manual-intervention notices still apply. |
The comments around arch_package_manager describe shelly (the CachyOS package CLI) as the intended value, but the active setting is paru. shelly still runs as a post-command (below). A commented shelly_arguments line is kept for reference.
Other steps
| Section | Key | Value | Effect |
|---|---|---|---|
[cargo] |
git |
true |
Also updates git-sourced cargo installs, not only crates.io ones. Needs cargo-update. |
[firmware] |
upgrade |
false |
fwupd updates are listed, not flashed, so firmware is reviewed before applying. |
[git] |
(none active) | Predefined repos are still pulled; custom repos and arguments are commented out to avoid tripping over dirty working trees. |
|
[flatpak] |
(none active) | User-scope flatpaks update without sudo; use_sudo is commented out. |
Pre- and post-commands
Pre-commands run before any upgrade step:
| Name | Command | Purpose |
|---|---|---|
| Chezmoi Re-Add | chezmoi re-add |
Pulls local edits to managed dotfiles back into the chezmoi source repo before anything changes them. Only re-adds files chezmoi already manages; review and commit in ~/.local/share/chezmoi afterwards. |
| GHQ Update | see below | Updates every ghq-managed repo. |
[pre_commands]
"Chezmoi Re-Add" = "chezmoi re-add"
"GHQ Update" = "ghq list | ghq get -u -s"
Post-commands run after everything else:
| Name | Command |
|---|---|
| Omp Update | omp update |
| Hermes Update | hermes update --backup --yes |
| Herdr Update | herdr update |
| Shelly Update | shelly upgrade-all -n |
| Cachy Update | cachy-update |
shelly upgrade-all -n is also available as the sua alias. The post-commands assume CachyOS tooling (shelly, cachy-update) and the owner’s own CLIs (omp, hermes, herdr); on machines without them those steps fail. See omp for the agent CLI.