You need proprietary drivers or codecs
You installed Fedora Workstation, liked the clean experience, and then tried to install the NVIDIA proprietary driver or a codec-heavy media player. The terminal spat back No match for argument or offered a stripped-down version that refuses to play your favorite video format. You are stuck with the default repositories, which are great for stability but intentionally leave out proprietary blobs and non-free codecs. You need RPM Fusion.
What RPM Fusion actually does
Fedora ships with a strict policy. The official repositories contain only software that meets the Fedora Project's licensing guidelines. This means no proprietary drivers, no patented codecs, and no closed-source firmware. The project prioritizes freedom and auditability. RPM Fusion exists to fill the gap. It is a community-maintained repository that provides packages Fedora cannot include.
Think of the official repos as the base camp where everything is open and verified. RPM Fusion is the supply drop from the outside world that brings the gear you need for specific hardware or media formats. Enabling it adds a new source to dnf so the package manager knows where to look for these additional packages.
RPM Fusion splits packages into two repositories. The free repository contains software that is open-source but excluded from Fedora for reasons other than licensing, such as patent issues or conflicts with Fedora's goals. The nonfree repository contains proprietary software. This split allows you to enable only the free repository if you want to avoid proprietary blobs while still getting codecs and drivers that are open-source but restricted. Most users should enable both. The nonfree repository is essential for NVIDIA GPU support and some Wi-Fi firmware.
Install the repositories
Run the installation command. The command downloads the repository definition packages and installs them. This updates your dnf configuration to trust and query RPM Fusion.
sudo dnf install -y \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# WHY: The $(rpm -E %fedora) substitution inserts your current Fedora release number.
# This ensures you get the repository files for Fedora 40, 41, or whatever version you are running.
# The free repo contains open-source packages that Fedora excludes for other reasons.
# The nonfree repo contains proprietary drivers and codecs.
# Installing both covers the widest range of hardware and media needs.
The command uses rpm -E %fedora to determine the release version. rpm -E invokes RPM's macro expansion engine. The %fedora macro is defined by the fedora-repos package and expands to the numeric release version. This is a robust method that works across different Fedora builds and ensures you never download repository files for the wrong release.
Modern dnf handles URL installation seamlessly. You do not need to download the file first. The .noarch suffix indicates the package contains architecture-independent configuration files. These files define the repository metadata and GPG keys.
How the configuration works
When you install the RPM Fusion release package, it drops configuration files into /etc/yum.repos.d/. This directory is where dnf looks for repository definitions. Files in /etc/ are user-modified and persist across upgrades. Files in /usr/lib/ are managed by packages and can be overwritten. RPM Fusion respects this convention. It places repo files in /etc/ so your configuration survives system updates.
Here is how the repository definition looks after installation.
# /etc/yum.repos.d/rpmfusion-free.repo
[rpmfusion-free]
name=RPM Fusion for Fedora $releasever - Free
baseurl=https://mirrors.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora
# WHY: This file defines the free repository.
# enabled=1 tells dnf to query this repo during searches and installs.
# gpgcheck=1 enforces signature verification for all packages.
# The gpgkey path points to the key installed by the release package.
The repository uses a mirrorlist mechanism. The repo file contains a mirrorlist URL that points to a dynamic list of mirrors. dnf fetches the list and picks a fast mirror based on your location. This improves download speeds without manual configuration.
The GPG key is stored in /etc/pki/rpm-gpg/. This is the standard location for Fedora GPG keys. dnf checks the signature of every package against this key. If the signature is invalid, dnf aborts the installation. This protects you from supply chain attacks. The RPM Fusion project maintains these keys and publishes them transparently.
Run journalctl -xe if you suspect a service failed during the install. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style. In this case, the install is a one-shot transaction, so the journal is less useful than the dnf output.
Check the repolist before installing packages. If the repo is missing, the package manager will never find the driver.
Verify the setup
Verify the repositories are active and enabled. Run the repolist command.
dnf repolist enabled | grep rpmfusion
# WHY: This filters the output to show only RPM Fusion repositories.
# If the command returns lines containing rpmfusion-free and rpmfusion-nonfree, the setup is complete.
# An empty output means the repositories failed to register.
You should see output similar to this.
repo id repo name
rpmfusion-free RPM Fusion for Fedora 40 - Free
rpmfusion-free-updates RPM Fusion for Fedora 40 - Free - Updates
rpmfusion-nonfree RPM Fusion for Fedora 40 - Nonfree
rpmfusion-nonfree-updates RPM Fusion for Fedora 40 - Nonfree - Updates
The presence of updates repositories indicates that RPM Fusion provides update streams. These integrate with your standard update cycle. When you run dnf upgrade, the package manager checks RPM Fusion for newer versions of installed packages. This includes kernel modules for NVIDIA drivers. If a new kernel is installed, the corresponding driver package updates automatically. You do not need to manage drivers separately.
Trust the package manager. Manual driver downloads drift and break. RPM Fusion keeps drivers in sync with the kernel.
Common errors and fixes
The most common error is a mismatched release number. If you copied a command from an old tutorial, the URL might point to Fedora 39 while you are running Fedora 41. The $(rpm -E %fedora) substitution prevents this, but manual edits can break it. If you see 404 Not Found errors, check the URL in the repo file. Ensure the release number matches your system.
Another issue is GPG key import. dnf will prompt you to import the RPM Fusion GPG key. Type y and press Enter. The key ensures package integrity. Without it, dnf refuses to install packages from the repository.
If you see Error: GPG check FAILED, the key import was skipped or failed. Re-run the install command. dnf will retry the key import. Do not bypass the GPG check with --nogpgcheck. That exposes your system to tampered packages.
Always accept the GPG key prompt. Trust the key, not the URL.
Sometimes packages conflict. Fedora and RPM Fusion might provide different versions of a library. dnf will detect the conflict and suggest a swap. Review the transaction summary. If dnf proposes to remove a core system package, abort the transaction. This indicates a repository mismatch or a broken dependency chain.
The dnf upgrade command will refuse to proceed and print Error: Transaction test error: package python3-3.12.x conflicts with python3-3.13.y. The conflict is intentional. Read the next paragraph before forcing. In this case, the conflict usually means you are mixing repositories from different Fedora releases. Verify your release version. Ensure you are not pointing to a rawhide or development repository.
Read the transaction summary before confirming. A swap is normal. A removal of a core package is a red flag.
When to use RPM Fusion
Use RPM Fusion when you need proprietary hardware drivers or non-free media codecs. Use the official Fedora repositories when you are installing standard system tools and open-source applications. Use Flatpak when you want a sandboxed application that updates independently of the system. Use source compilation only when no binary package exists and you understand how to manage dependencies manually.
RPM Fusion updates are integrated into your system update cycle. When you run dnf upgrade, the package manager checks RPM Fusion for newer versions of installed packages. This includes kernel modules for NVIDIA drivers. If a new kernel is installed, the corresponding driver package updates automatically. You do not need to manage drivers separately.
dnf upgrade --refresh is the normal weekly maintenance command. It forces a metadata refresh from all repositories. This ensures you get the latest security updates from RPM Fusion just like the official repos. Run this command regularly to keep your system secure.
Run dnf upgrade --refresh weekly. It pulls updates from RPM Fusion just like the official repos.