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/adwaita-icon-theme/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/baobab/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/core/dconf-editor/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/core/dconf/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/core/empathy/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/eog/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/core/epiphany/default.nix11
-rw-r--r--pkgs/desktops/gnome-3/core/evince/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/evolution-data-server/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/core/gcr/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/geocode-glib/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/core/geocode-glib/installed-tests-path.patch8
-rw-r--r--pkgs/desktops/gnome-3/core/gjs/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-calculator/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix12
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-contacts/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-control-center/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-desktop/default.nix4
-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.nix11
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-session/default.nix49
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix55
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch15
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell/default.nix74
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch29
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-software/default.nix13
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch2
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-terminal/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-themes-standard/default.nix25
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-user-share/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gtksourceview/default.nix55
-rw-r--r--pkgs/desktops/gnome-3/core/gtksourceview/nix_share_path.patch11
-rw-r--r--pkgs/desktops/gnome-3/core/gtksourceviewmm/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gucharmap/default.nix13
-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/libgepub/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/libgweather/default.nix51
-rw-r--r--pkgs/desktops/gnome-3/core/libzapojit/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/mutter/default.nix13
-rw-r--r--pkgs/desktops/gnome-3/core/nautilus/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/core/simple-scan/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch9
-rw-r--r--pkgs/desktops/gnome-3/core/tracker/default.nix25
-rw-r--r--pkgs/desktops/gnome-3/core/vino/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/core/vte/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/yelp-tools/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/yelp-xsl/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/yelp/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/zenity/default.nix4
62 files changed, 584 insertions, 527 deletions
diff --git a/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
index 2178004a43a..049b586f16d 100644
--- a/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
+++ b/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   name = "adwaita-icon-theme-${version}";
-  version = "3.26.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/adwaita-icon-theme/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "28ba7392c7761996efd780779167ea6c940eedfb1bf37cfe9bccb7021f54d79d";
+    sha256 = "0l114ildlb3lz3xymfxxi0wpr2x21rd3cg8slb8jyxynzwfqrbks";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/baobab/default.nix b/pkgs/desktops/gnome-3/core/baobab/default.nix
index 1ff67e35f0f..693e284e270 100644
--- a/pkgs/desktops/gnome-3/core/baobab/default.nix
+++ b/pkgs/desktops/gnome-3/core/baobab/default.nix
@@ -1,34 +1,34 @@
-{ stdenv, intltool, fetchurl, vala, libgtop
-, pkgconfig, gtk3, glib
-, bash, wrapGAppsHook, itstool, libxml2
-, gnome3, librsvg, gdk_pixbuf, file }:
+{ stdenv, gettext, fetchurl, vala, desktop-file-utils
+, meson, ninja, pkgconfig, gtk3, glib, libxml2
+, wrapGAppsHook, itstool, gnome3 }:
 
-stdenv.mkDerivation rec {
-  name = "baobab-${version}";
-  version = "3.26.1";
+let
+  pname = "baobab";
+  version = "3.28.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/baobab/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "7a59ab5945f5d90725231b10d85a1893403f56660b1627c111d2b4eeb1ef787e";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "0qsx7vx5c3n4yxlxbr11sppw7qwcv9z3g45b5xb9y7wxw5lv42sk";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "baobab"; };
-  };
+  nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook ];
+  buildInputs = [ gtk3 glib gnome3.defaultIconTheme ];
 
   doCheck = true;
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ vala gtk3 glib libgtop intltool itstool libxml2
-                  wrapGAppsHook file gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
 
   meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/Apps/Baobab;
-    description = "Graphical application to analyse disk usage in any Gnome environment";
-    maintainers = gnome3.maintainers;
+    description = "Graphical application to analyse disk usage in any GNOME environment";
+    homepage = https://wiki.gnome.org/Apps/DiskUsageAnalyzer;
     license = licenses.gpl2;
+    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 47ddf6b6486..57c102d89cc 100644
--- a/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
+++ b/pkgs/desktops/gnome-3/core/dconf-editor/default.nix
@@ -1,23 +1,32 @@
-{ stdenv, fetchurl, vala, libxslt, pkgconfig, glib, dbus-glib, gnome3
-, libxml2, intltool, docbook_xsl_ns, docbook_xsl, wrapGAppsHook }:
+{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, dbus-glib, gtk3, gnome3
+, libxml2, gettext, docbook_xsl, wrapGAppsHook, gobjectIntrospection }:
 
-stdenv.mkDerivation rec {
-  name = "dconf-editor-${version}";
-  version = "3.26.2";
+let
+  pname = "dconf-editor";
+  version = "3.28.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/dconf-editor/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "28b453fe49c49d7dfaf07c85c01d7495913f93ab64a0b223c117eb17d1cb8ad1";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "0nhcpwqrkmpxbhaf0cafvy6dlp6s7vhm5vknl4lgs3l24zc56ns5";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "dconf-editor"; attrPath = "gnome3.dconf-editor"; };
-  };
+  nativeBuildInputs = [ meson ninja vala libxslt pkgconfig wrapGAppsHook gettext docbook_xsl libxml2 gobjectIntrospection ];
+
+  buildInputs = [ glib dbus-glib gtk3 gnome3.defaultIconTheme gnome3.dconf ];
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
 
-  buildInputs = [ vala libxslt glib dbus-glib gnome3.gtk libxml2 gnome3.defaultIconTheme
-                  intltool docbook_xsl docbook_xsl_ns gnome3.dconf ];
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "${pname}";
+      attrPath = "gnome3.${pname}";
+    };
+  };
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
diff --git a/pkgs/desktops/gnome-3/core/dconf/default.nix b/pkgs/desktops/gnome-3/core/dconf/default.nix
index a1722876121..9b1adeb953d 100644
--- a/pkgs/desktops/gnome-3/core/dconf/default.nix
+++ b/pkgs/desktops/gnome-3/core/dconf/default.nix
@@ -1,28 +1,28 @@
-{ stdenv, fetchurl, vala, libxslt, pkgconfig, glib, dbus-glib, gnome3
-, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }:
+{ stdenv, fetchurl, meson, ninja, python3, vala, libxslt, pkgconfig, glib, dbus-glib, gnome3
+, libxml2, docbook_xsl, makeWrapper }:
 
 let
   pname = "dconf";
 in
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "0.26.1";
+  version = "0.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0da587hpiqy8h3pswn1102h4b905x8k6mk3ajpi7kf4kzkvv30ym";
+    sha256 = "0hn7v6769xabqz7kvyb2hfm19h46z1whkair7ff752zmbs3b7lv1";
   };
 
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
   outputs = [ "out" "lib" "dev" ];
 
-  nativeBuildInputs = [ vala pkgconfig intltool libxslt libxml2 docbook_xsl docbook_xsl_ns makeWrapper ];
+  nativeBuildInputs = [ meson ninja vala pkgconfig python3 libxslt libxml2 docbook_xsl ];
   buildInputs = [ glib dbus-glib ];
 
