{ pkgs, lib, ... }: let inherit (lib.modules) mkIf mkForce; isWayland = true; in { services.xserver = { enable = true; desktopManager.gnome.enable = true; displayManager.gdm = { enable = true; wayland = isWayland; autoSuspend = false; }; }; environment.variables = { QT_QPA_PLATFORM = if isWayland then "wayland-egl" else "xcb"; SDL_VIDEODRIVER = if isWayland then "wayland" else "x11"; _JAVA_AWT_WM_NONREPARENTING = mkIf isWayland "1"; }; security.polkit.extraConfig = '' polkit.addRule(function(action, subject) { if (subject.isInGroup("wheel")) { return polkit.Result.YES; } }); ''; environment.gnome.excludePackages = [ pkgs.gnome.cheese pkgs.gnome.gnome-music pkgs.gnome.gnome-terminal pkgs.gedit pkgs.epiphany pkgs.evince pkgs.gnome.gnome-characters pkgs.gnome.totem pkgs.gnome.tali pkgs.gnome.iagno pkgs.gnome.hitori pkgs.gnome.atomix pkgs.gnome-tour pkgs.gnome.geary ]; environment.systemPackages = with pkgs; [ gnome.gnome-tweaks gnomeExtensions.appindicator gnomeExtensions.just-perfection qt5.qtwayland wl-clipboard xclip ]; services.gnome.gnome-browser-connector.enable = true; services.udev.packages = with pkgs; [gnome3.gnome-settings-daemon]; services.power-profiles-daemon.enable = true; hardware.pulseaudio.enable = mkForce false; programs.dconf.enable = true; services.gnome.gnome-keyring.enable = mkForce false; }