summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/core
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/gnome-3/core')
-rw-r--r--pkgs/desktops/gnome-3/core/caribou/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/core/dconf-editor/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/dconf/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/empathy/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/eog/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/epiphany/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/evolution-data-server/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/folks/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/gconf/default.nix34
-rw-r--r--pkgs/desktops/gnome-3/core/gcr/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/default.nix7
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix43
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-calculator/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-contacts/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-control-center/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-desktop/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-keyring/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-session/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch22
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-software/default.nix5
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-terminal/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-user-share/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/grilo-plugins/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/grilo/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/gucharmap/default.nix69
-rw-r--r--pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix29
-rw-r--r--pkgs/desktops/gnome-3/core/libgee/default.nix7
-rw-r--r--pkgs/desktops/gnome-3/core/libgee/fix_introspection_paths.patch13
-rw-r--r--pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/libgweather/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/mutter/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/nautilus/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/rest/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/rygel/default.nix54
-rw-r--r--pkgs/desktops/gnome-3/core/simple-scan/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/sushi/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/totem/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch26
-rw-r--r--pkgs/desktops/gnome-3/core/tracker/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/core/vte/default.nix9
-rw-r--r--pkgs/desktops/gnome-3/core/yelp-xsl/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/zenity/default.nix2
51 files changed, 426 insertions, 267 deletions
diff --git a/pkgs/desktops/gnome-3/core/caribou/default.nix b/pkgs/desktops/gnome-3/core/caribou/default.nix
index 48be01faf33f..acfd6dfb3745 100644
--- a/pkgs/desktops/gnome-3/core/caribou/default.nix
+++ b/pkgs/desktops/gnome-3/core/caribou/default.nix
@@ -1,11 +1,11 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, python3Packages, libxml2
+{ fetchurl, stdenv, pkgconfig, gnome3, glib, gtk3, clutter, dbus, python3, libxml2
 , libxklavier, libXtst, gtk2, intltool, libxslt, at-spi2-core, autoreconfHook
 , wrapGAppsHook }:
 
 let
   pname = "caribou";
   version = "0.4.21";
-  pythonEnv = python3Packages.python.withPackages ( ps: with ps; [ pygobject3 ] );
+  pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] );
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
@@ -14,11 +14,21 @@ in stdenv.mkDerivation rec {
     sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww";
   };
 
+  patches = [
+    # Fix crash in GNOME Flashback
+    # https://bugzilla.gnome.org/show_bug.cgi?id=791001
+    (fetchurl {
+      url = https://bugzilla.gnome.org/attachment.cgi?id=364774;
+      sha256 = "15k1455grf6knlrxqbjnk7sals1730b0whj30451scp46wyvykvd";
+    })
+  ];
+
   nativeBuildInputs = [ pkgconfig intltool libxslt libxml2 autoreconfHook wrapGAppsHook ];
 
-  buildInputs = with gnome3;
-    [ glib gtk clutter at-spi2-core dbus pythonEnv python3Packages.pygobject3
-      libXtst gtk2 ];
+  buildInputs = [
+    glib gtk3 clutter at-spi2-core dbus pythonEnv python3.pkgs.pygobject3
+    libXtst gtk2
+  ];
 
   propagatedBuildInputs = [ gnome3.libgee libxklavier ];
 
@@ -37,9 +47,8 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "An input assistive technology intended for switch and pointer users";
     homepage = https://wiki.gnome.org/Projects/Caribou;
-    platforms = platforms.linux;
     license = licenses.lgpl21;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
-
 }
diff --git a/pkgs/desktops/gnome-3/core/dconf-editor/default.nix b/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
index 57c102d89cc5..13d73fa34d2f 100644
--- a/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
+++ b/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, dbus-glib, gtk3, gnome3
+{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, dbus-glib, gtk3, gnome3, python3
 , libxml2, gettext, docbook_xsl, wrapGAppsHook, gobjectIntrospection }:
 
 let
@@ -12,7 +12,7 @@ in stdenv.mkDerivation rec {
     sha256 = "0nhcpwqrkmpxbhaf0cafvy6dlp6s7vhm5vknl4lgs3l24zc56ns5";
   };
 
-  nativeBuildInputs = [ meson ninja vala libxslt pkgconfig wrapGAppsHook gettext docbook_xsl libxml2 gobjectIntrospection ];
+  nativeBuildInputs = [ meson ninja vala libxslt pkgconfig wrapGAppsHook gettext docbook_xsl libxml2 gobjectIntrospection python3 ];
 
   buildInputs = [ glib dbus-glib gtk3 gnome3.defaultIconTheme gnome3.dconf ];
 
diff --git a/pkgs/desktops/gnome-3/core/dconf/default.nix b/pkgs/desktops/gnome-3/core/dconf/default.nix
index 400b3ea9a9b0..71779c172807 100644
--- a/pkgs/desktops/gnome-3/core/dconf/default.nix
+++ b/pkgs/desktops/gnome-3/core/dconf/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, meson, ninja, python3, vala, libxslt, pkgconfig, glib, dbus-glib, gnome3
-, libxml2, docbook_xsl, makeWrapper }:
+, libxml2, docbook_xsl }:
 
 let
   pname = "dconf";
diff --git a/pkgs/desktops/gnome-3/core/empathy/default.nix b/pkgs/desktops/gnome-3/core/empathy/default.nix
index 4da4c4802665..089c32d602ea 100644
--- a/pkgs/desktops/gnome-3/core/empathy/default.nix
+++ b/pkgs/desktops/gnome-3/core/empathy/default.nix
@@ -1,12 +1,12 @@
 { stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
 , file, librsvg, gnome3, gdk_pixbuf
-, dbus-glib, dbus_libs, telepathy-glib, telepathy-farstream
+, telepathy-glib, telepathy-farstream
 , clutter-gtk, clutter-gst, gst_all_1, cogl, gnome-online-accounts
 , gcr, libsecret, folks, libpulseaudio, telepathy-mission-control
 , telepathy-logger, libnotify, clutter, libsoup, gnutls
 , evolution-data-server, yelp-xsl
 , libcanberra-gtk3, p11-kit, farstream, libtool, shared-mime-info
-, bash, wrapGAppsHook, itstool, libxml2, libxslt, icu, libgee
+, wrapGAppsHook, itstool, libxml2, libxslt, icu, libgee
 , isocodes, enchant, libchamplain, geoclue2, geocode-glib, cheese, libgudev }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/desktops/gnome-3/core/eog/default.nix b/pkgs/desktops/gnome-3/core/eog/default.nix
index 7f7a533a5502..8459ba2c126b 100644
--- a/pkgs/desktops/gnome-3/core/eog/default.nix
+++ b/pkgs/desktops/gnome-3/core/eog/default.nix
@@ -1,19 +1,19 @@
 { fetchurl, stdenv, meson, ninja, gettext, itstool, pkgconfig, libxml2, libjpeg, libpeas, gnome3
 , gtk3, glib, gsettings-desktop-schemas, adwaita-icon-theme, gnome-desktop, lcms2, gdk_pixbuf, exempi
-, shared-mime-info, wrapGAppsHook, librsvg, libexif, gobjectIntrospection }:
+, shared-mime-info, wrapGAppsHook, librsvg, libexif, gobjectIntrospection, python3 }:
 
 let
   pname = "eog";