-  postConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
-    substituteInPlace client/Makefile \
-      --replace "-soname=libdconf.so.1" "-install_name,libdconf.so.1"
-  '';
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome-3/core/empathy/default.nix b/pkgs/desktops/gnome-3/core/empathy/default.nix
index bf83c7aa8a1..4da4c480266 100644
--- a/pkgs/desktops/gnome-3/core/empathy/default.nix
+++ b/pkgs/desktops/gnome-3/core/empathy/default.nix
@@ -11,11 +11,11 @@
 
 stdenv.mkDerivation rec {
   name = "empathy-${version}";
-  version = "3.12.14";
+  version = "3.25.90";
 
   src = fetchurl {
     url = "mirror://gnome/sources/empathy/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "7d86942ce97edd10ade0e6ae6a210d35e4d627fe4d223377d71fd1840bc6e3a3";
+    sha256 = "0sn10fcymc6lyrabk7vx8lpvlaxxkqnmcwj9zdkfa8qf3388k4nc";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/eog/default.nix b/pkgs/desktops/gnome-3/core/eog/default.nix
index 1acd6eb6942..50248586261 100644
--- a/pkgs/desktops/gnome-3/core/eog/default.nix
+++ b/pkgs/desktops/gnome-3/core/eog/default.nix
@@ -1,30 +1,42 @@
-{ fetchurl, stdenv, gettext, pkgconfig, itstool, libxml2, libjpeg, gnome3
+{ 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 }:
 
-stdenv.mkDerivation rec {
-  name = "eog-${version}";
-  version = "3.26.2";
+let
+  pname = "eog";
+  version = "3.28.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/eog/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "b53e3d4dfa7d0085b829a5fb95f148a099803c00ef276be7685efd5ec38807ad";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "0d8fi5ydsh8n7d85dps8svl1bhid1p8jbnlwiqywj2gd2wpxpyjv";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "eog"; attrPath = "gnome3.eog"; };
-  };
+  nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobjectIntrospection ];
 
-  nativeBuildInputs = [ pkgconfig gettext itstool wrapGAppsHook gobjectIntrospection ];
+  buildInputs = [
+    libjpeg gtk3 gdk_pixbuf glib libpeas librsvg lcms2 gnome-desktop libexif exempi
+    gsettings-desktop-schemas shared-mime-info adwaita-icon-theme
+  ];
 
-  buildInputs = with gnome3;
-    [ libxml2 libjpeg gtk glib libpeas librsvg
-      gsettings-desktop-schemas shared-mime-info adwaita-icon-theme
-      gnome-desktop libexif dconf ];
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
 
   meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/Apps/EyeOfGnome;
-    platforms = platforms.linux;
     description = "GNOME image viewer";
+    homepage = https://wiki.gnome.org/Apps/EyeOfGnome;
+    license = licenses.gpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/epiphany/default.nix b/pkgs/desktops/gnome-3/core/epiphany/default.nix
index a275040e1f4..3bc32f99f3e 100644
--- a/pkgs/desktops/gnome-3/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/core/epiphany/default.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   name = "epiphany-${version}";
-  version = "3.26.6";
+  version = "3.28.0.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/epiphany/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1a1hyv326w4in4pl26gi2n3p9b38ih6zjdiigpqy0aiibnjnmc81";
+    sha256 = "023q6xnwsafac38lavxwgph5lcd2igxpiwqb4kr72mv56xlb0m3i";
   };
 
   passthru = {
@@ -38,13 +38,6 @@ stdenv.mkDerivation rec {
     patchShebangs post_install.py
   '';
 
-  postFixup = ''
-    # Patched meson does not add internal libraries to rpath
-    for f in $out/bin/.*-wrapped $out/libexec/.*-wrapped $out/libexec/epiphany/.*-wrapped $out/lib/epiphany/*.so $out/lib/epiphany/web-extensions/*.so; do
-      patchelf --set-rpath "$out/lib/epiphany:$(patchelf --print-rpath $f)" "$f"
-    done
-  '';
-
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Epiphany;
     description = "WebKit based web browser for GNOME";
diff --git a/pkgs/desktops/gnome-3/core/evince/default.nix b/pkgs/desktops/gnome-3/core/evince/default.nix
index f2459d7885c..c60087cf47b 100644
--- a/pkgs/desktops/gnome-3/core/evince/default.nix
+++ b/pkgs/desktops/gnome-3/core/evince/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     glib gtk3 pango atk gdk_pixbuf libxml2
-    gnome3.libgnome-keyring gnome3.gsettings-desktop-schemas
+    gnome3.gsettings-desktop-schemas
     poppler ghostscriptX djvulibre libspectre
     libsecret librsvg gnome3.adwaita-icon-theme
   ] ++ stdenv.lib.optional supportXPS gnome3.libgxps;
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 ae97fbc0e4d..350c29fa907 100644
--- a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -1,24 +1,22 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, python3, dconf
+{ fetchurl, stdenv, pkgconfig, gnome3, python3, dconf, gobjectIntrospection
 , intltool, libsoup, libxml2, libsecret, icu, sqlite
-, p11-kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true
+, p11-kit, db, nspr, nss, libical, gperf, makeWrapper
 , vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib }:
 
 stdenv.mkDerivation rec {
   name = "evolution-data-server-${version}";
-  version = "3.26.6";
+  version = "3.28.0";
+
+  outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/evolution-data-server/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1v0hwlrlm23bz5dmamdavm771f4gs64fyq82argrc0nwgn2a2fp4";
-  };
-
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "evolution-data-server"; };
+    sha256 = "1ybyyy6nls11az8lbri1y9527snz5h7qbhyfqvk0vc6vzvald5gv";
   };
 
   nativeBuildInputs = [
-    cmake ninja pkgconfig intltool python3 gperf makeWrapper
-  ] ++ stdenv.lib.optional valaSupport vala;
+    cmake ninja pkgconfig intltool python3 gperf makeWrapper gobjectIntrospection vala
+  ];
   buildInputs = with gnome3; [
     glib libsoup libxml2 gtk gnome-online-accounts
     gcr p11-kit libgweather libgdata libaccounts-glib json-glib
@@ -27,16 +25,14 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ libsecret nss nspr libical db ];
 
-  # uoa irrelevant for now
   cmakeFlags = [
     "-DENABLE_UOA=OFF"
-  ] ++ stdenv.lib.optionals valaSupport [
     "-DENABLE_VALA_BINDINGS=ON"
     "-DENABLE_INTROSPECTION=ON"
     "-DCMAKE_SKIP_BUILD_RPATH=OFF"
+    "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include"
   ];
 
-  enableParallelBuilding = true;
 
   preFixup = ''
     for f in $(find $out/libexec/ -type f -executable); do
@@ -46,7 +42,15 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "evolution-data-server";
+    };
+  };
+
   meta = with stdenv.lib; {
+    description = "Unified backend for programs that work with contacts, tasks, and calendar information";
+    homepage = https://wiki.gnome.org/Apps/Evolution;
     license = licenses.lgpl2;
     maintainers = gnome3.maintainers;
     platforms = platforms.linux;
diff --git a/pkgs/desktops/gnome-3/core/gcr/default.nix b/pkgs/desktops/gnome-3/core/gcr/default.nix
index aa26c660768..61c17a210b4 100644
--- a/pkgs/desktops/gnome-3/core/gcr/default.nix
+++ b/pkgs/desktops/gnome-3/core/gcr/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gcr-${version}";
-  version = "3.20.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gcr/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379";
+    sha256 = "02xgky22xgvhgd525khqh64l5i21ca839fj9jzaqdi3yvb8pbq8m";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gdm/default.nix b/pkgs/desktops/gnome-3/core/gdm/default.nix
index ef9439a3029..999c3f05748 100644
--- a/pkgs/desktops/gnome-3/core/gdm/default.nix
+++ b/pkgs/desktops/gnome-3/core/gdm/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "gdm-${version}";
-  version = "3.26.2.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdm/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "17ddcb00602c2b426de58bb4b0d99af9de27450a8557dcc5ec850c080d55ad57";
+    sha256 = "0i5rzr6fdvlm88gl85gvql1wf1yflkmg90x81dqjf39as3ixs81s";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/core/geocode-glib/default.nix
index e97e557e87a..910ef01fcb9 100644
--- a/pkgs/desktops/gnome-3/core/geocode-glib/default.nix
+++ b/pkgs/desktops/gnome-3/core/geocode-glib/default.nix
@@ -1,24 +1,38 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, intltool, libsoup, json-glib }:
+{ fetchurl, stdenv, meson, ninja, pkgconfig, gettext, gtk-doc, docbook_xsl, gobjectIntrospection, gnome3, libsoup, json-glib }:
 
 stdenv.mkDerivation rec {
   name = "geocode-glib-${version}";
-  version = "3.24.0";
+  version = "3.25.4.1";
+
+  outputs = [ "out" "dev" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/geocode-glib/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "19c1fef4fd89eb4bfe6decca45ac45a2eca9bb7933be560ce6c172194840c35e";
+    sha256 = "0y6p5l2jrr78p7l4hijjhclzbap005y6h06g3aiglg9i5hk6j0gi";
   };
 
+  nativeBuildInputs = with gnome3; [ meson ninja pkgconfig gettext gtk-doc docbook_xsl gobjectIntrospection ];
+  buildInputs = with gnome3; [ glib libsoup json-glib ];
+
+  patches = [
+    ./installed-tests-path.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace geocode-glib/tests/meson.build --subst-var-by "installedTests" "$installedTests"
+  '';
+
   passthru = {
-    updateScript = gnome3.updateScript { packageName = "geocode-glib"; attrPath = "gnome3.geocode-glib"; };
+    updateScript = gnome3.updateScript {
+      packageName = "geocode-glib";
+      attrPath = "gnome3.geocode-glib";
+    };
   };
 
-  buildInputs = with gnome3;
-    [ intltool pkgconfig glib libsoup json-glib ];
-
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    description = "A convenience library for the geocoding and reverse geocoding using Nominatim service";
+    license = licenses.lgpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
-
 }
diff --git a/pkgs/desktops/gnome-3/core/geocode-glib/installed-tests-path.patch b/pkgs/desktops/gnome-3/core/geocode-glib/installed-tests-path.patch
new file mode 100644
index 00000000000..499c6800808
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/geocode-glib/installed-tests-path.patch
@@ -0,0 +1,8 @@
+--- a/geocode-glib/tests/meson.build
++++ b/geocode-glib/tests/meson.build
+@@ -1,4 +1,4 @@
+-install_dir = get_option('libexecdir') + '/installed-tests/geocode-glib'
++install_dir = '@installedTests@/libexec/installed-tests/geocode-glib'
+ 
+ e = executable('geo-uri',
+                'geo-uri.c',
diff --git a/pkgs/desktops/gnome-3/core/gjs/default.nix b/pkgs/desktops/gnome-3/core/gjs/default.nix
index 6e9f6c464df..888eb073a46 100644
--- a/pkgs/desktops/gnome-3/core/gjs/default.nix
+++ b/pkgs/desktops/gnome-3/core/gjs/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gjs-${version}";
-  version = "1.50.4";
+  version = "1.52.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gjs/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "b336e8709347e3c94245f6cbc3465f9a49f3ae491a25f49f8a97268f5235b93a";
+    sha256 = "1jm40imin4sxzfcxcbmf4v71apk8y9icccq1a4m4mlz1wm2s092m";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
index 0aea3c4eac4..c52fe5c6049 100644
--- a/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchurl, pkgconfig, gnome3, intltool }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gettext }:
 
 stdenv.mkDerivation rec {
   name = "gnome-backgrounds-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-backgrounds/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "3a8ba8d3463d70bce2377b168218e32367c0020f2d0caf611e7e39066081f94f";
+    sha256 = "1qgim0yhzjgcq172y4vp5hqz4rh1ak38a7pgi6s7dq0wklyrcnxj";
   };
 
   passthru = {
     updateScript = gnome3.updateScript { packageName = "gnome-backgrounds"; attrPath = "gnome3.gnome-backgrounds"; };
   };
 
-  nativeBuildInputs = [ pkgconfig intltool ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
 
   meta = with stdenv.lib; {
     platforms = platforms.unix;
diff --git a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
index 11816f68ff4..d570a541409 100644
--- a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-bluetooth-${version}";
-  version = "3.26.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-bluetooth/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1d2c7b94fc76a833dad0d4d91344e9a5a7b4aad740c5a90944bd25c5be7e784f";
+    sha256 = "0q7yzklrlayj99risj096mr5x35anx94wvr6nbf6pwbvvzv7453p";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
index 8376bea1a03..f30243003cb 100644
--- a/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix
@@ -1,33 +1,43 @@
-{ stdenv, intltool, fetchurl, pkgconfig, libxml2
-, bash, gtk3, glib, wrapGAppsHook
-, itstool, gnome3, librsvg, gdk_pixbuf, mpfr, gmp, libsoup, libmpc }:
+{ stdenv, meson, ninja, vala, gettext, itstool, fetchurl, pkgconfig, libxml2
+, gtk3, glib, gtksourceview3, wrapGAppsHook, gobjectIntrospection
+, gnome3, mpfr, gmp, libsoup, libmpc }:
 
 stdenv.mkDerivation rec {
   name = "gnome-calculator-${version}";
-  version = "3.26.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-calculator/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "62215b37fcd73a6bbb106ebd0f25051c81ff0cf6ad84fd4a3ea176bceb5863c7";
+    sha256 = "1qnfvmf615v52c8h1f6zxbvpywi3512hnzyf9azvxb8a6q0rx1vn";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-calculator"; attrPath = "gnome3.gnome-calculator"; };
-  };
+  nativeBuildInputs = [
+    meson ninja pkgconfig vala gettext itstool wrapGAppsHook
+    gobjectIntrospection # for finding vapi files
+  ];
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+  buildInputs = [
+    gtk3 glib libxml2 gtksourceview3 mpfr gmp
+    gnome3.defaultIconTheme
+    gnome3.gsettings-desktop-schemas libsoup libmpc
+  ];
 
-  propagatedUserEnvPkgs = [ gnome3.gnome-themes-standard ];
+  doCheck = true;
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
 
-  buildInputs = [ bash gtk3 glib intltool itstool
-                  libxml2 gnome3.gtksourceview mpfr gmp
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg
-                  gnome3.gsettings-desktop-schemas gnome3.dconf libsoup libmpc ];
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-calculator";
+      attrPath = "gnome3.gnome-calculator";
+    };
+  };
 
   meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
+    homepage = https://wiki.gnome.org/Apps/Calculator;
     description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
     maintainers = gnome3.maintainers;
     license = licenses.gpl3;
diff --git a/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix b/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix
index b5052281b2f..9fcbbe814dc 100644
--- a/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix
@@ -2,26 +2,18 @@
 
 let
   pname = "gnome-color-manager";
-  version = "3.26.0";
+  version = "3.28.0";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1kbi46vk0qf0gxiwm4yhsx8931r7c9cg0c4244j8ncr0hph008b5";
+    sha256 = "1mixga6mq67wgxdsg6rnl7lvyh3z3yabxjmnyjq2k2v8ljgklczc";
   };
 
   nativeBuildInputs = [ meson ninja pkgconfig gettext itstool desktop-file-utils ];
   buildInputs = [ glib gtk3 libexif libtiff colord colord-gtk libcanberra-gtk3 lcms2 vte exiv2 ];
 
-  patches = [
-    # https://bugzilla.gnome.org/show_bug.cgi?id=791158
-    (fetchurl {
-      url = https://bugzilla.gnome.org/attachment.cgi?id=364865;
-      sha256 = "1zh1aql6rwzfhy2xbdw0jqgzrl9l6wf0jcbdkjd67ykbmynh2cmv";
-    })
-  ];
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
diff --git a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
index 6c485bcbd3f..9c9b26360aa 100644
--- a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
@@ -5,13 +5,13 @@
 , vala, meson, ninja }:
 
 let
-  version = "3.26.1";
+  version = "3.28.0";
 in stdenv.mkDerivation rec {
   name = "gnome-contacts-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-contacts/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "1jszv4b8rc5q8r460wb7qppvm1ssj4733b4z2vyavc95g00ik286";
+    sha256 = "1qqj6k5rvmvg6v6vg4cak98w6rqknpqfsm0vfrwva6l6wbql2v8i";
   };
 
   propagatedUserEnvPkgs = [ evolution-data-server ];
@@ -32,6 +32,12 @@ in stdenv.mkDerivation rec {
     patchShebangs 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${clutter-gtk}/include/clutter-gtk-1.0";
+
   doCheck = true;
 
   passthru = {
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 b49b13aae80..8966893bde7 100644
--- a/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix
@@ -1,24 +1,25 @@
-{ fetchurl, stdenv, substituteAll, pkgconfig, gnome3, ibus, intltool, upower, wrapGAppsHook
+{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, ibus, gettext, upower, wrapGAppsHook
 , libcanberra-gtk3, accountsservice, libpwquality, libpulseaudio
 , gdk_pixbuf, librsvg, libnotify, libgudev, gnome-color-manager
 , libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk
 , cracklib, libkrb5, networkmanagerapplet, networkmanager, glibc
 , libwacom, samba, shared-mime-info, tzdata, libtool, libgnomekbd
-, docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter-gtk
+, docbook_xsl, modemmanager, clutter, clutter-gtk, cheese
 , fontconfig, sound-theme-freedesktop, grilo }:
 
 let
-  version = "3.26.2";
+  pname = "gnome-control-center";
+  version = "3.28.0";
 in stdenv.mkDerivation rec {
-  name = "gnome-control-center-${version}";
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gnome-control-center/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "07aed27d6317f2cad137daa6d94a37ad02c32b958dcd30c8f07d0319abfb04c5";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "0nyx5nl2rky0249rdcy0hsccnxf3angpya0q859rrbrwaixqnxh3";
   };
 
   nativeBuildInputs = [
-    pkgconfig intltool wrapGAppsHook libtool libxslt docbook_xsl docbook_xsl_ns
+    meson ninja pkgconfig gettext wrapGAppsHook libtool libxslt docbook_xsl
     shared-mime-info
   ];
 
@@ -28,7 +29,7 @@ in stdenv.mkDerivation rec {
     gnome-online-accounts libsoup colord libpulseaudio fontconfig colord-gtk
     accountsservice libkrb5 networkmanagerapplet libwacom samba libnotify
     grilo libpwquality cracklib vino libcanberra-gtk3 libgudev
-    gdk_pixbuf defaultIconTheme librsvg clutter clutter-gtk
+    gdk_pixbuf defaultIconTheme librsvg clutter clutter-gtk cheese
     networkmanager modemmanager gnome-bluetooth tracker
   ];
 
@@ -40,6 +41,11 @@ in stdenv.mkDerivation rec {
     })
   ];
 
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
+
   preFixup = ''
     gappsWrapperArgs+=(
       --prefix XDG_DATA_DIRS : "${gnome3.gnome-themes-standard}/share:${sound-theme-freedesktop}/share"
@@ -48,14 +54,14 @@ in stdenv.mkDerivation rec {
       --prefix XDG_DATA_DIRS : "${librsvg}/share"
     )
     for i in $out/share/applications/*; do
-      substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center"
+      substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center"
     done
   '';
 
   passthru = {
     updateScript = gnome3.updateScript {
-      packageName = "gnome-control-center";
-      attrPath = "gnome3.gnome-control-center";
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
     };
   };
 
diff --git a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
index 7e85e27d6be..dad8d8177de 100644
--- a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-desktop-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-desktop/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "f7561a7a313fc474b2c390cd9696df1f5c1e1556080e43f4afe042b1060e5f2a";
+    sha256 = "17fm5z3kfm1m3420kjpvk1y0pc34p42rqfpmb1npy51jkv1p3pzi";
   };
 
   passthru = {
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 0937f5c3082..4dde871ec70 100644
--- a/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-disk-utility-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-disk-utility/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "aa2b96c2c64d8bde6cf802ff8da5796720d0becb21111342ced0637961e256f2";
+    sha256 = "0ad98mxyygyzq0y280m6z73anyv3xxr6irpkp6vc803lhdr5b7fc";
   };
 
   passthru = {
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 3774ff32db0..7e76b8991fd 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.26.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-font-viewer/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "02768a62b4033de5ef9d00602e8c29e5de05255f879b0d9b4d731be9648fe9a0";
+    sha256 = "16mp22f255b8zqnnlqh25n6v79b9bd0gmli9ywqyapa0cfai09x3";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
index f7f06e35d3a..20ff00ff218 100644
--- a/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python2, glib, libxslt
-, intltool, pango, gcr, gdk_pixbuf, atk, p11-kit, wrapGAppsHook
+, intltool, pango, gcr, gdk_pixbuf, atk, p11-kit, openssh, wrapGAppsHook
 , docbook_xsl, docbook_xml_dtd_42, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "gnome-keyring-${version}";
-  version = "3.20.1";
+  version = "3.28.0.1";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-keyring/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "134ci3mn6jjap59z3lrvyiip7zf2nlw5xvanr44yajs57xr4x5lp";
+    sha256 = "0qxxc3wx4abb07vmbhqy4gipdzilx3v8yba9hsfzpn8p15prjz6i";
   };
 
   passthru = {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   outputs = [ "out" "dev" ];
 
   buildInputs = with gnome3; [
-    dbus libgcrypt pam gtk3 libgnome-keyring
+    dbus libgcrypt pam gtk3 libgnome-keyring openssh
     pango gcr gdk_pixbuf atk p11-kit
   ];
 
@@ -40,8 +40,7 @@ stdenv.mkDerivation rec {
     patchShebangs build
   '';
 
-  # Tests are not deterministic https://bugzilla.gnome.org/show_bug.cgi?id=791932
-  doCheck = false;
+  doCheck = true;
   checkPhase = ''
     export HOME=$(mktemp -d)
     dbus-run-session \
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 2abe8b28c03..d3d14f555cf 100644
--- a/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-online-accounts/default.nix
@@ -1,24 +1,20 @@
 { stdenv, fetchurl, pkgconfig, vala, glib, libxslt, gtk, wrapGAppsHook
-, webkitgtk, json-glib, rest, libsecret, dbus-glib, gnome-common, gtk-doc
-, telepathy-glib, intltool, dbus_libs, icu, glib-networking
-, libsoup, docbook_xsl_ns, docbook_xsl, gnome3, gcr, kerberos
+, webkitgtk, json-glib, rest, libsecret, dbus-glib, gtk-doc
+, telepathy-glib, gettext, dbus_libs, icu, glib-networking
+, libsoup, docbook_xsl, docbook_xsl_ns, gnome3, gcr, kerberos
 }:
 
-stdenv.mkDerivation rec {
-  name = "gnome-online-accounts-${version}";
-  version = "3.26.2";
+let
+  pname = "gnome-online-accounts";
+  version = "3.28.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gnome-online-accounts/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "49f8760d86fe33057eaeeb4f1667bc7f6163e428591e7aed9575563be10b17d1";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "035lmm21imr7ddpzffqabv53g3ggjscmqvlzy3j1qkv00zrlxg47";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-online-accounts"; attrPath = "gnome3.gnome-online-accounts"; };
-  };
-
-  NIX_CFLAGS_COMPILE = "-I${dbus-glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
-
   outputs = [ "out" "man" "dev" "devdoc" ];
 
   configureFlags = [
@@ -32,14 +28,21 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   nativeBuildInputs = [
-    pkgconfig vala gnome-common intltool wrapGAppsHook
-    libxslt docbook_xsl_ns docbook_xsl gtk-doc
+    pkgconfig vala gettext wrapGAppsHook
+    libxslt docbook_xsl docbook_xsl_ns gtk-doc
   ];
   buildInputs = [
     glib gtk webkitgtk json-glib rest libsecret dbus-glib telepathy-glib glib-networking icu libsoup
     gcr kerberos
   ];
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
     platforms = platforms.linux;
     maintainers = gnome3.maintainers;
diff --git a/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/core/gnome-session/default.nix
index c8bc6146221..d36e7ce7432 100644
--- a/pkgs/desktops/gnome-3/core/gnome-session/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-session/default.nix
@@ -1,27 +1,33 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, glib, dbus-glib, json-glib, upower
-, libxslt, intltool, makeWrapper, systemd, xorg, epoxy }:
+{ fetchurl, stdenv, 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 }:
 
 stdenv.mkDerivation rec {
   name = "gnome-session-${version}";
-  version = "3.26.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-session/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "d9414b368db982d3837ca106e64019f18e6cdd5b13965bea6c7d02ddf5103708";
+    sha256 = "1ldcalj9i7qharvw8k8gf7pkcvwb1qwiag2ckffx9x8ic2d3v00b";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-session"; attrPath = "gnome3.gnome-session"; };
-  };
+  mesonFlags = [ "-Dsystemd=true" ];
 
-  configureFlags = "--enable-systemd";
+  nativeBuildInputs = [
+    meson ninja pkgconfig gettext makeWrapper
+    xmlto libxslt docbook_xsl docbook_xml_dtd_412
+    dbus # for DTD
+  ];
 
-  buildInputs = with gnome3;
-    [ pkgconfig glib gnome-desktop gtk dbus-glib json-glib libxslt
-      gnome3.gnome-settings-daemon xorg.xtrans gnome3.defaultIconTheme
-      gsettings-desktop-schemas upower intltool gconf makeWrapper systemd
-      epoxy
-    ];
+  buildInputs = [
+    glib gtk libICE gnome-desktop json-glib xorg.xtrans gnome3.defaultIconTheme
+    gnome3.gnome-settings-daemon gsettings-desktop-schemas systemd epoxy
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
 
   # FIXME: glib binaries shouldn't be in .dev!
   preFixup = ''
@@ -34,13 +40,22 @@ stdenv.mkDerivation rec {
       --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" \
+      --suffix XDG_DATA_DIRS : "${gnome3.gnome-shell}/share"\
       --suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg"
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-session";
+      attrPath = "gnome3.gnome-session";
+    };
+  };
+
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    description = "GNOME session manager";
+    homepage = https://wiki.gnome.org/Projects/SessionManagement;
+    license = licenses.gpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
-
 }
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 e3c84dfa9fd..99b66fc1fe7 100644
--- a/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix
@@ -1,38 +1,57 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, intltool, glib, libnotify, lcms2, libXtst
-, libxkbfile, libpulseaudio, libcanberra-gtk3, upower, colord, libgweather, polkit
-, geoclue2, librsvg, xf86_input_wacom, udev, libgudev, libwacom, libxslt, libtool, networkmanager
-, docbook_xsl, docbook_xsl_ns, wrapGAppsHook, ibus, xkeyboard_config, tzdata }:
+{ fetchurl, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, perl, gettext, glib, libnotify, lcms2, libXtst
+, libxkbfile, libpulseaudio, alsaLib, libcanberra-gtk3, upower, colord, libgweather, polkit
+, geoclue2, librsvg, xf86_input_wacom, udev, libgudev, libwacom, libxslt, libxml2, networkmanager
+, docbook_xsl, wrapGAppsHook, ibus, xkeyboard_config, tzdata, nss }:
 
 stdenv.mkDerivation rec {
   name = "gnome-settings-daemon-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-settings-daemon/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "5a3d156b35e03fa3c28fddd0321f6726082a711973dee2af686370faae2e75e4";
+    sha256 = "1p3ccf4a4qbz73hqyx9i55hkp6l7c7la5kazqawcndl7bksywgny";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-settings-daemon"; attrPath = "gnome3.gnome-settings-daemon"; };
-  };
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit tzdata;
+    })
+  ];
 
   # fatal error: gio/gunixfdlist.h: No such file or directory
   NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
-  buildInputs = with gnome3;
-    [ intltool pkgconfig ibus gtk glib gsettings-desktop-schemas networkmanager
-      libnotify gnome-desktop lcms2 libXtst libxkbfile libpulseaudio
-      libcanberra-gtk3 upower colord libgweather xkeyboard_config
-      polkit geocode-glib geoclue2 librsvg xf86_input_wacom udev libgudev libwacom libxslt
-      libtool docbook_xsl docbook_xsl_ns wrapGAppsHook gnome-themes-standard ];
+  nativeBuildInputs = [ meson ninja pkgconfig perl gettext libxml2 libxslt docbook_xsl wrapGAppsHook ];
+
+  buildInputs = with gnome3; [
+    ibus gtk glib gsettings-desktop-schemas networkmanager
+    libnotify gnome-desktop lcms2 libXtst libxkbfile libpulseaudio alsaLib
+    libcanberra-gtk3 upower colord libgweather xkeyboard_config nss
+    polkit geocode-glib geoclue2 librsvg xf86_input_wacom udev libgudev libwacom
+  ];
+
+  mesonFlags = [
+    "-Dudev_dir=${placeholder "out"}/lib/udev"
+  ];
 
   postPatch = ''
-    substituteInPlace plugins/datetime/tz.h --replace /usr/share/zoneinfo/zone.tab ${tzdata}/share/zoneinfo/zone.tab
+    for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do
+      chmod +x $f
+      patchShebangs $f
+    done
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-settings-daemon";
+      attrPath = "gnome3.gnome-settings-daemon";
+    };
+  };
+
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
-
 }
diff --git a/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch
new file mode 100644
index 00000000000..2229302cab7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch
@@ -0,0 +1,15 @@
+--- a/plugins/datetime/tz.h
++++ b/plugins/datetime/tz.h
+@@ -27,11 +27,7 @@
+ 
+ #include <glib.h>
+ 
+-#ifndef __sun
+-#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+-#else
+-#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
+-#endif
++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
+ 
+ typedef struct _TzDB TzDB;
+ typedef struct _TzLocation TzLocation;
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
index a76dd35711a..0d856e494c3 100644
--- a/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix
@@ -1,26 +1,27 @@
-{ stdenv, intltool, fetchurl, libgtop, pkgconfig, gtk3, glib
-, bash, makeWrapper, itstool, gnome3, file }:
+{ stdenv, fetchurl, meson, ninja, gettext, pkgconfig, spidermonkey_52, glib, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "gnome-shell-extensions-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell-extensions/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "aefda4d810ef5ceb9402e2d620f4bdc1dc40c9cc4f6a51749840f7dd08628ab6";
+    sha256 = "00xm5r4q40c0ji80vrsqg2fkrvzb1nm75p3ikv6bsmd3gfvwwp91";
   };
 
   passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-shell-extensions"; attrPath = "gnome3.gnome-shell-extensions"; };
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-shell-extensions";
+      attrPath = "gnome3.gnome-shell-extensions";
+    };
   };
 
   doCheck = true;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib libgtop intltool itstool
-                  makeWrapper file ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext glib ];
+  buildInputs = [ spidermonkey_52 ];
 
-  configureFlags = [ "--enable-extensions=all" ];
+  mesonFlags = [ "-Dextension_set=all" ];
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions;
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
index 026f5436237..70177d0a516 100644
--- a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
@@ -1,10 +1,10 @@
-{ fetchurl, fetchpatch, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, libcroco, gettext, libsecret
+{ fetchurl, fetchpatch, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, libcroco, gettext, libsecret
 , python3Packages, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core
-, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, p11-kit, unzip, glibcLocales
-, sqlite, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42
+, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info
+, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42
 , libpulseaudio, libical, nss, gobjectIntrospection, gstreamer, wrapGAppsHook
 , accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet
-, gst_all_1 }:
+, sassc, systemd, gst_all_1 }:
 
 # http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup
 
@@ -13,11 +13,11 @@ let
 
 in stdenv.mkDerivation rec {
   name = "gnome-shell-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-shell/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "e5a87f2f838d981db9823352b90b2ce2f40d24d31ed9f062dccfa41b820e0b1c";
+    sha256 = "0kmsh305cfr3fg40rhwykqbl466lwcq9djda25kf29ib7h6w1pn7";
   };
 
   # Needed to find /etc/NetworkManager/VPN
@@ -25,21 +25,26 @@ in stdenv.mkDerivation rec {
 
   LANG = "en_US.UTF-8";
 
-  nativeBuildInputs = [ meson ninja gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales ];
-  buildInputs = with gnome3;
-    [ gsettings-desktop-schemas gnome-keyring gnome-menus glib gcr json-glib accountsservice
-      libcroco libsecret pkgconfig libsoup polkit gdk_pixbuf
-      (librsvg.override { enableIntrospection = true; })
-      clutter networkmanager libstartup_notification telepathy-glib
-      libXtst p11-kit networkmanagerapplet gjs mutter libpulseaudio caribou evolution-data-server
-      libical nss gtk gstreamer gdm
-      libcanberra-gtk3 gnome-control-center geoclue2
-      defaultIconTheme sqlite gnome3.gnome-bluetooth
-      libgweather # not declared at build time, but typelib is needed at runtime
-      gnome3.gnome-clocks # schemas needed
-      at-spi2-core upower ibus gnome-desktop telepathy-logger gnome3.gnome-settings-daemon
-      gst_all_1.gst-plugins-good # recording
-      gobjectIntrospection (stdenv.lib.getLib dconf) ];
+  nativeBuildInputs = [
+    meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales
+    sassc
+  ];
+  buildInputs = with gnome3; [
+    systemd caribou
+    gsettings-desktop-schemas gnome-keyring glib gcr json-glib accountsservice
+    libcroco libsecret libsoup polkit gdk_pixbuf librsvg
+    clutter networkmanager libstartup_notification telepathy-glib
+    libXtst gjs mutter libpulseaudio evolution-data-server
+    libical gtk gstreamer gdm libcanberra-gtk3 geoclue2
+    defaultIconTheme gnome3.gnome-bluetooth
+    gnome3.gnome-clocks # schemas needed
+    at-spi2-core upower ibus gnome-desktop telepathy-logger gnome3.gnome-settings-daemon
+    gst_all_1.gst-plugins-good # recording
+    gobjectIntrospection
+
+    # not declared at build time, but typelib is needed at runtime
+    libgweather networkmanagerapplet
+  ];
   propagatedUserEnvPkgs = [
     # Needed to support on-screen keyboard used with touch screen devices
     # see https://github.com/NixOS/nixpkgs/issues/25968
@@ -52,7 +57,10 @@ in stdenv.mkDerivation rec {
       url = https://bug787864.bugzilla-attachments.gnome.org/attachment.cgi?id=360016;
       sha256 = "1dmahd8ysbzh33rxglba0fbq127aw9h14cl2a2bw9913vjxhxijm";
     })
-    ./fix-paths.patch
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit unzip;
+    })
   ];
 
   postPatch = ''
@@ -60,28 +68,34 @@ in stdenv.mkDerivation rec {
 
     substituteInPlace src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
     substituteInPlace src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
-    substituteInPlace js/ui/extensionDownloader.js --replace "unzip" "${unzip}/bin/unzip"
   '';
 
   postInstall = ''
     glib-compile-schemas $out/share/glib-2.0/schemas
   '';
 
-  postFixup = ''
-    # Patched meson does not add internal libraries to rpath
-    patchelf --set-rpath "$out/lib/gnome-shell:$(patchelf --print-rpath $out/bin/.gnome-shell-wrapped)" $out/bin/.gnome-shell-wrapped
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # Until glib’s xdgmime is patched
+      # Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format”
+      --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
+    )
   '';
 
-  enableParallelBuilding = true;
-
   passthru = {
     mozillaPlugin = "/lib/mozilla/plugins";
-    updateScript = gnome3.updateScript { packageName = "gnome-shell"; attrPath = "gnome3.gnome-shell"; };
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-shell";
+      attrPath = "gnome3.gnome-shell";
+    };
   };
 
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    description = "Core user interface for the GNOME 3 desktop";
+    homepage = https://wiki.gnome.org/Projects/GnomeShell;
+    license = licenses.gpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
index b24049f9b9f..7b7ff85a7c8 100644
--- a/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
+++ b/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
@@ -1,18 +1,11 @@
-diff --git a/meson.build b/meson.build
-index 4c1f5c63b..a9edb8795 100644
---- a/meson.build
-+++ b/meson.build
-@@ -59,12 +59,7 @@ servicedir = join_paths(datadir, 'dbus-1', 'services')
- 
- plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir)
- 
--keybindings_dep = dependency('gnome-keybindings', required: false)
--if keybindings_dep.found()
--  keysdir = keybindings_dep.get_pkgconfig_variable('keysdir')
--else
--  keysdir = join_paths(datadir, 'gnome-control-center', 'keybindings')
--endif
-+keysdir = join_paths(datadir, 'gnome-control-center', 'keybindings')
- 
- atk_bridge_dep = dependency('atk-bridge-2.0')
- canberra_dep = dependency('libcanberra')
+--- a/js/ui/extensionDownloader.js
++++ b/js/ui/extensionDownloader.js
+@@ -86,7 +86,7 @@
+     stream.output_stream.write_bytes(contents, null);
+     stream.close(null);
+     let [success, pid] = GLib.spawn_async(null,
+-                                          ['unzip', '-uod', dir.get_path(), '--', file.get_path()],
++                                          ['@unzip@/bin/unzip', '-uod', dir.get_path(), '--', file.get_path()],
+                                           null,
+                                           GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+                                           null);
diff --git a/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
index 8996a4cc3e9..2c4663b54ec 100644
--- a/pkgs/desktops/gnome-3/core/gnome-software/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree
-, glib, appstream-glib, libsoup, polkit, isocodes, gtkspell3, libxslt
+, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobjectIntrospection
 , json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, gtk-doc, desktop-file-utils }:
 
 stdenv.mkDerivation rec {
   name = "gnome-software-${version}";
-  version = "3.26.7";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-software/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "00lfzvlicqd8gk5ijnjdi36ikmhdzvfjj993rpf7mm04ncw4k0za";
+    sha256 = "0zwbgxzl805c4l8kwy5bn3p91s2qxlcn4syzzg4vd4kilc6nnjwk";
   };
 
   patches = [
@@ -20,19 +20,16 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     meson ninja pkgconfig gettext wrapGAppsHook libxslt docbook_xml_dtd_42
-    valgrind-light docbook_xsl gtk-doc desktop-file-utils
+    valgrind-light docbook_xsl gtk-doc desktop-file-utils gobjectIntrospection
   ];
 
   buildInputs = [
     gnome3.gtk glib packagekit appstream-glib libsoup
     gnome3.gsettings-desktop-schemas gnome3.gnome-desktop
-    gtkspell3 json-glib libsecret ostree
+    gspell json-glib libsecret ostree
     polkit
   ];
 
-  # https://gitlab.gnome.org/GNOME/gnome-software/issues/320
-  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
-
   mesonFlags = [
     "-Denable-flatpak=false"
     "-Denable-rpm=false"
diff --git a/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch
index 239e1781bb1..6f443a8a43e 100644
--- a/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch
+++ b/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch
@@ -5,7 +5,7 @@
  
  	/* find filename */
 -	filename = g_build_filename (DATADIR, "xml", "iso-codes", "iso_639.xml", NULL);
-+	filename = g_build_filename ("@isoCodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL);
++	filename = g_build_filename ("@isocodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL);
  	if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
  		g_free (filename);
  		filename = g_build_filename ("/usr", "share", "xml", "iso-codes", "iso_639.xml", NULL);
diff --git a/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
index 0e64bc4362c..5f707152aed 100644
--- a/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix
@@ -1,43 +1,41 @@
-{ stdenv, intltool, fetchurl, pkgconfig, gtkmm3, libxml2
+{ stdenv, gettext, fetchurl, pkgconfig, gtkmm3, libxml2, polkit
 , bash, gtk3, glib, wrapGAppsHook
 , itstool, gnome3, librsvg, gdk_pixbuf, libgtop, systemd }:
 
 stdenv.mkDerivation rec {
   name = "gnome-system-monitor-${version}";
-  version = "3.26.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-system-monitor/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "f848a8c2ca5e164cf09d3a205dd49e4e4bf4b60d43b0969c10443eb519d0e6b3";
-  };
-
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-system-monitor"; attrPath = "gnome3.gnome-system-monitor"; };
+    sha256 = "1wvgx5p0a29d8yzp7rinpln90pg8vsjagqlvm4cxyhnl5hsdvrvn";
   };
 
   doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome-themes-standard ];
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ bash gtk3 glib intltool itstool libxml2
-                  gtkmm3 libgtop wrapGAppsHook
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg
-                  gnome3.gsettings-desktop-schemas systemd ];
-
-  preFixup = ''
-    gappsWrapperArgs+=(
-      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome-themes-standard}/share"
-    )
-  '';
+  nativeBuildInputs = [
+    pkgconfig gettext itstool wrapGAppsHook
+    polkit # for ITS file
+  ];
+  buildInputs = [
+    bash gtk3 glib libxml2 gtkmm3 libgtop gdk_pixbuf gnome3.defaultIconTheme librsvg
+    gnome3.gsettings-desktop-schemas systemd
+  ];
 
   # fails to build without --enable-static
   configureFlags = ["--enable-systemd" "--enable-static"];
 
   enableParallelBuilding = true;
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "gnome-system-monitor";
+      attrPath = "gnome3.gnome-system-monitor";
+    };
+  };
+
   meta = with stdenv.lib; {
-    homepage = https://help.gnome.org/users/gnome-system-monitor/3.12/;
+    homepage = https://wiki.gnome.org/Apps/SystemMonitor;
     description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used";
     maintainers = gnome3.maintainers;
     license = licenses.gpl2;
diff --git a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
index 703bb6fe110..9e99e84cfd5 100644
--- a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-terminal-${version}";
-  version = "3.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-terminal/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "3a9ba414a814569476515275ad303d8056f296b2669234447712559aa97005b0";
+    sha256 = "1i5wlcjb0aigm1lbmn16nmh9rkjqfdpzzgf6qw7mcrhgw7pdald5";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix b/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix
new file mode 100644
index 00000000000..dd11da3b11e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2
+, gdk_pixbuf }:
+
+let
+  pname = "gnome-themes-extra";
+  version = "3.27.92";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "04jwsg9f29vzhcmf146d3rr27c8ldra378m465ahsal9vaaiywcm";
+  };
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+    };
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+  buildInputs = [ gtk3 librsvg pango atk gtk2 gdk_pixbuf gnome3.defaultIconTheme ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/core/gnome-themes-standard/default.nix
deleted file mode 100644
index 720120b392d..00000000000
--- a/pkgs/desktops/gnome-3/core/gnome-themes-standard/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2
-, gdk_pixbuf }:
-
-stdenv.mkDerivation rec {
-  name = "gnome-themes-standard-${version}";
-  version = "3.22.3";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/gnome-themes-standard/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "61dc87c52261cfd5b94d65e8ffd923ddeb5d3944562f84942eeeb197ab8ab56a";
-  };
-
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gnome-themes-standard"; };
-  };
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool gtk3 librsvg pango atk gtk2 gdk_pixbuf
-                  gnome3.defaultIconTheme ];
-
-  meta = with stdenv.lib; {
-    platforms = platforms.linux;
-    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 8854e7a2d0c..d4ba838bef3 100644
--- a/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-user-docs-${version}";
-  version = "3.26.2.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-user-docs/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "93136f5baffd160c14e1b39f0ac60b9768975edac2da2b30c945faef534af8f5";
+    sha256 = "0sx46j61kjn8kaf75303vym5sigki239pqzf5q4n72k1hwp7albp";
   };
 
   passthru = {
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 642ee0badf1..36748566880 100644
--- a/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "gnome-user-share-${version}";
-  version = "3.18.3";
+  version = "3.27.90";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnome-user-share/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "3092fa7ad137531e35484195dde4ecbbc75a8a3d9b8209aef4c852717cf4bbf1";
+    sha256 = "1wd183cjr1gmzpsq7bqwkwhmcdng0m105f6ymc89r17fz85f4jhy";
   };
 
   passthru = {
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 89614a327a6..e5ca314c69a 100644
--- a/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
+++ b/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "gsettings-desktop-schemas-${version}";
-  version = "3.24.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gsettings-desktop-schemas/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "76a3fa309f9de6074d66848987214f0b128124ba7184c958c15ac78a8ac7eea7";
+    sha256 = "0rwidacwrxlc54x90h9g3wx2zlisc4vm49vmxi15azmpj1vwvd2c";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/core/gtksourceview/default.nix
deleted file mode 100644
index a870b16f925..00000000000
--- a/pkgs/desktops/gnome-3/core/gtksourceview/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk3, pango
-, libxml2, perl, intltool, gettext, gnome3, gobjectIntrospection, dbus, xvfb_run, shared-mime-info }:
-
-let
-  checkInputs = [ xvfb_run dbus ];
-in stdenv.mkDerivation rec {
-  name = "gtksourceview-${version}";
-  version = "3.24.6";
-
-  src = fetchurl {
-    url = "mirror://gnome/sources/gtksourceview/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "7aa6bdfebcdc73a763dddeaa42f190c40835e6f8495bb9eb8f78587e2577c188";
-  };
-
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "gtksourceview"; attrPath = "gnome3.gtksourceview"; };
-  };
-
-  propagatedBuildInputs = [
-    # Required by gtksourceview-3.0.pc
-    gtk3
-    # Used by gtk_source_language_manager_guess_language
-    shared-mime-info
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ pkgconfig intltool gettext perl gobjectIntrospection ]
-    ++ stdenv.lib.optionals doCheck checkInputs;
-
-  buildInputs = [ atk cairo glib pango libxml2 ];
-
-  preBuild = ''
-    substituteInPlace gtksourceview/gtksourceview-utils.c --replace "@NIX_SHARE_PATH@" "$out/share"
-  '';
-
-  patches = [ ./nix_share_path.patch ];
-
-  enableParallelBuilding = true;
-
-  doCheck = stdenv.isLinux;
-  checkPhase = ''
-    export NO_AT_BRIDGE=1
-    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
-      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
-      make check
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/Projects/GtkSourceView;
-    platforms = with platforms; linux ++ darwin;
-    license = licenses.lgpl21;
-    maintainers = gnome3.maintainers;
-  };
-}
diff --git a/pkgs/desktops/gnome-3/core/gtksourceview/nix_share_path.patch b/pkgs/desktops/gnome-3/core/gtksourceview/nix_share_path.patch
deleted file mode 100644
index c87350167c2..00000000000
--- a/pkgs/desktops/gnome-3/core/gtksourceview/nix_share_path.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/gtksourceview/gtksourceview-utils.c	2014-07-13 16:13:57.418687726 +0200
-+++ b/gtksourceview/gtksourceview-utils.c	2014-07-13 16:14:20.550847767 +0200
-@@ -68,6 +68,8 @@
- 							 basename,
- 							 NULL));
- 
-+        g_ptr_array_add (dirs, g_build_filename ("@NIX_SHARE_PATH@", SOURCEVIEW_DIR, basename, NULL));
-+
- 	g_ptr_array_add (dirs, NULL);
- 
- 	return (gchar**) g_ptr_array_free (dirs, FALSE);
diff --git a/pkgs/desktops/gnome-3/core/gtksourceviewmm/default.nix b/pkgs/desktops/gnome-3/core/gtksourceviewmm/default.nix
index ae4f75bf76a..0a37144d8f7 100644
--- a/pkgs/desktops/gnome-3/core/gtksourceviewmm/default.nix
+++ b/pkgs/desktops/gnome-3/core/gtksourceviewmm/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "gtksourceviewmm-${version}";
-  version = "3.21.2";
+  version = "3.21.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gtksourceviewmm/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "d21296d8624a1046841bfec082021b7b966df0b62e19ee300828519bc54dd9c6";
+    sha256 = "1danc9mp5mnb65j01qxkwj92z8jf1gns41wbgp17qh7050f0pc6v";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/core/gucharmap/default.nix
index ff9b232cb7a..45a4a97205b 100644
--- a/pkgs/desktops/gnome-3/core/gucharmap/default.nix
+++ b/pkgs/desktops/gnome-3/core/gucharmap/default.nix
@@ -1,18 +1,15 @@
-{ stdenv, intltool, fetchurl, pkgconfig, gtk3
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3, defaultIconTheme
 , glib, desktop-file-utils, bash, appdata-tools
 , wrapGAppsHook, gnome3, itstool, libxml2
 , callPackage, unzip, gobjectIntrospection }:
 
