How to Configure NVIDIA Settings (nvidia-settings) on Fedora

Install the proprietary NVIDIA driver and nvidia-settings GUI on Fedora via RPM Fusion, then use the application to configure displays, performance modes, and power management.

The scenario

You just installed Fedora and connected your second monitor. The desktop environment only sees one screen. You open the system settings, but the refresh rate options are locked at sixty hertz. You know your GPU supports one hundred and forty four. You need the NVIDIA control panel to fix the layout and unlock the performance profile. You also need it to persist across reboots without breaking your display manager.

What is actually happening

Fedora ships with open source drivers by default. The nouveau driver handles basic display output, but it lacks the firmware hooks required for high refresh rates, multi monitor scaling, and advanced power management. The proprietary NVIDIA driver provides those hooks. It also ships with nvidia-settings, a standalone GTK application that talks directly to the NVIDIA kernel module and the X server.

The driver installation on Fedora relies on akmod. This package contains the source code for the kernel module. When you install it, akmod waits for the next kernel update or boot event, then compiles the module against your running kernel. This keeps the driver working across kernel updates without requiring manual rebuilds. The compilation happens in the background. If you reboot immediately after the dnf command finishes, the system will fall back to the open source driver because the proprietary module has not finished building yet.

Fedora also defaults to Wayland for desktop sessions. Wayland changes how compositing and display configuration work. The NVIDIA driver supports Wayland, but nvidia-settings operates primarily through the X server extension protocol. Running the tool on a pure Wayland session limits what you can change. You will need to switch to an Xorg session for full control, or rely on the desktop environment for basic monitor arrangement.

Run dnf upgrade --refresh weekly to keep the driver stack aligned with kernel updates. The akmod service will automatically rebuild the module when a new kernel ships. This is different from dnf system-upgrade, which crosses major Fedora releases. Keep your maintenance commands separate.

Install the driver and the control panel

You need the RPM Fusion repositories before you can install proprietary hardware drivers. Fedora does not host them in the default repositories due to licensing restrictions. RPM Fusion provides the free and non free packages that fill this gap.

Here is how to enable the repositories and pull in the driver stack in one transaction.

sudo dnf install \
  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 \
  akmod-nvidia xorg-x11-drv-nvidia nvidia-settings
# --assumeyes is omitted so you can verify the package list before committing
# akmod-nvidia pulls the kernel module source and build tools
# xorg-x11-drv-nvidia provides the X server driver backend
# nvidia-settings installs the graphical configuration utility

The transaction will download several hundred megabytes. Wait for the Complete! message. Do not reboot yet. The akmods service will start automatically and begin compiling the kernel module. You can watch the progress in a separate terminal.

journalctl -fu akmods
# -f follows the log stream in real time
# -u filters output to the akmods service unit
# Watch for the line that says "Build complete" or "Module installed"

Once the build finishes, the module is ready for the next boot. Reboot the system now.

sudo systemctl reboot
# Rebooting triggers the kernel to load the newly compiled nvidia module
# The display manager will switch to the proprietary driver on startup

Verify the module loaded correctly

After the system boots, confirm the kernel module is active and the driver reports the correct hardware. A missing module usually means the build failed or Secure Boot is blocking unsigned modules.

lsmod | grep nvidia
# Lists loaded kernel modules matching the nvidia prefix
# You should see nvidia, nvidia_drm, nvidia_modeset, and nvidia_uvm

Check the driver version and GPU status next.

nvidia-smi
# Queries the NVIDIA management interface directly
# Returns a table with GPU name, driver version, memory usage, and processes

If nvidia-smi returns a command not found error, the driver did not load. If it returns a failed to initialize error, the kernel module is missing or blocked. Check the journal for compilation errors before proceeding.

journalctl -xeu akmods
# -x adds explanatory hints to journal entries
# -e jumps to the end of the log buffer
# Look for lines containing "failed" or "error" near the top