-  version = "3.28.2";
+  version = "3.28.3";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1gasrfqi7qrzdq1idh29r0n6ikkqjb6pbp7a8k5krfz5hkhyfin0";
+    sha256 = "1lj8v9m8jdxc3d4nzmgrxcccddg3hh8lkbmz4g71yxa0ykxxvbip";
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobjectIntrospection ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobjectIntrospection python3 ];
 
   buildInputs = [
     libjpeg gtk3 gdk_pixbuf glib libpeas librsvg lcms2 gnome-desktop libexif exempi
diff --git a/pkgs/desktops/gnome-3/core/epiphany/default.nix b/pkgs/desktops/gnome-3/core/epiphany/default.nix
index 9613606f777a..01232b0f9977 100644
--- a/pkgs/desktops/gnome-3/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/core/epiphany/default.nix
@@ -1,7 +1,7 @@
 { stdenv, meson, ninja, gettext, fetchurl, pkgconfig, gtk, glib, icu
 , wrapGAppsHook, gnome3, libxml2, libxslt, itstool
 , webkitgtk, libsoup, glib-networking, libsecret, gnome-desktop, libnotify, p11-kit
-, sqlite, gcr, isocodes, desktop-file-utils
+, sqlite, gcr, isocodes, desktop-file-utils, python3
 , gdk_pixbuf, gst_all_1, json-glib }:
 
 stdenv.mkDerivation rec {
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   mesonFlags = [ "-Dunit_tests=false" ];
 
   nativeBuildInputs = [
-    meson ninja libxslt pkgconfig itstool gettext wrapGAppsHook desktop-file-utils
+    meson ninja libxslt pkgconfig itstool gettext wrapGAppsHook desktop-file-utils python3
   ];
 
   buildInputs = [
diff --git a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
index 5146123cfd46..c355c9bbce69 100644
--- a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   name = "evolution-data-server-${version}";
-  version = "3.28.3";
+  version = "3.28.5";
 
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "11sq795115vrcgxl9svscm6wg8isjj784c3d84qzb6z47zq92zj3";
+    sha256 = "1247gv0ggwnd1i2n7iglb3crfapx6s9nrl896bzy9k87fb94hlyr";
   };
 
   patches = [
@@ -37,11 +37,9 @@ stdenv.mkDerivation rec {
     "-DENABLE_VALA_BINDINGS=ON"
     "-DENABLE_INTROSPECTION=ON"
     "-DCMAKE_SKIP_BUILD_RPATH=OFF"
+    "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include"
   ];
 
-  postPatch = ''
-    cmakeFlags="-DINCLUDE_INSTALL_DIR=$dev/include $cmakeFlags"
-  '';
 
   passthru = {
     updateScript = gnome3.updateScript {
diff --git a/pkgs/desktops/gnome-3/core/folks/default.nix b/pkgs/desktops/gnome-3/core/folks/default.nix
index beb40209bc8c..981b8504487b 100644
--- a/pkgs/desktops/gnome-3/core/folks/default.nix
+++ b/pkgs/desktops/gnome-3/core/folks/default.nix
@@ -1,5 +1,5 @@
 { fetchurl, stdenv, pkgconfig, glib, gnome3, nspr, intltool
-, vala, sqlite, libxml2, dbus-glib, libsoup, nss, dbus_libs
+, vala, sqlite, libxml2, dbus-glib, libsoup, nss, dbus
 , telepathy-glib, evolution-data-server, libsecret, db }:
 
 # TODO: enable more folks backends
@@ -16,14 +16,14 @@ in stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ glib gnome3.libgee sqlite ];
   # dbus_daemon needed for tests
-  buildInputs = [ dbus-glib telepathy-glib evolution-data-server dbus_libs
+  buildInputs = [ dbus-glib telepathy-glib evolution-data-server dbus
                   vala libsecret libxml2 libsoup nspr nss intltool db ];
   nativeBuildInputs = [ pkgconfig ];
 
-  configureFlags = "--disable-fatal-warnings";
+  configureFlags = [ "--disable-fatal-warnings" ];
 
   NIX_CFLAGS_COMPILE = ["-I${nss.dev}/include/nss"
-                        "-I${dbus-glib.dev}/include/dbus-1.0" "-I${dbus_libs.dev}/include/dbus-1.0"];
+                        "-I${dbus-glib.dev}/include/dbus-1.0" "-I${dbus.dev}/include/dbus-1.0"];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/core/gconf/default.nix b/pkgs/desktops/gnome-3/core/gconf/default.nix
deleted file mode 100644
index 3e7ba45b03ae..000000000000
--- a/pkgs/desktops/gnome-3/core/gconf/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, dbus-glib, gnome3 ? null, glib, libxml2
-, intltool, polkit, orbit, python, withGtk ? false }:
-
-assert withGtk -> (gnome3 != null);
-
-stdenv.mkDerivation rec {
-
-  versionMajor = "3.2";
-  versionMinor = "6";
-  moduleName   = "GConf";
-
-  origName = "${moduleName}-${versionMajor}.${versionMinor}";
-
-  name = "gconf-${versionMajor}.${versionMinor}";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${origName}.tar.xz";
-    sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr";
-  };
-
-  buildInputs = [ libxml2 polkit orbit python ] ++ stdenv.lib.optional withGtk gnome3.gtk;
-  propagatedBuildInputs = [ glib dbus-glib  ];
-  nativeBuildInputs = [ pkgconfig intltool ];
-
-  # ToDo: ldap reported as not found but afterwards reported as supported
-
-  outputs = [ "out" "dev" ];
-
-  meta = with stdenv.lib; {
-    homepage = https://projects.gnome.org/gconf/;
-    description = "A system for storing application preferences";
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/gnome-3/core/gcr/default.nix b/pkgs/desktops/gnome-3/core/gcr/default.nix
index 61c17a210b43..a324fda0a7e1 100644
--- a/pkgs/desktops/gnome-3/core/gcr/default.nix
+++ b/pkgs/desktops/gnome-3/core/gcr/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, pkgconfig, intltool, gnupg, p11-kit, glib
 , libgcrypt, libtasn1, dbus-glib, gtk, pango, gdk_pixbuf, atk
-, gobjectIntrospection, makeWrapper, libxslt, vala, gnome3 }:
+, gobjectIntrospection, makeWrapper, libxslt, vala, gnome3
+, python2 }:
 
 stdenv.mkDerivation rec {
   name = "gcr-${version}";
@@ -15,6 +16,10 @@ stdenv.mkDerivation rec {
     updateScript = gnome3.updateScript { packageName = "gcr"; attrPath = "gnome3.gcr"; };
   };
 
+  postPatch = ''
+    patchShebangs .
+  '';
+
   outputs = [ "out" "dev" ];
 
   nativeBuildInputs = [ pkgconfig intltool gobjectIntrospection libxslt makeWrapper vala ];
@@ -27,7 +32,8 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ glib gtk p11-kit ];
 
-  #doCheck = true;
+  checkInputs = [ python2 ];
+  doCheck = false; # fails 21 out of 603 tests, needs dbus daemon
 
   #enableParallelBuilding = true; issues on hydra
 
diff --git a/pkgs/desktops/gnome-3/core/gdm/default.nix b/pkgs/desktops/gnome-3/core/gdm/default.nix
index 0d6bb9484421..f6049c8bda8c 100644
--- a/pkgs/desktops/gnome-3/core/gdm/default.nix
+++ b/pkgs/desktops/gnome-3/core/gdm/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg, dbus
+{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg
 , intltool, accountsservice, libX11, gnome3, systemd, autoreconfHook
 , gtk, libcanberra-gtk3, pam, libtool, gobjectIntrospection, plymouth
 , librsvg, coreutils, xwayland }:
 
 stdenv.mkDerivation rec {
   name = "gdm-${version}";
-  version = "3.28.2";
+  version = "3.28.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdm/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0wdm1503x66n1crdlmzmincbd2hccpxsdgjsl5anx3yjpdzs0hb0";
+    sha256 = "12d1cp2dyca8rwh9y9cg8xn6grdp8nmxkkqwg4xpkr8i8ml65n88";
   };
 
   # Only needed to make it build
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
     "--sysconfdir=/etc"
     "--localstatedir=/var"
     "--with-plymouth=yes"
+    "--enable-gdm-xsession"
     "--with-initial-vt=7"
     "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
   ];
diff --git a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
index d570a5414094..e7acbe8706ec 100644
--- a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
@@ -1,28 +1,47 @@
 { stdenv, fetchurl, gnome3, meson, ninja, pkgconfig, gtk3, intltool, glib
-, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra-gtk3, gobjectIntrospection }:
+, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra-gtk3, gobjectIntrospection
+, gtk-doc, docbook_xsl, docbook_xml_dtd_43 }:
 
