How to Install NVIDIA Drivers on Fedora Silverblue

Install NVIDIA drivers on Fedora Silverblue by layering the akmod-nvidia package from RPM Fusion using rpm-ostree, which rebuilds the kernel module for each new deployment.

You installed Silverblue and the NVIDIA GPU is invisible

You booted Fedora Silverblue and the desktop loaded, but your games refuse to start. Or maybe you see a generic "Intel" GPU in the settings while your NVIDIA card sits idle. You opened the terminal and typed sudo dnf install nvidia-driver. The terminal returned an error about read-only filesystems or transaction conflicts. The system is telling you the rules have changed. This is not a bug. This is the immutable OS model working exactly as designed.

Fedora Silverblue does not let you modify the root filesystem directly. The OS image is a read-only snapshot. When you install a package, you are not changing the base image. You are layering a package on top of it. The solution requires a different workflow. You need to use rpm-ostree to layer the driver packages and wait for the kernel module to compile in the background.

How immutable OS and kernel modules interact

Fedora Silverblue uses ostree to manage the OS. The root filesystem is a read-only deployment. Every update creates a new deployment. You boot into one deployment or the other. This guarantees consistency. If an update breaks, you boot the old one. This safety comes with a constraint. You cannot run dnf to install packages directly. dnf expects to write files to /usr. On Silverblue, /usr is read-only.

Instead, you use rpm-ostree. This tool calculates a new deployment that includes your requested packages. It merges the base image with your layers. The result is a new bootable snapshot. Think of the OS image as a vinyl record. You cannot scratch new grooves into the vinyl. Instead, you place a sticker on the cover that points to a new track. The system reads the sticker and plays the extra track alongside the original recording.

NVIDIA drivers add complexity. The driver includes a kernel module. The kernel module must match the running kernel exactly. On a mutable system, the driver package includes a pre-compiled module for the current kernel. On Silverblue, the kernel updates frequently. You need a package that can compile the module on demand. That is what akmod-nvidia does. It ships the source code and a build script. When the kernel changes, the system compiles the module in the background. The akmods service watches for kernel updates and triggers the build automatically.

Run rpm-ostree status to see your layers. The output shows exactly what is stacked on the base image.

Install the driver

You need the RPM Fusion repositories to access the NVIDIA packages. Fedora does not ship proprietary drivers. The commands below layer the repository metadata and the driver packages onto your current deployment.

Here's how to add the RPM Fusion repositories so the system knows where to find the driver packages.

sudo rpm-ostree install \
  # Layer the free repository package to access open-source dependencies
  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  # Layer the nonfree repository package to access the NVIDIA driver binaries
  https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

The $(rpm -E %fedora) expansion ensures the URL matches your Fedora release version. This prevents downloading packages for the wrong release.

Reboot to apply the repository addition. rpm-ostree requires a reboot to activate changes. The new deployment becomes the boot default.

systemctl reboot

Here's how to layer the NVIDIA driver packages onto your deployment.

sudo rpm-ostree install \
  # akmod-nvidia provides the kernel module source and build tools
  # xorg-x11-drv-nvidia provides the userspace display driver
  akmod-nvidia \
  xorg-x11-drv-nvidia

If you need CUDA support for AI workloads or compute-accelerated applications, add the cuda package.

sudo rpm-ostree install \
  # Add the cuda package if you need compute support for AI or rendering
  cuda

Reboot into the new deployment. The system will boot the updated snapshot with the driver packages layered.

systemctl reboot

Reboot before you debug. The new deployment must be active for the layers to take effect.

Wait for the kernel module to build

After the first boot with the layered packages, the akmods service starts. It compiles the NVIDIA kernel module in the background. This takes two to five minutes depending on your CPU. The CPU usage will spike during the build. Do not assume the process has failed immediately. Interrupting the compile leaves you with a broken module and a black screen.

Here's how to monitor the kernel module build process to ensure the driver compiles successfully.

sudo journalctl -f -u akmods
# Follow the akmods service logs in real time
# The build runs in the background after the first boot
# Look for "Done" or success messages before proceeding

If the build fails, the logs will show the error. Common causes include missing kernel headers or a corrupted source package. Use journalctl -xeu akmods to get more context if the build errors out. The x flag adds explanatory text and the e flag jumps to the end of the journal.

Trust the akmod build process. Wait for the success message before rebooting again.

Verify the driver is active

Once the build completes, verify the driver is loaded and communicating with the hardware.

Here's how to check whether the NVIDIA driver is loaded and reporting GPU status.

nvidia-smi
# Query the NVIDIA driver for GPU status and version info
# This command confirms the kernel module is loaded and functional

The output should display your GPU model, driver version, and CUDA version. If the command fails, the module may still be building. Wait a minute and try again.

If you see this error, the driver is not loaded.

NVRM: No NVIDIA devices found.

This usually means the akmods build has not finished or failed. Check the journal logs.

Here's how to confirm the kernel module is loaded in the running kernel.

lsmod | grep nvidia
# List loaded kernel modules and filter for nvidia
# This verifies the module is present in the kernel namespace

Run nvidia-smi before you launch your app. A missing driver shows up as a Vulkan error, not a missing package.

Common pitfalls and recovery

Kernel updates happen frequently on Fedora. When Silverblue pulls a new OS image with an updated kernel, akmods automatically rebuilds the NVIDIA module after you reboot into the new deployment. No manual intervention is needed in most cases.

If the module fails to build after a kernel update, force a rebuild.

sudo akmods --force
# Force the akmods service to rebuild all kernel modules
# This bypasses the cache and recompiles from source
sudo dracut --force
# Regenerate the initramfs to include the new module
systemctl reboot
# Reboot to apply the regenerated initramfs and new module

Wayland is the default display server on Fedora Silverblue. Recent NVIDIA driver versions support Wayland via GBM. If you are dropped to an X11 session unexpectedly, check your session type.

echo $XDG_SESSION_TYPE
# Print the current display server session type
# Output should be "wayland" for the default GNOME session

If the output shows x11, the Wayland session may be disabled by a udev rule. Check /usr/lib/udev/rules.d/61-gdm.rules for a rule disabling Wayland for your GPU. Do not edit files in /usr/lib/. These files are owned by packages. Edits vanish on update. If you need to override a rule, create a file in /etc/udev/rules.d/ with a higher priority number. Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/.

Silverblue retains previous deployments. If the NVIDIA installation breaks your system, you can roll back to the previous state.

sudo rpm-ostree rollback
# Switch the boot default to the previous deployment
# This restores the system to the state before the last transaction
systemctl reboot
# Reboot into the rolled-back deployment

Use rpm-ostree rollback if the desktop fails to load. Your previous deployment is safe.

Choose the right tool for your workflow

Use Fedora Silverblue when you want a known-good base image you can always roll back to. Use Fedora Workstation when you need to install kernel modules or low-level driver patches without waiting for a background build. Use akmod-nvidia when you are on an immutable system and need the driver to rebuild automatically after kernel updates. Use kmod-nvidia when you are on a mutable system and want a pre-compiled module for the current kernel only. Use rpm-ostree install when you are modifying the OS image on Silverblue. Use dnf install when you are working inside a Toolbox container or on a mutable Fedora variant.

Run rpm-ostree status to see your layers. The output shows exactly what is stacked on the base image.

Where to go next