nixos/mate: Add enableWaylandSession option

Make this an opt-in for now since the session is in early stage
and introduces a new set of wayfire closure.

+51 -40
+51 -40
nixos/modules/services/x11/desktop-managers/mate.nix
··· 34 34 type = types.listOf types.package; 35 35 description = lib.mdDoc "Extra extensions to add to caja."; 36 36 }; 37 + 38 + enableWaylandSession = mkEnableOption (lib.mdDoc "MATE Wayland session"); 37 39 }; 38 40 39 41 environment.mate.excludePackages = mkOption { ··· 45 47 46 48 }; 47 49 48 - config = mkIf cfg.enable { 50 + config = mkMerge [ 51 + (mkIf (cfg.enable || cfg.enableWaylandSession) { 52 + services.xserver.displayManager.sessionPackages = [ 53 + pkgs.mate.mate-session-manager 54 + ]; 49 55 50 - services.xserver.displayManager.sessionPackages = [ 51 - pkgs.mate.mate-session-manager 52 - ]; 56 + # Debugging 57 + environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; 53 58 54 - # Debugging 55 - environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; 59 + environment.systemPackages = utils.removePackagesByName 60 + (pkgs.mate.basePackages ++ 61 + pkgs.mate.extraPackages ++ 62 + [ 63 + (pkgs.mate.caja-with-extensions.override { 64 + extensions = cfg.extraCajaExtensions; 65 + }) 66 + (pkgs.mate.mate-panel-with-applets.override { 67 + applets = cfg.extraPanelApplets; 68 + }) 69 + pkgs.desktop-file-utils 70 + pkgs.glib 71 + pkgs.gtk3.out 72 + pkgs.shared-mime-info 73 + pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ 74 + pkgs.yelp # for 'Contents' in 'Help' menus 75 + ]) 76 + config.environment.mate.excludePackages; 56 77 57 - environment.systemPackages = utils.removePackagesByName 58 - (pkgs.mate.basePackages ++ 59 - pkgs.mate.extraPackages ++ 60 - [ 61 - (pkgs.mate.caja-with-extensions.override { 62 - extensions = cfg.extraCajaExtensions; 63 - }) 64 - (pkgs.mate.mate-panel-with-applets.override { 65 - applets = cfg.extraPanelApplets; 66 - }) 67 - pkgs.desktop-file-utils 68 - pkgs.glib 69 - pkgs.gtk3.out 70 - pkgs.shared-mime-info 71 - pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ 72 - pkgs.yelp # for 'Contents' in 'Help' menus 73 - ]) 74 - config.environment.mate.excludePackages; 78 + programs.dconf.enable = true; 79 + # Shell integration for VTE terminals 80 + programs.bash.vteIntegration = mkDefault true; 81 + programs.zsh.vteIntegration = mkDefault true; 75 82 76 - programs.dconf.enable = true; 77 - # Shell integration for VTE terminals 78 - programs.bash.vteIntegration = mkDefault true; 79 - programs.zsh.vteIntegration = mkDefault true; 83 + # Mate uses this for printing 84 + programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); 80 85 81 - # Mate uses this for printing 82 - programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); 86 + services.gnome.at-spi2-core.enable = true; 87 + services.gnome.gnome-keyring.enable = true; 88 + services.udev.packages = [ pkgs.mate.mate-settings-daemon ]; 89 + services.gvfs.enable = true; 90 + services.upower.enable = config.powerManagement.enable; 91 + services.xserver.libinput.enable = mkDefault true; 83 92 84 - services.gnome.at-spi2-core.enable = true; 85 - services.gnome.gnome-keyring.enable = true; 86 - services.udev.packages = [ pkgs.mate.mate-settings-daemon ]; 87 - services.gvfs.enable = true; 88 - services.upower.enable = config.powerManagement.enable; 89 - services.xserver.libinput.enable = mkDefault true; 93 + security.pam.services.mate-screensaver.unixAuth = true; 90 94 91 - security.pam.services.mate-screensaver.unixAuth = true; 95 + xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ]; 92 96 93 - xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ]; 97 + environment.pathsToLink = [ "/share" ]; 98 + }) 99 + (mkIf cfg.enableWaylandSession { 100 + programs.wayfire.enable = true; 101 + programs.wayfire.plugins = [ pkgs.wayfirePlugins.firedecor ]; 94 102 95 - environment.pathsToLink = [ "/share" ]; 96 - }; 103 + environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${pkgs.mate.mate-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; 97 104 105 + environment.systemPackages = [ pkgs.mate.mate-wayland-session ]; 106 + services.xserver.displayManager.sessionPackages = [ pkgs.mate.mate-wayland-session ]; 107 + }) 108 + ]; 98 109 }