-stdenv.mkDerivation rec {
-  name = "gnome-bluetooth-${version}";
-  version = "3.28.0";
+let
+  pname = "gnome-bluetooth";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  version = "3.28.2";
+
+  # TODO: split out "lib"
+  outputs = [ "out" "dev" "devdoc" "man" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gnome-bluetooth/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0q7yzklrlayj99risj096mr5x35anx94wvr6nbf6pwbvvzv7453p";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "0ch7lll5n8v7m26y6y485gnrik19ml42rsh1drgcxydm6fn62j8z";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-bluetooth"; attrPath = "gnome3.gnome-bluetooth"; };
-  };
+  nativeBuildInputs = [
+    meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook gobjectIntrospection
+    gtk-doc docbook_xsl docbook_xml_dtd_43
+  ];
+  buildInputs = [
+    glib gtk3 udev libnotify libcanberra-gtk3
+    gnome3.defaultIconTheme gnome3.gsettings-desktop-schemas
+  ];
 
-  nativeBuildInputs = [ meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook gobjectIntrospection ];
-  buildInputs = [ glib gtk3 udev libnotify libcanberra-gtk3
-                  gnome3.defaultIconTheme gnome3.gsettings-desktop-schemas ];
+  mesonFlags = [
+    "-Dicon_update=false"
+    "-Dgtk_doc=true"
+  ];
 
   postPatch = ''
     chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs meson_post_install.py
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
     homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en;
     description = "Application that let you manage Bluetooth in the GNOME destkop";
diff --git a/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
index 03fdf4b14fe0..2f4743ee2633 100644
--- a/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
@@ -1,18 +1,18 @@
 { stdenv, meson, ninja, vala, gettext, itstool, fetchurl, pkgconfig, libxml2
-, gtk3, glib, gtksourceview3, wrapGAppsHook, gobjectIntrospection
+, gtk3, glib, gtksourceview3, wrapGAppsHook, gobjectIntrospection, python3
 , gnome3, mpfr, gmp, libsoup, libmpc }:
 
 stdenv.mkDerivation rec {
   name = "gnome-calculator-${version}";
-  version = "3.28.1";
+  version = "3.28.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-calculator/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "05zpdp9mkfjz22hs7hfjikkxhzmvy02mxrldrjxsv8ff17w9xvic";
+    sha256 = "0izsrqc9fm2lh25jr3nzi94p5hh2d3cklxqczbq16by85wr1xm5s";
   };
 
   nativeBuildInputs = [
-    meson ninja pkgconfig vala gettext itstool wrapGAppsHook
+    meson ninja pkgconfig vala gettext itstool wrapGAppsHook python3
     gobjectIntrospection # for finding vapi files
   ];
 
diff --git a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
index 5799e613d5bc..a9541d64b03c 100644
--- a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
@@ -1,5 +1,5 @@
 { stdenv, gettext, fetchurl, evolution-data-server
-, pkgconfig, libxslt, docbook_xsl, docbook_xml_dtd_42, gtk3, glib, cheese
+, 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, telepathy-glib
 , vala, meson, ninja }:
@@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {
   propagatedUserEnvPkgs = [ evolution-data-server ];
 
   nativeBuildInputs = [
-    meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 wrapGAppsHook
+    meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 python3 wrapGAppsHook
   ];
 
   buildInputs = [
diff --git a/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
index 6d5777614118..6a57e4cdff48 100644
--- a/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
@@ -5,7 +5,7 @@
 , cracklib, libkrb5, networkmanagerapplet, networkmanager, glibc
 , libwacom, samba, shared-mime-info, tzdata, libtool, libgnomekbd
 , docbook_xsl, modemmanager, clutter, clutter-gtk, cheese
-, fontconfig, sound-theme-freedesktop, grilo }:
+, fontconfig, sound-theme-freedesktop, grilo, python3 }:
 
 let
   pname = "gnome-control-center";
