about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-09-27 16:00:58 +0000
committerAlyssa Ross <hi@alyssa.is>2021-09-27 16:00:58 +0000
commitc504e5d19d940926b3ddcf62c983d66f49f3cbb2 (patch)
treeec955e58bcac2cb93b9f8c10786b23f61d40cd7e /nixpkgs/pkgs/desktops/gnome
parent72789cefce7b17419815f600fbd18238d89afcc9 (diff)
parent1737f98af6667560e3e4f930312f9b5002649d04 (diff)
downloadnixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.gz
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.bz2
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.lz
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.xz
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.tar.zst
nixlib-c504e5d19d940926b3ddcf62c983d66f49f3cbb2.zip
Merge commit '1737f98af6667560e3e4f930312f9b5002649d04'
Conflicts:
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix
	nixpkgs/pkgs/development/node-packages/default.nix
	nixpkgs/pkgs/development/python-modules/priority/deadline.patch
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome')
-rw-r--r--nixpkgs/pkgs/desktops/gnome/apps/file-roller/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/epiphany/dark-style.patch76
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/epiphany/navigation-buttons.patch12
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/default.nix135
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/fix-paths.patch15
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch74
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch135
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch33
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch58
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch32
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch102
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch27
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/default.nix (renamed from nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/default.nix)96
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch (renamed from nixpkgs/pkgs/desktops/gnome/core/mutter/drop-inheritable.patch)0
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch27
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch13
-rw-r--r--nixpkgs/pkgs/desktops/gnome/core/yelp-xsl/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/gnome/extensions/arcmenu/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome/games/tali/default.nix4
22 files changed, 370 insertions, 510 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome/apps/file-roller/default.nix b/nixpkgs/pkgs/desktops/gnome/apps/file-roller/default.nix
index 6af1994fb060..a26428652007 100644
--- a/nixpkgs/pkgs/desktops/gnome/apps/file-roller/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/apps/file-roller/default.nix
@@ -25,10 +25,11 @@ stdenv.mkDerivation rec {
     patchShebangs data/set-mime-type-entry.py
   '';
 
-  postFixup = ''
+  preFixup = ''
     # Workaround because of https://gitlab.gnome.org/GNOME/file-roller/issues/40
-    wrapProgram "$out/bin/file-roller" \
+    gappsWrapperArgs+=(
       --prefix PATH : ${lib.makeBinPath [ unzip ]}
+    )
   '';
 
   passthru = {
diff --git a/nixpkgs/pkgs/desktops/gnome/core/epiphany/dark-style.patch b/nixpkgs/pkgs/desktops/gnome/core/epiphany/dark-style.patch
new file mode 100644
index 000000000000..56ac5c1e5b2c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/epiphany/dark-style.patch
@@ -0,0 +1,76 @@
+diff --git a/meson.build b/meson.build
+index de9cbfa850..647f617605 100644
+--- a/meson.build
++++ b/meson.build
+@@ -92,6 +92,7 @@ iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
+ json_glib_dep = dependency('json-glib-1.0', version: '>= 1.6')
+ libarchive_dep = dependency('libarchive')
+ libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.37.1')
++libgranite_dep = dependency('granite', version: '>= 6.0.0')
+ libhandy_dep = dependency('libhandy-1', version: '>= 1.1.0')
+ libsecret_dep = dependency('libsecret-1', version: '>= 0.19.0')
+ libsoup_dep = dependency('libsoup-2.4', version: '>= 2.48.0')
+diff --git a/src/ephy-shell.c b/src/ephy-shell.c
+index 650531da86..b9d1355e86 100644
+--- a/src/ephy-shell.c
++++ b/src/ephy-shell.c
+@@ -50,6 +50,7 @@
+ 
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
++#include <granite.h>
+ #include <handy.h>
+ 
+ struct _EphyShell {
+@@ -483,6 +484,20 @@ run_in_background_set_mapping (const GValue       *value,
+   return g_variant_new_boolean (g_variant_get_boolean (var));
+ }
+ 
++static void
++ephy_shell_set_prefers_color_scheme (EphyShell *shell)
++{
++    GtkSettings* gtk_settings = gtk_settings_get_default ();
++    GraniteSettings* granite_settings = granite_settings_get_default ();
++
++    g_object_set (
++        gtk_settings,
++        "gtk-application-prefer-dark-theme",
++        granite_settings_get_prefers_color_scheme (granite_settings) == GRANITE_SETTINGS_COLOR_SCHEME_DARK,
++        NULL
++    );
++}
++
+ static void
+ ephy_shell_startup (GApplication *application)
+ {
+@@ -490,11 +505,18 @@ ephy_shell_startup (GApplication *application)
+   EphyShell *shell = EPHY_SHELL (application);
+   EphyEmbedShellMode mode;
+   GAction *action;
++  GraniteSettings* granite_settings = granite_settings_get_default ();
+ 
+   G_APPLICATION_CLASS (ephy_shell_parent_class)->startup (application);
+ 
+   hdy_init ();
+ 
++  ephy_shell_set_prefers_color_scheme (shell);
++
++  g_signal_connect (granite_settings, "notify::prefers-color-scheme",
++    G_CALLBACK (ephy_shell_set_prefers_color_scheme), shell
++  );
++
+   /* If we are under Pantheon set the icon-theme and cursor-theme accordingly. */
+   if (is_desktop_pantheon ()) {
+     GtkSettings *settings = gtk_settings_get_default ();
+diff --git a/src/meson.build b/src/meson.build
+index 5bf3eb92ec..d17b1b6d93 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -74,6 +74,7 @@ libephymain_deps = [
+   gdk_dep,
+   gvdb_dep,
+   libarchive_dep,
++  libgranite_dep,
+   libhandy_dep
+ ]
+ 
diff --git a/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
index 73c7a7aa1135..6f673d632267 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/epiphany/default.nix
@@ -9,6 +9,7 @@
 , icu
 , wrapGAppsHook
 , gnome
+, pantheon
 , libportal
 , libxml2
 , libxslt
@@ -33,6 +34,7 @@
 , libdazzle
 , libhandy
 , buildPackages
+, withPantheon ? false
 }:
 
 stdenv.mkDerivation rec {
@@ -44,6 +46,12 @@ stdenv.mkDerivation rec {
     sha256 = "2tE4ufLVXeJxEo/KOLYfU/2YDFh9KeG6a1CP/zsZ9WQ=";
   };
 
+  patches = lib.optionals withPantheon [
+    # https://github.com/elementary/browser
+    ./dark-style.patch
+    ./navigation-buttons.patch
+  ];
+
   nativeBuildInputs = [
     desktop-file-utils
     gettext
@@ -87,7 +95,7 @@ stdenv.mkDerivation rec {
     p11-kit
     sqlite
     webkitgtk
-  ];
+  ] ++ lib.optional withPantheon pantheon.granite;
 
   # Tests need an X display
   mesonFlags = [
@@ -108,7 +116,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://wiki.gnome.org/Apps/Epiphany";
     description = "WebKit based web browser for GNOME";
-    maintainers = teams.gnome.members;
+    maintainers = teams.gnome.members ++ teams.pantheon.members;
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/desktops/gnome/core/epiphany/navigation-buttons.patch b/nixpkgs/pkgs/desktops/gnome/core/epiphany/navigation-buttons.patch
new file mode 100644
index 000000000000..b7b3b620535f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/epiphany/navigation-buttons.patch
@@ -0,0 +1,12 @@
+diff --git a/src/resources/gtk/action-bar-start.ui b/src/resources/gtk/action-bar-start.ui
+index e604b9601f..2bfe244d53 100644
+--- a/src/resources/gtk/action-bar-start.ui
++++ b/src/resources/gtk/action-bar-start.ui
+@@ -7,7 +7,6 @@
+         <property name="visible">True</property>
+         <property name="orientation">horizontal</property>
+         <style>
+-          <class name="linked"/>
+           <class name="navigation-box"/>
+         </style>
+         <child>
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
index f507ef0e4bb6..b6aedeeb6464 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix
@@ -35,11 +35,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-initial-setup";
-  version = "40.3";
+  version = "40.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "5QP9HUiFL112qr9iLR7ymWs4TYjaMf0WoQ1RPwmpDdc=";
+    sha256 = "QSplhO5upN+WN8QimT9Or4FYTSkZD16JOvmnhxy5Axs=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/default.nix b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/default.nix
new file mode 100644
index 000000000000..de48b72faca4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/default.nix
@@ -0,0 +1,135 @@
+{ lib, stdenv
+, fetchpatch
+, substituteAll
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gnome
+, perl
+, gettext
+, gtk3
+, glib
+, libnotify
+, libgnomekbd
+, lcms2
+, libpulseaudio
+, alsa-lib
+, libcanberra-gtk3
+, upower
+, colord
+, libgweather
+, polkit
+, gsettings-desktop-schemas
+, geoclue2
+, systemd
+, libgudev
+, libwacom
+, libxslt
+, libxml2
+, modemmanager
+, networkmanager
+, gnome-desktop
+, geocode-glib
+, docbook_xsl
+, wrapGAppsHook
+, python3
+, tzdata
+, nss
+, gcr
+, gnome-session-ctl
+, pantheon
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-settings-daemon";
+  version = "3.38.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "136p3prdqvc0lvrcqs4h7crpnfqnimqklpzjivq5w4g1rhbdbhrj";
+  };
+
+  patches = [
+    # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/aae1e774dd9de22fe3520cf9eb2bfbf7216f5eb0.patch";
+      sha256 = "O4m0rOW8Zrgu3Q0p0OA8b951VC0FjYbOUk9MLzB9icI=";
+    })
+
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit tzdata;
+    })
+
+    # Adjust to libgweather changes.
+    # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/217
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/commit/82d88014dfca2df7e081712870e1fb017c16b808.patch";
+      sha256 = "H5k/v+M2bRaswt5nrDJFNn4gS4BdB0UfzdjUCT4yLKg=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    perl
+    gettext
+    libxml2
+    libxslt
+    docbook_xsl
+    wrapGAppsHook
+    python3
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    gsettings-desktop-schemas
+    modemmanager
+    networkmanager
+    libnotify
+    libgnomekbd # for org.gnome.libgnomekbd.keyboard schema
+    gnome-desktop
+    lcms2
+    libpulseaudio
+    alsa-lib
+    libcanberra-gtk3
+    upower
+    colord
+    libgweather
+    nss
+    polkit
+    geocode-glib
+    geoclue2
+    systemd
+    libgudev
+    libwacom
+    gcr
+  ];
+
+  mesonFlags = [
+    "-Dudev_dir=${placeholder "out"}/lib/udev"
+    "-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl"
+  ];
+
+  # Default for release buildtype but passed manually because
+  # we're using plain
+  NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS";
+
+  postPatch = ''
+    for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do
+      chmod +x $f
+      patchShebangs $f
+    done
+  '';
+
+  meta = with lib; {
+    description = "GNOME Settings Daemon";
+    homepage = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/";
+    license = licenses.gpl2Plus;
+    maintainers = teams.pantheon.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/fix-paths.patch
new file mode 100644
index 000000000000..2229302cab7c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/fix-paths.patch
@@ -0,0 +1,15 @@
+--- a/plugins/datetime/tz.h
++++ b/plugins/datetime/tz.h
+@@ -27,11 +27,7 @@
+ 
+ #include <glib.h>
+ 
+-#ifndef __sun
+-#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+-#else
+-#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
+-#endif
++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
+ 
+ typedef struct _TzDB TzDB;
+ typedef struct _TzLocation TzLocation;
diff --git a/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch
deleted file mode 100644
index 3691c034d1ee..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0002-drop-inheritable.patch
deleted file mode 100644
index 28f89ac7c0c6..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0003-Fix-glitches-in-gala.patch
deleted file mode 100644
index 9f78a324d9da..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch
deleted file mode 100644
index cd98d3950415..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
deleted file mode 100644
index 138970ddda0a..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch
deleted file mode 100644
index 6d88f0f5e766..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/0007-fix-paths.patch
deleted file mode 100644
index 8376fc649b5f..000000000000
--- a/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/default.nix b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/default.nix
index 42f07d45e62f..3c2d30b813ba 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/mutter/3.34/default.nix
+++ b/nixpkgs/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;
-    maintainers = pantheon.maintainers;
+    license = licenses.gpl2Plus;
+    maintainers = teams.pantheon.members;
     platforms = platforms.linux;
   };
-}
+};
+in self
diff --git a/nixpkgs/pkgs/desktops/gnome/core/mutter/drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch
index 7374e1b86935..7374e1b86935 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/mutter/drop-inheritable.patch
+++ b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/drop-inheritable.patch
diff --git a/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-glitches-in-gala.patch
new file mode 100644
index 000000000000..973768239792
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome/core/mutter/3.38/fix-paths.patch
new file mode 100644
index 000000000000..6ac0a431f61f
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/desktops/gnome/core/yelp-xsl/default.nix b/nixpkgs/pkgs/desktops/gnome/core/yelp-xsl/default.nix
index 7c9b4eb839c0..32f3fbd61538 100644
--- a/nixpkgs/pkgs/desktops/gnome/core/yelp-xsl/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/core/yelp-xsl/default.nix
@@ -10,11 +10,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yelp-xsl";
-  version = "40.0";
+  version = "40.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp-xsl/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-Nh7NTTP8zbO7CKaH9g5cPpCdLp47Ai2ETgSYINDPYrA=";
+    sha256 = "sha256-kZxVL4RqrsdB/lHVr0FrRpvNslx37/w7WhWktLf/gU4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome/default.nix b/nixpkgs/pkgs/desktops/gnome/default.nix
index 979ddafc10f0..a3f0107c288b 100644
--- a/nixpkgs/pkgs/desktops/gnome/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/default.nix
@@ -88,6 +88,9 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   gnome-settings-daemon = callPackage ./core/gnome-settings-daemon { };
 
