You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docs/en/crystal-linux/nvidiawayland.mdx

64 lines
3.0 KiB
Markdown

---
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
```
## 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:
### Removing the gdm udev that disables wayland
GDM uses some chipset dependent [udev rules](https://gitlab.gnome.org/GNOME/gdm/-/blob/main/data/61-gdm.rules.in) to see if it should force Xorg usage instead of letting you use Wayland. If you want to force-enable Wayland, run 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.