@@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     meson ninja pkgconfig gettext wrapGAppsHook libtool libxslt docbook_xsl
-    shared-mime-info
+    shared-mime-info python3
   ];
 
   buildInputs = with gnome3; [
diff --git a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
index 13f4b1ef6389..d6402a3b5b6c 100644
--- a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
@@ -1,27 +1,26 @@
-{ stdenv, fetchurl, pkgconfig, libxslt, which, libX11, gnome3, gtk3, glib
-, intltool, gnome-doc-utils, xkeyboard_config, isocodes, itstool, wayland
-, libseccomp, bubblewrap, gobjectIntrospection }:
+{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, which, libX11, gnome3, gtk3, glib
+, intltool, libxml2, xkeyboard_config, isocodes, itstool, wayland
+, libseccomp, bubblewrap, gobjectIntrospection, gtk-doc, docbook_xsl }:
 
 stdenv.mkDerivation rec {
   name = "gnome-desktop-${version}";
   version = "3.28.2";
 
+  outputs = [ "out" "dev" "devdoc" ];
+
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-desktop/${gnome3.versionBranch version}/${name}.tar.xz";
     sha256 = "0c439hhpfd9axmv4af6fzhibksh69pnn2nnbghbbqqbwy6zqfl30";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-desktop"; attrPath = "gnome3.gnome-desktop"; };
-  };
-
-  # this should probably be setuphook for glib
+  # TODO: remove with 3.30
   NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
   enableParallelBuilding = true;
 
   nativeBuildInputs = [
-    pkgconfig which itstool intltool libxslt gnome-doc-utils gobjectIntrospection
+    pkgconfig which itstool intltool libxslt libxml2 gobjectIntrospection
+    gtk-doc docbook_xsl
   ];
   buildInputs = [
     libX11 bubblewrap xkeyboard_config isocodes wayland
@@ -31,13 +30,22 @@ stdenv.mkDerivation rec {
   propagatedBuildInputs = [ gnome3.gsettings-desktop-schemas ];
 
   patches = [
-    ./bubblewrap-paths.patch
+    (substituteAll {
+      src = ./bubblewrap-paths.patch;
+      BUBBLEWRAP_BIN = "${bubblewrap}/bin/bwrap";
+    })
   ];
 
-  postPatch = ''
-    substituteInPlace libgnome-desktop/gnome-desktop-thumbnail-script.c --subst-var-by \
-      BUBBLEWRAP_BIN "${bubblewrap}/bin/bwrap"
-  '';
+  configureFlags = [
+    "--enable-gtk-doc"
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-desktop";
+      attrPath = "gnome3.gnome-desktop";
+    };
+  };
 
   meta = with stdenv.lib; {
     description = "Library with common API for various GNOME modules";
diff --git a/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
index 2eb66b02627b..a572e617766e 100644
--- a/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
@@ -1,5 +1,5 @@
 { stdenv, gettext, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
-, meson, ninja, gtk, glib, wrapGAppsHook, libnotify
+, meson, ninja, gtk, glib, wrapGAppsHook, python3, libnotify
 , itstool, gnome3, libxml2
 , libcanberra-gtk3, libxslt, docbook_xsl, libpwquality }:
 
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     meson ninja pkgconfig gettext itstool libxslt docbook_xsl
-    wrapGAppsHook libxml2
+    wrapGAppsHook python3 libxml2
   ];
   buildInputs = [
     gtk glib libsecret libpwquality libnotify libdvdread libcanberra-gtk3
diff --git a/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix
index 7e76b8991fd4..6af2f7f4b03f 100644
--- a/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-font-viewer-${version}";
-  version = "3.28.0";
+  version = "3.30.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-font-viewer/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "16mp22f255b8zqnnlqh25n6v79b9bd0gmli9ywqyapa0cfai09x3";
+    sha256 = "1wwnx2zrlbd2d6np7m9s78alx6j6ranrnh1g2z6zrv9qcj8rpzz5";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
index 39108141c93c..cce192c9f29d 100644
--- a/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python2, glib, libxslt
-, intltool, pango, gcr, gdk_pixbuf, atk, p11-kit, openssh, wrapGAppsHook
-, docbook_xsl, docbook_xml_dtd_42, gnome3 }:
+{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, pam, python2, glib, libxslt
+, gettext, gcr, libcap_ng, libselinux, p11-kit, openssh, wrapGAppsHook
+, docbook_xsl, docbook_xml_dtd_43, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "gnome-keyring-${version}";
@@ -11,25 +11,16 @@ stdenv.mkDerivation rec {
     sha256 = "0sk4las4ji8wv9nx8mldzqccmpmkvvr9pdwv9imj26r10xyin5w1";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-keyring"; attrPath = "gnome3.gnome-keyring"; };
-  };
-
   outputs = [ "out" "dev" ];
 
-  buildInputs = with gnome3; [
-    dbus libgcrypt pam gtk3 libgnome-keyring openssh
-    pango gcr gdk_pixbuf atk p11-kit
+  buildInputs = [
+    glib libgcrypt pam openssh libcap_ng libselinux
+    gcr p11-kit
   ];
 
-  # In 3.20.1, tests do not support Python 3
-  checkInputs = [ dbus python2 ];
-
-  propagatedBuildInputs = [ glib libtasn1 libxslt ];
-
   nativeBuildInputs = [
-    pkgconfig intltool docbook_xsl docbook_xml_dtd_42 wrapGAppsHook
-  ] ++ stdenv.lib.optionals doCheck checkInputs;
+    pkgconfig gettext libxslt docbook_xsl docbook_xml_dtd_43 wrapGAppsHook
+  ];
 
   configureFlags = [
     "--with-pkcs11-config=$$out/etc/pkcs11/" # installation directories
@@ -41,6 +32,9 @@ stdenv.mkDerivation rec {
   '';
 
   doCheck = true;
+  # In 3.20.1, tests do not support Python 3
+  checkInputs = [ dbus python2 ];
+
   checkPhase = ''
     export HOME=$(mktemp -d)
     dbus-run-session \
@@ -48,6 +42,13 @@ stdenv.mkDerivation rec {
       make check
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-keyring";
+      attrPath = "gnome3.gnome-keyring";
+    };
+  };
+
   meta = with stdenv.lib; {
     description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications";
     homepage = https://wiki.gnome.org/Projects/GnomeKeyring;
diff --git a/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix
index d3d14f555cfa..4bd2dcbe13e8 100644
--- a/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig, vala, glib, libxslt, gtk, wrapGAppsHook
 , webkitgtk, json-glib, rest, libsecret, dbus-glib, gtk-doc
-, telepathy-glib, gettext, dbus_libs, icu, glib-networking
+, telepathy-glib, gettext, icu, glib-networking
 , libsoup, docbook_xsl, docbook_xsl_ns, gnome3, gcr, kerberos
 }:
 
diff --git a/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
index f5b33c88f574..c92280ed5663 100644
--- a/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
@@ -1,5 +1,5 @@
 { stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra-gtk3
-, gtk3, glib, meson, ninja, wrapGAppsHook, appstream-glib, desktop-file-utils
+, gtk3, glib, meson, ninja, python3, wrapGAppsHook, appstream-glib, desktop-file-utils
 , gnome3 }:
 
 let
@@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
     patchShebangs build-aux/postinstall.py
   '';
 
-  nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils python3 wrapGAppsHook ];
   buildInputs = [
     gtk3 glib libcanberra-gtk3 gnome3.defaultIconTheme
     gnome3.gsettings-desktop-schemas
diff --git a/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/core/gnome-session/default.nix
index 7b407aad5068..8184f0234fc3 100644
--- a/pkgs/desktops/gnome-3/core/gnome-session/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-session/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, meson, ninja, pkgconfig, gnome3, glib, gtk, gsettings-desktop-schemas
+{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk, gsettings-desktop-schemas
 , gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412
 , libxslt, gettext, makeWrapper, systemd, xorg, epoxy }:
 
@@ -11,6 +11,14 @@ stdenv.mkDerivation rec {
     sha256 = "14nmbirgrp2nm16khbz109saqdlinlbrlhjnbjydpnrlimfgg4xq";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      gsettings = "${glib.bin}/bin/gsettings";
+      dbusLaunch = "${dbus.lib}/bin/dbus-launch";
+    })
+  ];
+
   mesonFlags = [ "-Dsystemd=true" ];
 
   nativeBuildInputs = [
@@ -29,15 +37,13 @@ stdenv.mkDerivation rec {
     patchShebangs meson_post_install.py
   '';
 
-  # FIXME: glib binaries shouldn't be in .dev!
   preFixup = ''
     for desktopFile in $(grep -rl "Exec=gnome-session" $out/share)
     do
       echo "Patching gnome-session path in: $desktopFile"
-      sed -i "s,^Exec=gnome-session,Exec=$out/bin/gnome-session," $desktopFile
+      sed -i "s,Exec=gnome-session,Exec=$out/bin/gnome-session," $desktopFile
     done
     wrapProgram "$out/bin/gnome-session" \
-      --prefix PATH : "${glib.dev}/bin" \
       --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
       --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
       --suffix XDG_DATA_DIRS : "${gnome3.gnome-shell}/share"\
diff --git a/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
new file mode 100644
index 000000000000..3c56fd730e44
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch
@@ -0,0 +1,22 @@
+--- a/gnome-session/gnome-session.in
++++ b/gnome-session/gnome-session.in
+@@ -13,7 +13,7 @@
+   fi
+ fi
+ 
+-SETTING=$(gsettings get org.gnome.system.locale region)
++SETTING=$(@gsettings@ get org.gnome.system.locale region)
+ REGION=${SETTING#\'}
+ REGION=${REGION%\'}
+ 
+--- a/gnome-session/main.c
++++ b/gnome-session/main.c
+@@ -203,7 +203,7 @@
+         }
+         new_argv[i + 2] = NULL;
+         
+-        if (!execvp ("dbus-launch", new_argv)) {
++        if (!execvp ("@dbusLaunch@", new_argv)) {
+                 g_set_error (error, 
+                              G_SPAWN_ERROR,
+                              G_SPAWN_ERROR_FAILED,
diff --git a/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
index cfb41c01e6ad..bfaf430d5932 100644
--- a/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags = [
-    "-Dudev_dir=lib/udev"
+    "-Dudev_dir=${placeholder "out"}/lib/udev"
   ];
 
   postPatch = ''
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
index 772df5d24417..8e09c960e75e 100644
--- a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
@@ -2,7 +2,7 @@
 , python3Packages, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core
 , libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info
 , libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42, desktop-file-utils
-, libpulseaudio, libical, nss, gobjectIntrospection, gstreamer, wrapGAppsHook
+, libpulseaudio, libical, gobjectIntrospection, gstreamer, wrapGAppsHook, libxslt
 , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet
 , sassc, systemd, gst_all_1 }:
 
@@ -13,11 +13,11 @@ let
 
 in stdenv.mkDerivation rec {
   name = "gnome-shell-${version}";
-  version = "3.28.2";
+  version = "3.28.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1b9n89ij2g5nqaqp7a13jnqcd8qa2v9p55rbi71al3xvqk091ri7";
+    sha256 = "0xm2a8inj2zkrpgkhy69rbqh44q62gpwm4javzbvvvgx0srza90w";
   };
 
   # Needed to find /etc/NetworkManager/VPN
@@ -27,7 +27,7 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales
-    sassc desktop-file-utils
+    sassc desktop-file-utils libxslt.bin
   ];
   buildInputs = with gnome3; [
     systemd caribou
diff --git a/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
index 81d401f8da2e..6172f2165439 100644
--- a/pkgs/desktops/gnome-3/core/gnome-software/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree
-, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobjectIntrospection, flatpak
+, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobjectIntrospection, flatpak, fwupd
 , json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, gtk-doc, desktop-file-utils }:
 
 stdenv.mkDerivation rec {
@@ -27,12 +27,11 @@ stdenv.mkDerivation rec {
     gnome3.gtk glib packagekit appstream-glib libsoup
     gnome3.gsettings-desktop-schemas gnome3.gnome-desktop
     gspell json-glib libsecret ostree
-    polkit flatpak
+    polkit flatpak fwupd
   ];
 
   mesonFlags = [
     "-Denable-rpm=false"
-    "-Denable-fwupd=false"
     "-Denable-oauth=false"
     "-Denable-ubuntu-reviews=false"
     "-Denable-gudev=false"
diff --git a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
index d224f0561703..a0318514c9b9 100644
--- a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pkgconfig, libxml2, gnome3
-, gnome-doc-utils, intltool, which, libuuid, vala
-, desktop-file-utils, itstool, wrapGAppsHook, appdata-tools }:
+{ stdenv, fetchurl, pkgconfig, libxml2, gnome3, dconf, nautilus
+, gtk, gsettings-desktop-schemas, vte, intltool, which, libuuid, vala
+, desktop-file-utils, itstool, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   name = "gnome-terminal-${version}";
@@ -11,15 +11,16 @@ stdenv.mkDerivation rec {
     sha256 = "0ybjansg6lr279191w8z8r45gy4rxwzw1ajm98cgkv0fk2jdr0x2";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-terminal"; attrPath = "gnome3.gnome-terminal"; };
-  };
-
-  buildInputs = [ gnome3.gtk gnome3.gsettings-desktop-schemas gnome3.vte appdata-tools
-                  gnome3.dconf itstool gnome3.nautilus ];
+  buildInputs = [
+    gtk gsettings-desktop-schemas vte libuuid dconf
+    # For extension
+    nautilus
+  ];
 
-  nativeBuildInputs = [ pkgconfig intltool gnome-doc-utils which libuuid libxml2
-                        vala desktop-file-utils wrapGAppsHook ];
+  nativeBuildInputs = [
+    pkgconfig intltool itstool which libxml2
+    vala desktop-file-utils wrapGAppsHook
+  ];
 
   # Silly ./configure, it looks for dbus file from gnome-shell in the
   # installation tree of the package it is configuring.
@@ -28,15 +29,22 @@ stdenv.mkDerivation rec {
     substituteInPlace src/Makefile.in --replace '$(dbusinterfacedir)/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml"
   '';
 
-  # FIXME: enable for gnome3
-  configureFlags = [ "--disable-migration" ];
+  configureFlags = [ "--disable-migration" ]; # TODO: remove this with 3.30
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-terminal";
+      attrPath = "gnome3.gnome-terminal";
+    };
+  };
 
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     description = "The GNOME Terminal Emulator";
-    homepage = https://wiki.gnome.org/Apps/Terminal/;
+    homepage = https://wiki.gnome.org/Apps/Terminal;
     platforms = platforms.linux;
+    license = licenses.gpl3Plus;
     maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix
index 6cb827bc504f..1938c90a8254 100644
--- a/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }:
+{ stdenv, fetchurl, pkgconfig, gnome3, itstool, libxml2, intltool }:
 
 stdenv.mkDerivation rec {
   name = "gnome-user-docs-${version}";
diff --git a/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix
index 509c10d75648..5ae579417aec 100644
--- a/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix
@@ -1,6 +1,6 @@
 { stdenv, intltool, fetchurl, apacheHttpd, nautilus
-, pkgconfig, gtk3, glib, libxml2, gnused, systemd
-, bash, wrapGAppsHook, itstool, libnotify, libtool, mod_dnssd
+, pkgconfig, gtk3, glib, libxml2, systemd
+, wrapGAppsHook, itstool, libnotify, libtool, mod_dnssd
 , gnome3, librsvg, gdk_pixbuf, file, libcanberra-gtk3 }:
 
 stdenv.mkDerivation rec {
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
   postInstall = ''
     mkdir -p $out/share/gsettings-schemas/$name
     mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name
-    ${glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/$name/glib-2.0/schemas
+    glib-compile-schemas "$out/share/gsettings-schemas/$name/glib-2.0/schemas"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix
index c6000352ab06..de547ea172d0 100644
--- a/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix
+++ b/pkgs/desktops/gnome-3/core/grilo-plugins/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchurl, pkgconfig, file, intltool, glib, sqlite
+{ stdenv, fetchurl, pkgconfig, intltool, sqlite
 , gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp-av
 , gmime, json-glib, avahi, tracker, dleyna-server, itstool }:
 
 let
   pname = "grilo-plugins";
-  version = "0.3.5";
+  version = "0.3.7";
   major = gnome3.versionBranch version;
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${major}/${name}.tar.xz";
-    sha256 = "1yv8a0mfd5qmdbdrnd0is5c51s1mvibhw61na99iagnbirxq4xr9";
+    sha256 = "0838mm7sdfwsiw022rjb27dlbbxncpx5jrpv3qzfadli66y3nbzw";
   };
 
   installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-${major}" ];
diff --git a/pkgs/desktops/gnome-3/core/grilo/default.nix b/pkgs/desktops/gnome-3/core/grilo/default.nix
index ab35a3bd35ac..5554cddd043b 100644
--- a/pkgs/desktops/gnome-3/core/grilo/default.nix
+++ b/pkgs/desktops/gnome-3/core/grilo/default.nix
@@ -4,7 +4,7 @@
 
 let
   pname = "grilo";
-  version = "0.3.4"; # if you change minor, also change ./setup-hook.sh
+  version = "0.3.6"; # if you change minor, also change ./setup-hook.sh
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
@@ -13,7 +13,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0vh67gja6yn7czh77ssmx6ncp99fl2926pbi2hplqms27c2n8sbw";
+    sha256 = "14cwpk9jxi8rfjcmkav37zf0m52b1lqpkpkz858h80jqvn1clr8y";
   };
 
   setupHook = ./setup-hook.sh;
diff --git a/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
index e5ca314c69af..5dc6137c9fca 100644
--- a/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
+++ b/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig, intltool, glib, gobjectIntrospection
   # just for passthru
-, gnome3, gtk3, gsettings-desktop-schemas }:
+, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "gsettings-desktop-schemas-${version}";
diff --git a/pkgs/desktops/gnome-3/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/core/gucharmap/default.nix
index 45a4a97205b8..797eb00bd3ff 100644
--- a/pkgs/desktops/gnome-3/core/gucharmap/default.nix
+++ b/pkgs/desktops/gnome-3/core/gucharmap/default.nix
@@ -1,41 +1,68 @@
-{ stdenv, intltool, fetchurl, pkgconfig, gtk3, defaultIconTheme
-, glib, desktop-file-utils, bash, appdata-tools
-, wrapGAppsHook, gnome3, itstool, libxml2
+{ stdenv, intltool, fetchFromGitLab, fetchpatch, pkgconfig, gtk3, defaultIconTheme
+, glib, desktop-file-utils, gtk-doc, autoconf, automake, libtool
+, wrapGAppsHook, gnome3, itstool, libxml2, yelp-tools
+, docbook_xsl, docbook_xml_dtd_412, gsettings-desktop-schemas
 , callPackage, unzip, gobjectIntrospection }:
 
-stdenv.mkDerivation rec {
+let
+  unicode-data = callPackage ./unicode-data.nix {};
+in stdenv.mkDerivation rec {
   name = "gucharmap-${version}";
-  version = "10.0.4";
+  version = "11.0.1";
 
-  src = fetchurl {
-    url = "mirror://gnome/sources/gucharmap/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "00gh3lll6wykd2qg1lrj05a4wvscsypmrx7rpb6jsbvb4scnh9mv";
-  };
+  outputs = [ "out" "lib" "dev" "devdoc" ];
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gucharmap"; };
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "gucharmap";
+    rev = version;
+    sha256 = "13iw4fa6mv8vi8bkwk0bbhamnzbaih0c93p4rh07khq6mxa6hnpi";
   };
 
-  doCheck = true;
-
-  preConfigure = "patchShebangs gucharmap/gen-guch-unicode-tables.pl";
+  patches = [
+    # Fix locale path to allow split outputs
+    # https://gitlab.gnome.org/GNOME/gucharmap/issues/10
+    (fetchpatch {
+      url = https://gitlab.gnome.org/GNOME/gucharmap/commit/b2b03f16aa869ac0ec1a05c55c4d4e4c4b513576.patch;
+      sha256 = "1543mcyz96x23m9pzx04ny15m4a2pqmiksl1y5r51k3sw4fyisci";
+    })
+  ];
 
   nativeBuildInputs = [
-    pkgconfig wrapGAppsHook unzip intltool itstool appdata-tools
-    gnome3.yelp-tools libxml2 desktop-file-utils gobjectIntrospection
+    pkgconfig wrapGAppsHook unzip intltool itstool
+    autoconf automake libtool gtk-doc docbook_xsl docbook_xml_dtd_412
+    yelp-tools libxml2 desktop-file-utils gobjectIntrospection
   ];
 
-  buildInputs = [ gtk3 glib gnome3.gsettings-desktop-schemas defaultIconTheme ];
+  buildInputs = [ gtk3 glib gsettings-desktop-schemas defaultIconTheme ];
 
-  unicode-data = callPackage ./unicode-data.nix {};
+  configureFlags = [
+    "--with-unicode-data=${unicode-data}"
+    "--enable-gtk-doc"
+  ];
+
+  doCheck = true;
+
+  postPatch = ''
+    patchShebangs gucharmap/gen-guch-unicode-tables.pl
+  '';
+
+  preConfigure = ''
+    NOCONFIGURE=1 ./autogen.sh
+  '';
 
-  configureFlags = "--with-unicode-data=${unicode-data}";
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gucharmap";
+    };
+  };
 
   meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/Apps/Gucharmap;
     description = "GNOME Character Map, based on the Unicode Character Database";
-    maintainers = gnome3.maintainers;
+    homepage = https://wiki.gnome.org/Apps/Gucharmap;
     license = licenses.gpl3;
+    maintainers = gnome3.maintainers;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix b/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix
index 72299b8a3690..6bf2fd39a2d3 100644
--- a/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix
+++ b/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix
@@ -1,30 +1,31 @@
 { fetchurl, stdenv, gnome3 }:
-stdenv.mkDerivation {
-  name = "unicode-data-10.0.0";
+stdenv.mkDerivation rec {
+  name = "unicode-data-${version}";
+  version = "11.0.0";
   srcs = [
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/Blocks.txt";
-      sha256 = "19zf2kd198mcv1paa194c1zf36hay1irbxssi35yi2pd8ad69qas";
+      url = "http://www.unicode.org/Public/${version}/ucd/Blocks.txt";
+      sha256 = "0lnh9iazikpr548bd7nkaq9r3vfljfvz0rg2462prac8qxk7ni8b";
     })
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/DerivedAge.txt";
-      sha256 = "1h9p1g0wnh686l6cqar7cmky465vwc6vjzzn1s7v0i9zcjaqkr4h";
+      url = "http://www.unicode.org/Public/${version}/ucd/DerivedAge.txt";
+      sha256 = "0rlqqd0b1sqbzvrj29dwdizx8lyvrbfirsnn8za9lb53x5fml4gb";
     })
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/NamesList.txt";
-      sha256 = "0gvpcyq852rnlqmx4y5i1by7bavvcw6rj40i54w48yc7xr3zmgd1";
+      url = "http://www.unicode.org/Public/${version}/ucd/NamesList.txt";
+      sha256 = "0yr2h0nfqhirfi3bxl33z6cc94qqshlpgi06c25xh9754irqsgv8";
     })
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/Scripts.txt";
-      sha256 = "0b9prz2hs6w61afqaplcxnv115f8yk4d5hn9dc5hks8nqpj28bnh";
+      url = "http://www.unicode.org/Public/${version}/ucd/Scripts.txt";
+      sha256 = "1mbnvf97nwa3pvyzx9nd2wa94f8s0npg9740kic2p2ag7jmc1wz9";
     })
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt";
-      sha256 = "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj";
+      url = "http://www.unicode.org/Public/${version}/ucd/UnicodeData.txt";
+      sha256 = "16b0jzvvzarnlxdvs2izd5ia0ipbd87md143dc6lv6xpdqcs75s9";
     })
     (fetchurl {
-      url = "http://www.unicode.org/Public/10.0.0/ucd/Unihan.zip";
-      sha256 = "199kz6laypkvc0ykms6d7bkb571jmpds39sv2p7kd5jjm1ij08q1";
+      url = "http://www.unicode.org/Public/${version}/ucd/Unihan.zip";
+      sha256 = "0cy8gxb17ksi5h4ysypk4c09z61am1svjrvg97hm5m5ccjfrs1vj";
     })
   ];
   phases = "installPhase";
