summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/x11
diff options
context:
space:
mode:
authorBobby Rong <rjl931189261@126.com>2024-02-25 11:23:10 +0800
committerBobby Rong <rjl931189261@126.com>2024-03-14 23:34:11 +0800
commit398cce395cc4d41864c6ddbd7ec4b0226b1e25bd (patch)
tree2e6b0a50ec1360237633cf88718491fce3d9c242 /nixos/modules/services/x11
parent6865836c3def7d19993a7242bef2ed23ace21926 (diff)
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.
Diffstat (limited to 'nixos/modules/services/x11')
-rw-r--r--nixos/modules/services/x11/desktop-managers/mate.nix111
1 files changed, 61 insertions, 50 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix
index 0aa96143994d..957eac7848e7 100644
--- a/nixos/modules/services/x11/desktop-managers/mate.nix
+++ b/nixos/modules/services/x11/desktop-managers/mate.nix
@@ -34,6 +34,8 @@ in
type = types.listOf types.package;
description = lib.mdDoc "Extra extensions to add to caja.";
};
+
+ enableWaylandSession = mkEnableOption (lib.mdDoc "MATE Wayland session");
};
environment.mate.excludePackages = mkOption {
@@ -45,54 +47,63 @@ in
};
- config = mkIf cfg.enable {
-
- services.xserver.displayManager.sessionPackages = [
- pkgs.mate.mate-session-manager
- ];
-
- # Debugging
- environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
-
- environment.systemPackages = utils.removePackagesByName
- (pkgs.mate.basePackages ++
- pkgs.mate.extraPackages ++
- [
- (pkgs.mate.caja-with-extensions.override {
- extensions = cfg.extraCajaExtensions;
- })
- (pkgs.mate.mate-panel-with-applets.override {
- applets = cfg.extraPanelApplets;
- })
- pkgs.desktop-file-utils
- pkgs.glib
- pkgs.gtk3.out
- pkgs.shared-mime-info
- pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
- pkgs.yelp # for 'Contents' in 'Help' menus
- ])
- config.environment.mate.excludePackages;
-
- programs.dconf.enable = true;
- # Shell integration for VTE terminals
- programs.bash.vteIntegration = mkDefault true;
- programs.zsh.vteIntegration = mkDefault true;
-
- # Mate uses this for printing
- programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
-
- services.gnome.at-spi2-core.enable = true;
- services.gnome.gnome-keyring.enable = true;
- services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
- services.gvfs.enable = true;
- services.upower.enable = config.powerManagement.enable;
- services.xserver.libinput.enable = mkDefault true;
-
- security.pam.services.mate-screensaver.unixAuth = true;
-
- xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ];
-
- environment.pathsToLink = [ "/share" ];
- };
-
+ config = mkMerge [
+ (mkIf (cfg.enable || cfg.enableWaylandSession) {
+ services.xserver.displayManager.sessionPackages = [
+ pkgs.mate.mate-session-manager
+ ];
+
+ # Debugging
+ environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
+
+ environment.systemPackages = utils.removePackagesByName
+ (pkgs.mate.basePackages ++
+ pkgs.mate.extraPackages ++
+ [
+ (pkgs.mate.caja-with-extensions.override {
+ extensions = cfg.extraCajaExtensions;
+ })
+ (pkgs.mate.mate-panel-with-applets.override {
+ applets = cfg.extraPanelApplets;
+ })
+ pkgs.desktop-file-utils
+ pkgs.glib
+ pkgs.gtk3.out
+ pkgs.shared-mime-info
+ pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
+ pkgs.yelp # for 'Contents' in 'Help' menus
+ ])
+ config.environment.mate.excludePackages;
+
+ programs.dconf.enable = true;
+ # Shell integration for VTE terminals
+ programs.bash.vteIntegration = mkDefault true;
+ programs.zsh.vteIntegration = mkDefault true;
+
+ # Mate uses this for printing
+ programs.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
+
+ services.gnome.at-spi2-core.enable = true;
+ services.gnome.gnome-keyring.enable = true;
+ services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
+ services.gvfs.enable = true;
+ services.upower.enable = config.powerManagement.enable;
+ services.xserver.libinput.enable = mkDefault true;
+
+ security.pam.services.mate-screensaver.unixAuth = true;
+
+ xdg.portal.configPackages = mkDefault [ pkgs.mate.mate-desktop ];
+
+ environment.pathsToLink = [ "/share" ];
+ })
+ (mkIf cfg.enableWaylandSession {
+ programs.wayfire.enable = true;
+ programs.wayfire.plugins = [ pkgs.wayfirePlugins.firedecor ];
+
+ environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${pkgs.mate.mate-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
+
+ environment.systemPackages = [ pkgs.mate.mate-wayland-session ];
+ services.xserver.displayManager.sessionPackages = [ pkgs.mate.mate-wayland-session ];
+ })
+ ];
}