-# TODO: icons and theme still does not work
-# use packaged gnome3.adwaita-icon-theme
-
 stdenv.mkDerivation rec {
   name = "gucharmap-${version}";
-  version = "10.0.3";
+  version = "10.0.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gucharmap/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "ac07d75924e2d8f436d9492e8f7d54cf109404d34de06886a3967563cd1726a4";
+    sha256 = "00gh3lll6wykd2qg1lrj05a4wvscsypmrx7rpb6jsbvb4scnh9mv";
   };
 
   passthru = {
@@ -21,8 +18,6 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome-themes-standard ];
-
   preConfigure = "patchShebangs gucharmap/gen-guch-unicode-tables.pl";
 
   nativeBuildInputs = [
@@ -30,7 +25,7 @@ stdenv.mkDerivation rec {
     gnome3.yelp-tools libxml2 desktop-file-utils gobjectIntrospection
   ];
 
-  buildInputs = [ gtk3 glib gnome3.gsettings-desktop-schemas ];
+  buildInputs = [ gtk3 glib gnome3.gsettings-desktop-schemas defaultIconTheme ];
 
   unicode-data = callPackage ./unicode-data.nix {};
 
diff --git a/pkgs/desktops/gnome-3/core/libgee/default.nix b/pkgs/desktops/gnome-3/core/libgee/default.nix
index a5ce9ee5e10..a65d0f401f0 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 67003f45164..00000000000
--- 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/libgepub/default.nix b/pkgs/desktops/gnome-3/core/libgepub/default.nix
index cb771fc1989..f43b1de46e5 100644
--- a/pkgs/desktops/gnome-3/core/libgepub/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgepub/default.nix
@@ -3,13 +3,13 @@
 
 let
   pname = "libgepub";
-  version = "0.5.3";
+  version = "0.6.0";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0gn14k1qnkfj0677i2wc42ig4m8biqib9apk23dnl92m3h1f2lmb";
+    sha256 = "16dkyywqdnfngmwsgbyga0kl9vcnzczxi3lmhm27pifrq5f3k2n7";
   };
 
   doCheck = true;
