@@ -435,10 +435,21 @@ setup_third_party_repos() {
435435 # Google Chrome
436436 if [ ! -f /etc/yum.repos.d/google-chrome.repo ]; then
437437 print_step " Adding Google Chrome repository..."
438- sudo dnf config-manager addrepo --from-repofile=https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome.repo || {
438+ # Import Google's signing key first
439+ sudo rpm --import https://dl.google.com/linux/linux_signing_key.pub 2> /dev/null || true
440+ # Create repo file manually (more reliable than addrepo)
441+ if ! cat << 'EOF ' | sudo tee /etc/yum.repos.d/google-chrome.repo > /dev/null
442+ [google-chrome]
443+ name=Google Chrome
444+ baseurl=https://dl.google.com/linux/chrome/rpm/stable/x86_64
445+ enabled=1
446+ gpgcheck=1
447+ gpgkey=https://dl.google.com/linux/linux_signing_key.pub
448+ EOF
449+ then
439450 print_warning " Failed to add Google Chrome repo"
440451 FAILED_ITEMS+=(" chrome-repo" )
441- }
452+ fi
442453 fi
443454
444455 # VS Code
@@ -517,10 +528,28 @@ EOF
517528 print_step " Adding ueberzugpp OBS repository..."
518529 local fedora_ver
519530 fedora_ver=$( rpm -E %fedora)
520- sudo dnf config-manager addrepo --from-repofile=" https://download.opensuse.org/repositories/home:justkidding/Fedora_${fedora_ver} /home:justkidding.repo" || {
521- print_warning " Failed to add ueberzugpp repo"
522- FAILED_ITEMS+=(" ueberzugpp-repo" )
523- }
531+ local obs_url=" https://download.opensuse.org/repositories/home:justkidding/Fedora_${fedora_ver} /home:justkidding.repo"
532+
533+ # Check if repo exists for this Fedora version
534+ if curl -sfI " $obs_url " & > /dev/null; then
535+ sudo dnf config-manager addrepo --from-repofile=" $obs_url " || {
536+ print_warning " Failed to add ueberzugpp repo"
537+ FAILED_ITEMS+=(" ueberzugpp-repo" )
538+ }
539+ else
540+ # Try Fedora 41 as fallback
541+ local fallback_url=" https://download.opensuse.org/repositories/home:justkidding/Fedora_41/home:justkidding.repo"
542+ if curl -sfI " $fallback_url " & > /dev/null; then
543+ print_step " Using Fedora 41 repo as fallback for ueberzugpp..."
544+ sudo dnf config-manager addrepo --from-repofile=" $fallback_url " || {
545+ print_warning " Failed to add ueberzugpp repo (fallback)"
546+ FAILED_ITEMS+=(" ueberzugpp-repo" )
547+ }
548+ else
549+ print_warning " ueberzugpp repo not available for Fedora $fedora_ver (optional)"
550+ FAILED_ITEMS+=(" ueberzugpp-repo" )
551+ fi
552+ fi
524553 fi
525554
526555 # Post-verification: check repos are usable
561590 else
562591 print_success " Third-party repositories configured (verified)"
563592 fi
593+
594+ # Refresh DNF cache after adding repos (critical for new repos to work)
595+ print_step " Refreshing package cache..."
596+ if ! sudo dnf makecache --refresh 2>&1 | tee -a " $LOG_FILE " ; then
597+ print_warning " DNF cache refresh had issues, continuing anyway..."
598+ fi
564599}
565600
566601# Save current package state (for clean uninstall later)
@@ -661,8 +696,7 @@ install_packages() {
661696
662697 # yazi file manager (COPR)
663698 yazi
664- # ueberzugpp for yazi image preview (OBS)
665- ueberzugpp
699+ # Note: ueberzugpp installed separately (OBS repo may not be available)
666700
667701 # Media
668702 torbrowser-launcher
@@ -686,13 +720,28 @@ install_packages() {
686720
687721 print_step " This may take a few minutes..."
688722
689- # DNF install with error handling
690- # Use PIPESTATUS to capture dnf exit code, not tee's
691- sudo dnf install -y " ${PACKAGES[@]} " --skip-unavailable --setopt=install_weak_deps=False 2>&1 | tee -a " $LOG_FILE "
723+ # Handle ffmpeg conflict (ffmpeg-free vs ffmpeg from RPMFusion)
724+ # RPMFusion's ffmpeg has more codecs, so prefer it
725+ if rpm -q ffmpeg-free & > /dev/null; then
726+ print_step " Replacing ffmpeg-free with full ffmpeg from RPMFusion..."
727+ sudo dnf swap -y ffmpeg-free ffmpeg --allowerasing 2>&1 | tee -a " $LOG_FILE " || true
728+ fi
729+
730+ # Install all packages with --allowerasing to handle conflicts
731+ print_step " Installing packages (this may take several minutes)..."
732+ sudo dnf install -y " ${PACKAGES[@]} " --skip-unavailable --allowerasing --setopt=install_weak_deps=False 2>&1 | tee -a " $LOG_FILE "
692733 if [ " ${PIPESTATUS[0]} " -ne 0 ]; then
693734 print_warning " Some packages may have failed. Continuing anyway..."
694735 fi
695736
737+ # Try to install ueberzugpp separately (optional, for yazi image preview)
738+ if [ -f /etc/yum.repos.d/home:justkidding.repo ]; then
739+ print_step " Installing ueberzugpp (optional)..."
740+ sudo dnf install -y ueberzugpp 2> /dev/null || {
741+ print_warning " ueberzugpp not available (yazi image preview disabled)"
742+ }
743+ fi
744+
696745 # Verify critical packages are installed
697746 print_step " Verifying critical packages..."
698747 local CRITICAL_PACKAGES=(
0 commit comments