You just finished a clean Fedora install
You boot into the desktop and the resolution is locked at 1024x768. Your laptop fan spins at maximum speed while playing a standard definition video. The terminal reports that your graphics card is running on the nouveau driver instead of the proprietary NVIDIA stack. You know you need the official driver, but Fedora does not ship it by default. You need to add the package, trigger the kernel module build, and reboot.
What is actually happening under the hood
Fedora ships with the open-source nouveau driver for NVIDIA hardware. It is reverse-engineered, stable, and works out of the box for basic display output. It does not expose hardware acceleration, CUDA compute, or modern display features. The proprietary NVIDIA driver contains the actual firmware interfaces and performance optimizations. Because it is closed-source, it cannot be included in the default Fedora ISO.
The driver also lives outside the main Linux kernel tree. It ships as an out-of-tree kernel module. When you install a new kernel or update the driver, the module must be compiled against the exact kernel headers you are running. Fedora handles this compilation automatically through the akmod system. The akmod package contains the source code and build scripts. A background service watches for kernel updates and compiles the module in the background. If you skip the reboot after installation, the system will still be running the old kernel with the old module. The new driver will sit idle until the next boot.
Think of nouveau as a universal remote that controls the power button and volume. The NVIDIA driver is the manufacturer's dedicated control panel that unlocks every feature. You cannot use both at the same time. The kernel will only load one graphics module per GPU.
Run dnf upgrade --refresh weekly to keep your kernel headers in sync with the module source. Mismatched headers cause silent build failures.
The installation and build process
Open a terminal and check whether your system actually has NVIDIA hardware. The lspci command lists all PCI devices. Filter it for VGA or 3D controllers.
lspci -k | grep -A 3 -i nvidia
# Filters the PCI bus for NVIDIA devices
# Shows the kernel driver currently in use
# Confirms you are not chasing a phantom GPU
If the output shows Kernel driver in use: nouveau, you are ready to switch. Run the installation command. The akmod-nvidia package pulls in the driver source, the X11 display driver, and the CUDA runtime libraries.
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
# akmod-nvidia provides the kernel module source and build system
# xorg-x11-drv-nvidia-cuda installs the display server driver and compute libraries
# dnf resolves dependencies automatically and stages the transaction
Wait for the package manager to finish. The akmods service will trigger automatically and begin compiling the module for your current kernel. You can watch the progress in the journal.
journalctl -u akmods -f
# Monitors the automatic kernel module build service
# Shows compilation steps and dependency checks
# Press Ctrl+C to exit the live log view
Once the build completes, reboot the system. The new kernel module will load during the boot sequence. The display server will switch to the NVIDIA driver instead of nouveau.
Reboot before you debug. Half the time the symptom is gone.
Verify the driver is active
After the system returns to the login screen, open a terminal and run the NVIDIA system management interface tool. It queries the GPU directly through the proprietary driver.
nvidia-smi
# Queries the GPU for temperature, memory usage, and driver version
# Confirms the kernel module is loaded and communicating with hardware
# Returns a table if successful, or an error if the driver failed to load
You should see a table listing your GPU model, driver version, and memory utilization. If you need to verify that the display server is actually using the driver for rendering, check the OpenGL renderer string.
glxinfo | grep "OpenGL renderer"
# Reads the X11/Wayland graphics context information
# Confirms the display server is routing rendering through NVIDIA
# Requires the mesa-demos package if not already installed
Run nvidia-smi first. Trust the kernel module output before checking the display server.
Common pitfalls and exact error strings
The most common failure happens when Secure Boot is enabled. The Linux kernel refuses to load unsigned kernel modules. The proprietary NVIDIA module is not signed by a key trusted by your motherboard firmware. You will see a boot hang or a fallback to nouveau. The journal will contain a clear refusal message.
kernel: nvidia: loading out-of-tree module taints kernel.
kernel: nvidia: module license 'Proprietary' taints kernel.
kernel: nvidia: module verification failed: signature and/or required key missing - tainting kernel
You have two options. Disable Secure Boot in your UEFI firmware, or enroll a Machine Owner Key that signs the akmod build. Fedora provides a shim and mokutil workflow, but disabling Secure Boot is faster for most desktop users. If you choose the MOK route, run sudo mokutil --import /etc/pki/akmods/certs/public_key.der during the build process and follow the blue UEFI prompt on the next reboot.
Another frequent issue occurs after a major kernel update. The akmods service attempts to rebuild the NVIDIA module against the new kernel headers. If the build fails, the system falls back to nouveau or boots without a graphical interface. The journal will show a compilation error.
systemd[1]: akmods.service: Main process exited, code=exited, status=1/FAILURE
akmods[1234]: Building module nvidia for kernel 6.9.0-100.fc40.x86_64
akmods[1234]: ERROR: compilation failed for kernel 6.9.0-100.fc40.x86_64
Run sudo dnf reinstall akmod-nvidia to force a clean rebuild. Check the build log in /var/lib/akmods/data/ if the error persists. Kernel updates sometimes introduce API changes that break out-of-tree modules. The NVIDIA team usually releases a patch within a few days. Fedora's release cadence is six months. Plan your major upgrades around that cycle to avoid chasing broken module builds during a release transition.
Wayland compatibility also causes confusion. Older NVIDIA drivers required X11 for proper acceleration. Modern drivers support Wayland, but hardware compositing can still be unstable on certain laptop configurations. If your desktop feels sluggish or tears during window movement, switch to the X11 session at the login screen. Click the gear icon and select GNOME on X11.
Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/. If you need to blacklist nouveau permanently, create /etc/modprobe.d/nvidia-blacklist-nouveau.conf instead of touching the package defaults.
Check the journal before guessing. journalctl -xeu akmods shows exactly why the build succeeded or failed.
When to use this approach versus alternatives
Use akmod-nvidia when you want the system to automatically rebuild the driver after every kernel update. Use kmod-nvidia when you are on a stable server kernel and want a precompiled binary module to avoid build dependencies. Use the default nouveau driver when you only need basic display output and want to avoid proprietary software entirely. Use the nvidia-driver meta-package only when you are following a third-party guide that does not match Fedora's packaging conventions.
Trust the package manager. Manual file edits drift, snapshots stay.