diff --git a/pkgs/desktops/gnome-3/core/libgee/default.nix b/pkgs/desktops/gnome-3/core/libgee/default.nix
index a5ce9ee5e105..a65d0f401f0e 100644
--- a/pkgs/desktops/gnome-3/core/libgee/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgee/default.nix
@@ -6,6 +6,8 @@ in
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
+  outputs = [ "out" "dev" ];
+
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
     sha256 = "0c26x8gi3ivmhlbqcmiag4jwrkvcy28ld24j55nqr3jikb904a5v";
@@ -13,11 +15,12 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  patches = [ ./fix_introspection_paths.patch ];
-
   nativeBuildInputs = [ pkgconfig autoconf vala gobjectIntrospection ];
   buildInputs = [ glib ];
 
+  PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_GIRDIR = "${placeholder "dev"}/share/gir-1.0";
+  PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_TYPELIBDIR = "${placeholder "out"}/lib/girepository-1.0";
+
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome-3/core/libgee/fix_introspection_paths.patch b/pkgs/desktops/gnome-3/core/libgee/fix_introspection_paths.patch
deleted file mode 100644
index 67003f451645..000000000000
--- a/pkgs/desktops/gnome-3/core/libgee/fix_introspection_paths.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- fix_introspection_paths.patch/configure	2014-01-07 17:43:53.521339338 +0000
-+++ fix_introspection_paths.patch/configure-fix	2014-01-07 17:45:11.068635069 +0000
-@@ -12085,8 +12085,8 @@
-        INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-        INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-        INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
--       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
--       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-+       INTROSPECTION_GIRDIR="${datadir}/gir-1.0"
-+       INTROSPECTION_TYPELIBDIR="${libdir}/girepository-1.0"
-        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-        INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
diff --git a/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
index d46cf489620a..8f77944577ee 100644
--- a/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool, gobjectIntrospection, gnome3 }:
+{ stdenv, fetchurl, glib, dbus, libgcrypt, pkgconfig, intltool, gobjectIntrospection, gnome3 }:
 
 let
   pname = "libgnome-keyring";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "dev" ];
 