+  # Using 3.38 to match Mutter used in Pantheon
+  gnome-settings-daemon338 = callPackage ./core/gnome-settings-daemon/3.38 { };
+
   gnome-software = callPackage ./core/gnome-software { };
 
   gnome-system-monitor = callPackage ./core/gnome-system-monitor { };
@@ -106,9 +109,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 +357,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.";
 
diff --git a/nixpkgs/pkgs/desktops/gnome/extensions/arcmenu/default.nix b/nixpkgs/pkgs/desktops/gnome/extensions/arcmenu/default.nix
index 2720026357d2..68898fa42b0e 100644
--- a/nixpkgs/pkgs/desktops/gnome/extensions/arcmenu/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/extensions/arcmenu/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extension-arcmenu";
-  version = "12";
+  version = "14";
 
   src = fetchFromGitLab {
     owner = "arcmenu";
     repo = "ArcMenu";
     rev = "v${version}";
-    sha256 = "sha256-R1OUDf/YMyMlxwXM9rNsrasPumHEoYhJK0evnYGeIkA=";
+    sha256 = "sha256-Iobu5eNWSvAiTRe6wyx/0PgUtB9QIC9KdH0M1xhsM1I=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix b/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix
index 9399561e6784..a818d8c115c3 100644
--- a/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome/games/tali/default.nix
@@ -20,11 +20,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tali";
-  version = "40.2";
+  version = "40.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/tali/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "9SHsnW1SKA/Pfi1IerbVqIw54yx6n5XrqwKdUsAj4Cs=";
+    sha256 = "neLxCreZjHprLKYvs3nBgby8HtYqp6gkG8VVHVF4/iE=";
   };
 
   nativeBuildInputs = [