From 632a0267dd95e25e9bbf3493aadd710c88825df1 Mon Sep 17 00:00:00 2001 From: Pathfinder Date: Tue, 27 Oct 2026 11:17:50 +0100 Subject: [PATCH] Hyprland: COPR fallback chain (solopasha has no F44 chroot) On F44, 'dnf copr enable solopasha/hyprland' fails with 'Chroot not found': verified via the Copr API, solopasha is rawhide-only right now. lionheartp/ Hyprland (solopasha fork, also ships noctalia packages) and hermitfeather/ hyprland both have fedora-44 chroots. The module now tries lionheartp, hermitfeather, then solopasha, and aborts with an actionable message if none has a chroot for this release. README updated to name the chain, not a single repo. --- README.md | 2 +- modules/twm/hyprland.sh | 27 +++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a8699c2..cba42a0 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Each module pulls in `lib/` by relative path, so it works both ways. | TWM | Source | Session type | Notes | |---|---|---|---| | `niri` | Fedora repos + Terra (for `noctalia`) | Wayland | Ships its own session entry | -| `hyprland` | **copr solopasha/hyprland** | Wayland | Retired from Fedora repos after F42 | +| `hyprland` | **COPR** (lionheartp, then hermitfeather, then solopasha) | Wayland | Retired from Fedora repos after F42; first COPR with a chroot for your release wins | | `mango` | **Terra repo only** | Wayland | Session entry written if the package lacks one | | `chadwm` | **built from source** | **X11** | dwm fork; not packaged anywhere for Fedora | diff --git a/modules/twm/hyprland.sh b/modules/twm/hyprland.sh index 38dd447..db4567b 100755 --- a/modules/twm/hyprland.sh +++ b/modules/twm/hyprland.sh @@ -12,14 +12,33 @@ if is_debug; then set +e; else set -e; fi step "Tiling window manager: Hyprland" rule -# hyprland was retired from the Fedora repos after F42 (dependency churn), -# so the compositor comes from the solopasha COPR — the de facto standard. +# hyprland was retired from the Fedora repos after F42 (dependency churn), so it +# comes from a COPR. Which COPR has a fedora-44 chroot changes over time — +# solopasha (the usual recommendation) was rawhide-only when this was written. +# Try candidates in order; first one that enables wins. If none works, abort +# with an actionable message instead of a cryptic "chroot not found". if ! pkg_installed hyprland; then - info "Enabling copr: solopasha/hyprland..." - sudo dnf copr enable -y solopasha/hyprland + enabled="" + for copr in lionheartp/Hyprland hermitfeather/hyprland solopasha/hyprland; do + info "Enabling copr: $copr..." + if sudo dnf copr enable -y "$copr" >/dev/null 2>&1; then + enabled="$copr" + ok "Copr enabled: $copr" + break + fi + warn "Copr $copr has no chroot for this Fedora release; trying next..." + done + if [[ -z "$enabled" ]]; then + err "None of the Hyprland COPRs have a chroot for Fedora $(rpm -E %fedora)." + err "Check https://copr.fedorainfracloud.org/coprs/ for an up-to-date one, or:" + err " sudo dnf copr enable -y / fedora-rawhide-x86_64 # last resort" + exit 1 + fi fi info "Installing Hyprland and its ecosystem..." +# COPR package sets differ; treat everything beyond the core compositor as +# optional so a name drift warns instead of killing the transaction. install_packages hyprland xdg-desktop-portal-hyprland alacritty install_optional hyprpaper hypridle hyprlock waybar mako wofi xwayland-satellite