---
title: How to make Wayland work on an NVIDIA GPU
---
Wayland requires the nvidia gpu to have modesetting enabled, to do that you have to add the nvidia drivers to the mkinitcpio modules and add the `nvidia-drm.modeset=1` kernel flag

## Adding the nvidia mkinitcpio modules
To add the required nvidia modules `nvidia nvidia_modeset nvidia_uvm nvidia_drm` to the mkinitcpio modules you'll have to edit `/etc/mkinitcpio.conf` by running `sudo nano /etc/mkinitcpio.conf`
in that file there should be a line that looks like this:
```
MODULES=()
```
you want to add the modules in the parentheses, the module names are seperated by spaces, in the end the line should look like this:
```
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
```
To save the file you have to press `CTRL+O` and to quit `CTRL+X`
Now you want to generate the initramfs:
```
sudo mkinitcpio -P
```
to regenerate the initcpio

## Adding the kernel flag
To add the kernel flag with grub, you have to edit `/etc/default/grub` by running `sudo nano /etc/default/grub`, you should find a line that looks like this:
```
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
```
You'll have to append `nvidia-drm.modeset=1` to that line, so that it would look like this:

 ```
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nvidia_drm.modeset=1"
```
Just like with the mkinitcpio modules, to save and quit you'll have to first press `CTRL+O` and then `CTRL+X`
Once you add the kernel parameter, you want to regenerate the grub config to reflect the kernel flag changes, to do this you have to run
```
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
This will generate the grub config and save it to /boot/grub/grub.cfg

### Extra steps for GNOME and onyx
GDM uses some chipset dependent [udev rules](https://wiki.archlinux.org/title/Udev) to see if it should force Xorg usage instead of letting you use Wayland. These udev rules can be disabled by running this command:
```
sudo ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
```
This command should symlink GDM's udev rules to *nothing*. Rules in `/etc/udev/rules.d/` should overwrite rules in `/usr/lib/udev/rules.d` (which are shipped by the package itself and managed by your package manager).
And after that, reboot and GNOME Wayland *should* be working!


## Rebooting
Once you went through all the steps, meaning you:
- added the mkinitcpio modules
- generated the initcpio
- added the kernel flags with grub
- regenerated the grub config
- optionally disabled udev rules

You should be able to use wayland! Just reboot and you should be able to log into a wayland session


If it still doesn't work, your GPU might not support Wayland on the proprietary NVIDIA drivers. There is no fix for this other than using the nouveau driver, which sadly doesn't perform as well as the propietary nvidia drivers.