Verify the module is loaded and the driver reports correctly before touching the GUI. Half the configuration problems stem from a missing backend.

Configure displays and power management

Launch the control panel from the application menu or the terminal. Run it as your normal user for display configuration. Use sudo only when you need to write system wide configuration files or adjust power management profiles that require root privileges.

nvidia-settings
# Launches the GUI with user privileges
# Changes to display layout and refresh rate apply immediately to the X session

The interface divides into several panels. The X Server Display Configuration panel handles monitor topology. Connect your displays, set the primary screen, and adjust the refresh rate. The GPU PowerMizer panel controls performance scaling. Select Maximum Performance for gaming or compilation workloads. Select Adaptive for general desktop use to reduce fan noise and power draw.

To make display changes survive a reboot, click Save to X Configuration File. The tool writes an Xorg configuration snippet to /etc/X11/xorg.conf.d/20-nvidia.conf. This directory is the standard location for user managed X server overrides. Files in /usr/lib/X11/ ship with packages and get overwritten on updates. Always edit or generate files in /etc/.

cat /etc/X11/xorg.conf.d/20-nvidia.conf
# Displays the generated configuration file
# Contains Monitor, Device, and ServerLayout sections
# The X server reads this file on startup and applies the layout

Wayland sessions change the workflow. GNOME Settings handles monitor arrangement on Wayland. nvidia-settings cannot modify the Wayland compositor directly. If you need the full NVIDIA control panel, select GNOME on Xorg at the login screen. Click the gear icon in the bottom right corner before entering your password. Switch back to Wayland when you only need basic display management.

Save the configuration file and reboot to test persistence. Trust the package manager and the X server configuration directory. Manual edits to system files drift and break on updates.

Common pitfalls and what the error looks like

The most frequent issue is an akmod build failure. This happens when kernel headers are missing or mismatched. The journal will show a compilation error pointing to missing header files. Install the development packages and force a rebuild.

sudo dnf install kernel-devel kernel-headers
# Provides the C headers matching the running kernel version
sudo akmods --force
# Triggers a manual rebuild of all pending kernel modules
# Use this only when the automatic post-boot build fails

SELinux can block the driver if file contexts get corrupted during a manual installation or a failed update. The system will drop to a low resolution fallback or refuse to start the display manager. Check the audit log for denials.

sudo ausearch -m avc -ts recent | grep nvidia
# Searches the audit log for Access Vector Cache denials
# -ts recent limits the search to the current boot session
# Look for lines mentioning nvidia.ko or libnvidia

If you see denials, restore the correct security contexts for the module directory.

sudo restorecon -Rv /usr/lib/modules
# Recursively resets SELinux labels to match the default policy
# -v prints each file as it is relabeled
# Run this before rebooting to prevent the display manager from failing

Another common trap is running nvidia-settings with sudo for basic monitor setup. The tool writes to your user configuration directory when run normally. Running it as root changes the ownership of files in your home directory. This breaks the desktop session and causes permission errors on logout. Only use sudo when explicitly saving to /etc/X11/xorg.conf.d/ or adjusting system wide power limits.

SELinux denials also show up in journalctl -t setroubleshoot with a one line summary. Read those before disabling SELinux. The policy usually blocks a specific file operation, not the entire driver. Fix the context or install the missing policy module instead of switching to permissive mode.

Check the journal before guessing. Read the actual error before forcing a configuration change.

When to use nvidia-settings versus alternatives

Use nvidia-settings when you need precise control over refresh rates, monitor scaling, and GPU power profiles. Use GNOME Settings when you are on a Wayland session and only need basic monitor arrangement. Use xorg.conf.d configuration files when you want to enforce a layout across multiple user accounts or headless servers. Use nvidia-smi when you need to monitor temperature, memory usage, or GPU utilization from the terminal. Stay on the RPM Fusion akmod-nvidia package if you want automatic kernel updates without manual driver recompilation.

Reboot before you debug. Half the time the symptom is gone.

Where to go next