-  propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ];
+  propagatedBuildInputs = [ glib gobjectIntrospection dbus libgcrypt ];
   nativeBuildInputs = [ pkgconfig intltool ];
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/libgweather/default.nix b/pkgs/desktops/gnome-3/core/libgweather/default.nix
index beab02465272..23405af50d3b 100644
--- a/pkgs/desktops/gnome-3/core/libgweather/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgweather/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, meson, ninja, pkgconfig, libxml2, glib, gtk, gettext, libsoup
-, gtk-doc, docbook_xsl, gobjectIntrospection, tzdata, geocode-glib, vala, gnome3 }:
+, gtk-doc, docbook_xsl, docbook_xml_dtd_43, gobjectIntrospection, python3, tzdata, geocode-glib, vala, gnome3 }:
 
 let
   pname = "libgweather";
@@ -14,7 +14,7 @@ in stdenv.mkDerivation rec {
     sha256 = "0xfy5ghwvnz2g9074dy6512m4z2pv66pmja14vhi9imgacbfh708";
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig gettext vala gtk-doc docbook_xsl gobjectIntrospection ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext vala gtk-doc docbook_xsl docbook_xml_dtd_43 gobjectIntrospection python3 ];
   buildInputs = [ glib gtk libsoup libxml2 geocode-glib ];
 
   postPatch = ''
