NoSignal-OS/os updates/cachyos-repo-switch/README.md
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00

79 lines
4.4 KiB
Markdown

# cachyos-repo-switch — CachyOS optimized repos + kernel switch (sudoless, auto-tier)
Works **both directions** — ON → reboot into `linux-cachyos`; OFF → reboot back to stock.
## What it is
One toggle in **Settings → Services** (under "Passwordless sudo") that switches the
system **to/from** CachyOS-optimized builds **and** the `linux-cachyos` kernel —
passwordless, auto-detecting the best x86-64 tier (v4 > v3), fully unattended
(`--noconfirm`). Refuses below x86-64-v3.
## Pieces
- **`nosignal-cachy-repo`** → `/usr/local/bin``detect` / `status` / `enable` /
`disable` (+ `--dry-run`).
- **`02-nosignal-cachy`** → `/etc/sudoers.d` (0440, `visudo -c`-validated at install)
`%wheel` NOPASSWD, pinned to the four exact subcommands of the fixed helper.
- **`CachyRepoToggleRow.qml`** → `nexus/common/` — baked into the pinned
nosignal-shell fork; this copy + `patch-servicespage.sh` are the migration
path for old stock-caelestia installs.
- **`patch-servicespage.sh`** — inserts the toggle into `ServicesPage.qml` (only used
by the nosignal-update migration; the builder skips it via NOSIGNAL_SKIP_SHELL_PATCH).
## Two design fixes baked in — DO NOT reintroduce the bugs
1. **Architecture (critical).** CachyOS v3/v4 packages have arch `x86_64_v3`/`x86_64_v4`.
Upstream relies on its OWN pacman (reads `Architecture = auto` as "include v3/v4").
We keep **stock pacman** (reads `auto` as just `x86_64`) → it would arch-reject every
v3/v4 package and the conversion would silently do nothing. So `enable` sets
`Architecture` EXPLICITLY to the tier (`x86_64 x86_64_v3 x86_64_v4` for v4,
`x86_64 x86_64_v3` for v3); `disable` restores `Architecture = auto`.
2. **Targeted revert (no whole-base pull).** `disable` reinstalls ONLY packages whose
local-DB `Packager` is `CachyOS …` (excluding the cachy keyring/mirrorlist pkgs,
removed separately) — never the full base. Nothing converted ⇒ nothing to do.
## Why stock pacman (and `--ignore pacman`)
Upstream `cachyos-repo.sh` is interactive, ends with `pacman -Syu`, and swaps in a
CachyOS `pacman`. We reuse its signed keyring/mirrorlists + `.awk` stanza files but
drive pacman ourselves (stock, unattended). The CachyOS `pacman` build stamps an
`%INSTALLED_DB%` key into the local DB that stock pacman then warns about on every op,
so `enable` runs `pacman -Suu --ignore pacman` to pin pacman stock. **Keep that flag.**
## Kernel guard
`enable` installs `linux-cachyos` + `-headers` (the limine-mkinitcpio-hook generates
the boot entry; stock `linux` stays as a fallback). `disable` removes the cachy kernel
ONLY after confirming stock `linux` is installed — never strips the last bootable
kernel. A **reboot** is needed after ON (to run the new kernel) and after OFF (to leave
it); pick the entry at the Limine menu.
## Live-fetch vs vendored (build decision: LIVE-FETCH)
`enable`/`disable` fetch upstream `cachyos-repo.tar.xz` (keyring + mirrorlists + `.awk`).
Enabling CachyOS is inherently online (it pulls optimized builds + the kernel from
CachyOS mirrors), so there is no offline scenario to vendor for — live-fetch needs no
bundled artifacts and never goes stale. If a future air-gapped image needs it, vendor
the tarball and drop the fetch in `fetch_upstream()`.
## CachyOS-exclusive packages don't revert (by design)
Any package with no stock equivalent stays a CachyOS build on OFF and is reported, not
removed (e.g. `quickshell-git`, `gamescope-session-git`
harmless; self-clear on the next `yay -Sua`). The `linux-cachyos` kernel is the one
exception (removed explicitly, guarded as above). Snapshot entries keep historical
cachy UKIs under the Snapshots submenu (cosmetic; age out as snapshots rotate).
## Closure deps
`curl`, `tar`/`xz`, `gawk` (all via Arch `base`), `kitty`, plus `limine` +
`limine-mkinitcpio-hook` for the kernel boot entry — all already on the NoSignal base.
## Install (root)
```
sudo sh ~/.local/share/nosignal/cachyos-repo-switch/install-cachyos-repo-switch.sh
```
Then reload caelestia (or log out/in) so the toggle loads.
## Use
- Settings → Services → **CachyOS repositories**: on opens a floating terminal showing
the full pacman transaction (passwordless); off reverts to stock.
- Or terminal: `sudo nosignal-cachy-repo enable` / `disable`,
`nosignal-cachy-repo status` / `detect` (add `--dry-run` to preview).
## Files
- `nosignal-cachy-repo`, `02-nosignal-cachy`, `install-cachyos-repo-switch.sh`,
`CachyRepoToggleRow.qml`, `patch-servicespage.sh`.