Two more things the Framework's install surfaced. gstreamer1-plugin-fmp4 and gstreamer1-plugin-mp4 no longer exist in any repo this configuration enables — not Fedora 44, not RPM Fusion, not the Hyprland COPR. Machines installed on older Fedora carry them as orphans, which is why the list looked fine from one. dnf5 refuses a whole transaction over one missing name, and desktop-packages runs above the Hyprland block, so two dead codec entries cost the entire desktop. The solopasha migration preferred panama-sudo, and pkexec with no polkit agent to answer it does not fail — it waits forever, which held an unattended ./install hostage at the one stage that promised never to ask. The stated reason is now reserved for a terminal someone is sitting at; a non-interactive run takes plain sudo, which either succeeds quietly or fails fast enough for panama-migrate to retry at the next login, as it promises. Verified by running install-packages end to end on the machine that broke it: Terra guard holds, desktop packages resolve, Hyprland 0.56.2 lands, and the stage reaches its stepped-over report. All 22 setup contracts pass. Claude-Session: https://claude.ai/code/session_01Epx9ZC1gwm81K3jm9x9CKh
50 lines
2.2 KiB
Bash
Executable File
50 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Remove the solopasha/hyprland COPR left over from an earlier setup.
|
|
#
|
|
# Panama installs Hyprland from lionheartp/Hyprland. A machine set up before
|
|
# that decision -- or half set up from sunhat-era notes -- can still carry
|
|
# solopasha's COPR repo file. It arrives disabled, so nothing is broken today,
|
|
# and that is exactly why it is worth removing now rather than later: the moment
|
|
# somebody enables it while debugging, two repositories provide hyprland,
|
|
# hyprland-uwsm and xdg-desktop-portal-hyprland, and dnf resolves the split by
|
|
# version rather than by intent. Half the desktop from one COPR and half from
|
|
# the other is a very bad afternoon.
|
|
#
|
|
# Only Panama's business if it is disabled. A machine that has deliberately
|
|
# enabled solopasha is a machine somebody made a choice about, and a migration
|
|
# is not the place to overrule it.
|
|
|
|
set -euo pipefail
|
|
|
|
repo_file="/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:solopasha:hyprland.repo"
|
|
|
|
[[ -e "$repo_file" ]] || exit 0
|
|
|
|
# Enabled means somebody chose it. Say so and leave.
|
|
if grep -qE '^\s*enabled\s*=\s*1' "$repo_file"; then
|
|
echo "Leaving solopasha/hyprland alone: it is enabled, so it is in use deliberately."
|
|
echo "Panama installs Hyprland from lionheartp/Hyprland; having both enabled will"
|
|
echo "eventually mix the two. Disable it with: sudo dnf copr disable solopasha/hyprland"
|
|
exit 0
|
|
fi
|
|
|
|
PANAMA_PATH="${PANAMA_PATH:-$HOME/.local/share/Panama}"
|
|
# panama-sudo is pkexec, and pkexec with nobody to answer it does not fail --
|
|
# it waits forever. That hung an unattended ./install at this very migration.
|
|
# So the stated-reason prompt is reserved for a terminal someone is sitting at;
|
|
# a non-interactive run takes plain sudo, which is either already authorized
|
|
# (a warm timestamp, NOPASSWD) or fails fast enough to be retried at the next
|
|
# login, exactly as panama-migrate promises.
|
|
sudo_cmd=(sudo)
|
|
if [[ -t 0 && -x "$PANAMA_PATH/bin/panama-sudo" ]]; then
|
|
sudo_cmd=(
|
|
"$PANAMA_PATH/bin/panama-sudo" --reason
|
|
"Removing the unused solopasha/hyprland repository, which conflicts with the one Panama installs from"
|
|
--
|
|
)
|
|
fi
|
|
|
|
"${sudo_cmd[@]}" rm -f "$repo_file"
|
|
echo "Removed the disabled solopasha/hyprland COPR; Hyprland comes from lionheartp/Hyprland."
|