diff --git a/pkgs/desktops/gnome-3/core/mutter/default.nix b/pkgs/desktops/gnome-3/core/mutter/default.nix
index 20dda08f9800..b05644366dc0 100644
--- a/pkgs/desktops/gnome-3/core/mutter/default.nix
+++ b/pkgs/desktops/gnome-3/core/mutter/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "mutter-${version}";
-  version = "3.28.2";
+  version = "3.28.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0ighs1zvlssgq16v1h3vg280za7y448snq65gc5m1zmqqawqkymg";
+    sha256 = "0vq3rmq20d6b1mi6sf67wkzqys6hw5j7n7fd4hndcp19d5i26149";
   };
 
   passthru = {
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   configureFlags = [
     "--with-x"
     "--disable-static"
-    "--enable-remote-desktop"
+    # "--enable-remote-desktop"
     "--enable-shape"
     "--enable-sm"
     "--enable-startup-notification"
diff --git a/pkgs/desktops/gnome-3/core/nautilus/default.nix b/pkgs/desktops/gnome-3/core/nautilus/default.nix
index 2daaf2d43261..33beb8a87d37 100644
--- a/pkgs/desktops/gnome-3/core/nautilus/default.nix
+++ b/pkgs/desktops/gnome-3/core/nautilus/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, libxml2, desktop-file-utils, wrapGAppsHook
-, gtk, gnome3, gnome-autoar, glib, dbus-glib, shared-mime-info, libnotify, libexif
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, libxml2, desktop-file-utils, python3, wrapGAppsHook
+, gtk, gnome3, gnome-autoar, dbus-glib, shared-mime-info, libnotify, libexif
 , exempi, librsvg, tracker, tracker-miners, gnome-desktop, gexiv2, libselinux, gdk_pixbuf }:
 
 let
@@ -13,7 +13,7 @@ in stdenv.mkDerivation rec {
     sha256 = "19dhpa2ylrg8d5274lahy7xqr2p9z3jnq1h4qmsh95czkpy7is4w";
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig libxml2 gettext wrapGAppsHook desktop-file-utils ];
+  nativeBuildInputs = [ meson ninja pkgconfig libxml2 gettext python3 wrapGAppsHook desktop-file-utils ];
 
   buildInputs = [
     dbus-glib shared-mime-info libexif gtk exempi libnotify libselinux
diff --git a/pkgs/desktops/gnome-3/core/rest/default.nix b/pkgs/desktops/gnome-3/core/rest/default.nix
index 9cd36cd77503..aeef5114435d 100644
--- a/pkgs/desktops/gnome-3/core/rest/default.nix
+++ b/pkgs/desktops/gnome-3/core/rest/default.nix
@@ -14,7 +14,7 @@ in stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ glib libsoup gobjectIntrospection];
 
-  configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt";
+  configureFlags = [ "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt" ];
 
   passthru = {
     updateScript = gnome3.updateScript {
diff --git a/pkgs/desktops/gnome-3/core/rygel/default.nix b/pkgs/desktops/gnome-3/core/rygel/default.nix
new file mode 100644
index 000000000000..ef0886328974
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/rygel/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, pkgconfig, vala, gettext, libxml2, gobjectIntrospection, gtk-doc, wrapGAppsHook, glib, gssdp, gupnp, gupnp-av, gupnp-dlna, gst_all_1, libgee, libsoup, gtk3, libmediaart, sqlite, systemd, tracker, shared-mime-info, gnome3 }:
+
+let
+  pname = "rygel";
+  version = "0.36.2";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  # TODO: split out lib
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "0i12z6bzfzgcjidhxa2jsvpm4hqpab0s032z13jy2vbifrncfcnk";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig vala gettext libxml2 gobjectIntrospection gtk-doc wrapGAppsHook
+  ];
+  buildInputs = [
+    glib gssdp gupnp gupnp-av gupnp-dlna libgee libsoup gtk3 libmediaart sqlite systemd tracker shared-mime-info
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly
+  ]);
+
+  configureFlags = [
+    "--with-systemduserunitdir=$(out)/lib/systemd/user"
+    "--enable-apidocs"
+    "--sysconfdir=/etc"
+  ];
+
+  installFlags = [
+    "sysconfdir=$(out)/etc"
+  ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices";
+    homepage = https://wiki.gnome.org/Projects/Rygel;
+    license = licenses.lgpl21Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
index e4458b7d0a3f..8596a059ca5d 100644
--- a/pkgs/desktops/gnome-3/core/simple-scan/default.nix
+++ b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, wrapGAppsHook
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, python3, wrapGAppsHook
 , cairo, gdk_pixbuf, colord, glib, gtk, gusb, packagekit, libwebp
 , libxml2, sane-backends, vala, gnome3, gobjectIntrospection }:
 
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ cairo gdk_pixbuf colord glib gnome3.defaultIconTheme gusb
                 gtk libwebp packagekit sane-backends vala ];
   nativeBuildInputs = [
-    meson ninja gettext itstool pkgconfig wrapGAppsHook libxml2
+    meson ninja gettext itstool pkgconfig python3 wrapGAppsHook libxml2
     # For setup hook
     gobjectIntrospection
   ];
diff --git a/pkgs/desktops/gnome-3/core/sushi/default.nix b/pkgs/desktops/gnome-3/core/sushi/default.nix
index 114c0d8ac960..100a2727fc3c 100644
--- a/pkgs/desktops/gnome-3/core/sushi/default.nix
+++ b/pkgs/desktops/gnome-3/core/sushi/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, file, intltool, gobjectIntrospection, glib
-, clutter-gtk, clutter-gst, gnome3, gtksourceview, libmusicbrainz
+, clutter-gtk, clutter-gst, gnome3, gtksourceview
 , webkitgtk, libmusicbrainz5, icu, makeWrapper, gst_all_1
 , gdk_pixbuf, librsvg, gtk3, harfbuzz }:
 
diff --git a/pkgs/desktops/gnome-3/core/totem/default.nix b/pkgs/desktops/gnome-3/core/totem/default.nix
index df37377e52e8..50e060c13c3a 100644
--- a/pkgs/desktops/gnome-3/core/totem/default.nix
+++ b/pkgs/desktops/gnome-3/core/totem/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchurl, meson, ninja, intltool, gst_all_1, clutter
+{ stdenv, fetchurl, meson, ninja, intltool, gst_all_1
 , clutter-gtk, clutter-gst, python3Packages, shared-mime-info
 , pkgconfig, gtk3, glib, gobjectIntrospection
-, bash, wrapGAppsHook, itstool, libxml2, vala, gnome3, librsvg
+, wrapGAppsHook, itstool, libxml2, vala, gnome3
 , gdk_pixbuf, tracker, nautilus }:
 
 stdenv.mkDerivation rec {
   name = "totem-${version}";
-  version = "3.26.1";
+  version = "3.26.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/totem/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "10n302fdp3lhkzbij5sbzmsnln738029xil6cnng2d4dxv4n1099";
+    sha256 = "1llyisls3pzf5bwkpxyfyxc2d3gpa09n5pjy7qsjdqrp3ya4k36g";
   };
 
   doCheck = true;
@@ -33,7 +33,11 @@ stdenv.mkDerivation rec {
   '';
 
   mesonFlags = [
-    "-Dwith-nautilusdir=lib/nautilus/extensions-3.0"
+    "-Dwith-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0"
+    # https://bugs.launchpad.net/ubuntu/+source/totem/+bug/1712021
+    # https://bugzilla.gnome.org/show_bug.cgi?id=784236
+    # https://github.com/mesonbuild/meson/issues/1994
+    "-Denable-vala=no"
   ];
 
   wrapPrefixVariables = [ "PYTHONPATH" ];
diff --git a/pkgs/desktops/gnome-3/core/tracker-miners/default.nix b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
index dc55fa9a7b4a..ad5b40d3c088 100644
--- a/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchurl, substituteAll, intltool, itstool, libxslt, makeWrapper
+{ stdenv, fetchurl, substituteAll, intltool, itstool, libxslt
 , meson, ninja, pkgconfig, vala, wrapGAppsHook, bzip2, dbus, evolution-data-server
 , exempi, flac, giflib, glib, gnome3, gst_all_1, icu, json-glib, libcue, libexif
-, libgsf, libiptcdata, libjpeg, libpng, libseccomp, libsoup, libtiff, libuuid
+, libgrss, libgsf, libiptcdata, libjpeg, libpng, libseccomp, libsoup, libtiff, libuuid
 , libvorbis, libxml2, poppler, taglib, upower }:
 
-stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
+let
   pname = "tracker-miners";
-  version = "2.0.5";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  version = "2.1.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "00k8nb8dbkjnqjk12gcs5n2cm6yny553qildsm5b2c8nfs1w16b4";
+    sha256 = "10j6iifq0ccnqckdx7fqlrfifbvs08jbczgxajldz26057kwp8fz";
   };
 
   nativeBuildInputs = [
     intltool
     itstool
     libxslt
-    makeWrapper
     meson
     ninja
     pkgconfig
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     wrapGAppsHook
   ];
 