diff --git a/pkgs/desktops/gnome-3/core/libgweather/default.nix b/pkgs/desktops/gnome-3/core/libgweather/default.nix
index ad14abb1000..7c513e9398a 100644
--- a/pkgs/desktops/gnome-3/core/libgweather/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgweather/default.nix
@@ -1,30 +1,45 @@
-{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf
-, pango, gdk_pixbuf, atk, tzdata, gnome3 }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, libxml2, glib, gtk, gettext, libsoup
+, gtk-doc, docbook_xsl, gobjectIntrospection, tzdata, geocode-glib, vala, gnome3 }:
 
-stdenv.mkDerivation rec {
-  name = "libgweather-${version}";
-  version = "3.26.1";
+let
+  pname = "libgweather";
+  version = "3.28.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
-  src = fetchurl {
-    url = "mirror://gnome/sources/libgweather/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "fca78470b345bce948e0333cab0a7c52c32562fc4a75de37061248a64e8fc4b8";
-  };
+  outputs = [ "out" "dev" "devdoc" ];
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "libgweather"; attrPath = "gnome3.libgweather"; };
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "13z12ra5fhn7xhsrskd7q8dnc2qnd1kylhndg6zlhk0brj6yfjsr";
   };
 
-  configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" "--enable-vala" ];
-  propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk gnome3.geocode-glib ];
-  nativeBuildInputs = [ pkgconfig intltool gnome3.vala ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext vala gtk-doc docbook_xsl gobjectIntrospection ];
+  buildInputs = [ glib gtk libsoup libxml2 geocode-glib ];
 
