From b9db3f8ca0f880cf0623cb34822c9d4949ff2bf2 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Thu, 13 Feb 2020 17:32:12 -0500 Subject: [PATCH 1/3] nixos/mate: use upstream session --- .../services/x11/desktop-managers/mate.nix | 43 +++++++++---------- .../mate/mate-session-manager/default.nix | 8 ++++ 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix index 910a246d776..5183f8b747c 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -44,35 +44,32 @@ in config = mkIf cfg.enable { - services.xserver.desktopManager.session = singleton { - name = "mate"; - bgSupport = true; - start = '' - export XDG_MENU_PREFIX=mate- + services.xserver.displayManager.sessionPackages = [ + pkgs.mate.mate-session-manager + ]; - # Let caja find extensions - export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0 + services.xserver.displayManager.sessionCommands = '' + if test "$XDG_CURRENT_DESKTOP" = "MATE"; then + export XDG_MENU_PREFIX=mate- - # Let caja extensions find gsettings schemas - ${concatMapStrings (p: '' + # Let caja find extensions + export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0 + + # Let caja extensions find gsettings schemas + ${concatMapStrings (p: '' if [ -d "${p}/lib/caja/extensions-2.0" ]; then - ${addToXDGDirs p} + ${addToXDGDirs p} fi - '') - config.environment.systemPackages - } + '') config.environment.systemPackages} - # Let mate-panel find applets - export MATE_PANEL_APPLETS_DIR=$MATE_PANEL_APPLETS_DIR''${MATE_PANEL_APPLETS_DIR:+:}${config.system.path}/share/mate-panel/applets - export MATE_PANEL_EXTRA_MODULES=$MATE_PANEL_EXTRA_MODULES''${MATE_PANEL_EXTRA_MODULES:+:}${config.system.path}/lib/mate-panel/applets + # Add mate-control-center paths to some XDG variables because its schemas are needed by mate-settings-daemon, and mate-settings-daemon is a dependency for mate-control-center (that is, they are mutually recursive) + ${addToXDGDirs pkgs.mate.mate-control-center} + fi + ''; - # Add mate-control-center paths to some XDG variables because its schemas are needed by mate-settings-daemon, and mate-settings-daemon is a dependency for mate-control-center (that is, they are mutually recursive) - ${addToXDGDirs pkgs.mate.mate-control-center} - - ${pkgs.mate.mate-session-manager}/bin/mate-session ${optionalString cfg.debug "--debug"} & - waitPID=$! - ''; - }; + # Let mate-panel find applets + environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets"; + environment.sessionVariables."MATE_PANEL_EXTRA_MODULES" = "${config.system.path}/lib/mate-panel/applets"; environment.systemPackages = pkgs.mate.basePackages ++ diff --git a/pkgs/desktops/mate/mate-session-manager/default.nix b/pkgs/desktops/mate/mate-session-manager/default.nix index 1db0947bf2a..04eb487adba 100644 --- a/pkgs/desktops/mate/mate-session-manager/default.nix +++ b/pkgs/desktops/mate/mate-session-manager/default.nix @@ -33,6 +33,14 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + postFixup = '' + substituteInPlace $out/share/xsessions/mate.desktop \ + --replace "Exec=mate-session" "Exec=$out/bin/mate-session" \ + --replace "TryExec=mate-session" "TryExec=$out/bin/mate-session" + ''; + + passthru.providedSessions = [ "mate" ]; + meta = with stdenv.lib; { description = "MATE Desktop session manager"; homepage = "https://github.com/mate-desktop/mate-session-manager"; From 67034d584f120a0fe2a32c2b7c874862f6fd1591 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Tue, 18 Feb 2020 16:33:48 -0500 Subject: [PATCH 2/3] mate.mate-session-manager: debugging from environment variable --- pkgs/desktops/mate/mate-session-manager/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/desktops/mate/mate-session-manager/default.nix b/pkgs/desktops/mate/mate-session-manager/default.nix index 04eb487adba..09973e04bc0 100644 --- a/pkgs/desktops/mate/mate-session-manager/default.nix +++ b/pkgs/desktops/mate/mate-session-manager/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, pkgconfig, gettext, xtrans, dbus-glib, systemd, libSM, libXtst, gtk3, epoxy, polkit, hicolor-icon-theme, mate, - wrapGAppsHook + wrapGAppsHook, fetchpatch }: stdenv.mkDerivation rec { @@ -12,6 +12,14 @@ stdenv.mkDerivation rec { sha256 = "01scj5d1xlri9b2id8gm9kfni9nzhdjdf7rag7fvcxwqp7baz3h3"; }; + patches = [ + # allow turning on debugging from environment variable + (fetchpatch { + url = "https://github.com/mate-desktop/mate-session-manager/commit/3ab6fbfc811d00100d7a2959f8bbb157b536690d.patch"; + sha256 = "0yjaklq0mp44clymyhy240kxlw95z3azmravh4f5pfm9dys33sg0"; + }) + ]; + nativeBuildInputs = [ pkgconfig gettext From af73425b825c18fa923ca6abf7fd6293ac8a306e Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Tue, 18 Feb 2020 16:34:26 -0500 Subject: [PATCH 3/3] nixos/mate: debugging via environment variable --- nixos/modules/services/x11/desktop-managers/mate.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix index 5183f8b747c..f236c14fcf3 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -71,6 +71,9 @@ in environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets"; environment.sessionVariables."MATE_PANEL_EXTRA_MODULES" = "${config.system.path}/lib/mate-panel/applets"; + # Debugging + environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; + environment.systemPackages = pkgs.mate.basePackages ++ (pkgs.gnome3.removePackagesByName