about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/gnome-3/core
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome-3/core')
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix8
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix2
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix6
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix143
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch48
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix84
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix25
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix8
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/0001-fix-paths.patch (renamed from nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch)42
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix13
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix95
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix8
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/ctl.nix41
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch16
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix13
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix24
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/gvc-with-ucm-prePatch.nix17
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch74
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0002-drop-inheritable.patch (renamed from nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/drop-inheritable.patch)51
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0003-Fix-glitches-in-gala.patch (renamed from nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch)16
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch58
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch32
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch102
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0007-fix-paths.patch27
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch13
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch25
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch12
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/nautilus/fix-paths.patch13
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch8
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix7
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix106
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix4
55 files changed, 1029 insertions, 374 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
index 68c09cc9180c..fa489e7695c1 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "adwaita-icon-theme";
-  version = "3.36.1";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/adwaita-icon-theme/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0kgiq712lfidd81yzx0yk7qwlj3q8cymp6npnxyzsk844y353674";
+    sha256 = "15xgz9wzk07442x3s3052as95g0223z4pp9qlsgcs323yama30v6";
   };
 
   # For convenience, we can specify adwaita-icon-theme only in packages
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix
index dce14d6d1de9..274989bf3b86 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix
@@ -1,19 +1,19 @@
 { stdenv, gettext, fetchurl, vala, desktop-file-utils
-, meson, ninja, pkgconfig, gtk3, glib, libxml2
+, meson, ninja, pkgconfig, python3, gtk3, glib, libxml2
 , wrapGAppsHook, itstool, gnome3 }:
 
 let
   pname = "baobab";
-  version = "3.34.1";
+  version = "3.38.0";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "1i90gc1cpw5507zn54k46hj4mjgdxsq8cvpnlgxq0ksy2d7iv63z";
+    sha256 = "0ac3fbl15l836yvgw724q4whbkws9v4b6l2xy6bnp0b0g0a6i104";
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook python3 ];
   buildInputs = [ gtk3 glib gnome3.adwaita-icon-theme ];
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
index c6b02917ce42..00c9d3a4c905 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
@@ -3,13 +3,13 @@
 
 let
   pname = "dconf-editor";