-  # Prevent building vapi into ${vala} derivation directory
-  prePatch = ''
-    substituteInPlace libgweather/Makefile.in --replace "\$(DESTDIR)\$(vapidir)" "\$(DESTDIR)\$(girdir)/../vala/vapi"
+  postPatch = ''
+    chmod +x meson/meson_post_install.py
+    patchShebangs meson/meson_post_install.py
   '';
 
+  mesonFlags = [
+    "-Dzoneinfo_dir=${tzdata}/share/zoneinfo"
+    "-Denable_vala=true"
+    "-Dgtk_doc=true"
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    description = "A library to access weather information from online services for numerous locations";
+    homepage = https://wiki.gnome.org/Projects/LibGWeather;
+    license = licenses.gpl2Plus;
     maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/libzapojit/default.nix b/pkgs/desktops/gnome-3/core/libzapojit/default.nix
index 11761bd3412..10c6185fa82 100644
--- a/pkgs/desktops/gnome-3/core/libzapojit/default.nix
+++ b/pkgs/desktops/gnome-3/core/libzapojit/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, intltool, json-glib, rest, libsoup, gtk, gnome-online-accounts, gnome3 }:
+{ stdenv, fetchurl, pkgconfig, glib, intltool, json-glib, rest, libsoup, gnome-online-accounts, gnome3, gobjectIntrospection }:
 let
   pname = "libzapojit";
   version = "0.0.3";
