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

4.4 KiB

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/bindetect / 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.qmlnexus/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.