-  version = "3.36.4";
+  version = "3.38.0";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "0y9yll77wkvr9ly132icfsl12sdz5aba9qc3aqm5rc90r6xhkhry";
+    sha256 = "1d1y33c6fm86xz9xbh3bfz4y2pyas01a58lmirmdx0lh6yd292bd";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix
index 83c1f5d4a56f..ce5ca16eb745 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
   };
 
   propagatedBuildInputs = [
-    folks
+    (folks.override { telepathySupport = true; })
     telepathy-logger
     evolution-data-server
     telepathy-mission-control
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix
index 6ad0834724d1..fb1b5f50c0e7 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix
@@ -8,6 +8,7 @@
 , libxml2
 , libjpeg
 , libpeas
+, libportal
 , gnome3
 , gtk3
 , glib
@@ -27,11 +28,11 @@
 
 stdenv.mkDerivation rec {
   pname = "eog";
-  version = "3.36.3";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1p1lrnsgk5iyw7h02qzax4s74dqqsh5lk85b0qsj7hwx91qm61xp";
+    sha256 = "1xqcfil3b68clafnxg1migp54psqh5x6arnlvdqgmvvpq9hwj7dp";
   };
 
   nativeBuildInputs = [
@@ -48,6 +49,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     libjpeg
+    libportal
     gtk3
     gdk-pixbuf
     glib
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix
index ad2d67972a97..4bbed000e433 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix
@@ -9,6 +9,7 @@
 , icu
 , wrapGAppsHook
 , gnome3
+, libportal
 , libxml2
 , libxslt
 , itstool
@@ -35,11 +36,11 @@
 
 stdenv.mkDerivation rec {
   pname = "epiphany";
-  version = "3.36.4";
+  version = "3.38.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1gs2a94fzpciv58rljgbirsc2kqgiaiyc2yg6ff50nlgb2qpb2jq";
+    sha256 = "0v8iymg72m83ikxxyhapvz5v8zh8hlr1pw7n215cy3p8q6yg41cb";
   };
 
   # Tests need an X display
@@ -80,6 +81,7 @@ stdenv.mkDerivation rec {
     json-glib
     libdazzle
     libhandy
+    libportal
     libnotify
     libsecret
     libsoup
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix
index 11a5bcbd0f78..a2c7c52a1ccd 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix
@@ -43,13 +43,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evince";
-  version = "3.36.7";
+  version = "3.38.0";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evince/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0clg9fhgjyj23mmcmw7dp512wzgv5m18fppn05qf1frz7r11mmk5";
+    sha256 = "0j0ry0y9qi1mlm7dcjwrmrw45s1225ri8sv0s9vb8ibm85x8kpr6";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
index 721b38d85641..e52d466b0e4b 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "evolution-data-server";
-  version = "3.36.5";
+  version = "3.38.2";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1nbzzqxlck3jz42wnxl281yfzpylcvbsbb0fvkh7nibdaj654mf5";
+    sha256 = "0mflr8a3f2q55rirvqhizji0zinic75jk8mksflszqzgcdcph85z";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix
index 58c898a5f0dd..10130be57da0 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix
@@ -1,7 +1,35 @@
-{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg
-, accountsservice, libX11, gnome3, systemd, autoreconfHook, dconf
-, gtk3, libcanberra-gtk3, pam, libtool, gobject-introspection, plymouth
-, librsvg, coreutils, xwayland, nixos-icons, fetchpatch }:
+{ stdenv
+, fetchurl
+, fetchpatch
+, substituteAll
+, meson
+, ninja
+, python3
+, rsync
+, pkg-config
+, glib
+, itstool
+, libxml2
+, xorg
+, accountsservice
+, libX11
+, gnome3
+, systemd
+, dconf
+, gtk3
+, libcanberra-gtk3
+, pam
+, libselinux
+, keyutils
+, audit
+, gobject-introspection
+, plymouth
+, librsvg
+, coreutils
+, xwayland
+, dbus
+, nixos-icons
+}:
 
 let
 
@@ -19,44 +47,64 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gdm";
-  version = "3.34.1";
+  version = "3.38.2.1";
+
+  outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdm/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1lyqvcwxhwxklbxn4xjswjzr6fhjix6h28mi9ypn34wdm9bzcpg8";
+    sha256 = "yliiBdXr/L2rVqEXFriY4Wrl3/Ia7nnQdgRkRGKOxNo=";
   };
 
-  # Only needed to make it build
-  preConfigure = ''
-    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
-  '';
-
-  initialVT = "7";
-
-  configureFlags = [
+  mesonFlags = [
+    "-Dgdm-xsession=true"
+    # TODO: Setup a default-path? https://gitlab.gnome.org/GNOME/gdm/-/blob/6fc40ac6aa37c8ad87c32f0b1a5d813d34bf7770/meson_options.txt#L6
+    "-Dinitial-vt=${passthru.initialVT}"
+    "-Dudev-dir=${placeholder "out"}/lib/udev/rules.d"
+    "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
+    "-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user"
     "--sysconfdir=/etc"
     "--localstatedir=/var"
-    "--with-plymouth=yes"
-    "--enable-gdm-xsession"
-    "--with-initial-vt=${initialVT}"
-    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
-    "--with-udevdir=$(out)/lib/udev"
   ];
 
-  nativeBuildInputs = [ pkgconfig libxml2 itstool autoreconfHook libtool dconf ];
-  buildInputs = [
-    glib accountsservice systemd
-    gobject-introspection libX11 gtk3
-    libcanberra-gtk3 pam plymouth librsvg
+  nativeBuildInputs = [
+    dconf
+    glib # for glib-compile-schemas
+    itstool
+    meson
+    ninja
+    pkg-config
+    python3
+    rsync
   ];
 
-  enableParallelBuilding = true;
+  buildInputs = [
+    accountsservice
+    audit
+    glib
+    gobject-introspection
+    gtk3
+    keyutils
+    libX11
+    libcanberra-gtk3
+    libselinux
+    pam
+    plymouth
+    systemd
+    xorg.libXdmcp
+  ];
 
   patches = [
+    # https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/112
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gdm/-/commit/1d28d4b3568381b8590d2235737b924aefd1746c.patch";
+      sha256 = "ZUXKZS4T0o0hzrApxaqcR0txCRv5zBgqeQ9K9fLNX1o=";
+    })
+
     # Change hardcoded paths to nix store paths.
     (substituteAll {
       src = ./fix-paths.patch;
-      inherit coreutils plymouth xwayland;
+      inherit coreutils plymouth xwayland dbus;
     })
 
     # The following patches implement certain environment variables in GDM which are set by
@@ -76,21 +124,52 @@ stdenv.mkDerivation rec {
     ./reset-environment.patch
   ];
 
-  installFlags = [
-    "sysconfdir=$(out)/etc"
-    "dbusconfdir=$(out)/etc/dbus-1/system.d"
-  ];
+  postPatch = ''
+    patchShebangs build-aux/meson_post_install.py
+
+    # Upstream checks some common paths to find an `X` binary. We already know it.
+    echo #!/bin/sh > build-aux/find-x-server.sh
+    echo "echo ${stdenv.lib.getBin xorg.xorgserver}/bin/X" >> build-aux/find-x-server.sh
+    patchShebangs build-aux/find-x-server.sh
+  '';
 
   preInstall = ''
-    schema_dir=${glib.makeSchemaPath "$out" "${pname}-${version}"}
-    install -D ${override} $schema_dir/org.gnome.login-screen.gschema.override
+    install -D ${override} ${DESTDIR}/$out/share/glib-2.0/schemas/org.gnome.login-screen.gschema.override
   '';
 
+  postInstall = ''
+    # Move stuff from DESTDIR to proper location.
+    # We use rsync to merge the directories.
+    rsync --archive "${DESTDIR}/etc" "$out"
+    rm --recursive "${DESTDIR}/etc"
+    for o in $outputs; do
+        rsync --archive "${DESTDIR}/''${!o}" "$(dirname "''${!o}")"
+        rm --recursive "${DESTDIR}/''${!o}"
+    done
+    # Ensure the DESTDIR is removed.
+    rmdir "${DESTDIR}/nix/store" "${DESTDIR}/nix" "${DESTDIR}"
+
+    # We are setting DESTDIR so the post-install script does not compile the schemas.
+    glib-compile-schemas "$out/share/glib-2.0/schemas"
+  '';
+
+  # HACK: We want to install configuration files to $out/etc
+  # but GDM should read them from /etc on a NixOS system.
+  # With autotools, it was possible to override Make variables
+  # at install time but Meson does not support this
+  # so we need to convince it to install all files to a temporary
+  # location using DESTDIR and then move it to proper one in postInstall.
+  DESTDIR = "${placeholder "out"}/dest";
+
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = "gdm";
       attrPath = "gnome3.gdm";
     };
+
+    # Used in GDM NixOS module
+    # Don't remove.
+    initialVT = "7";
   };
 
   meta = with stdenv.lib; {
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch
index 6b5bd6152bd6..d649556fe9e6 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch
@@ -13,48 +13,70 @@
 +++ b/daemon/gdm-manager.c
 @@ -145,7 +145,7 @@
          GError  *error;
- 
+
          error = NULL;
--        res = g_spawn_command_line_sync ("/bin/plymouth --ping",
+-        res = g_spawn_command_line_sync ("plymouth --ping",
 +        res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping",
                                           NULL, NULL, &status, &error);
          if (! res) {
                  g_debug ("Could not ping plymouth: %s", error->message);
 @@ -163,7 +163,7 @@
          GError  *error;
- 
+
          error = NULL;
--        res = g_spawn_command_line_sync ("/bin/plymouth deactivate",
+-        res = g_spawn_command_line_sync ("plymouth deactivate",
 +        res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate",
                                           NULL, NULL, NULL, &error);
          if (! res) {
                  g_warning ("Could not deactivate plymouth: %s", error->message);
 @@ -178,7 +178,7 @@
          GError  *error;
- 
+
          error = NULL;
--        res = g_spawn_command_line_async ("/bin/plymouth quit --retain-splash", &error);
+-        res = g_spawn_command_line_async ("plymouth quit --retain-splash", &error);
 +        res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error);
          if (! res) {
                  g_warning ("Could not quit plymouth: %s", error->message);
                  g_error_free (error);
 @@ -194,7 +194,7 @@
          GError  *error;
- 
+
          error = NULL;
--        res = g_spawn_command_line_async ("/bin/plymouth quit", &error);
+-        res = g_spawn_command_line_async ("plymouth quit", &error);
 +        res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error);
          if (! res) {
                  g_warning ("Could not quit plymouth: %s", error->message);
                  g_error_free (error);
 --- a/data/gdm.service.in
 +++ b/data/gdm.service.in
-@@ -28,7 +28,7 @@ BusName=org.gnome.DisplayManager
- StandardOutput=syslog
- StandardError=inherit
- EnvironmentFile=-@LANG_CONFIG_FILE@
+@@ -26,7 +26,7 @@ Restart=always
+ IgnoreSIGPIPE=no
+ BusName=org.gnome.DisplayManager
+ EnvironmentFile=-${LANG_CONFIG_FILE}
 -ExecReload=/bin/kill -SIGHUP $MAINPID
 +ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID
  KeyringMode=shared
- 
+
  [Install]
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -2916,16 +2916,16 @@ gdm_session_start_session (GdmSession *self,
+                  */
+                 if (run_launcher) {
+                         if (is_x11) {
+-                                program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s\"dbus-run-session -- %s\"",
++                                program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s\"@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s\"",
+                                                            register_session ? "--register-session " : "",
+                                                            self->selected_program);
+                         } else {
+-                                program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"dbus-run-session -- %s\"",
++                                program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s\"",
+                                                            register_session ? "--register-session " : "",
+                                                            self->selected_program);
+                         }
+                 } else {
+-                        program = g_strdup_printf ("dbus-run-session -- %s",
++                        program = g_strdup_printf ("@dbus@/bin/dbus-run-session --dbus-daemon=@dbus@/bin/dbus-daemon -- %s",
+                                                    self->selected_program);
+                 }
+         }
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
index e8463c5b704e..8df32a1486eb 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-backgrounds";
-  version = "3.36.0";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-backgrounds/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "02xvfwfi3133mjljl731z2hj9hfmjas3a1jl4fxmy24xrzj83jxq";
+    sha256 = "1qqygm15rcdgm36vz2iy7b9axndjzvpi29lmygyakjc07a3jlwgp";
   };
 
   passthru = {
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
index ed647bb87d81..fa5b5abf0ffd 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
@@ -6,14 +6,14 @@ let
   pname = "gnome-bluetooth";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "3.34.1";
+  version = "3.34.3";
 
   # TODO: split out "lib"
   outputs = [ "out" "dev" "devdoc" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "11nk8nvz5yrbx7wp75vsiaf4rniv7ik2g3nwmgwx2b42q9v11j9y";
+    sha256 = "08k4jak4r72pvn5kjhm21planyc514j6c7jjj5lv9nmvvlxqw1ha";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
index e14d8d136cd8..2f22fd86a6f6 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-calculator";
-  version = "3.36.0";
+  version = "3.38.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-calculator/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1cqd4b25qp1i0p04m669jssg1l5sdapc1mniv9jssvw5r7wk1s52";
+    sha256 = "0sri58cp6v07cqpdsf8dhf9dnykz305kvkx0l9dd25g06djcr0wc";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
index 5372552a7208..7e7730d9f6b2 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
@@ -1,37 +1,73 @@
-{ stdenv, gettext, fetchurl, evolution-data-server, fetchpatch
-, pkgconfig, libxslt, docbook_xsl, docbook_xml_dtd_42, python3, gtk3, glib, cheese
-, libchamplain, clutter-gtk, geocode-glib, gnome-desktop, gnome-online-accounts
-, wrapGAppsHook, folks, libxml2, gnome3
-, vala, meson, ninja, libhandy, gsettings-desktop-schemas
-# , telepathy-glib
+{ stdenv
+, gettext
+, fetchurl
+, evolution-data-server
+, fetchpatch
+, pkgconfig
+, libxslt
+, docbook_xsl
+, docbook_xml_dtd_42
+, python3
+, gtk3
+, glib
+, cheese
+, libchamplain
+, clutter-gtk
+, geocode-glib
+, gnome-desktop
+, gnome-online-accounts
+, wrapGAppsHook
+, folks
+, libxml2
+, gnome3
+, vala
+, meson
+, ninja
+, libhandy
+, gsettings-desktop-schemas
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-contacts";
-  version = "3.36.2";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-contacts/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "048l07biy8xrfidfyzrjd5lrnfzqhb767ih2gl7w6c4mmhj4g2dy";
+    sha256 = "0hsq0dwxjahcaxnm1m4r1lync9k2fkwzybfmkchrmn95vqcwwvf9";
   };
 
-  propagatedUserEnvPkgs = [ evolution-data-server ];
+  propagatedUserEnvPkgs = [
+    evolution-data-server
+  ];
 
   nativeBuildInputs = [
-    meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 python3 wrapGAppsHook
+    meson
+    ninja
+    pkgconfig
+    vala
+    gettext
+    libxslt
+    docbook_xsl
+    docbook_xml_dtd_42
+    python3
+    wrapGAppsHook
   ];
 
   buildInputs = [
-    gtk3 glib evolution-data-server gsettings-desktop-schemas
-    folks gnome-desktop libhandy
-    libxml2 gnome-online-accounts cheese
-    gnome3.adwaita-icon-theme libchamplain clutter-gtk geocode-glib
-    # telepathy-glib 3.35.90 fails to build with telepathy
-  ];
-
-  mesonFlags = [
-    # Upstream does not seem to maintain this properly: https://gitlab.gnome.org/GNOME/gnome-contacts/issues/103
-    "-Dtelepathy=false"
+    gtk3
+    glib
+    evolution-data-server
+    gsettings-desktop-schemas
+    folks
+    gnome-desktop
+    libhandy
+    libxml2
+    gnome-online-accounts
+    cheese
+    gnome3.adwaita-icon-theme
+    libchamplain
+    clutter-gtk
+    geocode-glib
   ];
 
   postPatch = ''
@@ -39,12 +75,6 @@ stdenv.mkDerivation rec {
     patchShebangs build-aux/meson_post_install.py
   '';
 
-  # In file included from src/gnome-contacts@exe/contacts-avatar-selector.c:30:0:
-  # /nix/store/*-cheese-3.28.0/include/cheese/cheese-widget.h:26:10: fatal error: clutter-gtk/clutter-gtk.h: No such file or directory
-  #  #include <clutter-gtk/clutter-gtk.h>
-  #           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
-  NIX_CFLAGS_COMPILE = "-I${stdenv.lib.getDev clutter-gtk}/include/clutter-gtk-1.0";
-
   doCheck = true;
 
   passthru = {
@@ -58,7 +88,7 @@ stdenv.mkDerivation rec {
     homepage = "https://wiki.gnome.org/Apps/Contacts";
     description = "GNOME’s integrated address book";
     maintainers = teams.gnome.members;
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
index ea28d651eba9..1300f7a75035 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
@@ -1,4 +1,6 @@
 { fetchurl
+, fetchFromGitLab
+, fetchpatch
 , stdenv
 , substituteAll
 , accountsservice
@@ -68,12 +70,16 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-control-center";
-  version = "3.36.4";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0m7pxjgymc7aqqz0vcmlq91nxnwzd1v7v1gdhrfam49krxmk80mc";
+    sha256 = "09i011hf23s2i4wim43vjys7y4y43cxl3kyvrnrwqvqgc5n0144d";
   };
+  # See https://mail.gnome.org/archives/distributor-list/2020-September/msg00001.html
+  prePatch = (import ../gvc-with-ucm-prePatch.nix {
+    inherit fetchFromGitLab;
+  });
 
   nativeBuildInputs = [
     docbook_xsl
@@ -143,6 +149,17 @@ stdenv.mkDerivation rec {
       inherit glibc libgnomekbd tzdata;
       inherit cups networkmanagerapplet;
     })
+
+    # Fix double free when leaving user accounts panel.
+    # https://gitlab.gnome.org/GNOME/gnome-control-center/merge_requests/853
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-control-center/commit/e80b4b5f58f448c5a3d38721f7bba32c413d46e7.patch";
+      sha256 = "GffsSU/uNS0Fg2lXbOuD/BrWBT4D2VKgWNGifG0FBUw=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-control-center/commit/64686cfee330849945f6ff4dcc43393eb1a6e59c.patch";
+      sha256 = "4VJU0q6qOtGzd/hmDncckInfEjCkC8+lXmDgxwc4VJU=";
+    })
   ];
 
   postPatch = ''
@@ -150,10 +167,6 @@ stdenv.mkDerivation rec {
     patchShebangs build-aux/meson/meson_post_install.py
   '';
 
-  mesonFlags = [
-    "-Dgnome_session_libexecdir=${gnome-session}/libexec"
-  ];
-
   preFixup = ''
     gappsWrapperArgs+=(
       --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share"
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
index e558eb66d40f..d7ce6c370c38 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, ninja, libX11, gnome3, gtk3, glib
+{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, ninja, gnome3, gtk3, glib
 , gettext, libxml2, xkeyboard_config, isocodes, meson, wayland
 , libseccomp, systemd, bubblewrap, gobject-introspection, gtk-doc, docbook_xsl, gsettings-desktop-schemas }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-desktop";
-  version = "3.36.5";
+  version = "3.38.2";
 
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-desktop/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0lxpgb199hn37vq822qg9g43pwixbki3x5lkazqa77qhjhlj98gf";
+    sha256 = "1m7iww1zk845szs9s3zc8a1s1wpd6kizndhq7gqy3575c0xgr2w9";
   };
 
   nativeBuildInputs = [
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     gtk-doc docbook_xsl glib
   ];
   buildInputs = [
-    libX11 bubblewrap xkeyboard_config isocodes wayland
+    bubblewrap xkeyboard_config isocodes wayland
     gtk3 glib libseccomp systemd
   ];
 
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
index 40085e501b62..d4972fb0a291 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-disk-utility";
-  version = "3.36.3";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-disk-utility/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0yhnjmjzkixj29vcw6rzaijpg4mlwm2k1kqp4g3hn1xb6qzks0yx";
+    sha256 = "1TuF3BMDobXOHkIcH1xqwLMY4HzZqVk50uHwlZpe19k=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/0001-fix-paths.patch
index 94e14f688b3c..d4065c144996 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/0001-fix-paths.patch
@@ -1,25 +1,35 @@
+From 1ae0eca39ba6af27f37e2fe81395b91a2761a408 Mon Sep 17 00:00:00 2001
+Message-Id: <1ae0eca39ba6af27f37e2fe81395b91a2761a408.1600627676.git-series.worldofpeace@protonmail.ch>
+From: WORLDofPEACE <worldofpeace@protonmail.ch>
+Date: Sun, 20 Sep 2020 14:46:59 -0400
+Subject: [PATCH] fix paths
+
+---
+ data/gnome-welcome-tour                               | 4 ++--
+ gnome-initial-setup/pages/keyboard/cc-input-chooser.c | 6 +++---
+ gnome-initial-setup/pages/timezone/tz.h               | 4 ++--
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
 diff --git a/data/gnome-welcome-tour b/data/gnome-welcome-tour
-index c479296..3dd629c 100755
+index 51c9b59..68ab0c4 100755
 --- a/data/gnome-welcome-tour
 +++ b/data/gnome-welcome-tour
-@@ -3,7 +3,7 @@
+@@ -3,11 +3,11 @@
  cfgdir=${XDG_CONFIG_DIR:-$HOME/.config}
  
- # Don't do anything if yelp isn't installed
--yelp_path=$(which yelp 2>/dev/null)
-+yelp_path=@yelp@
- if test -z "${yelp_path}"; then
+ # Don't do anything if gnome-tour isn't installed
+-gnome_tour_path=$(which gnome-tour 2>/dev/null)
++gnome_tour_path="@gnome_tour@"
+ if test -z "${gnome_tour_path}"; then
      rm -f $cfgdir/run-welcome-tour
      exit
-@@ -17,5 +17,5 @@ geometry=(1024, 709)
- EOF
  fi
  
--yelp help:gnome-help/getting-started
-+$yelp_path help:gnome-help/getting-started
+-gnome-tour
++@gnome_tour@
  rm -f $cfgdir/run-welcome-tour
 diff --git a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
-index 1c34ef7..a1e7f93 100644
+index 196abf6..613d0e5 100644
 --- a/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
 +++ b/gnome-initial-setup/pages/keyboard/cc-input-chooser.c
 @@ -177,9 +177,9 @@ preview_cb (GtkLabel       *label,
@@ -34,7 +44,7 @@ index 1c34ef7..a1e7f93 100644
  	g_spawn_command_line_async (commandline, NULL);
  	g_free (commandline);
  
-@@ -829,7 +829,7 @@ cc_input_chooser_class_init (CcInputChooserClass *klass)
+@@ -831,7 +831,7 @@ cc_input_chooser_class_init (CcInputChooserClass *klass)
                  g_param_spec_string ("showing-extra", "", "", "",
                                       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
  
@@ -44,7 +54,7 @@ index 1c34ef7..a1e7f93 100644
  			      G_TYPE_FROM_CLASS (object_class),
  			      G_SIGNAL_RUN_FIRST,
 diff --git a/gnome-initial-setup/pages/timezone/tz.h b/gnome-initial-setup/pages/timezone/tz.h
-index 93905b3..e7ee785 100644
+index a2376f8..5cb7bc9 100644
 --- a/gnome-initial-setup/pages/timezone/tz.h
 +++ b/gnome-initial-setup/pages/timezone/tz.h
 @@ -4,7 +4,7 @@
@@ -57,7 +67,7 @@ index 93905b3..e7ee785 100644
   *
   * This program is free software; you can redistribute it and/or modify
 @@ -28,7 +28,7 @@
- #include <glib.h>
+ G_BEGIN_DECLS
  
  #ifndef __sun
 -#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
@@ -65,3 +75,7 @@ index 93905b3..e7ee785 100644
  #else
  #  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
  #endif
+
+base-commit: 5132e206a6bf81964450561d68473ac015760455
+-- 
+git-series 0.9.1
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix
index ff7b1f45e454..eba9ed1334f1 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-initial-setup/default.nix
@@ -32,15 +32,17 @@
 , tzdata
 , yelp
 , libgnomekbd
+, gsettings-desktop-schemas
+, gnome-tour
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-initial-setup";
-  version = "3.36.4";
+  version = "3.38.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "17szzz2a5wpi7kwjnhimiwf8vg0bfliyk3k0adgv1pw2mcfpxp5s";
+    hash = "sha256-qliJJ0+LC23moFErR3Qrgqw0ANrsgt1O/+LuonRko7g=";
   };
 
   nativeBuildInputs = [
@@ -62,10 +64,12 @@ stdenv.mkDerivation rec {
     gnome-desktop
     gnome-getting-started-docs
     gnome-online-accounts
+    gsettings-desktop-schemas
     gtk3
     json-glib
     krb5
     libgweather
+    libnma
     libpwquality
     librest
     libsecret
@@ -73,14 +77,13 @@ stdenv.mkDerivation rec {
     pango
     polkit
     webkitgtk
-    libnma
   ];
 
   patches = [
     (substituteAll {
-      src = ./fix-paths.patch;
+      src = ./0001-fix-paths.patch;
       inherit tzdata libgnomekbd;
-      yelp = "${yelp}/bin/yelp"; # gnome-welcome-tour
+      gnome_tour = "${gnome-tour}/bin/gnome-tour";
     })
   ];
 
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
index ede2f2792483..9a940458679f 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
@@ -1,6 +1,28 @@
-{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2
-, libgdata, grilo, libzapojit, grilo-plugins, gnome-online-accounts, libmediaart
-, tracker, gfbgraph, librest, libsoup, json-glib, gmp, openssl, dleyna-server, wrapGAppsHook }:
+{ stdenv
+, fetchurl
+, fetchpatch
+, autoconf-archive
+, autoreconfHook
+, pkg-config
+, glib
+, gnome3
+, libxml2
+, libgdata
+, grilo
+, libzapojit
+, grilo-plugins
+, gnome-online-accounts
+, libmediaart
+, tracker
+, gfbgraph
+, librest
+, libsoup
+, json-glib
+, gmp
+, openssl
+, dleyna-server
+, wrapGAppsHook
+}:
 
 stdenv.mkDerivation rec {
   pname = "gnome-online-miners";
@@ -11,15 +33,70 @@ stdenv.mkDerivation rec {
     sha256 = "1n2jz9i8a42zwxx5h8j2gdy6q1vyydh4vl00r0al7w8jzdh24p44";
   };
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  patches = [
+    # Fix use after free
+    # https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/4
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/9eb57c6a8cd1a925c508646edae936eee0a8e46b.patch";
+      sha256 = "O1GRnzs33I0mFzrNDFkTGiBKstq5krYg7fwj60367TA=";
+    })
+
+    # Port to Tracker 3
+    # https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/3
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/2d3798252807cad9eb061ed2b37e35170c1a1daf.patch";
+      sha256 = "hwrkxroMpTfOwJAPkYQFdDCroZ2qSsvOgDetrJDig20=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/1548c0c527f0e4389047448d7d3b6cff55278c8e.patch";
+      sha256 = "U9w81c9Kze7kv5KHeGqvDeSNHzSayVrUG0XYsYMa1sg=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/941ebd8890c9ac4f75a1f58ccbea9731f46ad912.patch";
+      sha256 = "JHtDlZ54/BlSiUA3ROHfCTtTKSin3g6JNm8NS6pYML8=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/d1681a64bc3f65894af2549e3ba2bffbaf6f539a.patch";
+      sha256 = "9ZEatz5I81UAnjS1qCGWYDQQOxg/qp9Tg3xG/a+3goc=";
+    })
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-online-miners/commit/3d2af8785c84d6e50d8a8e6a2569a4b709184e94.patch";
+      sha256 = "7bdUE2k6g3Z8sdGYEb6pUm1/wbKDe4BHbylXUzfuTG0=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    # patch changes configure.ac
+    autoconf-archive
+    autoreconfHook
+
+    pkg-config
+    wrapGAppsHook
+  ];
+
   buildInputs = [
-    glib libgdata libxml2 libsoup gmp openssl
-    grilo libzapojit grilo-plugins
-    gnome-online-accounts libmediaart
-    tracker gfbgraph json-glib librest
+    glib
+    libgdata
+    libxml2
+    libsoup
+    gmp
+    openssl
+    grilo
+    libzapojit
+    grilo-plugins
+    gnome-online-accounts
+    libmediaart
+    tracker
+    gfbgraph
+    json-glib
+    librest
     dleyna-server
   ];
 
+  NIX_CFLAGS_COMPILE = [
+    "-Wno-error=format-security" # https://gitlab.gnome.org/GNOME/gnome-online-miners/merge_requests/3/diffs#note_942747
+  ];
+
   enableParallelBuilding = true;
 
   passthru = {
@@ -33,7 +110,7 @@ stdenv.mkDerivation rec {
     homepage = "https://wiki.gnome.org/Projects/GnomeOnlineMiners";
     description = "A set of crawlers that go through your online content and index them locally in Tracker";
     maintainers = teams.gnome.members;
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix
index a77aee4b890c..87c0d1efc84c 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix
@@ -1,23 +1,48 @@
-{ stdenv, fetchFromGitLab, meson, ninja, pkgconfig, python3, wrapGAppsHook
-, glib, pipewire, systemd, libvncserver, libsecret, libnotify, gdk-pixbuf }:
+{ stdenv
+, fetchurl
+, cairo
+, meson
+, ninja
+, pkgconfig
+, python3
+, wrapGAppsHook
+, glib
+, pipewire
+, systemd
+, libvncserver
+, libsecret
+, libnotify
+, gdk-pixbuf
+, freerdp
+}:
 
 stdenv.mkDerivation rec {
   pname = "gnome-remote-desktop";
-  version = "0.1.8";
+  version = "0.1.9";
 
-  src = fetchFromGitLab {
-    domain = "gitlab.gnome.org";
-    owner = "jadahl";
-    repo = "gnome-remote-desktop";
-    rev = version;
-    sha256 = "1wcvk0w4p0wnqnrjkbwvqcby9dd4nj0cm9cz0fqna31qfjrvb913";
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    hash = "sha256-8iZtp4tBRT7NNRKuzwop3rcMvq16RG/I2sAlEIsJ0M8=";
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig python3 wrapGAppsHook ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
 
   buildInputs = [
-    glib pipewire systemd libvncserver libsecret libnotify
+    cairo
+    freerdp
     gdk-pixbuf # For libnotify
+    glib
+    libnotify
+    libsecret
+    libvncserver
+    pipewire
+    systemd
   ];
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
index 2eacfc2de777..05bb189c0e29 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra-gtk3
+{ stdenv, gettext, libxml2, libhandy, fetchurl, pkgconfig, libcanberra-gtk3
 , gtk3, glib, meson, ninja, python3, wrapGAppsHook, appstream-glib, desktop-file-utils
 , gnome3, gsettings-desktop-schemas }:
 
 let
   pname = "gnome-screenshot";
-  version = "3.36.0";
+  version = "3.38.0";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "0rhj6fkpxfm26jv3vsn7yb2ybkc2k86ggy23nxa945q74y4msj9k";
+    sha256 = "1h4zsaybjrlkfcrvriyybg4gfr7v9d1ndh2p516k94ad2gfx6mp5";
   };
 
   doCheck = true;
@@ -22,7 +22,7 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils python3 wrapGAppsHook ];
   buildInputs = [
-    gtk3 glib libcanberra-gtk3 gnome3.adwaita-icon-theme
+    gtk3 glib libcanberra-gtk3 libhandy gnome3.adwaita-icon-theme
     gsettings-desktop-schemas
   ];
 
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/ctl.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/ctl.nix
new file mode 100644
index 000000000000..6bc18d5379f4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/ctl.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, glib
+, systemd
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gnome-session-ctl";
+  version = "3.38.0";
+
+  src = fetchFromGitHub {
+    owner = "nix-community";
+    repo = pname;
+    rev = "c20907fea27fa96568b8375a6756c40d0bfb9e40"; # main
+    hash = "sha256-y9/yOH6N8wf93+gPqnqzRzV/lPXYD0M6v7dsLFF8lWo=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    systemd
+  ];
+
+  meta = with stdenv.lib; {
+    description = "gnome-session-ctl extracted from gnome-session for nixpkgs";
+    homepage = "https://github.com/nix-community/gnome-session-ctl";
+    license = licenses.gpl2Plus;
+    maintainers = teams.gnome.members;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix
index b25688ea5a9d..4684f3ebee0b 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix
@@ -1,16 +1,16 @@
 { fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk3, gsettings-desktop-schemas
 , gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412, python3
-, libxslt, gettext, makeWrapper, systemd, xorg, epoxy, gnugrep, bash }:
+, libxslt, gettext, makeWrapper, systemd, xorg, epoxy, gnugrep, bash, gnome-session-ctl }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-session";
-  version = "3.36.0";
+  version = "3.38.0";
 
   outputs = ["out" "sessions"];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0ymvf1bap35348rpjqp63qwnwnnawdwi4snch95zc4n832w3hjym";
+    sha256 = "0rrxjk3vbqy3cdgnl7rw71dvcyrvhwq3m6s53dnkyjxsrnr0xk3v";
   };
 
   patches = [
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  mesonFlags = [ "-Dsystemd=true" ];
+  mesonFlags = [ "-Dsystemd=true" "-Dsystemd_session=default" ];
 
   nativeBuildInputs = [
     meson ninja pkgconfig gettext makeWrapper
@@ -39,6 +39,14 @@ stdenv.mkDerivation rec {
   postPatch = ''
     chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs meson_post_install.py
+
+    # Use our provided `gnome-session-ctl`
+    original="@libexecdir@/gnome-session-ctl"
+    replacement="${gnome-session-ctl}/libexec/gnome-session-ctl"
+
+    find data/ -type f -name "*.service.in" -exec sed -i \
+      -e s,$original,$replacement,g \
+      {} +
   '';
 
   # `bin/gnome-session` will reset the environment when run in wayland, we
@@ -59,6 +67,9 @@ stdenv.mkDerivation rec {
     mkdir $sessions
     moveToOutput share/wayland-sessions "$sessions"
     moveToOutput share/xsessions "$sessions"
+
+    # Our provided one is being used
+    rm -rf $out/libexec/gnome-session-ctl
   '';
 
   passthru = {
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
index 2399c656016a..320b3024deee 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
@@ -1,6 +1,8 @@
+diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in
+index ddd1a591..46a3488b 100755
 --- a/gnome-session/gnome-session.in
 +++ b/gnome-session/gnome-session.in
-@@ -3,11 +3,13 @@
+@@ -3,17 +3,19 @@
  if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
     [ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
     [  -n "$SHELL" ] &&
@@ -12,24 +14,24 @@
 +   ! (echo "$SHELL" | @grep@ -q "nologin"); then
    if [ "$1" != '-l' ]; then
 -    exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
-+    # Make sure the shell actually sets up the environment
++    # Make sure the shell actually sets up the environment.
 +    unset __NIXOS_SET_ENVIRONMENT_DONE
 +    exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'"
    else
      shift
    fi
-@@ -13,7 +13,7 @@
-   fi
  fi
  
--SETTING=$(G_MESSAGES_DEBUG= gsettings get org.gnome.system.locale region)
-+SETTING=$(G_MESSAGES_DEBUG= @gsettings@ get org.gnome.system.locale region)
+-SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region)
++SETTING=$(G_MESSAGES_DEBUG='' @gsettings@ get org.gnome.system.locale region)
  REGION=${SETTING#\'}
  REGION=${REGION%\'}
  
+diff --git a/gnome-session/main.c b/gnome-session/main.c
+index 84edfbe5..e5285489 100644
 --- a/gnome-session/main.c
 +++ b/gnome-session/main.c
-@@ -203,7 +203,7 @@
+@@ -215,7 +215,7 @@ require_dbus_session (int      argc,
          }
          new_argv[i + 2] = NULL;
          
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
index 2ee07fb09aa8..3c039bc63108 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
@@ -1,4 +1,5 @@
 { stdenv
+, fetchpatch
 , substituteAll
 , fetchurl
 , meson
@@ -36,18 +37,25 @@
 , tzdata
 , nss
 , gcr
+, gnome-session-ctl
 }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-settings-daemon";
-  version = "3.36.1";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-settings-daemon/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0jzf2nznpcrjqq7fjwk66kw8a6x87kgbdjidc2msaqmm379xncry";
+    sha256 = "0r010wzw3dj87mapzvq15zv93i86wg0x0rpii3x2wapq3bcj30g2";
   };
 
   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;
@@ -95,6 +103,7 @@ stdenv.mkDerivation rec {
 
   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
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
index ba1b0faedb20..2d07f90a16c8 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extensions";
-  version = "3.36.3";
+  version = "3.38.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell-extensions/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1cg3dqvvxg8zrdqs2rci8sds2hxjahbhm87f0xpy8b3gq56lqrrb";
+    sha256 = "0hzn975v49rv3nsqp8m0mzv8gcm7nyvn54gj3zsml8ahlxwl592p";
   };
 
   passthru = {
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
index 8f2e78c639c2..53b9bc5d7382 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
@@ -16,15 +16,12 @@
 , docbook-xsl-nons
 , at-spi2-core
 , libstartup_notification
-, telepathy-glib
-, telepathy-logger
 , unzip
 , shared-mime-info
 , libgweather
 , librsvg
 , geoclue2
 , perl
-, docbook_xml_dtd_412
 , docbook_xml_dtd_42
 , docbook_xml_dtd_43
 , desktop-file-utils
@@ -51,6 +48,7 @@
 , gtk3
 , sassc
 , systemd
+, pipewire
 , gst_all_1
 , adwaita-icon-theme
 , gnome-bluetooth
@@ -67,13 +65,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "gnome-shell";
-  version = "3.36.5";
+  version = "3.38.2";
 
   outputs = [ "out" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1hj7gmjmy92xndlgw7pzk5m6j2fbzcgfd1pxc32k38gml8qg19d4";
+    url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "05fm7kxyvws2lbb156wfa2wf4xmkxr49rrjxg0yaxf68v000yq2k";
   };
 
   patches = [
@@ -84,13 +82,6 @@ stdenv.mkDerivation rec {
       gsettings = "${glib.bin}/bin/gsettings";
     })
 
-    # Install bash-completions to correct prefix.
-    # https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1194
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/gnome-shell/commit/9f1ad5d86ddbabaa840eb2860279d53f4e635453.patch";
-      sha256 = "18amnqw342vllcrjpfcq232z9xr28vgjsf2z8k73xx70nwah7hvz";
-    })
-
     # Use absolute path for libshew installation to make our patched gobject-introspection
     # aware of the location to hardcode in the generated GIR file.
     ./shew-gir-path.patch
@@ -113,7 +104,7 @@ stdenv.mkDerivation rec {
     pkg-config
     gettext
     docbook-xsl-nons
-    docbook_xml_dtd_412
+    # Switch to 4.5 in the 40.
     docbook_xml_dtd_42
     docbook_xml_dtd_43
     gtk-doc
@@ -139,7 +130,6 @@ stdenv.mkDerivation rec {
     librsvg
     networkmanager
     libstartup_notification
-    telepathy-glib
     gjs
     mutter
     libpulseaudio
@@ -155,11 +145,11 @@ stdenv.mkDerivation rec {
     upower
     ibus
     gnome-desktop
-    telepathy-logger
     gnome-settings-daemon
     gobject-introspection
 
     # recording
+    pipewire
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-good
@@ -197,7 +187,7 @@ stdenv.mkDerivation rec {
 
   postFixup = ''
     # The services need typelibs.
-    for svc in org.gnome.Shell.Extensions org.gnome.Shell.Notifications; do
+    for svc in org.gnome.Shell.Extensions org.gnome.Shell.Notifications org.gnome.Shell.Screencast; do
       wrapGApp $out/share/gnome-shell/$svc
     done
   '';
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
index 7b93475619b2..e17a608a2d85 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
@@ -19,8 +19,8 @@
 +        Util.spawn(['@libgnomekbd@/bin/gkbd-keyboard-display', '-l', description]);
      }
  });
---- a/data/gnome-shell-disable-extensions.service
-+++ b/data/gnome-shell-disable-extensions.service
+--- a/data/org.gnome.Shell-disable-extensions.service
++++ b/data/org.gnome.Shell-disable-extensions.service
 @@ -10,5 +10,5 @@ Requisite=gnome-session-stable.timer
  [Service]
  Type=simple
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix
index 9f51227f235a..71744ab84a3c 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix
@@ -1,7 +1,8 @@
 { stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree
 , glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobject-introspection, flatpak, fwupd
 , gtk3, gsettings-desktop-schemas, gnome-desktop, libxmlb, gnome-online-accounts
-, json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_43, gtk-doc, desktop-file-utils }:
+, json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_43, gtk-doc, desktop-file-utils
+, libsysprof-capture }:
 
 let
 
@@ -11,11 +12,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "gnome-software";
-  version = "3.36.1";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-software/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0vkgpy2afb33rrk94zqlm2q728xhzjj8s24n9wh9ylw00z3nckad";
+    sha256 = "0rjm486vgn6gi9mv1rqdcvr9cilmw6in4r6djqkxbxqll89cp2l7";
   };
 
   patches = [
@@ -34,7 +35,7 @@ stdenv.mkDerivation rec {
     gtk3 glib packagekit appstream-glib libsoup
     gsettings-desktop-schemas gnome-desktop
     gspell json-glib libsecret ostree
-    polkit flatpak libxmlb gnome-online-accounts
+    polkit flatpak libxmlb gnome-online-accounts libsysprof-capture
   ] ++ stdenv.lib.optionals withFwupd [
     fwupd
   ];
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
index 2dd4ae9e7f7b..d9e652de5f6d 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-system-monitor";
-  version = "3.36.1";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-system-monitor/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "18dwwwmw4m2kzvfmxyaxmnm66d1plwvh6c6naznb0xac1ymlfsw6";
+    sha256 = "1x5gd30g87im7fnqj63njlac69zywfd1r0vgsxkjag2hsns7mgvk";
   };
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
index 821d5707c7c9..8c8cc88301d8 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
@@ -1,14 +1,15 @@
 { stdenv, fetchurl, pkgconfig, libxml2, gnome3, dconf, nautilus
 , gtk3, gsettings-desktop-schemas, vte, gettext, which, libuuid, vala
-, desktop-file-utils, itstool, wrapGAppsHook, glib, pcre2 }:
+, desktop-file-utils, itstool, wrapGAppsHook, glib, pcre2
+, libxslt, docbook-xsl-nons }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-terminal";
-  version = "3.36.2";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-terminal/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0inzmkmxv8xw4px2zjfw7236d08yjcv7znxcjki6dh4pvjivdla1";
+    sha256 = "1lgkvla0fadg76j898p2x2fipqf8kkqbbmmsfkfpz11q9y1d966r";
   };
 
   buildInputs = [
@@ -18,7 +19,7 @@ stdenv.mkDerivation rec {
   ];
 
   nativeBuildInputs = [
-    pkgconfig gettext itstool which libxml2
+    pkgconfig gettext itstool which libxml2 libxslt docbook-xsl-nons
     vala desktop-file-utils wrapGAppsHook pcre2
   ];
 
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix
index 719e97647f7a..ec2007e0ee4a 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-tour/default.nix
@@ -3,7 +3,7 @@
 , gettext
 , meson
 , ninja
-, fetchFromGitLab
+, fetchurl
 , pkg-config
 , gtk3
 , glib
@@ -13,34 +13,26 @@
 , wrapGAppsHook
 , python3
 , gnome3
-, config
+, libhandy
+, librsvg
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "gnome-tour";
-  version = "0.0.1";
+  version = "3.38.0";
 
-  # We don't use the uploaded tar.xz because it comes pre-vendored
-  src = fetchFromGitLab {
-    domain = "gitlab.gnome.org";
-    owner = "GNOME";
-    repo = "gnome-tour";
-    rev = version;
-    sha256 = "0lbkspnlziq3z177071w3jpghmdwflzra1krdwchzmkfmrhy50ch";
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    hash = "sha256-hV/C/Lyz6e9zhe3FRw4Sox5gMqThDP57wVCTgcekjng=";
   };
 
-  cargoSha256 = "0k1wp9wswr57fv2d9bysxn97fchd4vz29n5r8gfyp0gcm8rclmij";
-
-  mesonFlags = [
-    "-Ddistro_name=NixOS"
-    "-Ddistro_icon_name=nix-snowflake"
-    "-Ddistro_version=20.09"
-  ];
+  cargoVendorDir = "vendor";
 
   nativeBuildInputs = [
     appstream-glib
     desktop-file-utils
     gettext
+    glib # glib-compile-resources
     meson
     ninja
     pkg-config
@@ -52,6 +44,8 @@ rustPlatform.buildRustPackage rec {
     gdk-pixbuf
     glib
     gtk3
+    libhandy
+    librsvg
   ];
 
   # Don't use buildRustPackage phases, only use it for rust deps setup
@@ -65,11 +59,11 @@ rustPlatform.buildRustPackage rec {
     patchShebangs build-aux/meson_post_install.py
   '';
 
-  # passthru = {
-  #   updateScript = gnome3.updateScript {
-  #     packageName = pname;
-  #   };
-  # };
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
 
   meta = with stdenv.lib; {
     homepage = "https://gitlab.gnome.org/GNOME/gnome-tour";
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gvc-with-ucm-prePatch.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gvc-with-ucm-prePatch.nix
new file mode 100644
index 000000000000..b2db2baf025d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/gvc-with-ucm-prePatch.nix
@@ -0,0 +1,17 @@
+{ fetchFromGitLab }:
+
+let
+  # We need a gvc different then that which is shipped in the source tarball of
+  # whatever package that imports this file
+  gvc-src-with-ucm = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "libgnome-volume-control";
+    rev = "7a621180b46421e356b33972e3446775a504139c";
+    sha256 = "07rkgh9f7qcmlpy6jqh944axzh3z38f47g48ii842f2i3a1mrbw9";
+  };
+in
+''
+  rm -r ./subprojects/gvc
+  cp -r ${gvc-src-with-ucm} ./subprojects/gvc
+''
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch
new file mode 100644
index 000000000000..3691c034d1ee
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-EGL-Include-EGL-eglmesaext.h.patch
@@ -0,0 +1,74 @@
+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-3/core/mutter/3.34/drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0002-drop-inheritable.patch
index 0f60be3a1217..28f89ac7c0c6 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/drop-inheritable.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0002-drop-inheritable.patch
@@ -1,36 +1,40 @@
-From e9c772e265b2293af031c79f4bbc99b5847dfe3c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= <torhedinbronner@gmail.com>
+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] drop inheritable
+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   | 11 +++++++++++
+ src/core/main.c   | 10 ++++++++++
  src/meson.build   |  1 +
- 5 files changed, 26 insertions(+)
+ 5 files changed, 25 insertions(+)
 
 diff --git a/config.h.meson b/config.h.meson
-index 0bab71848..202fb7ed1 100644
+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 3322bd3b1..01c8020fa 100644
+index 29d495b..86970df 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -35,6 +35,7 @@ libstartup_notification_req = '>= 0.7'
@@ -38,7 +42,7 @@ index 3322bd3b1..01c8020fa 100644
  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')
@@ -46,7 +50,7 @@ index 3322bd3b1..01c8020fa 100644
  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
@@ -54,7 +58,7 @@ index 3322bd3b1..01c8020fa 100644
  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)
@@ -63,7 +67,7 @@ index 3322bd3b1..01c8020fa 100644
  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(),
@@ -74,7 +78,7 @@ index 3322bd3b1..01c8020fa 100644
    '    Tests:',
    '',
 diff --git a/meson_options.txt b/meson_options.txt
-index 73aa7adde..8bfaacd9a 100644
+index 73aa7ad..8bfaacd 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -152,3 +152,9 @@ option('xwayland_grab_default_access_rules',
@@ -88,13 +92,13 @@ index 73aa7adde..8bfaacd9a 100644
 +  description: 'Enable libcap-ng support'
 +)
 diff --git a/src/core/main.c b/src/core/main.c
-index 7f4f666d2..b27968f13 100644
+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
@@ -105,7 +109,7 @@ index 7f4f666d2..b27968f13 100644
 @@ -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);
@@ -113,10 +117,10 @@ index 7f4f666d2..b27968f13 100644
 +#endif
 +
    g_main_loop_run (meta_main_loop);
-
+ 
    meta_finalize ();
 diff --git a/src/meson.build b/src/meson.build
-index 90d80734f..a9fffa2c2 100644
+index 90d8073..a9fffa2 100644
 --- a/src/meson.build
 +++ b/src/meson.build
 @@ -18,6 +18,7 @@ mutter_pkg_deps = [
@@ -126,7 +130,6 @@ index 90d80734f..a9fffa2c2 100644
 +  libcapng_dep,
    pango_dep,
  ]
-
---
-2.23.0
-
+ 
+-- 
+git-series 0.9.1
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0003-Fix-glitches-in-gala.patch
index 7be00b33bba5..9f78a324d9da 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0001-Fix-glitches-in-gala.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0003-Fix-glitches-in-gala.patch
@@ -1,7 +1,12 @@
-From e10186284103d3ad8e425980b096eac813cae631 Mon Sep 17 00:00:00 2001
+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>
-Date: Sun, 5 Apr 2020 23:06:03 -0400
-Subject: [PATCH] Fix glitches in gala
 
 This fixes issues for users of mutter like in gala[0].
 
@@ -12,7 +17,7 @@ Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
-index ecf9a597d..07b8b7155 100644
+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)
@@ -25,5 +30,4 @@ index ecf9a597d..07b8b7155 100644
      }
    else
 -- 
-2.25.1
-
+git-series 0.9.1
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch
new file mode 100644
index 000000000000..cd98d3950415
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0004-profiler-track-changes-in-GLib-and-Sysprof.patch
@@ -0,0 +1,58 @@
+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-3/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
new file mode 100644
index 000000000000..138970ddda0a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0005-meta-Add-missing-display.h-to-meta-workspace-manager.h.patch
@@ -0,0 +1,32 @@
+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-3/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch
new file mode 100644
index 000000000000..6d88f0f5e766
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0006-build-bump-ABI-to-sysprof-capture-4.patch
@@ -0,0 +1,102 @@
+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-3/core/mutter/3.34/0007-fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0007-fix-paths.patch
new file mode 100644
index 000000000000..8376fc649b5f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/0007-fix-paths.patch
@@ -0,0 +1,27 @@
+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-3/core/mutter/3.34/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix
index 876969878506..6afded766716 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/default.nix
@@ -43,20 +43,19 @@
 
 stdenv.mkDerivation rec {
   pname = "mutter";
-  version = "3.34.5";
+  version = "3.34.6";
 
   outputs = [ "out" "dev" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1i3r51ghfld1rf1rczzi3jhybz3mhywqcj2jyiqhfcyp1svlklfi";
+    hash = "sha256-I73ofTO4mBNYgxzsiRW7X/Hq+cHedMkM0WYLG5WINSY=";
   };
 
   mesonFlags = [
     "-Degl_device=true"
     "-Dinstalled_tests=false" # TODO: enable these
     "-Dwayland_eglstream=true"
-    "-Dxwayland-path=${xwayland}/bin/Xwayland"
   ];
 
   propagatedBuildInputs = [
@@ -105,45 +104,14 @@ stdenv.mkDerivation rec {
   ];
 
   patches = [
-    # Fix build with libglvnd provided headers
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/mutter/commit/a444a4c5f58ea516ad3cd9d6ddc0056c3ca9bc90.patch";
-      sha256 = "0imy2j8af9477jliwdq4jc40yw1cifsjjf196gnmwxr9rkj0hbrd";
-    })
-
-    # gnome-3-34 2020-04-24
-    # also fixes https://mail.gnome.org/archives/distributor-list/2020-April/msg00001.html
-    (fetchpatch {
-      url = "https://github.com/GNOME/mutter/compare/3.34.5..3bafd234248fdcd84bc62fef5e31c29fbb613909.patch";
-      sha256 = "1a7krbdfmvx204p6av44rbp4ckp6ddg1mms8wkixxh2p871zq1pi";
-    })
-
-    # 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
-
-    # See commit message for details
-    ./0001-Fix-glitches-in-gala.patch
-
-    # https://gitlab.gnome.org/GNOME/mutter/merge_requests/1094
-    # https://gitlab.gnome.org/GNOME/mutter/merge_requests/957
-    ./fix-sysprof.patch
-
-    # profiler: track changes in GLib and Sysprof
-    # https://gitlab.gnome.org/GNOME/mutter/merge_requests/908
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/605171291993460f31d470a8143d6438d0c6169c.patch";
-      sha256 = "10fxzj0lmic2sp57w26w3r0bv1szngjjs50p3ka22wr9pxqmzl7l";
-    })
-
-    # Fixes https://github.com/elementary/wingpanel/issues/305
-    (fetchpatch {
-      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/9d390ee49fb1f6300336e82ae94cc8061c6bae12.patch";
-      sha256 = "12hmi07rvspwhp8h1y1vmcvmvbh8fihcrb07ja5g0qnh28ip5qfi";
-    })
-
+    ./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 = ./fix-paths.patch;
+      src = ./0007-fix-paths.patch;
       inherit zenity;
     })
   ];
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch
deleted file mode 100644
index 1986c65e8f49..000000000000
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-paths.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-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-3/core/mutter/3.34/fix-sysprof.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch
deleted file mode 100644
index 481a0ab89cb0..000000000000
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.34/fix-sysprof.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 71acfd5258b4d12323fc51dda48e83830e62e696 Mon Sep 17 00:00:00 2001
-From: worldofpeace <worldofpeace@protonmail.ch>
-Date: Mon, 16 Sep 2019 11:18:27 -0400
-Subject: [PATCH] build: use get_pkgconfig_variable for sysprof dbusdir
-
----
- src/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/meson.build b/src/meson.build
-index 182f7f5f5..43060865b 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -710,7 +710,7 @@ if have_profiler
-     'backends/meta-profiler.h',
-   ]
-
--  dbus_interfaces_dir = join_paths(datadir, 'dbus-1', 'interfaces')
-+  dbus_interfaces_dir = join_paths(sysprof_dep.get_pkgconfig_variable('prefix'), 'share', 'dbus-1', 'interfaces')
-   sysprof3_dbus_file = join_paths(dbus_interfaces_dir, 'org.gnome.Sysprof3.Profiler.xml')
-
-   dbus_sysprof3_profiler_built_sources = gnome.gdbus_codegen('meta-dbus-sysprof3-profiler',
---
-2.22.1
-
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix
index 79cbbb9f5a8c..7f26e615a1cf 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix
@@ -42,13 +42,13 @@
 
 let self = stdenv.mkDerivation rec {
   pname = "mutter";
-  version = "3.36.5";
+  version = "3.38.2";
 
   outputs = [ "out" "dev" "man" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1py7sqrpvg2qvswxclshysx7hd9jk65i6cwqsagd6rg6rnjhblp0";
+    sha256 = "03a612m0c7v6y72bs3ghmpyk49177fzq6gdy1jrz4608vnalx5yr";
   };
 
   patches = [
@@ -124,8 +124,11 @@ let self = 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-6";
+    libdir = "${self}/lib/mutter-7";
 
     tests = {
       libdirExists = runCommand "mutter-libdir-exists" {} ''
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch
index 1600db1e705b..7374e1b86935 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/drop-inheritable.patch
@@ -102,18 +102,18 @@ index 7f4f666d2..b27968f13 100644
  #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);
- 
+@@ -670,5 +674,12 @@ int
+ meta_run (void)
+ {
+   meta_start ();
++
 +#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_run_main_loop ();
    meta_finalize ();
 diff --git a/src/meson.build b/src/meson.build
 index 90d80734f..a9fffa2c2 100644
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix
index 6145178de1e0..79334e5b1949 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix
@@ -32,13 +32,24 @@
 
 stdenv.mkDerivation rec {
   pname = "nautilus";
-  version = "3.36.3";
+  version = "3.38.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1y0fsd7j48v4qkc051cg41mz7jycgw4vd4g37lw682p7n5xgrjmn";
+    sha256 = "19ln84d6s05h6cvx3c500bg5pvkz4k6p6ykmr2201rblq9afp76h";
   };
 
+  patches = [
+    # Allow changing extension directory using environment variable.
+    ./extension_dir.patch
+
+    # Hardcode required paths.
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit tracker;
+    })
+  ];
+
   nativeBuildInputs = [
     desktop-file-utils
     gettext
@@ -86,10 +97,6 @@ stdenv.mkDerivation rec {
     patchShebangs build-aux/meson/postinstall.py
   '';
 
-  patches = [
-    ./extension_dir.patch
-  ];
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/fix-paths.patch
new file mode 100644
index 000000000000..dc9874359b23
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/fix-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/nautilus-tag-manager.c b/src/nautilus-tag-manager.c
+index 28b96c996..0b1fad9ab 100644
+--- a/src/nautilus-tag-manager.c
++++ b/src/nautilus-tag-manager.c
+@@ -962,7 +962,7 @@ child_watch_cb (GPid     pid,
+ static void
+ export_tracker2_data (NautilusTagManager *self)
+ {
+-    gchar *argv[] = {"tracker3", "export", "--2to3", "files-starred", "--keyfile", NULL};
++    gchar *argv[] = {"@tracker@/bin/tracker3", "export", "--2to3", "files-starred", "--keyfile", NULL};
+     gint stdout_fd;
+     GPid child_pid;
+     g_autoptr (GError) error = NULL;
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch
index 4259f93eb24c..6fe651b9cbb4 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch
@@ -1,5 +1,5 @@
 diff --git a/meson.build b/meson.build
-index 209d4187..58580980 100644
+index 4aa683d6..a930d533 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -20,7 +20,11 @@ if not get_option('uninstalled')
@@ -14,7 +14,7 @@ index 209d4187..58580980 100644
 +    endif
      rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.6', 'plugins')
      rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.6', 'engines')
-     rygel_presetdir = join_paths(rygel_datadir, 'rygel', 'presets')
+     rygel_presetdir = join_paths(rygel_datadir, 'presets')
 @@ -55,7 +59,7 @@ conf.set_quoted('DATA_DIR', rygel_datadir)
  conf.set_quoted('PLUGIN_DIR', rygel_plugindir)
  conf.set_quoted('BIG_ICON_DIR', rygel_bigicondir)
@@ -25,7 +25,7 @@ index 209d4187..58580980 100644
  conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract'))
  conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications'))
 diff --git a/meson_options.txt b/meson_options.txt
-index f09cac58..ff11c548 100644
+index cb604c4e..1b049b77 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -1,6 +1,7 @@
@@ -33,6 +33,6 @@ index f09cac58..ff11c548 100644
  option('api-docs', type: 'boolean', value: 'false', description: 'Build the API documentation')
  option('systemd-user-units-dir', type : 'string', value : 'auto', description : 'Where to install the systemd user unit (use special values "auto" or "none", or pass a path')
 +option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation')
- option('plugins', type : 'array', choices : ['external', 'gst-launch', 'lms', 'media-export', 'mpris', 'playbin', 'ruih', 'tracker'])
+ option('plugins', type : 'array', choices : ['external', 'gst-launch', 'lms', 'media-export', 'mpris', 'playbin', 'ruih', 'tracker', 'tracker3'])
  option('engines', type : 'array', choices : ['simple', 'gstreamer'])
  option('examples', type : 'boolean', value : 'true')
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix
index 529091e5fd61..f7ce3387fc07 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix
@@ -28,14 +28,14 @@
 
 stdenv.mkDerivation rec {
   pname = "rygel";
-  version = "0.38.4";
+  version = "0.40.0";
 
   # TODO: split out lib
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0rm1m1z8rcvyj9873wqcz5i3qdg8j6gv6k1p01xifk0y9phg7rzc";
+    sha256 = "0xrbdsgm78h3g4qcvq2p8k70q31x9xdbb35bixz36q6h9s1wqznn";
   };
 
   nativeBuildInputs = [
@@ -66,6 +66,7 @@ stdenv.mkDerivation rec {
     shared-mime-info
   ] ++ (with gst_all_1; [
     gstreamer
+    gst-editing-services
     gst-plugins-base
     gst-plugins-good
     gst-plugins-bad
@@ -77,6 +78,8 @@ stdenv.mkDerivation rec {
     "-Dapi-docs=false"
     "--sysconfdir=/etc"
     "-Dsysconfdir_install=${placeholder "out"}/etc"
+    # Build all plug-ins except for tracker 2
+    "-Dplugins=external,gst-launch,lms,media-export,mpris,playbin,ruih,tracker3"
   ];
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix
index eebd307a3064..66846876faef 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix
@@ -24,11 +24,11 @@
 
 stdenv.mkDerivation rec {
   pname = "simple-scan";
-  version = "3.36.4";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "09gmzrlljdqkj3w6wa1c27wypy6j8z9dw3jzv9izfqvp38liibsn";
+    sha256 = "0grscz96bwj79ka4qvxh8h75avdx6824k8k38ylmaj6xbl6gi0hy";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix
index 4bdc409d8166..f0ddaef081b3 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "sushi";
-  version = "3.34.0";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/sushi/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1zcr8wi5bgvvpb5ha1v96aiaz4vqqrsn6cvvalwzah6am85k78m8";
+    sha256 = "0vlqqk916dymv4asbyvalp1m096a5hh99nx23i4xavzvgygh4h2h";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix
index 50ab50e58b2c..58ee706b1cfc 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix
@@ -1,41 +1,107 @@
-{ stdenv, fetchurl, meson, ninja, gettext, gst_all_1
-, clutter-gtk, clutter-gst, python3Packages, shared-mime-info
-, pkgconfig, gtk3, glib, gobject-introspection, totem-pl-parser
-, wrapGAppsHook, itstool, libxml2, vala, gnome3, grilo, grilo-plugins
-, libpeas, adwaita-icon-theme, gnome-desktop, gsettings-desktop-schemas
-, gdk-pixbuf, tracker, nautilus, xvfb_run }:
+{ stdenv
+, fetchurl
+, meson
+, ninja
+, gettext
+, gst_all_1
+, clutter-gtk
+, clutter-gst
+, python3Packages
+, shared-mime-info
+, pkgconfig
+, gtk3
+, glib
+, gobject-introspection
+, totem-pl-parser
+, wrapGAppsHook
+, itstool
+, libxml2
+, vala
+, gnome3
+, grilo
+, grilo-plugins
+, libpeas
+, adwaita-icon-theme
+, gnome-desktop
+, gsettings-desktop-schemas
+, gdk-pixbuf
+, xvfb_run
+}:
 
 stdenv.mkDerivation rec {
   pname = "totem";
-  version = "3.34.1";
+  version = "3.38.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/totem/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "028sc6xbyi7rs884862d8f3di6zhcm0lhvlpc3r69ifzjsq9my3b";
+    sha256 = "0bs33ijvxbr2prb9yj4dxglsszslsn9k258n311sld84masz4ad8";
   };
 
-  doCheck = true;
+  nativeBuildInputs = [
+    meson
+    ninja
+    vala
+    pkgconfig
+    gettext
+    python3Packages.python
+    itstool
+    gobject-introspection
+    wrapGAppsHook
+  ];
 
-  nativeBuildInputs = [ meson ninja vala pkgconfig gettext python3Packages.python itstool gobject-introspection wrapGAppsHook ];
   buildInputs = [
-    gtk3 glib grilo clutter-gtk clutter-gst totem-pl-parser grilo-plugins
-    gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
-    gst_all_1.gst-plugins-ugly gst_all_1.gst-libav libpeas shared-mime-info
-    gdk-pixbuf libxml2 adwaita-icon-theme gnome-desktop
-    gsettings-desktop-schemas tracker nautilus
-    python3Packages.pygobject3 python3Packages.dbus-python # for plug-ins
+    gtk3
+    glib
+    grilo
+    clutter-gtk
+    clutter-gst
+    totem-pl-parser
+    grilo-plugins
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+    libpeas
+    shared-mime-info
+    gdk-pixbuf
+    libxml2
+    adwaita-icon-theme
+    gnome-desktop
+    gsettings-desktop-schemas
+    # for plug-ins
+    python3Packages.pygobject3
+    python3Packages.dbus-python
+  ];
+
+  checkInputs = [
+    xvfb_run
+  ];
+
+  mesonFlags = [
+    # TODO: https://github.com/NixOS/nixpkgs/issues/36468
+    "-Dc_args=-I${glib.dev}/include/gio-unix-2.0"
   ];
 
+  # Tests do not work with GStreamer 1.18.
+  # https://gitlab.gnome.org/GNOME/totem/-/issues/450
+  doCheck = false;
+
   postPatch = ''
     chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file
-    patchShebangs .
+    patchShebangs \
+      ./meson_compile_python.py \
+      ./meson_post_install.py
   '';
 
-  checkInputs = [ xvfb_run ];
-
   checkPhase = ''
+    runHook preCheck
+
     xvfb-run -s '-screen 0 800x600x24' \
       ninja test
+
+    runHook postCheck
   '';
 
   wrapPrefixVariables = [ "PYTHONPATH" ];
@@ -51,7 +117,7 @@ stdenv.mkDerivation rec {
     homepage = "https://wiki.gnome.org/Apps/Videos";
     description = "Movie player for the GNOME desktop based on GStreamer";
     maintainers = teams.gnome.members;
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus; # with exception to allow use of non-GPL compatible plug-ins
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
index 09019e6758c1..a29a292b3d74 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
@@ -10,11 +10,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yelp-xsl";
-  version = "3.36.0";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp-xsl/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1hsfj3q3a3kca0cf9i02xlq2qd4vy12qsjb89hh4r6mp6c11rrag";
+    sha256 = "0ryzvkcgxp7xi0icmpdl2rinjn904s8imbxdi6wshzxblqymc8dk";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix
index 1235447c032a..147809de9ef6 100644
--- a/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix
+++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yelp";
-  version = "3.36.0";
+  version = "3.38.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "097djjyl096zmicjpxlb858yz6rd5cj813xc8azbxlhsscikwjzx";
+    sha256 = "102z8khj82vdp12c3y86hhxwm1x89xpkpc5zs63c7gg21cbrwdbl";
   };
 
   nativeBuildInputs = [ pkgconfig gettext itstool wrapGAppsHook ];