@@ -6,13 +6,15 @@ in
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
+  outputs = [ "out" "dev" ];
+
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
     sha256 = "0zn3s7ryjc3k1abj4k55dr2na844l451nrg9s6cvnnhh569zj99x";
   };
 
-  nativeBuildInputs = [ pkgconfig intltool ];
-  buildInputs = [ glib json-glib rest libsoup gtk gnome-online-accounts ];
+  nativeBuildInputs = [ pkgconfig intltool gobjectIntrospection ];
+  propagatedBuildInputs = [ glib json-glib rest libsoup gnome-online-accounts ]; # zapojit-0.0.pc
 
   passthru = {
     updateScript = gnome3.updateScript {
diff --git a/pkgs/desktops/gnome-3/core/mutter/default.nix b/pkgs/desktops/gnome-3/core/mutter/default.nix
index dc89c8c674a..623d2b1251e 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.26.2";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/mutter/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "83309feb05a4635c47713665c0592af8ab6d7f17a36e4bd626d67609b6422fab";
+    sha256 = "1c46sf10mgvwgym4c6hbjm7wa82dvfv8j8dx4zdbc7zj4n0grzsq";
   };
 
   passthru = {
@@ -29,15 +29,6 @@ stdenv.mkDerivation rec {
     "--with-xwayland-path=${xwayland}/bin/Xwayland"
   ];
 
-  patches = [
-    # Pipewire 0.1.8 compatibility
-    (fetchurl {
-      name = "mutter-pipewire-0.1.8-compat.patch";
-      url = https://bugzilla.gnome.org/attachment.cgi?id=367356;
-      sha256 = "10bx5zf11wwhhy686w11ggikk56pbxydpbk9fbd947ir385x92cz";
-    })
-  ];
-
   propagatedBuildInputs = [
     # required for pkgconfig to detect mutter-clutter
     libXtst
diff --git a/pkgs/desktops/gnome-3/core/nautilus/default.nix b/pkgs/desktops/gnome-3/core/nautilus/default.nix
index 8ed7bb2f01a..a52ec342675 100644
--- a/pkgs/desktops/gnome-3/core/nautilus/default.nix
+++ b/pkgs/desktops/gnome-3/core/nautilus/default.nix
@@ -1,31 +1,28 @@
 { stdenv, fetchurl, meson, ninja, pkgconfig, gettext, libxml2, desktop-file-utils, wrapGAppsHook
 , gtk, gnome3, gnome-autoar, glib, dbus-glib, shared-mime-info, libnotify, libexif
-, exempi, librsvg, tracker, tracker-miners, libselinux, gdk_pixbuf }:
+, exempi, librsvg, tracker, tracker-miners, gnome-desktop, gexiv2, libselinux, gdk_pixbuf }:
 
-stdenv.mkDerivation rec {
-  name = "nautilus-${version}";
-  version = "3.26.2";
+let
+  pname = "nautilus";
+  version = "3.28.0.1";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/nautilus/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "79c99404c665ea76b3db86f261fbd28a62b54c51429b05c3314462c9de2614b4";
-  };
-
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "nautilus"; attrPath = "gnome3.nautilus"; };
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
+    sha256 = "1i3li3nd434vncd6j6has73xihbzjx1ab0xyw8wif11mym15ixrh";
   };
 
   nativeBuildInputs = [ meson ninja pkgconfig libxml2 gettext wrapGAppsHook desktop-file-utils ];
 