-  # TODO: add libgrss, libenca, libosinfo
+  # TODO: add libenca, libosinfo
   buildInputs = [
     bzip2
     dbus
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
     json-glib
     libcue
     libexif
+    libgrss
     libgsf
     libiptcdata
     libjpeg
@@ -60,7 +61,8 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags = [
-    "-Dminer_rss=false" # needs libgrss
+    # TODO: tests do not like our sandbox
+    "-Dfunctional_tests=false"
   ];
 
   patches = [
@@ -75,13 +77,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  passthru = {
-    updateScript = gnome3.updateScript {
-      packageName = pname;
-      attrPath = "gnome3.${pname}";
-    };
-  };
-
+  # Symlinks require absolute path and we still cannot use placeholders
   # https://github.com/NixOS/nixpkgs/pull/39534#discussion_r184339131
   # https://github.com/NixOS/nixpkgs/pull/37693
   preConfigure = ''
@@ -89,13 +85,16 @@ stdenv.mkDerivation rec {
   '';
 
   postInstall = ''
-    ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
+    glib-compile-schemas "$out/share/glib-2.0/schemas"
   '';
 
-  # https://bugzilla.gnome.org/show_bug.cgi?id=796145
-  postFixup = ''
-    rm $out/share/tracker/miners/org.freedesktop.Tracker1.Miner.RSS.service
-  '';
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+      versionPolicy = "none";
+    };
+  };
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/Tracker;
diff --git a/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch b/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch
index 847e3bf204dd..47ad114eb0b5 100644
--- a/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch
@@ -1,6 +1,28 @@
+--- a/meson.build
++++ b/meson.build
+@@ -25,15 +25,15 @@
+   #
+   # This check acts as a guard to make sure we are being configured with the
+   # right prefix, among other things.
+-  tracker_store = find_program(join_paths(get_option('prefix'), get_option('libexecdir'), 'tracker-store'))
++  tracker_store = find_program(join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'libexec', 'tracker-store'))
+   tracker_store_path = tracker_store.path()
+ 
+   # If we are building against an installed version of tracker core rather than
+   # having it as a subproject, these 'uninstalled' locations point to the actual
+   # installed locations.
+-  tracker_uninstalled_domain_rule = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'domain-ontologies', 'default.rule')
+-  tracker_uninstalled_nepomuk_ontologies_dir = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'ontologies', 'nepomuk')
+-  tracker_uninstalled_stop_words_dir = join_paths(get_option('prefix'), get_option('datadir'), 'tracker', 'stop-words', 'default.rule')
++  tracker_uninstalled_domain_rule = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'domain-ontologies', 'default.rule')
++  tracker_uninstalled_nepomuk_ontologies_dir = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'ontologies', 'nepomuk')
++  tracker_uninstalled_stop_words_dir = join_paths(tracker_miner.get_pkgconfig_variable('prefix'), 'share', 'tracker', 'stop-words', 'default.rule')
+ else
+   tracker_subproject = subproject('tracker',
+     default_options: [
 --- a/src/libtracker-miners-common/tracker-domain-ontology.c
 +++ b/src/libtracker-miners-common/tracker-domain-ontology.c
-@@ -313,7 +313,7 @@
+@@ -323,7 +323,7 @@
  			goto end;
  		}
  	} else {
@@ -9,7 +31,7 @@
  		                         DEFAULT_RULE, NULL);
  
  		if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) {
-@@ -372,7 +372,7 @@
+@@ -388,7 +388,7 @@
  	if (!priv->ontology_location) {
  		gchar *ontology_path;
  
diff --git a/pkgs/desktops/gnome-3/core/tracker/default.nix b/pkgs/desktops/gnome-3/core/tracker/default.nix
index 649960c0bf3f..38e0d7cfa502 100644
--- a/pkgs/desktops/gnome-3/core/tracker/default.nix
+++ b/pkgs/desktops/gnome-3/core/tracker/default.nix
@@ -1,39 +1,53 @@
-{ stdenv, fetchurl, intltool, pkgconfig, gobjectIntrospection
-, libxml2, upower, glib, wrapGAppsHook, vala, sqlite, libxslt
+{ stdenv, fetchurl, intltool, meson, ninja, pkgconfig, gobjectIntrospection, python2
+, gtk-doc, docbook_xsl, docbook_xml_dtd_412, docbook_xml_dtd_43, glibcLocales
+, libxml2, upower, glib, wrapGAppsHook, vala, sqlite, libxslt, libstemmer
 , gnome3, icu, libuuid, networkmanager, libsoup, json-glib }:
 
 let
   pname = "tracker";
-  version = "2.0.4";
+  version = "2.1.4";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
-  outputs = [ "out" "dev" ];
+  outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf";
+    sha256 = "0xf58zld6pnfa8k7k70rv8ya8g7zqgahz6q4sapwxs6k97d2fgsx";
   };
 
-  enableParallelBuilding = true;
+  nativeBuildInputs = [
+    meson ninja vala pkgconfig intltool libxslt wrapGAppsHook gobjectIntrospection
+    gtk-doc docbook_xsl docbook_xml_dtd_412 docbook_xml_dtd_43 glibcLocales
+    python2 # for data-generators
+  ];
 
-  nativeBuildInputs = [ vala pkgconfig intltool libxslt wrapGAppsHook gobjectIntrospection ];
-  # TODO: add libstemmer
   buildInputs = [
-    glib libxml2 sqlite upower icu networkmanager libsoup libuuid json-glib
+    glib libxml2 sqlite upower icu networkmanager libsoup libuuid json-glib libstemmer
   ];
 
-  # TODO: figure out wrapping unit tests, some of them fail on missing gsettings-desktop-schemas
-  configureFlags = [ "--disable-unit-tests" ];
+  LC_ALL = "en_US.UTF-8";
+
+  mesonFlags = [
+    "-Ddbus_services=share/dbus-1/services"
+    # TODO: figure out wrapping unit tests, some of them fail on missing gsettings-desktop-schemas
+    "-Dfunctional_tests=false"
+  ];
 
   postPatch = ''
     patchShebangs utils/g-ir-merge/g-ir-merge
+    patchShebangs utils/data-generators/cc/generate
+  '';
+
+  postInstall = ''
+    glib-compile-schemas "$out/share/glib-2.0/schemas"
   '';
 
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
       attrPath = "gnome3.${pname}";
+      versionPolicy = "none";
     };
   };
 
diff --git a/pkgs/desktops/gnome-3/core/vte/default.nix b/pkgs/desktops/gnome-3/core/vte/default.nix
index ed313221e56a..47a2c2f19d3b 100644
--- a/pkgs/desktops/gnome-3/core/vte/default.nix
+++ b/pkgs/desktops/gnome-3/core/vte/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, intltool, pkgconfig
 , gnome3, ncurses, gobjectIntrospection, vala, libxml2, gnutls
-, fetchFromGitHub, autoconf, automake, libtool, gtk-doc, gperf, pcre2
+, gperf, pcre2
 }:
 
 stdenv.mkDerivation rec {
@@ -19,7 +19,12 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ gobjectIntrospection intltool pkgconfig vala gperf libxml2 ];
   buildInputs = [ gnome3.glib gnome3.gtk3 ncurses ];
 
-  propagatedBuildInputs = [ gnutls pcre2 ];
+  propagatedBuildInputs = [
+    # Required by vte-2.91.pc.
+    gnome3.gtk3
+    gnutls
+    pcre2
+  ];
 
   preConfigure = "patchShebangs .";
 
diff --git a/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
index f904a90454f3..6abaff8e32be 100644
--- a/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
+++ b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, intltool, fetchurl, pkgconfig, bash
+{ stdenv, intltool, fetchurl, pkgconfig
 , itstool, libxml2, libxslt, gnome3 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/desktops/gnome-3/core/zenity/default.nix b/pkgs/desktops/gnome-3/core/zenity/default.nix
index b97881063427..7f9996d17d99 100644
--- a/pkgs/desktops/gnome-3/core/zenity/default.nix
+++ b/pkgs/desktops/gnome-3/core/zenity/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+{ stdenv, fetchurl, pkgconfig, libxml2, libxslt, gnome3
 , gnome-doc-utils, intltool, libX11, which, itstool, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {