about summary refs log tree commit diff
path: root/nixos/modules/services/x11/display-managers/gdm.nix
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2019-11-27 05:29:58 +0000
committerGitHub <noreply@github.com>2019-11-27 05:29:58 +0000
commit1b5df99e7aefbeb7e0566bf819f502908399488c (patch)
treedc0fb5f718afce596722da5d2b6a2dcb5d517349 /nixos/modules/services/x11/display-managers/gdm.nix
parenta1f82db35130229f05203623dd6188c0b3ec4a53 (diff)
parentd41a2e33989efbe3843a26b73d3c2d38ca048c1e (diff)
downloadnixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar.gz
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar.bz2
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar.lz
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar.xz
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.tar.zst
nixlib-1b5df99e7aefbeb7e0566bf819f502908399488c.zip
Merge pull request #70295 from worldofpeace/mutter-eglstreams
Mutter eglstreams
Diffstat (limited to 'nixos/modules/services/x11/display-managers/gdm.nix')
-rw-r--r--nixos/modules/services/x11/display-managers/gdm.nix25
1 files changed, 24 insertions, 1 deletions
diff --git a/nixos/modules/services/x11/display-managers/gdm.nix b/nixos/modules/services/x11/display-managers/gdm.nix
index 0af9ccfcf3e4..912ec5bd38ed 100644
--- a/nixos/modules/services/x11/display-managers/gdm.nix
+++ b/nixos/modules/services/x11/display-managers/gdm.nix
@@ -126,11 +126,21 @@ in
       wayland = mkOption {
         default = true;
         description = ''
-          Allow GDM run on Wayland instead of Xserver
+          Allow GDM to run on Wayland instead of Xserver.
+          Note to enable Wayland with Nvidia you need to
+          enable the <option>nvidiaWayland</option>.
         '';
         type = types.bool;
       };
 
+      nvidiaWayland = mkOption {
+        default = false;
+        description = ''
+          Whether to allow wayland to be used with the proprietary
+          NVidia graphics driver.
+        '';
+      };
+
       autoSuspend = mkOption {
         default = true;
         description = ''
@@ -237,6 +247,19 @@ in
 
     services.dbus.packages = [ gdm ];
 
+    # We duplicate upstream's udev rules manually to make wayland with nvidia configurable
+    services.udev.extraRules = ''
+      # disable Wayland on Cirrus chipsets
+      ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="${gdm}/libexec/gdm-disable-wayland"
+      # disable Wayland on Hi1710 chipsets
+      ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="${gdm}/libexec/gdm-disable-wayland"
+      ${optionalString (!cfg.gdm.nvidiaWayland) ''
+        DRIVER=="nvidia", RUN+="${gdm}/libexec/gdm-disable-wayland"
+      ''}
+      # disable Wayland when modesetting is disabled
+      IMPORT{cmdline}="nomodeset", RUN+="${gdm}/libexec/gdm-disable-wayland"
+    '';
+
     systemd.user.services.dbus.wantedBy = [ "default.target" ];
 
     programs.dconf.profiles.gdm =