-  buildInputs = [ dbus-glib shared-mime-info libexif gtk exempi libnotify libselinux
-                  tracker tracker-miners gnome3.gnome-desktop gnome3.adwaita-icon-theme
-                  gnome3.gsettings-desktop-schemas ];
+  buildInputs = [
+    dbus-glib shared-mime-info libexif gtk exempi libnotify libselinux
+    tracker tracker-miners gnome-desktop gexiv2
+    gnome3.adwaita-icon-theme gnome3.gsettings-desktop-schemas
+  ];
 
   propagatedBuildInputs = [ gnome-autoar ];
 
-  # fatal error: gio/gunixinputstream.h: No such file or directory
-  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
-
   preFixup = ''
     gappsWrapperArgs+=(
       # Thumbnailers
@@ -35,16 +32,23 @@ stdenv.mkDerivation rec {
     )
   '';
 
-#  hardeningDisable = [ "format" ];
-  enableParallelBuilding = true;
-
   postPatch = ''
     patchShebangs build-aux/meson/postinstall.py
   '';
 
   patches = [ ./extension_dir.patch ];
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
+    description = "The file manager for GNOME";
+    homepage = https://wiki.gnome.org/Apps/Files;
+    license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = gnome3.maintainers;
   };
diff --git a/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
index a40a8fe8f81..3528a9a93d9 100644
--- a/pkgs/desktops/gnome-3/core/simple-scan/default.nix
+++ b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "simple-scan-${version}";
-  version = "3.26.3";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/simple-scan/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "0galkcc76j0p016fvwn16llh0kh4ykvjy4v7kc6qqnlp38g174n3";
+    sha256 = "0ki95d0v9l0pb5jvk1v8k49vb7snp9j7bnxw3m8q63m00yl33qhz";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix
index ef6bc97b1c6..457cee3b3f2 100644
--- a/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix
+++ b/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, gmime, libxml2, libsoup, gnome3 }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, gmime, libxml2, libsoup, gobjectIntrospection, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "totem-pl-parser-${version}";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     updateScript = gnome3.updateScript { packageName = "totem-pl-parser"; attrPath = "gnome3.totem-pl-parser"; };
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext gobjectIntrospection ];
   buildInputs = [ gmime libxml2 libsoup ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/tracker-miners/default.nix b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
index 56292330e01..b612db9ce38 100644
--- a/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
@@ -9,25 +9,23 @@
 , libsoup, json-glib, libseccomp
 , libiptcdata }:
 
