summary refs log tree commit diff
path: root/pkgs/desktops/gnome
diff options
context:
space:
mode:
authorBobby Rong <rjl931189261@126.com>2021-07-17 17:59:44 +0800
committerBobby Rong <rjl931189261@126.com>2021-09-18 19:33:35 +0800
commit634488aa608c863fa54eaaa232024856bc3463dd (patch)
tree6fb7539ab6fac2989b35827b85faafcb10e128ec /pkgs/desktops/gnome
parent798cc01d0c0834c2a2c3b923ff07917edb5703da (diff)
downloadnixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar.gz
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar.bz2
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar.lz
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar.xz
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.tar.zst
nixpkgs-634488aa608c863fa54eaaa232024856bc3463dd.zip
gnome.mutter338: 3.34.6 -> 3.38.6
renamed from gnome.mutter334
not using mutter 40.x due to issues like buggy multitasking thumbnails after sliding
Diffstat (limited to 'pkgs/desktops/gnome')
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch74
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch135
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch33
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch58
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch32
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch102
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch27
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.38/default.nix (renamed from pkgs/desktops/gnome/core/mutter/3.34/default.nix)94
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch (renamed from pkgs/desktops/gnome/core/mutter/drop-inheritable.patch)0
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch27
-rw-r--r--pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch13
-rw-r--r--pkgs/desktops/gnome/default.nix9
12 files changed, 107 insertions, 497 deletions
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch b/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch
deleted file mode 100644
index 3691c034d1e..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d Mon Sep 17 00:00:00 2001
-Message-Id: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Sun, 20 Oct 2019 12:04:31 +0200
-Subject: [PATCH 1/7] EGL: Include EGL/eglmesaext.h
-
-From: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-
-The eglext.h shipped by libglvnd does not include the Mesa extensions,
-unlike the header shipped in Mesa.
-
-Fixes https://gitlab.gnome.org/GNOME/mutter/issues/876
-
-(cherry picked from commit a444a4c5f58ea516ad3cd9d6ddc0056c3ca9bc90)
----
- cogl/cogl/meson.build       | 2 +-
- src/backends/meta-egl-ext.h | 1 +
- src/backends/meta-egl.c     | 1 +
- src/backends/meta-egl.h     | 1 +
- 4 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build
-index 1057ef9..9a64294 100644
---- a/cogl/cogl/meson.build
-+++ b/cogl/cogl/meson.build
-@@ -48,7 +48,7 @@ cogl_gl_header_h = configure_file(
- built_headers += [cogl_gl_header_h]
- 
- if have_egl
--  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>'
-+  cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>'
- else
-   cogl_egl_includes_string = ''
- endif
-diff --git a/src/backends/meta-egl-ext.h b/src/backends/meta-egl-ext.h
-index 8705e7d..db0b74f 100644
---- a/src/backends/meta-egl-ext.h
-+++ b/src/backends/meta-egl-ext.h
-@@ -29,6 +29,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- 
- /*
-  * This is a little different to the tests shipped with EGL implementations,
-diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c
-index 6554be9..fdeff4f 100644
---- a/src/backends/meta-egl.c
-+++ b/src/backends/meta-egl.c
-@@ -27,6 +27,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- #include <gio/gio.h>
- #include <glib.h>
- #include <glib-object.h>
-diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h
-index f2a8164..4591e7d 100644
---- a/src/backends/meta-egl.h
-+++ b/src/backends/meta-egl.h
-@@ -28,6 +28,7 @@
- 
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-+#include <EGL/eglmesaext.h>
- #include <glib-object.h>
- 
- #define META_EGL_ERROR meta_egl_error_quark ()
-
-base-commit: 48ffbb582404c1d52196eb6cc5f082c31ca4910c
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch b/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch
deleted file mode 100644
index 28f89ac7c0c..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 14cee101882e65a57dcd66ea0f8399477b23ce7e Mon Sep 17 00:00:00 2001
-Message-Id: <14cee101882e65a57dcd66ea0f8399477b23ce7e.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Sat, 19 Oct 2019 13:26:05 +0200
-Subject: [PATCH 2/7] drop inheritable
-
-From: Tor Hedin Brønner <torhedinbronner@gmail.com>
-
-Adapted from https://gitlab.gnome.org/GNOME/mutter/commit/c53c47ae123b03cc66044d2b846342123ecb3a01
-
-We only want to drop inheritable though, to prevent the ambient set leaking further than gnome-shell.
----
- config.h.meson    |  3 +++
- meson.build       |  5 +++++
- meson_options.txt |  6 ++++++
- src/core/main.c   | 10 ++++++++++
- src/meson.build   |  1 +
- 5 files changed, 25 insertions(+)
-
-diff --git a/config.h.meson b/config.h.meson
-index 0bab718..202fb7e 100644
---- a/config.h.meson
-+++ b/config.h.meson
-@@ -58,6 +58,9 @@
- /* Xwayland applications allowed to issue keyboard grabs */
- #mesondefine XWAYLAND_GRAB_DEFAULT_ACCESS_RULES
- 
-+/* Defined if libcap-ng is available */
-+#mesondefine HAVE_LIBCAPNG
-+
- /* XKB base prefix */
- #mesondefine XKB_BASE
- 
-diff --git a/meson.build b/meson.build
-index 29d495b..86970df 100644
---- a/meson.build
-+++ b/meson.build
-@@ -35,6 +35,7 @@ libstartup_notification_req = '>= 0.7'
- libcanberra_req = '>= 0.26'
- libwacom_req = '>= 0.13'
- atk_req = '>= 2.5.3'
-+libcapng_req = '>= 0.7.9'
- 
- # optional version requirements
- udev_req = '>= 228'
-@@ -125,6 +126,7 @@ xau_dep = dependency('xau')
- ice_dep = dependency('ice')
- atk_dep = dependency('atk', version: atk_req)
- libcanberra_dep = dependency('libcanberra', version: libcanberra_req)
-+libcapng_dep = dependency('libcap-ng', required: get_option('libcapng'))
- 
- # For now always require X11 support
- have_x11 = true
-@@ -256,6 +258,7 @@ have_core_tests = false
- have_cogl_tests = false
- have_clutter_tests = false
- have_installed_tests = false
-+have_libcapng = libcapng_dep.found()
- 
- if have_tests
-   have_core_tests = get_option('core_tests')
-@@ -361,6 +364,7 @@ cdata.set('HAVE_LIBWACOM', have_libwacom)
- cdata.set('HAVE_SM', have_sm)
- cdata.set('HAVE_STARTUP_NOTIFICATION', have_startup_notification)
- cdata.set('HAVE_INTROSPECTION', have_introspection)
-+cdata.set('HAVE_LIBCAPNG', have_libcapng)
- cdata.set('HAVE_PROFILER', have_profiler)
- 
- xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base')
-@@ -443,6 +447,7 @@ output = [
-   '        Startup notification..... ' + have_startup_notification.to_string(),
-   '        Introspection............ ' + have_introspection.to_string(),
-   '        Profiler................. ' + have_profiler.to_string(),
-+  '        libcap-ng................ ' + have_libcapng.to_string(),
-   '',
-   '    Tests:',
-   '',
-diff --git a/meson_options.txt b/meson_options.txt
-index 73aa7ad..8bfaacd 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -152,3 +152,9 @@ option('xwayland_grab_default_access_rules',
-   value: 'gnome-boxes,remote-viewer,virt-viewer,virt-manager,vinagre,vncviewer,Xephyr',
-   description: 'Comma delimited list of applications ressources or class allowed to issue X11 grabs in Xwayland'
- )
-+
-+option('libcapng',
-+  type: 'feature',
-+  value: 'auto',
-+  description: 'Enable libcap-ng support'
-+)
-diff --git a/src/core/main.c b/src/core/main.c
-index 3935f35..ecf3cb2 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -66,6 +66,10 @@
- #include <girepository.h>
- #endif
- 
-+#ifdef HAVE_LIBCAPNG
-+#include <cap-ng.h>
-+#endif
-+
- #if defined(HAVE_NATIVE_BACKEND) && defined(HAVE_WAYLAND)
- #include <systemd/sd-login.h>
- #endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */
-@@ -673,6 +677,12 @@ meta_run (void)
-   if (!meta_display_open ())
-     meta_exit (META_EXIT_ERROR);
- 
-+#ifdef HAVE_LIBCAPNG
-+  capng_clear(CAPNG_SELECT_BOTH);
-+  capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED, CAP_SYS_NICE);
-+  capng_apply(CAPNG_SELECT_BOTH);
-+#endif
-+
-   g_main_loop_run (meta_main_loop);
- 
-   meta_finalize ();
-diff --git a/src/meson.build b/src/meson.build
-index 90d8073..a9fffa2 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -18,6 +18,7 @@ mutter_pkg_deps = [
-   glib_dep,
-   gsettings_desktop_schemas_dep,
-   gtk3_dep,
-+  libcapng_dep,
-   pango_dep,
- ]
- 
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch b/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch
deleted file mode 100644
index 9f78a324d9d..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5d2b9a03f24b4dbc423adff52b2eeb478c4b5913 Mon Sep 17 00:00:00 2001
-Message-Id: <5d2b9a03f24b4dbc423adff52b2eeb478c4b5913.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Sun,  5 Apr 2020 23:06:03 -0400
-Subject: [PATCH 3/7] Fix glitches in gala
-
-From: worldofpeace <worldofpeace@protonmail.ch>
-
-This fixes issues for users of mutter like in gala[0].
-
-Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536
-[0]: https://github.com/elementary/gala/issues/605
----
- clutter/clutter/clutter-actor.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
-index ecf9a59..07b8b71 100644
---- a/clutter/clutter/clutter-actor.c
-+++ b/clutter/clutter/clutter-actor.c
-@@ -17831,7 +17831,7 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self)
-   if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume))
-     {
-       priv->paint_volume_valid = TRUE;
--      priv->needs_paint_volume_update = FALSE;
-+      //priv->needs_paint_volume_update = FALSE;
-       return &priv->paint_volume;
-     }
-   else
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch b/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch
deleted file mode 100644
index cd98d395041..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 5a9f9fbaa1322b2ad0a52fcdd171d4f44d031918 Mon Sep 17 00:00:00 2001
-Message-Id: <5a9f9fbaa1322b2ad0a52fcdd171d4f44d031918.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Wed, 30 Oct 2019 15:23:24 -0700
-Subject: [PATCH 4/7] profiler: track changes in GLib and Sysprof
-
-From: Christian Hergert <chergert@redhat.com>
-
-This tracks the changes to gdbus-codegen in terms of how GUnixFDList is
-done to use the UnixFD annotation.
-
-https://gitlab.gnome.org/GNOME/mutter/merge_requests/908
-(cherry picked from commit 605171291993460f31d470a8143d6438d0c6169c)
----
- src/backends/meta-profiler.c | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/src/backends/meta-profiler.c b/src/backends/meta-profiler.c
-index 10d433a..0d62701 100644
---- a/src/backends/meta-profiler.c
-+++ b/src/backends/meta-profiler.c
-@@ -51,13 +51,12 @@ G_DEFINE_TYPE_WITH_CODE (MetaProfiler,
- static gboolean
- handle_start (MetaDBusSysprof3Profiler *dbus_profiler,
-               GDBusMethodInvocation    *invocation,
-+              GUnixFDList              *fd_list,
-               GVariant                 *options,
-               GVariant                 *fd_variant)
- {
-   MetaProfiler *profiler = META_PROFILER (dbus_profiler);
-   GMainContext *main_context = g_main_context_default ();
--  GDBusMessage *message;
--  GUnixFDList *fd_list;
-   const char *group_name;
-   int position;
-   int fd = -1;
-@@ -73,8 +72,6 @@ handle_start (MetaDBusSysprof3Profiler *dbus_profiler,
- 
-   g_variant_get (fd_variant, "h", &position);
- 
--  message = g_dbus_method_invocation_get_message (invocation);
--  fd_list = g_dbus_message_get_unix_fd_list (message);
-   if (fd_list)
-     fd = g_unix_fd_list_get (fd_list, position, NULL);
- 
-@@ -98,7 +95,7 @@ handle_start (MetaDBusSysprof3Profiler *dbus_profiler,
- 
-   g_debug ("Profiler running");
- 
--  meta_dbus_sysprof3_profiler_complete_start (dbus_profiler, invocation);
-+  meta_dbus_sysprof3_profiler_complete_start (dbus_profiler, invocation, NULL);
-   return TRUE;
- }
- 
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch b/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
deleted file mode 100644
index 138970ddda0..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 2caa072dd8e283a8e43febeab55fe8b76dda69b7 Mon Sep 17 00:00:00 2001
-Message-Id: <2caa072dd8e283a8e43febeab55fe8b76dda69b7.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Wed, 29 Jan 2020 11:02:33 +0100
-Subject: [PATCH 5/7] meta: Add missing display.h to meta-workspace-manager.h
-
-From: Corentin Noël <corentin@elementary.io>
-
-This is required because MetaDisplayCorner is only defined in display.h
-
-https://gitlab.gnome.org/GNOME/mutter/merge_requests/1025
-(cherry picked from commit 9d390ee49fb1f6300336e82ae94cc8061c6bae12)
----
- src/meta/meta-workspace-manager.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/meta/meta-workspace-manager.h b/src/meta/meta-workspace-manager.h
-index 0390c44..92cd681 100644
---- a/src/meta/meta-workspace-manager.h
-+++ b/src/meta/meta-workspace-manager.h
-@@ -26,6 +26,7 @@
- #include <glib-object.h>
- 
- #include <meta/common.h>
-+#include <meta/display.h>
- #include <meta/prefs.h>
- #include <meta/types.h>
- 
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch b/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch
deleted file mode 100644
index 6d88f0f5e76..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 0c95e5a5b31eab93f149b90982680f38e8977063 Mon Sep 17 00:00:00 2001
-Message-Id: <0c95e5a5b31eab93f149b90982680f38e8977063.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Sat,  4 Jul 2020 12:01:28 -0700
-Subject: [PATCH 6/7] build: bump ABI to sysprof-capture-4
-
-From: Christian Hergert <chergert@redhat.com>
-
-GLib will now be linking against sysprof-capture-4.a. To support that,
-sysprof had to remove the GLib dependency from sysprof-capture-4 which
-had the side-effect of breaking ABi.
-
-This bumps the dependency and includes a fallback to compile just the
-libsysprof-capture-4.a using a subproject wrap.
-
-https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1352
-(cherry picked from commit 2c08eb6d163b6758efec9eafe1d5c17fc1ab3692)
----
- meson.build              | 20 ++++++++++++++++++--
- src/meson.build          |  8 ++++++--
- subprojects/sysprof.wrap |  4 ++++
- 3 files changed, 28 insertions(+), 4 deletions(-)
- create mode 100644 subprojects/sysprof.wrap
-
-diff --git a/meson.build b/meson.build
-index 86970df..3dc0098 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1,6 +1,6 @@
- project('mutter', 'c',
-   version: '3.34.6',
--  meson_version: '>= 0.50.0',
-+  meson_version: '>= 0.51.0',
-   license: 'GPLv2+'
- )
- 
-@@ -52,6 +52,9 @@ gbm_req = '>= 10.3'
- # screen cast version requirements
- libpipewire_req = '>= 0.2.5'
- 
-+# profiler requirements
-+sysprof_req = '>= 3.37.2'
-+
- gnome = import('gnome')
- pkg = import('pkgconfig')
- i18n  = import('i18n')
-@@ -275,7 +278,20 @@ endif
- 
- have_profiler = get_option('profiler')
- if have_profiler
--  sysprof_dep = dependency('sysprof-capture-3')
-+  # libsysprof-capture support
-+  sysprof_dep = dependency('sysprof-capture-4',
-+    required: true,
-+    default_options: [
-+      'enable_examples=false',
-+      'enable_gtk=false',
-+      'enable_tests=false',
-+      'enable_tools=false',
-+      'libsysprof=false',
-+      'with_sysprofd=none',
-+      'help=false',
-+    ],
-+    fallback: ['sysprof', 'libsysprof_capture_dep'],
-+  )
- endif
- 
- required_functions = [
-diff --git a/src/meson.build b/src/meson.build
-index a9fffa2..a91baa1 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -711,9 +711,13 @@ if have_profiler
-     'backends/meta-profiler.h',
-   ]
- 
--  dbus_interfaces_dir = join_paths(datadir, 'dbus-1', 'interfaces')
--  sysprof3_dbus_file = join_paths(dbus_interfaces_dir, 'org.gnome.Sysprof3.Profiler.xml')
-+  if sysprof_dep.type_name() == 'pkgconfig'
-+    sysprof_dbus_interfaces_dir = join_paths(sysprof_dep.get_pkgconfig_variable('datadir'), 'dbus-1', 'interfaces')
-+  else
-+    sysprof_dbus_interfaces_dir = join_paths(meson.source_root(), 'subprojects', 'sysprof', 'src')
-+  endif
- 
-+  sysprof3_dbus_file = join_paths(sysprof_dbus_interfaces_dir, 'org.gnome.Sysprof3.Profiler.xml')
-   dbus_sysprof3_profiler_built_sources = gnome.gdbus_codegen('meta-dbus-sysprof3-profiler',
-       sysprof3_dbus_file,
-       interface_prefix: 'org.gnome.',
-diff --git a/subprojects/sysprof.wrap b/subprojects/sysprof.wrap
-new file mode 100644
-index 0000000..c8f5883
---- /dev/null
-+++ b/subprojects/sysprof.wrap
-@@ -0,0 +1,4 @@
-+[wrap-git]
-+directory=sysprof
-+url=https://gitlab.gnome.org/GNOME/sysprof.git
-+revision=cae28263ff5dd4a510d82f3dc2e3a3b3d9b386fb
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch b/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch
deleted file mode 100644
index 8376fc649b5..00000000000
--- a/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7bbbf082599ec786f64f2135c9acc0b4fe2ecbf4 Mon Sep 17 00:00:00 2001
-Message-Id: <7bbbf082599ec786f64f2135c9acc0b4fe2ecbf4.1601082838.git-series.worldofpeace@protonmail.ch>
-In-Reply-To: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-References: <7b94f980f2a099dd4b19b60c357cfcf5ff7ada6d.1601082838.git-series.worldofpeace@protonmail.ch>
-From: WORLDofPEACE <worldofpeace@protonmail.ch>
-Date: Fri, 25 Sep 2020 20:48:33 -0400
-Subject: [PATCH 7/7] fix paths
-
----
- src/core/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/util.c b/src/core/util.c
-index 79bcfdc..87ce549 100644
---- a/src/core/util.c
-+++ b/src/core/util.c
-@@ -623,7 +623,7 @@ meta_show_dialog (const char *type,
- 
-   args = g_ptr_array_new ();
- 
--  append_argument (args, "zenity");
-+  append_argument (args, "@zenity@/bin/zenity");
-   append_argument (args, type);
- 
-   if (display)
--- 
-git-series 0.9.1
diff --git a/pkgs/desktops/gnome/core/mutter/3.34/default.nix b/pkgs/desktops/gnome/core/mutter/3.38/default.nix
index 42f07d45e62..2d3f9f7bb75 100644
--- a/pkgs/desktops/gnome/core/mutter/3.34/default.nix
+++ b/pkgs/desktops/gnome/core/mutter/3.38/default.nix
@@ -1,35 +1,35 @@
 { fetchurl
-, fetchpatch
 , substituteAll
-, lib, stdenv
+, runCommand
+, lib
+, stdenv
 , pkg-config
 , gnome
-, pantheon
 , gettext
 , gobject-introspection
-, upower
 , cairo
 , pango
-, cogl
 , json-glib
 , libstartup_notification
 , zenity
-, libcanberra-gtk3
+, libcanberra
 , ninja
 , xkeyboard_config
 , libxkbfile
+, libXdamage
 , libxkbcommon
 , libXtst
 , libinput
+, libdrm
 , gsettings-desktop-schemas
 , glib
 , gtk3
 , gnome-desktop
-, geocode-glib
-, pipewire_0_2
+, pipewire
 , libgudev
 , libwacom
 , xwayland
+, mesa
 , meson
 , gnome-settings-daemon
 , xorgserver
@@ -39,23 +39,47 @@
 , desktop-file-utils
 , libcap_ng
 , egl-wayland
+, graphene
+, wayland-protocols
+, pantheon
 }:
 
-stdenv.mkDerivation rec {
+let self = stdenv.mkDerivation rec {
   pname = "mutter";
-  version = "3.34.6";
+  version = "3.38.6";
 
   outputs = [ "out" "dev" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    hash = "sha256-I73ofTO4mBNYgxzsiRW7X/Hq+cHedMkM0WYLG5WINSY=";
+    sha256 = "0mxln9azl4krmknq2vmhd15lgpa2q7gh7whiv14nsqbr9iaxmg2x";
   };
 
+  patches = [
+    # Drop inheritable cap_sys_nice, to prevent the ambient set from leaking
+    # from mutter/gnome-shell, see https://github.com/NixOS/nixpkgs/issues/71381
+    ./drop-inheritable.patch
+
+    # Fixes issues for users of mutter like in gala.
+    # https://github.com/elementary/gala/issues/605
+    # https://gitlab.gnome.org/GNOME/mutter/issues/536
+    ./fix-glitches-in-gala.patch
+
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit zenity;
+    })
+  ];
+
   mesonFlags = [
     "-Degl_device=true"
     "-Dinstalled_tests=false" # TODO: enable these
     "-Dwayland_eglstream=true"
+    "-Dprofiler=true"
+    "-Dxwayland_path=${xwayland}/bin/Xwayland"
+    # This should be auto detected, but it looks like it manages a false
+    # positive.
+    "-Dxwayland_initfd=disabled"
   ];
 
   propagatedBuildInputs = [
@@ -63,11 +87,13 @@ stdenv.mkDerivation rec {
     json-glib
     libXtst
     libcap_ng
+    graphene
   ];
 
   nativeBuildInputs = [
     desktop-file-utils
     gettext
+    mesa # needed for gbm
     meson
     ninja
     pkg-config
@@ -78,42 +104,28 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     cairo
-    cogl
     egl-wayland
-    geocode-glib
     glib
     gnome-desktop
     gnome-settings-daemon
     gobject-introspection
     gsettings-desktop-schemas
     gtk3
-    libcanberra-gtk3
+    libcanberra
+    libdrm
     libgudev
     libinput
     libstartup_notification
     libwacom
     libxkbcommon
     libxkbfile
+    libXdamage
     pango
-    pipewire_0_2 # TODO: backport pipewire 0.3 support
+    pipewire
     sysprof
-    upower
     xkeyboard_config
     xwayland
-    zenity
-  ];
-
-  patches = [
-    ./0001-EGL-Include-EGL-eglmesaext.h.patch
-    ./0002-drop-inheritable.patch
-    ./0003-Fix-glitches-in-gala.patch
-    ./0004-profiler-track-changes-in-GLib-and-Sysprof.patch
-    ./0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
-    ./0006-build-bump-ABI-to-sysprof-capture-4.patch
-    (substituteAll {
-      src = ./0007-fix-paths.patch;
-      inherit zenity;
-    })
+    wayland-protocols
   ];
 
   postPatch = ''
@@ -124,11 +136,29 @@ stdenv.mkDerivation rec {
     ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas"
   '';
 
+  # Install udev files into our own tree.
+  PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
+
+  passthru = {
+    libdir = "${self}/lib/mutter-7";
+
+    tests = {
+      libdirExists = runCommand "mutter-libdir-exists" {} ''
+        if [[ ! -d ${self.libdir} ]]; then
+          echo "passthru.libdir should contain a directory, “${self.libdir}” is not one."
+          exit 1
+        fi
+        touch $out
+      '';
+    };
+  };
+
   meta = with lib; {
     description = "A window manager for GNOME";
     homepage = "https://gitlab.gnome.org/GNOME/mutter";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = pantheon.maintainers;
     platforms = platforms.linux;
   };
-}
+};
+in self
diff --git a/pkgs/desktops/gnome/core/mutter/drop-inheritable.patch b/pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch
index 7374e1b8693..7374e1b8693 100644
--- a/pkgs/desktops/gnome/core/mutter/drop-inheritable.patch
+++ b/pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch
diff --git a/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch b/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch
new file mode 100644
index 00000000000..97376823979
--- /dev/null
+++ b/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch
@@ -0,0 +1,27 @@
+From a58ace29db48f98ad59f4f309d49b458c68a6eec Mon Sep 17 00:00:00 2001
+From: Bobby Rong <rjl931189261@126.com>
+Date: Wed, 28 Jul 2021 22:08:11 +0800
+Subject: [PATCH] Fix glitches in gala
+
+Co-Authored-By: WORLDofPEACE <worldofpeace@protonmail.ch>
+
+This fixes issues for users of mutter like in gala[0].
+
+Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536
+[0]: https://github.com/elementary/gala/issues/605
+---
+ clutter/clutter/clutter-actor.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
+index febfb31918..71906000c0 100644
+--- a/clutter/clutter/clutter-actor.c
++++ b/clutter/clutter/clutter-actor.c
+@@ -15926,7 +15926,6 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self)
+   if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume))
+     {
+       priv->paint_volume_valid = TRUE;
+-      priv->needs_paint_volume_update = FALSE;
+       return &priv->paint_volume;
+     }
+   else
diff --git a/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch b/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch
new file mode 100644
index 00000000000..6ac0a431f61
--- /dev/null
+++ b/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/core/util.c b/src/core/util.c
+index 57b73747d..f424cc81c 100644
+--- a/src/core/util.c
++++ b/src/core/util.c
+@@ -636,7 +636,7 @@ meta_show_dialog (const char *type,
+ 
+   args = g_ptr_array_new ();
+ 
+-  append_argument (args, "zenity");
++  append_argument (args, "@zenity@/bin/zenity");
+   append_argument (args, type);
+ 
+   if (display)
diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix
index 979ddafc10f..c1f0a82f0b5 100644
--- a/pkgs/desktops/gnome/default.nix
+++ b/pkgs/desktops/gnome/default.nix
@@ -106,9 +106,8 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   mutter = callPackage ./core/mutter { };
 
-  # Needed for elementary's gala and greeter until 3.36 support has more bugfixes
-  # https://github.com/elementary/gala/issues/763
-  mutter334 = callPackage ./core/mutter/3.34 { };
+  # Needed for elementary's gala and greeter until support for higher versions is provided
+  mutter338 = callPackage ./core/mutter/3.38 { };
 
   nautilus = callPackage ./core/nautilus { };
 
@@ -355,7 +354,9 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   maintainers = lib.teams.gnome.members;
 
-  mutter328 = throw "Removed as Pantheon is upgraded to mutter334.";
+  mutter328 = throw "Removed as Pantheon is upgraded to mutter338.";
+
+  mutter334 = throw "Removed as Pantheon is upgraded to mutter338.";
 
   gnome-getting-started-docs = throw "Removed in favour of gnome-tour.";