-stdenv.mkDerivation rec {
-  name = "tracker-miners-${version}";
+let
+  pname = "tracker-miners";
   version = "2.0.4";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/tracker-miners/${gnome3.versionBranch version}/${name}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
     sha256 = "0mp9m2waii583sjgr61m1ni6py6dry11r0rzidgvw1g4cxhn89j6";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "tracker-miners"; attrPath = "gnome3.tracker-miners"; };
-  };
-
   NIX_CFLAGS_COMPILE = "-I${poppler.dev}/include/poppler";
 
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ vala pkgconfig intltool itstool libxslt wrapGAppsHook ];
-  # TODO: add libgrss, libenca
+  # TODO: add libgrss, libenca, libosinfo
   buildInputs = [
     bzip2 evolution-data-server exempi flac giflib glib gnome3.totem-pl-parser
     gnome3.tracker gst_all_1.gst-plugins-base gst_all_1.gstreamer icu
@@ -46,6 +44,13 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/Tracker;
     description = "Desktop-neutral user information store, search tool and indexer";
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 9ed93fbcca9..847e3bf204d 100644
--- a/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/fix-paths.patch
@@ -1,5 +1,14 @@
 --- a/src/libtracker-miners-common/tracker-domain-ontology.c
 +++ b/src/libtracker-miners-common/tracker-domain-ontology.c
+@@ -313,7 +313,7 @@
+ 			goto end;
+ 		}
+ 	} else {
+-		path = g_build_filename (SHAREDIR, "tracker", "domain-ontologies",
++		path = g_build_filename ("@tracker@", "share", "tracker", "domain-ontologies",
+ 		                         DEFAULT_RULE, NULL);
+ 
+ 		if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) {
 @@ -372,7 +372,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 61ae06ec066..cbf16c6807f 100644
--- a/pkgs/desktops/gnome-3/core/tracker/default.nix
+++ b/pkgs/desktops/gnome-3/core/tracker/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchurl, intltool, pkgconfig
+{ stdenv, fetchurl, intltool, pkgconfig, gobjectIntrospection
 , libxml2, upower, glib, wrapGAppsHook, vala, sqlite, libxslt
 , gnome3, icu, libuuid, networkmanager, libsoup, json-glib }:
 
-stdenv.mkDerivation rec {
-  name = "tracker-${version}";
+let
+  pname = "tracker";
   version = "2.0.3";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  outputs = [ "out" "dev" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/tracker/${gnome3.versionBranch version}/${name}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${gnome3.versionBranch version}/${name}.tar.xz";
     sha256 = "1005w90vhk1cl8g6kxpy2vdzbskw2jskfjcl42lngv18q5sb4bss";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "tracker"; attrPath = "gnome3.tracker"; };
-  };
-
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ vala pkgconfig intltool libxslt wrapGAppsHook ];
+  nativeBuildInputs = [ vala pkgconfig intltool libxslt wrapGAppsHook gobjectIntrospection ];
   # TODO: add libstemmer
   buildInputs = [
     glib libxml2 sqlite upower icu networkmanager libsoup libuuid json-glib
@@ -30,6 +30,13 @@ stdenv.mkDerivation rec {
     patchShebangs utils/g-ir-merge/g-ir-merge
   '';
 
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "gnome3.${pname}";
+    };
+  };
+
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/Tracker;
     description = "Desktop-neutral user information store, search tool and indexer";
diff --git a/pkgs/desktops/gnome-3/core/vino/default.nix b/pkgs/desktops/gnome-3/core/vino/default.nix
index 4365451636a..65c6ace8eec 100644
--- a/pkgs/desktops/gnome-3/core/vino/default.nix
+++ b/pkgs/desktops/gnome-3/core/vino/default.nix
@@ -1,11 +1,8 @@
 { stdenv, fetchurl, lib, wrapGAppsHook
 , pkgconfig, gnome3, gtk3, glib, intltool, libXtst, libnotify, libsoup
 , telepathySupport ? false, dbus-glib ? null, telepathy-glib ? null
-, libsecret ? null, gnutls ? null, libgcrypt ? null, avahi ? null
-, zlib ? null, libjpeg ? null
-, libXdamage ? null, libXfixes ? null, libXext ? null
-, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
-, networkmanager ? null }:
+, libsecret, gnutls, libgcrypt, avahi, zlib, libjpeg, libXdamage, libXfixes, libXext
+, networkmanager }:
 
 with lib;
 
@@ -18,28 +15,25 @@ stdenv.mkDerivation rec {
     sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab";
   };
 
-  passthru = {
-    updateScript = gnome3.updateScript { packageName = "vino"; attrPath = "gnome3.vino"; };
-  };
-
   doCheck = true;
 
+  nativeBuildInputs = [ intltool wrapGAppsHook pkgconfig ];
+
   buildInputs = [
-    wrapGAppsHook
-    pkgconfig gnome3.defaultIconTheme gtk3 glib intltool libXtst libnotify libsoup
-  ] ++ optionals telepathySupport [ dbus-glib telepathy-glib ]
-    ++ optional gnomeKeyringSupport libgnome-keyring3
-    ++ filter (p: p != null) [
-      libsecret gnutls libgcrypt avahi zlib libjpeg
-      libXdamage libXfixes libXext networkmanager
-    ];
-
-  preFixup = ''
-    export GSETTINGS_SCHEMAS_PATH="$out/share/gsettings-schemas/${name}:$GSETTINGS_SCHEMAS_PATH"
-  '';
+    gnome3.defaultIconTheme gtk3 glib libXtst libnotify libsoup
+    libsecret gnutls libgcrypt avahi zlib libjpeg
+    libXdamage libXfixes libXext networkmanager
+  ] ++ optionals telepathySupport [ dbus-glib telepathy-glib ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = "vino";
+      attrPath = "gnome3.vino";
+    };
+  };
 
   meta = with stdenv.lib; {
-    homepage = https://wiki.gnome.org/action/show/Projects/Vino;
+    homepage = https://wiki.gnome.org/Projects/Vino;
     description = "GNOME desktop sharing server";
     maintainers = with maintainers; [ lethalman domenkozar ];
     license = licenses.gpl2;
diff --git a/pkgs/desktops/gnome-3/core/vte/default.nix b/pkgs/desktops/gnome-3/core/vte/default.nix
index 4abeb2ba961..73fd244c548 100644
--- a/pkgs/desktops/gnome-3/core/vte/default.nix
+++ b/pkgs/desktops/gnome-3/core/vte/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "vte-${version}";
-  version = "0.50.2";
+  version = "0.52.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/vte/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "79dd316bfaff48f2fb74d066baae0d830e1f44436796fe410a57297e5c5f09cf";
+    sha256 = "0rq5gkg7bfrxlsm8mgdh4605hki81wljmjhhz8x4kbspvpfp5bnm";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/yelp-tools/default.nix b/pkgs/desktops/gnome-3/core/yelp-tools/default.nix
index 28e89cad9fb..5a0a5bd43b5 100644
--- a/pkgs/desktops/gnome-3/core/yelp-tools/default.nix
+++ b/pkgs/desktops/gnome-3/core/yelp-tools/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "yelp-tools-${version}";
-  version = "3.18.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp-tools/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "c6c1d65f802397267cdc47aafd5398c4b60766e0a7ad2190426af6c0d0716932";
+    sha256 = "1b61dmlb1sd50fgq6zgnkcpx2s1py33q0x9cx67fzpsr4gmgxnw2";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
index 341a7d7582c..f904a90454f 100644
--- a/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
+++ b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   name = "yelp-xsl-${version}";
-  version = "3.20.1";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp-xsl/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "dc61849e5dca473573d32e28c6c4e3cf9c1b6afe241f8c26e29539c415f97ba0";
+    sha256 = "14rznm1qpsnmkwksnkd5j7zplakl01kvrcw0fdmd5gdc65xz9kcc";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/yelp/default.nix b/pkgs/desktops/gnome-3/core/yelp/default.nix
index 661ddc1f12f..60b91aaa04a 100644
--- a/pkgs/desktops/gnome-3/core/yelp/default.nix
+++ b/pkgs/desktops/gnome-3/core/yelp/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "yelp-${version}";
-  version = "3.26.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/yelp/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "e4cb02ed2f44cfec3c352c957f8a461d9689cbc06eb3b503a58ffe92e1753f1b";
+    sha256 = "05qzczxnxk374cp4an166gv60nkbd0jq3pp2fwy7s9rnkm55jz6v";
   };
 
   passthru = {
diff --git a/pkgs/desktops/gnome-3/core/zenity/default.nix b/pkgs/desktops/gnome-3/core/zenity/default.nix
index fd55fd9f87a..05637e200e3 100644
--- a/pkgs/desktops/gnome-3/core/zenity/default.nix
+++ b/pkgs/desktops/gnome-3/core/zenity/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   name = "zenity-${version}";
-  version = "3.26.0";
+  version = "3.28.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/zenity/${gnome3.versionBranch version}/${name}.tar.xz";
-    sha256 = "6a7f34626dd62b751fe22bcdb32f3558f8a8fdddcc9406893dd264f0ac18e830";
+    sha256 = "1y3dha9faqgy5l8wqh3qp354gzdh36fx70q2kc9k1nw7p498yn2y";
   };
 
   passthru = {