summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2017-10-04 23:50:14 +0200
committerJan Tojnar <jtojnar@gmail.com>2017-11-26 03:10:49 +0100
commit1c1d677149797d6be7e484b020aa4ac69efc55be (patch)
tree52c4d6ffad233dabe1e256e20b18b15250de9b57 /pkgs/desktops/gnome-3
parent5fae4f32fdfba5df5eec2fd300b17bbad89196b2 (diff)
downloadnixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar.gz
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar.bz2
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar.lz
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar.xz
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.tar.zst
nixpkgs-1c1d677149797d6be7e484b020aa4ac69efc55be.zip
gnome3: dependency tweaks
Diffstat (limited to 'pkgs/desktops/gnome-3')
-rw-r--r--pkgs/desktops/gnome-3/apps/evolution/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/apps/glade/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-documents/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-music/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/apps/gnome-photos/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/apps/polari/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/core/eog/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/epiphany/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/core/evolution-data-server/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/core/gcr/default.nix7
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-contacts/default.nix11
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-desktop/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix13
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-screenshot/prevent-cache-updates.patch21
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell/default.nix75
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch18
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-software/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/core/gnome-terminal/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/gsound/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/core/libgweather/default.nix9
-rw-r--r--pkgs/desktops/gnome-3/core/mutter/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/nautilus/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/core/simple-scan/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/core/totem-pl-parser/src.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/totem/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/default.nix45
-rw-r--r--pkgs/desktops/gnome-3/core/tracker-miners/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/core/tracker/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/core/tracker/src.nix6
-rw-r--r--pkgs/desktops/gnome-3/core/vte/default.nix7
-rw-r--r--pkgs/desktops/gnome-3/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch52
-rw-r--r--pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch49
-rw-r--r--pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch8
-rw-r--r--pkgs/desktops/gnome-3/misc/gnome-tweak-tool/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/misc/libgda/default.nix2
46 files changed, 484 insertions, 382 deletions
diff --git a/pkgs/desktops/gnome-3/apps/evolution/default.nix b/pkgs/desktops/gnome-3/apps/evolution/default.nix
index 3d152221a39..4996120d493 100644
--- a/pkgs/desktops/gnome-3/apps/evolution/default.nix
+++ b/pkgs/desktops/gnome-3/apps/evolution/default.nix
@@ -1,9 +1,8 @@
-{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
+{ stdenv, cmake, intltool, fetchurl, libxml2, webkitgtk, highlight
 , pkgconfig, gtk3, glib, libnotify, gtkspell3
 , wrapGAppsHook, itstool, shared_mime_info, libical, db, gcr, sqlite
-, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool
-, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit, openldap
-, cmake}:
+, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu
+, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit, openldap }:
 
 let
   majVer = gnome3.version;
@@ -15,10 +14,7 @@ in stdenv.mkDerivation rec {
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
                             gnome3.evolution_data_server ];
 
-  propagatedBuildInputs = [ gnome3.gtkhtml ];
-
-  buildInputs = [ gtk3 glib intltool itstool libxml2 libtool
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg db icu
+  buildInputs = [ gtk3 glib gdk_pixbuf gnome3.defaultIconTheme librsvg db icu
                   gnome3.evolution_data_server libsecret libical gcr
                   webkitgtk shared_mime_info gnome3.gnome_desktop gtkspell3
                   libcanberra_gtk3 bogofilter gnome3.libgdata sqlite
@@ -26,10 +22,9 @@ in stdenv.mkDerivation rec {
                   nss nspr libnotify procps highlight gnome3.libgweather
                   gnome3.gsettings_desktop_schemas
                   gnome3.libgnome_keyring gnome3.glib_networking openldap
-                  cmake
                 ];
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ cmake intltool itstool libxml2 pkgconfig wrapGAppsHook ];
 
 
   configureFlags = [ "--disable-pst-import" "--disable-autoar"
diff --git a/pkgs/desktops/gnome-3/apps/glade/default.nix b/pkgs/desktops/gnome-3/apps/glade/default.nix
index ce29ebf0a7e..e48d15e6abf 100644
--- a/pkgs/desktops/gnome-3/apps/glade/default.nix
+++ b/pkgs/desktops/gnome-3/apps/glade/default.nix
@@ -1,7 +1,7 @@
 { stdenv, intltool, fetchurl, python, autoreconfHook
-, pkgconfig, gtk3, glib
-, makeWrapper, itstool, libxml2, docbook_xsl
-, gnome3, librsvg, gdk_pixbuf, libxslt }:
+, pkgconfig, gtk3, glib, gobjectIntrospection
+, wrapGAppsHook, itstool, libxml2, docbook_xsl
+, gnome3, gdk_pixbuf, libxslt }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
@@ -9,13 +9,13 @@ stdenv.mkDerivation rec {
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
 
   nativeBuildInputs = [
-    pkgconfig intltool itstool makeWrapper docbook_xsl libxslt
+    pkgconfig intltool itstool wrapGAppsHook docbook_xsl libxslt gobjectIntrospection
     # reconfiguration
     autoreconfHook gnome3.gnome_common gnome3.yelp_tools
   ];
   buildInputs = [ gtk3 glib libxml2 python
                   gnome3.gsettings_desktop_schemas
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+                  gdk_pixbuf gnome3.defaultIconTheme ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
index cb8bf49254b..6126fed8e06 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, itstool, libvirt-glib
+{ stdenv, fetchurl, makeWrapper, pkgconfig, gettext, itstool, libvirt-glib
 , glib, gobjectIntrospection, libxml2, gtk3, gtkvnc, libvirt, spice_gtk
-, spice_protocol, libuuid, libsoup, libosinfo, systemd, tracker, vala_0_32
+, spice_protocol, libsoup, libosinfo, systemd, tracker, tracker-miners, vala
 , libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg, desktop_file_utils
 , mtools, cdrkit, libcdio, libusb, libarchive, acl, libgudev, qemu, libsecret
 , libcap_ng, numactl, xen, libapparmor
@@ -16,13 +16,13 @@ stdenv.mkDerivation rec {
   doCheck = true;
 
   nativeBuildInputs = [
-    makeWrapper pkgconfig intltool
+    makeWrapper pkgconfig gettext
   ];
 
   buildInputs = [
     itstool libvirt-glib glib gobjectIntrospection libxml2 gtk3 gtkvnc
-    libvirt spice_gtk spice_protocol libuuid libsoup libosinfo systemd
-    tracker vala_0_32 libcap yajl gmp gdbm cyrus_sasl libusb libarchive
+    libvirt spice_gtk spice_protocol libsoup libosinfo systemd
+    tracker tracker-miners vala libcap yajl gmp gdbm cyrus_sasl libusb libarchive
     gnome3.defaultIconTheme librsvg desktop_file_utils acl libgudev libsecret
     libcap_ng numactl xen libapparmor
   ];
diff --git a/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix
index 618d6152d81..c13d7e976e5 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
-, intltool, evolution_data_server, sqlite, libxml2, libsoup
+{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook
+, gettext, libxml2, gnome3, gtk, evolution_data_server, libsoup
 , glib, gnome_online_accounts, gsettings_desktop_schemas }:
 
 stdenv.mkDerivation rec {
@@ -7,13 +7,17 @@ stdenv.mkDerivation rec {
 
   NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext libxml2 wrapGAppsHook ];
   buildInputs = [
-    gtk3 wrapGAppsHook intltool evolution_data_server
-    sqlite libxml2 libsoup glib gnome3.defaultIconTheme gnome_online_accounts
-    gsettings_desktop_schemas
+    gtk evolution_data_server libsoup glib gnome_online_accounts
+    gsettings_desktop_schemas gnome3.defaultIconTheme
   ];
 
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
+
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Calendar;
     description = "Simple and beautiful calendar application for GNOME";
diff --git a/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix
index 68cd2a42fa6..1d0a9b271c2 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix
@@ -1,23 +1,26 @@
-{ stdenv, intltool, fetchurl, libgweather, libnotify
-, pkgconfig, gtk3, glib, gsound
-, makeWrapper, itstool, libcanberra_gtk3, libtool
-, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }:
+{ stdenv, fetchurl
+, meson, ninja, gettext, pkgconfig, wrapGAppsHook, itstool, desktop_file_utils
+, vala,  gtk3, glib, gsound, libcanberra_gtk3
+, gnome3, gdk_pixbuf, geoclue2, libgweather }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   doCheck = true;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool libcanberra_gtk3
-                  gnome3.gsettings_desktop_schemas makeWrapper
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+  nativeBuildInputs = [ vala meson ninja pkgconfig gettext itstool wrapGAppsHook desktop_file_utils ];
+  buildInputs = [ gtk3 glib libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas
+                  gdk_pixbuf gnome3.defaultIconTheme
                   gnome3.gnome_desktop gnome3.geocode_glib geoclue2
-                  libgweather libnotify libtool gsound
-                  wrapGAppsHook ];
+                  libgweather gsound ];
 
   enableParallelBuilding = true;
 
+  prePatch = "patchShebangs build-aux/";
+
+  checkPhase = "meson test";
+
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Clocks;
     description = "Clock application designed for GNOME 3";
diff --git a/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix
index d34334c4f64..a3f6084c9f3 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, intltool, fetchurl, evince, gjs
-, pkgconfig, gtk3, glib
-, makeWrapper, itstool, libxslt, webkitgtk
+{ stdenv, gettext, fetchurl, evince, gjs
+, pkgconfig, gtk3, glib, tracker, tracker-miners
+, itstool, libxslt, webkitgtk
 , gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl
 , gobjectIntrospection, json_glib, inkscape, poppler_utils
 , gmp, desktop_file_utils, wrapGAppsHook }:
@@ -12,16 +12,13 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--enable-getting-started" ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool libxslt
-                  docbook_xsl desktop_file_utils inkscape poppler_utils
-                  gnome3.gsettings_desktop_schemas makeWrapper gmp
+  nativeBuildInputs = [ pkgconfig gettext itstool libxslt desktop_file_utils docbook_xsl wrapGAppsHook ];
+  buildInputs = [ gtk3 glib inkscape poppler_utils
+                  gnome3.gsettings_desktop_schemas gmp
                   gdk_pixbuf gnome3.defaultIconTheme librsvg evince
                   libsoup webkitgtk gjs gobjectIntrospection gnome3.rest
-                  gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts
-                  gnome3.gnome_desktop gnome3.libzapojit json_glib
-                  wrapGAppsHook ]
-                ++ (with gnome3; [ libgepub ]);
+                  tracker tracker-miners gnome3.libgdata gnome3.gnome_online_accounts
+                  gnome3.gnome_desktop gnome3.libzapojit json_glib gnome3.libgepub ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/apps/gnome-music/default.nix
index 54e79872c67..f5454c1c386 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-music/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-music/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker
+{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker, tracker-miners
 , libxml2, python3Packages, libnotify, wrapGAppsHook
 , pkgconfig, gtk3, glib, cairo
 , makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
                   python3Packages.pycairo python3Packages.dbus-python python3Packages.requests
                   python3Packages.pygobject3 gst_all_1.gstreamer gst_all_1.gst-plugins-base
                   gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad wrapGAppsHook
-                  gnome3.gsettings_desktop_schemas makeWrapper tracker ];
+                  gnome3.gsettings_desktop_schemas makeWrapper tracker tracker-miners ];
 
   wrapPrefixVariables = [ "PYTHONPATH" ];
 
diff --git a/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix
index 3c793d70368..0b19ba9f0f6 100644
--- a/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix
+++ b/pkgs/desktops/gnome-3/apps/gnome-photos/default.nix
@@ -1,5 +1,5 @@
 { stdenv, intltool, fetchurl, exempi, libxml2
-, pkgconfig, gtk3, glib
+, pkgconfig, gtk3, glib, tracker, tracker-miners
 , makeWrapper, itstool, gegl, babl, lcms2
 , desktop_file_utils, gmp, libmediaart, wrapGAppsHook
 , gnome3, librsvg, gdk_pixbuf, libexif, gexiv2, geocode_glib
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
                   gdk_pixbuf gnome3.defaultIconTheme librsvg exempi
                   gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo
                   gnome3.gnome_online_accounts gnome3.gnome_desktop
-                  lcms2 libexif gnome3.tracker libxml2 desktop_file_utils
+                  lcms2 libexif tracker tracker-miners libxml2 desktop_file_utils
                   wrapGAppsHook gexiv2 geocode_glib dleyna-renderer ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/gnome-3/apps/polari/default.nix b/pkgs/desktops/gnome-3/apps/polari/default.nix
index 7c3da70edeb..dc75193e771 100644
--- a/pkgs/desktops/gnome-3/apps/polari/default.nix
+++ b/pkgs/desktops/gnome-3/apps/polari/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, intltool, fetchurl, gdk_pixbuf, adwaita-icon-theme
-, telepathy_glib, gjs, itstool, telepathy_idle, libxml2
-, pkgconfig, gtk3, glib, librsvg, libsecret, libsoup
+{ stdenv, itstool, fetchurl, fetchpatch, gdk_pixbuf, adwaita-icon-theme
+, telepathy_glib, gjs, meson, ninja, gettext, telepathy_idle, libxml2, desktop_file_utils
+, pkgconfig, gtk3, glib, libsecret, libsoup, gobjectIntrospection, appstream-glib
 , gnome3, wrapGAppsHook, telepathy_logger, gspell }:
 
 stdenv.mkDerivation rec {
@@ -8,9 +8,17 @@ stdenv.mkDerivation rec {
 
   propagatedUserEnvPkgs = [ telepathy_idle telepathy_logger ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool adwaita-icon-theme wrapGAppsHook gnome3.gsettings_desktop_schemas
-                  telepathy_glib telepathy_logger gjs gspell gdk_pixbuf librsvg libxml2 libsecret libsoup ];
+  nativeBuildInputs = [ meson ninja pkgconfig itstool gettext wrapGAppsHook libxml2
+                        desktop_file_utils gobjectIntrospection appstream-glib ];
+  buildInputs = [ gtk3 glib adwaita-icon-theme gnome3.gsettings_desktop_schemas
+                  telepathy_glib telepathy_logger gjs gspell gdk_pixbuf libsecret libsoup ];
+
+  patches = [
+    (fetchpatch {
+      url = https://gitlab.gnome.org/jtojnar/polari/commit/a6733a6ad95eac1813e7b18e3d0018a22ee7a377.diff;
+      sha256 = "0f5ll49h5w0477lkh67kaa2j83z376z1jk7z3i2v7cq4d3hi5lf9";
+    })
+  ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/desktops/gnome-3/core/eog/default.nix b/pkgs/desktops/gnome-3/core/eog/default.nix
index 23759e3bf90..49ad25a8c5e 100644
--- a/pkgs/desktops/gnome-3/core/eog/default.nix
+++ b/pkgs/desktops/gnome-3/core/eog/default.nix
@@ -1,13 +1,13 @@
-{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3
+{ fetchurl, stdenv, gettext, pkgconfig, itstool, libxml2, libjpeg, gnome3
 , shared_mime_info, wrapGAppsHook, librsvg, libexif }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ pkgconfig gettext itstool wrapGAppsHook ];
 
   buildInputs = with gnome3;
-    [ intltool itstool libxml2 libjpeg gtk glib libpeas librsvg
+    [ libxml2 libjpeg gtk glib libpeas librsvg
       gsettings_desktop_schemas shared_mime_info adwaita-icon-theme
       gnome_desktop libexif dconf ];
 
diff --git a/pkgs/desktops/gnome-3/core/epiphany/default.nix b/pkgs/desktops/gnome-3/core/epiphany/default.nix
index 35aae8cc9eb..2f58d920ff0 100644
--- a/pkgs/desktops/gnome-3/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/core/epiphany/default.nix
@@ -1,32 +1,42 @@
-{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu
-, bash, wrapGAppsHook, gnome3, libwnck3, libxml2, libxslt, libtool
+{ stdenv, meson, ninja, gettext, fetchurl, pkgconfig, gtk, glib, icu
+, wrapGAppsHook, gnome3, libxml2, libxslt, itstool
 , webkitgtk, libsoup, glib_networking, libsecret, gnome_desktop, libnotify, p11_kit
-, sqlite, gcr, avahi, nss, isocodes, itstool, file, which
-, gdk_pixbuf, librsvg, gnome_common, gst_all_1, json_glib }:
+, sqlite, gcr, isocodes, desktop_file_utils, file
+, gdk_pixbuf, gnome_common, gst_all_1, json_glib }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   # Tests need an X display
-  configureFlags = [ "--disable-static --disable-tests" ];
+  mesonFlags = [ "-Dunit_tests=false" ];
 
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
 
-  nativeBuildInputs = [ pkgconfig file wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja libxslt pkgconfig itstool gettext file wrapGAppsHook desktop_file_utils ];
 
-  buildInputs = [ gtk3 glib intltool libwnck3 libxml2 libxslt file
-                  webkitgtk libsoup libsecret gnome_desktop libnotify libtool
-                  sqlite isocodes nss itstool p11_kit nspr icu gnome3.yelp_tools
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common
-                  gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf
-                  gnome3.glib_networking gst_all_1.gstreamer gst_all_1.gst-plugins-base
+  buildInputs = [ gtk glib webkitgtk libsoup libxml2 libsecret gnome_desktop libnotify
+                  sqlite isocodes p11_kit icu gnome3.yelp_tools
+                  gdk_pixbuf gnome3.defaultIconTheme gnome_common gcr
+                  glib_networking gst_all_1.gstreamer gst_all_1.gst-plugins-base
                   gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly
                   gst_all_1.gst-libav json_glib ];
 
-  NIX_CFLAGS_COMPILE = "-I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
 
   enableParallelBuilding = true;
 
+  postPatch = ''
+    chmod +x post_install.py # patchShebangs requires executable file
+    patchShebangs post_install.py
+  '';
+
+  postFixup = ''
+    # Patched meson does not add internal libraries to rpath
+    for f in bin/.epiphany-wrapped libexec/.epiphany-search-provider-wrapped libexec/epiphany/.ephy-profile-migrator-wrapped lib/epiphany/web-extensions/libephywebextension.so; do
+      patchelf --set-rpath "$out/lib/epiphany:$(patchelf --print-rpath $out/$f)" "$out/$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/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
index e2472a40369..ebe740a2167 100644
--- a/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix
@@ -1,17 +1,18 @@
 { fetchurl, stdenv, pkgconfig, gnome3, python, dconf
 , intltool, libsoup, libxml2, libsecret, icu, sqlite
-, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true,
-vala_0_32, cmake, kerberos, openldap, webkitgtk, libaccounts-glib }:
+, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true
+, vala, cmake, kerberos, openldap, webkitgtk, libaccounts-glib, json_glib }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
+  nativeBuildInputs = [ cmake pkgconfig intltool python gperf makeWrapper ];
   buildInputs = with gnome3;
-    [ pkgconfig glib python intltool libsoup libxml2 gtk gnome_online_accounts
-      (stdenv.lib.getLib dconf) gcr p11_kit libgweather libgdata gperf makeWrapper
-      icu sqlite gsettings_desktop_schemas cmake kerberos openldap webkitgtk
-      libaccounts-glib ]
-    ++ stdenv.lib.optional valaSupport vala_0_32;
+    [ glib libsoup libxml2 gtk gnome_online_accounts
+      (stdenv.lib.getLib dconf) gcr p11_kit libgweather libgdata
+      icu sqlite gsettings_desktop_schemas kerberos openldap webkitgtk
+      libaccounts-glib json_glib ]
+    ++ stdenv.lib.optional valaSupport vala;
 
   propagatedBuildInputs = [ libsecret nss nspr libical db ];
 
diff --git a/pkgs/desktops/gnome-3/core/gcr/default.nix b/pkgs/desktops/gnome-3/core/gcr/default.nix
index e970dba5615..2569b4e2c7a 100644
--- a/pkgs/desktops/gnome-3/core/gcr/default.nix
+++ b/pkgs/desktops/gnome-3/core/gcr/default.nix
@@ -1,19 +1,18 @@
 { stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib
 , libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk
-, gobjectIntrospection, makeWrapper, libxslt, vala_0_32, gnome3 }:
+, gobjectIntrospection, makeWrapper, libxslt, vala, gnome3 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig intltool gobjectIntrospection libxslt makeWrapper vala ];
 
   buildInputs = let
     gpg = gnupg.override { guiSupport = false; }; # prevent build cycle with pinentry_gnome
   in [
-    intltool gpg gobjectIntrospection libxslt
-    libgcrypt libtasn1 dbus_glib pango gdk_pixbuf atk makeWrapper vala_0_32
+    gpg libgcrypt libtasn1 dbus_glib pango gdk_pixbuf atk
   ];
 
   propagatedBuildInputs = [ glib gtk p11_kit ];
diff --git a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
index f237d745c1c..9eaad021d32 100644
--- a/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix
@@ -1,17 +1,16 @@
-{ stdenv, fetchurl, gnome3, pkgconfig, gtk3, intltool, glib
-, udev, itstool, libxml2, makeWrapper, libnotify, libcanberra_gtk3 }:
+{ stdenv, fetchurl, gnome3, meson, ninja, pkgconfig, gtk3, intltool, glib
+, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra_gtk3 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib gtk3 udev libxml2 gnome3.defaultIconTheme
-                  makeWrapper gnome3.gsettings_desktop_schemas itstool
-                  libnotify libcanberra_gtk3 ];
+  nativeBuildInputs = [ meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook ];
+  buildInputs = [ glib gtk3 udev libnotify libcanberra_gtk3
+                  gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas ];
 
-  preFixup = ''
-    wrapProgram "$out/bin/bluetooth-sendto" \
-      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
index e69092a5712..9078b9e051c 100644
--- a/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix
@@ -3,7 +3,7 @@
 , libchamplain, clutter_gtk, geocode_glib
 , bash, wrapGAppsHook, itstool, folks, libnotify, libxml2
 , gnome3, librsvg, gdk_pixbuf, file, telepathy_glib, nspr, nss
-, libsoup, vala_0_32, dbus_glib, automake, autoconf }:
+, libsoup, vala, dbus_glib, automake, autoconf }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
@@ -17,14 +17,11 @@ stdenv.mkDerivation rec {
    touch src/*.vala
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool evolution_data_server
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook file libnotify
+  nativeBuildInputs = [ vala automake autoconf pkgconfig intltool itstool wrapGAppsHook file ];
+  buildInputs = [ gtk3 glib evolution_data_server gnome3.gsettings_desktop_schemas libnotify
                   folks gnome3.gnome_desktop telepathy_glib libsecret dbus_glib
                   libxml2 libsoup gnome3.gnome_online_accounts nspr nss
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg
-                  libchamplain clutter_gtk geocode_glib
-                  vala_0_32 automake autoconf db ];
+                  gdk_pixbuf gnome3.defaultIconTheme libchamplain clutter_gtk geocode_glib db ];
 
   preFixup = ''
     gappsWrapperArgs+=(
diff --git a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
index d56018bf1e8..e8a7cb8ceb9 100644
--- a/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig, python, libxml2Python, libxslt, which, libX11, gnome3, gtk3, glib
 , intltool, gnome_doc_utils, libxkbfile, xkeyboard_config, isocodes, itstool, wayland
-, gobjectIntrospection }:
+, libseccomp, gobjectIntrospection }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ python libxml2Python libxslt which libX11
                   xkeyboard_config isocodes itstool wayland
                   gtk3 glib intltool gnome_doc_utils libxkbfile
-                  gobjectIntrospection ];
+                   libseccomp gobjectIntrospection ];
 
   propagatedBuildInputs = [ gnome3.gsettings_desktop_schemas ];
 
diff --git a/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix
index 77c4805a197..da28d638262 100644
--- a/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix
@@ -1,28 +1,31 @@
-{ stdenv, intltool, fetchurl
-, pkgconfig, gtk3, glib
-, bash, makeWrapper, itstool, libxml2
-, gnome3, librsvg, gdk_pixbuf, file }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, desktop_file_utils, appstream-glib, libxslt
+, libxml2, gettext, itstool, wrapGAppsHook, docbook_xsl, docbook_xml_dtd_43
+, gnome3, gtk, glib }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   doCheck = true;
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
-
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
-  propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+  propagatedBuildInputs = [ gnome3.defaultIconTheme ];
+
+  nativeBuildInputs = [ meson ninja pkgconfig wrapGAppsHook libxml2 gettext itstool
+                        desktop_file_utils appstream-glib libxslt docbook_xsl ];
+  buildInputs = [ gtk glib gnome3.gsettings_desktop_schemas ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool libxml2 file
-                  gnome3.gsettings_desktop_schemas makeWrapper ];
+  postPatch = ''
+    substituteInPlace data/meson.build --replace \
+      "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl" \
+      "${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl"
 
-  preFixup = ''
-    wrapProgram "$out/bin/gnome-dictionary" \
-      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    substituteInPlace data/gnome-dictionary.xml --replace \
+      http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd \
+      ${docbook_xml_dtd_43}/xml/dtd/docbook/docbookx.dtd
   '';
 
+  checkPhase = "meson test";
+
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Dictionary;
     description = "Dictionary is the GNOME application to look up definitions";
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 f9380272f06..0f610d3effc 100644
--- a/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix
@@ -1,24 +1,25 @@
-{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
-, bash, gtk3, glib, wrapGAppsHook, cracklib, libnotify
-, itstool, gnome3, gdk_pixbuf, libxml2, python
-, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
+{ stdenv, gettext, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
+, meson, ninja, gtk, glib, wrapGAppsHook, libnotify
+, itstool, gnome3, gdk_pixbuf, libxml2
+, libcanberra_gtk3, libxslt, docbook_xsl, libpwquality }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  doCheck = true;
-
   NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
 
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ bash gtk3 glib intltool itstool
-                  libxslt libtool libsecret libpwquality cracklib
-                  libnotify libdvdread libcanberra_gtk3 docbook_xsl
-                  gdk_pixbuf gnome3.defaultIconTheme
-                  udisks2 gnome3.gnome_settings_daemon
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook libxml2 ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext itstool libxslt docbook_xsl
+                        wrapGAppsHook libxml2 ];
+  buildInputs = [ gtk glib libsecret libpwquality libnotify libdvdread libcanberra_gtk3
+                  gdk_pixbuf udisks2 gnome3.defaultIconTheme
+                  gnome3.gnome_settings_daemon gnome3.gsettings_desktop_schemas ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py # patchShebangs requires executable file
+    patchShebangs meson_post_install.py
+  '';
 
   meta = with stdenv.lib; {
     homepage = https://en.wikipedia.org/wiki/GNOME_Disks;
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 14aeb69e14c..cdf119d83a3 100644
--- a/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix
@@ -1,27 +1,19 @@
-{ stdenv, intltool, fetchurl
-, pkgconfig, gtk3, glib
-, bash, wrapGAppsHook, itstool
-, gnome3, librsvg, gdk_pixbuf }:
+{ stdenv, meson, ninja, gettext, fetchurl
+, pkgconfig, gtk3, glib, libxml2
+, wrapGAppsHook, gnome3 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   doCheck = true;
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+  checkPhase = "meson test";
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook libxml2 ];
+  buildInputs = [ gtk3 glib gnome3.gnome_desktop gnome3.defaultIconTheme ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool gnome3.gnome_desktop
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook ];
-
-  preFixup = ''
-    gappsWrapperArgs+=(
-      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share"
-    )
-  '';
+  # Do not run meson-postinstall.sh
+  preConfigure = "sed -i '2,$ d'  meson-postinstall.sh";
 
   meta = with stdenv.lib; {
     description = "Program that can preview fonts and create thumbnails for fonts";
diff --git a/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
index fbcd51b6cc2..d8e87871560 100644
--- a/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix
@@ -1,25 +1,18 @@
 { stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2
-, libsoup, json_glib, gmp, openssl, dleyna-server, makeWrapper }:
+, libsoup, json_glib, gmp, openssl, dleyna-server, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
   buildInputs = [ glib gnome3.libgdata libxml2 libsoup gmp openssl
                   gnome3.grilo gnome3.libzapojit gnome3.grilo-plugins
-                  gnome3.gnome_online_accounts makeWrapper gnome3.libmediaart
+                  gnome3.gnome_online_accounts gnome3.libmediaart
                   gnome3.tracker gnome3.gfbgraph json_glib gnome3.rest
                   dleyna-server ];
 
   enableParallelBuilding = true;
 
-  preFixup = ''
-    for f in $out/libexec/*; do
-      wrapProgram "$f" \
-        --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-${gnome3.grilo-plugins.major}"
-    done
-  '';
-
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners;
     description = "A set of crawlers that go through your online content and index them locally in Tracker";
diff --git a/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
index 1f933e1b3c5..69a967d6d24 100644
--- a/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix
@@ -1,26 +1,30 @@
-{ stdenv, intltool, fetchurl, pkgconfig, libcanberra_gtk3
-, bash, gtk3, glib, wrapGAppsHook
-, itstool, gnome3, librsvg, gdk_pixbuf }:
+{ stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra_gtk3
+, bash, gtk3, glib, meson, ninja, wrapGAppsHook, appstream-glib
+, gnome3, librsvg, gdk_pixbuf }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   doCheck = true;
 
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+  checkPhase = "meson test";
+
+
+  postPatch = ''
+    chmod +x build-aux/postinstall.py # patchShebangs requires executable file
+    patchShebangs build-aux/postinstall.py
+  '';
 
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
   propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ bash gtk3 glib intltool itstool libcanberra_gtk3
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 wrapGAppsHook ];
+  buildInputs = [ bash gtk3 glib libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas ];
 
-  preFixup = ''
-    gappsWrapperArgs+=(
-      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share"
-    )
-  '';
+  patches = [
+    ./prevent-cache-updates.patch
+  ];
 
   meta = with stdenv.lib; {
     homepage = https://en.wikipedia.org/wiki/GNOME_Screenshot;
diff --git a/pkgs/desktops/gnome-3/core/gnome-screenshot/prevent-cache-updates.patch b/pkgs/desktops/gnome-3/core/gnome-screenshot/prevent-cache-updates.patch
new file mode 100644
index 00000000000..370d09cd2f0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-screenshot/prevent-cache-updates.patch
@@ -0,0 +1,21 @@
+--- a/build-aux/postinstall.py
++++ b/build-aux/postinstall.py
+@@ -8,18 +8,6 @@
+ 
+ # Packaging tools define DESTDIR and this isn't needed for them
+ if 'DESTDIR' not in os.environ:
+-    print('Updating icon cache...')
+-    icon_cache_dir = os.path.join(datadir, 'icons', 'hicolor')
+-    if not os.path.exists(icon_cache_dir):
+-        os.makedirs(icon_cache_dir)
+-    subprocess.call(['gtk-update-icon-cache', '-qtf', icon_cache_dir])
+-
+-    print('Updating desktop database...')
+-    desktop_database_dir = os.path.join(datadir, 'applications')
+-    if not os.path.exists(desktop_database_dir):
+-        os.makedirs(desktop_database_dir)
+-    subprocess.call(['update-desktop-database', '-q', desktop_database_dir])
+-
+     print('Compiling GSettings schemas...')
+     schemas_dir = os.path.join(datadir, 'glib-2.0', 'schemas')
+     if not os.path.exists(schemas_dir):
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
index a694da0844d..ca660ad4a8a 100644
--- a/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-shell/default.nix
@@ -1,9 +1,10 @@
-{ fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret
+{ fetchurl, fetchpatch, 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
-, sqlite, libgweather, libcanberra_gtk3, librsvg, geoclue2
-, libpulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper
-, accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet }:
+, libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip, glibcLocales
+, sqlite, 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 }:
 
 # 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
 
@@ -14,50 +15,68 @@ in stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   # Needed to find /etc/NetworkManager/VPN
-  configureFlags = [ "--sysconfdir=/etc" ];
+  mesonFlags = [ "--sysconfdir=/etc" ];
 
+  LANG = "en_US.UTF-8";
+
+  nativeBuildInputs = [ meson ninja gettext docbook_xsl docbook_xsl_ns perl wrapGAppsHook glibcLocales ];
   buildInputs = with gnome3;
     [ gsettings_desktop_schemas gnome_keyring gnome-menus glib gcr json_glib accountsservice
-      libcroco intltool libsecret pkgconfig libsoup polkit libcanberra_gtk2 gdk_pixbuf
+      libcroco libsecret pkgconfig libsoup polkit gdk_pixbuf
       (librsvg.override { enableIntrospection = true; })
-      clutter networkmanager libstartup_notification telepathy_glib docbook_xsl docbook_xsl_ns
+      clutter networkmanager libstartup_notification telepathy_glib
       libXtst p11_kit networkmanagerapplet gjs mutter libpulseaudio caribou evolution_data_server
-      libical libtool nss gtk gstreamer makeWrapper gdm
+      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) ];
 
-  installFlags = [ "keysdir=$(out)/share/gnome-control-center/keybindings" ];
+  patches = [
+    (fetchpatch {
+      name = "0001-build-Add-missing-dependency-to-run-js-test.patch";
+      url = https://bug787864.bugzilla-attachments.gnome.org/attachment.cgi?id=360016;
+      sha256 = "1dmahd8ysbzh33rxglba0fbq127aw9h14cl2a2bw9913vjxhxijm";
+    })
+    ./fix-paths.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace man/meson.build --replace \
+      "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl" \
+      "${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl"
+
+    substituteInPlace man/gnome-shell.xml --replace \
+      http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd \
+      ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd
+  '';
 
   preBuild = ''
-    patchShebangs src/data-to-c.pl
-    substituteInPlace data/Makefile --replace " install-keysDATA" ""
+    # meson setup-hook changes the directory so the files are located one level up
+    patchShebangs ../src/data-to-c.pl
 
-    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 ../src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
+    substituteInPlace ../src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python"
   '';
 
-
   preFixup = with gnome3; ''
-    wrapProgram "$out/bin/gnome-shell" \
-      --prefix PATH : "${unzip}/bin" \
-      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
-      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules" \
-      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS" \
-      --suffix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+    gappsWrapperArgs+=(
+      --prefix PATH : "${unzip}/bin"
+    )
 
-    wrapProgram "$out/bin/gnome-shell-extension-prefs" \
-      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    echo "${unzip}/bin" > $out/${passthru.mozillaPlugin}/extra-bin-path
+  '';
 
-    wrapProgram "$out/libexec/gnome-shell-calendar-server" \
-      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules" \
-      --prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  postInstall = ''
+    glib-compile-schemas $out/share/glib-2.0/schemas
+  '';
 
-    echo "${unzip}/bin" > $out/${passthru.mozillaPlugin}/extra-bin-path
+  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
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
new file mode 100644
index 00000000000..b24049f9b9f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch
@@ -0,0 +1,18 @@
+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')
diff --git a/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
index 2f4a1427ec0..3c78d2735e4 100644
--- a/pkgs/desktops/gnome-3/core/gnome-software/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-software/default.nix
@@ -1,17 +1,43 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit
-, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3
-, json_glib, libsecret, valgrind-light }:
+{ stdenv, fetchurl, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree
+, glib, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3, libxslt
+, json_glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, gtk_doc, desktop_file_utils }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
-  buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup
+  nativeBuildInputs = [ pkgconfig meson ninja gettext wrapGAppsHook libxslt
+                        valgrind-light docbook_xsl gtk_doc desktop_file_utils ];
+  buildInputs = [ gnome3.gtk glib packagekit appstream-glib libsoup
                   gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
-                  gtkspell3 json_glib libsecret
-                  polkit attr acl libyaml valgrind-light ];
+                  gtkspell3 json_glib libsecret ostree
+                  polkit attr acl libyaml ];
   propagatedBuildInputs = [ isocodes ];
 
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  postPatch = ''
+    patchShebangs meson_post_install.sh
+
+    substituteInPlace src/meson.build --replace \
+      "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl" \
+      "${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl"
+
+    for xml in src/gnome-software.xml src/gnome-software-editor.xml; do
+      substituteInPlace $xml --replace \
+        http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd \
+        ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd
+    done
+  '';
+
+  mesonFlags = [
+    "-Denable-flatpak=false"
+    "-Denable-rpm=false"
+    "-Denable-fwupd=false"
+    "-Denable-oauth=false"
+    "-Denable-ubuntu-reviews=false"
+    "-Denable-gudev=false"
+  ];
+
   postInstall = ''
     mkdir -p $out/share/xml/
     ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes
diff --git a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
index 073a791ac3c..f45bc8264f1 100644
--- a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
+++ b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, pkgconfig, cairo, libxml2, gnome3, pango
-, gnome_doc_utils, intltool, libX11, which, libuuid, vala_0_32
+{ stdenv, fetchurl, pkgconfig, libxml2, gnome3
+, gnome_doc_utils, intltool, which, libuuid, vala_0_32
 , desktop_file_utils, itstool, wrapGAppsHook, appdata-tools }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   buildInputs = [ gnome3.gtk gnome3.gsettings_desktop_schemas gnome3.vte appdata-tools
-                  gnome3.dconf itstool gnome3.nautilus vala_0_32 ];
+                  gnome3.dconf itstool gnome3.nautilus ];
 
   nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libuuid libxml2
-                        desktop_file_utils wrapGAppsHook ];
+                        vala_0_32 desktop_file_utils wrapGAppsHook ];
 
   # Silly ./configure, it looks for dbus file from gnome-shell in the
   # installation tree of the package it is configuring.
diff --git a/pkgs/desktops/gnome-3/core/gsound/default.nix b/pkgs/desktops/gnome-3/core/gsound/default.nix
index 8e72b7fb233..7b934db85fd 100644
--- a/pkgs/desktops/gnome-3/core/gsound/default.nix
+++ b/pkgs/desktops/gnome-3/core/gsound/default.nix
@@ -3,15 +3,15 @@
 let
   majVer = "1.0";
 in stdenv.mkDerivation rec {
-  name = "gsound-${majVer}.1";
+  name = "gsound-${majVer}.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gsound/${majVer}/${name}.tar.xz";
-    sha256 = "ea0dd94429c0645f2f98824274ef04543fe459dd83a5449a68910acc3ba67f29";
+    sha256 = "bba8ff30eea815037e53bee727bbd5f0b6a2e74d452a7711b819a7c444e78e53";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ glib libcanberra_gtk2 gobjectIntrospection libtool ];
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection libtool gnome3.vala ];
+  buildInputs = [ glib libcanberra_gtk2 ];
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GSound;
diff --git a/pkgs/desktops/gnome-3/core/libgweather/default.nix b/pkgs/desktops/gnome-3/core/libgweather/default.nix
index 9dbed05523c..01b3c9bc093 100644
--- a/pkgs/desktops/gnome-3/core/libgweather/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgweather/default.nix
@@ -4,9 +4,14 @@
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" ];
+  configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" "--enable-vala" ];
   propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk gnome3.geocode_glib ];
-  nativeBuildInputs = [ pkgconfig intltool ];
+  nativeBuildInputs = [ pkgconfig intltool gnome3.vala ];
+
+  # Prevent building vapi into ${vala} derivation directory
+  prePatch = ''
+    substituteInPlace libgweather/Makefile.in --replace "\$(DESTDIR)\$(vapidir)" "\$(DESTDIR)\$(girdir)/../vala/vapi"
+  '';
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
diff --git a/pkgs/desktops/gnome-3/core/mutter/default.nix b/pkgs/desktops/gnome-3/core/mutter/default.nix
index 208b8b75648..aac800065be 100644
--- a/pkgs/desktops/gnome-3/core/mutter/default.nix
+++ b/pkgs/desktops/gnome-3/core/mutter/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, fetchpatch, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo
 , pango, cogl, clutter, libstartup_notification, libcanberra_gtk2, zenity, libcanberra_gtk3
 , libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libudev, libinput
 , libgudev, libwacom, xwayland, autoreconfHook }:
diff --git a/pkgs/desktops/gnome-3/core/nautilus/default.nix b/pkgs/desktops/gnome-3/core/nautilus/default.nix
index f987df46034..0a7cd139d2c 100644
--- a/pkgs/desktops/gnome-3/core/nautilus/default.nix
+++ b/pkgs/desktops/gnome-3/core/nautilus/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, pkgconfig, libxml2, dbus_glib, shared_mime_info, libexif
-, gtk, gnome3, libunique, intltool, gobjectIntrospection, gnome-autoar, glib
-, libnotify, wrapGAppsHook, exempi, librsvg, tracker, libselinux, gdk_pixbuf }:
+{ 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 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ meson ninja pkgconfig libxml2 gettext wrapGAppsHook desktop_file_utils ];
 
-  buildInputs = [ libxml2 dbus_glib shared_mime_info libexif gtk libunique intltool exempi librsvg
-                  gnome3.gnome_desktop gnome3.adwaita-icon-theme
-                  gnome3.gsettings_desktop_schemas gnome3.dconf libnotify tracker libselinux ];
+  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 ];
 
   propagatedBuildInputs = [ gnome-autoar ];
 
@@ -27,6 +27,10 @@ stdenv.mkDerivation rec {
 #  hardeningDisable = [ "format" ];
   enableParallelBuilding = true;
 
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py
+  '';
+
   patches = [ ./extension_dir.patch ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
index 0b453d5c533..27a1e4b0be5 100644
--- a/pkgs/desktops/gnome-3/core/simple-scan/default.nix
+++ b/pkgs/desktops/gnome-3/core/simple-scan/default.nix
@@ -1,24 +1,20 @@
-{ stdenv, fetchurl, cairo, colord, glib, gtk3, gusb, intltool, itstool
-, libusb1, libxml2, pkgconfig, sane-backends, vala_0_32, wrapGAppsHook
-, gnome3 }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, wrapGAppsHook
+, cairo, gdk_pixbuf, colord, glib, gtk, gusb, packagekit, libwebp
+, libxml2, sane-backends, vala, gnome3 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  buildInputs = [ cairo colord glib gnome3.defaultIconTheme gusb gtk3 libusb1 libxml2 sane-backends vala_0_32 ];
-  nativeBuildInputs = [ intltool itstool pkgconfig wrapGAppsHook ];
+  buildInputs = [ cairo gdk_pixbuf colord glib gnome3.defaultIconTheme gusb
+                gtk libwebp packagekit sane-backends vala ];
+  nativeBuildInputs = [ meson ninja gettext itstool pkgconfig wrapGAppsHook libxml2 ];
 
-  configureFlags = [ "--disable-packagekit" ];
+  postPatch = ''
+    patchShebangs data/meson_compile_gschema.py
 
-  patchPhase = ''
     sed -i -e 's#Icon=scanner#Icon=simple-scan#g' ./data/simple-scan.desktop.in
   '';
 
-  preBuild = ''
-    # Clean up stale .c files referencing packagekit headers as of 3.20.0:
-    make clean
-  '';
-
   postInstall = ''
     mkdir -p $out/share/icons
     mv $out/share/simple-scan/icons/* $out/share/icons/
@@ -39,6 +35,8 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
+  checkPhase = "meson test";
+
   meta = with stdenv.lib; {
     description = "Simple scanning utility";
     longDescription = ''
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 56fef312927..c763621564c 100644
--- a/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix
+++ b/pkgs/desktops/gnome-3/core/totem-pl-parser/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup, gnome3 }:
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, gmime, libxml2, libsoup, gnome3 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig file intltool ];
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
   buildInputs = [ gmime libxml2 libsoup ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/totem-pl-parser/src.nix b/pkgs/desktops/gnome-3/core/totem-pl-parser/src.nix
index 2935111df27..58e2ad07532 100644
--- a/pkgs/desktops/gnome-3/core/totem-pl-parser/src.nix
+++ b/pkgs/desktops/gnome-3/core/totem-pl-parser/src.nix
@@ -5,6 +5,6 @@ fetchurl: {
 
   src = fetchurl {
     url = mirror://gnome/sources/totem-pl-parser/3.26/totem-pl-parser-3.26.0.tar.xz;
-    sha256 = "f153a53391e9b42fed5cb6ce62322a58e323fde6ec4a54d8ba4d376cf4c1fbcb";
+    sha256 = "1jzvq7s6qdsdpbc58jpcwvyj7qsq58r65kmnbknjzd79j4rsalzi";
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/totem/default.nix b/pkgs/desktops/gnome-3/core/totem/default.nix
index 34ec9b58116..b66405cf051 100644
--- a/pkgs/desktops/gnome-3/core/totem/default.nix
+++ b/pkgs/desktops/gnome-3/core/totem/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, intltool, fetchurl, gst_all_1
+{ stdenv, fetchurl, meson, ninja, intltool, gst_all_1, clutter
 , clutter_gtk, clutter-gst, python3Packages, shared_mime_info
 , pkgconfig, gtk3, glib, gobjectIntrospection
-, bash, wrapGAppsHook, itstool, libxml2, dbus_glib
-, gnome3, librsvg, gdk_pixbuf, file, tracker, nautilus }:
+, bash, wrapGAppsHook, itstool, libxml2, dbus_glib, vala, gnome3, librsvg
+, gdk_pixbuf, file, tracker, nautilus }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
@@ -15,18 +15,31 @@ stdenv.mkDerivation rec {
 
   propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool libxml2 gnome3.grilo
-                  clutter_gtk clutter-gst gnome3.totem-pl-parser gnome3.grilo-plugins
-                  gst_all_1.gstreamer gst_all_1.gst-plugins-base
-                  gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly gst_all_1.gst-libav
-                  gnome3.libpeas shared_mime_info dbus_glib
-                  gdk_pixbuf gnome3.defaultIconTheme librsvg gnome3.gnome_desktop
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook file tracker nautilus ];
+  nativeBuildInputs = [ meson ninja vala pkgconfig intltool python3Packages.python itstool file wrapGAppsHook ];
+  buildInputs = [ gtk3 glib gnome3.grilo clutter_gtk clutter-gst gnome3.totem-pl-parser gnome3.grilo-plugins
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
+                  gst_all_1.gst-plugins-ugly gst_all_1.gst-libav gnome3.libpeas shared_mime_info dbus_glib
+                  gdk_pixbuf libxml2 gnome3.defaultIconTheme gnome3.gnome_desktop
+                  gnome3.gsettings_desktop_schemas tracker nautilus ];
 
   propagatedBuildInputs = [ gobjectIntrospection python3Packages.pylint python3Packages.pygobject2 ];
 
-  configureFlags = [ "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+  checkPhase = "meson test";
+
+  patches = [
+    (fetchurl {
+      name = "remove-pycompile.patch";
+      url = "https://bug787965.bugzilla-attachments.gnome.org/attachment.cgi?id=360204";
+      sha256 = "1iphlazllv42k553jqh3nqrrh5jb63gy3nhj4ipwc9xh4sg2irhi";
+    })
+  ];
+
+  postPatch = ''
+    chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file
+    patchShebangs .
+  '';
+
+  mesonFlags = [ "-Dwith-nautilusdir=lib/nautilus/extensions-3.0" ];
 
   GI_TYPELIB_PATH = "$out/lib/girepository-1.0";
   wrapPrefixVariables = [ "PYTHONPATH" ];
diff --git a/pkgs/desktops/gnome-3/core/tracker-miners/default.nix b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
new file mode 100644
index 00000000000..baff249a03a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, intltool, fetchurl, libxml2, upower
+, pkgconfig, gtk3, glib
+, bash, wrapGAppsHook, itstool, vala, sqlite, libxslt
+, gnome3, librsvg, gdk_pixbuf, libnotify
+, evolution_data_server, gst_all_1, poppler
+, icu, taglib, libjpeg, libtiff, giflib, libcue
+, libvorbis, flac, exempi, networkmanager
+, libpng, libexif, libgsf, libuuid, bzip2
+, libsoup, json_glib, libseccomp
+, libiptcdata }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${poppler.dev}/include/poppler";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ vala pkgconfig intltool itstool libxslt wrapGAppsHook ];
+  # TODO: add libgrss, libenca
+  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
+    json_glib libcue libexif libgsf libiptcdata libjpeg libpng libseccomp libsoup
+    libtiff libuuid libvorbis libxml2 poppler taglib upower
+  ];
+
+  LANG = "en_US.UTF-8"; # for running tests
+
+  doCheck = true;
+
+  postPatch = ''
+    substituteInPlace src/libtracker-common/tracker-domain-ontology.c --replace \
+      'SHAREDIR, "tracker", "domain-ontologies"' \
+      '"${gnome3.tracker}/share", "tracker", "domain-ontologies"'
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/Tracker;
+    description = "Desktop-neutral user information store, search tool and indexer";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/tracker-miners/src.nix b/pkgs/desktops/gnome-3/core/tracker-miners/src.nix
new file mode 100644
index 00000000000..2b309161fd1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/tracker-miners/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "tracker-miners-2.0.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/tracker-miners/2.0/tracker-miners-2.0.2.tar.xz;
+    sha256 = "cf417ece944c997f630dda41a7f5c449d609fa53dbb34fae7caa4c7af1e0e8ef";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/tracker/default.nix b/pkgs/desktops/gnome-3/core/tracker/default.nix
index 0d3e8bd358d..bf3438db338 100644
--- a/pkgs/desktops/gnome-3/core/tracker/default.nix
+++ b/pkgs/desktops/gnome-3/core/tracker/default.nix
@@ -1,43 +1,23 @@
-{ stdenv, intltool, fetchurl, libxml2, upower
-, pkgconfig, gtk3, glib
-, bash, wrapGAppsHook, itstool, vala_0_32, sqlite, libxslt
-, gnome3, librsvg, gdk_pixbuf, file, libnotify
-, evolution_data_server, gst_all_1, poppler
-, icu, taglib, libjpeg, libtiff, giflib, libcue
-, libvorbis, flac, exempi, networkmanager
-, libpng, libexif, libgsf, libuuid, bzip2
-, libsoup, json_glib, libseccomp }:
+{ stdenv, fetchurl, fetchpatch, intltool, pkgconfig
+, libxml2, upower, glib, wrapGAppsHook, vala, sqlite, libxslt
+, gnome3, icu, libuuid, networkmanager, libsoup, json_glib }:
 
 stdenv.mkDerivation rec {
-
   inherit (import ./src.nix fetchurl) name src;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
-
-  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0 -I${poppler.dev}/include/poppler";
-
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ vala_0_32 gtk3 glib intltool itstool libxml2
-                  bzip2 gnome3.totem-pl-parser libxslt
-                  gnome3.gsettings_desktop_schemas wrapGAppsHook
-                  file gdk_pixbuf gnome3.defaultIconTheme librsvg sqlite
-                  upower libnotify evolution_data_server gnome3.libgee
-                  gst_all_1.gstreamer gst_all_1.gst-plugins-base flac
-                  poppler icu taglib libjpeg libtiff giflib libvorbis
-                  exempi networkmanager libpng libexif libgsf libuuid
-                  libsoup json_glib libseccomp
-                ];
+  nativeBuildInputs = [ vala pkgconfig intltool libxslt wrapGAppsHook ];
+  # TODO: add libstemmer
+  buildInputs = [
+    glib libxml2 sqlite upower icu networkmanager libsoup libuuid json_glib
+  ];
 
-  preConfigure = ''
-    substituteInPlace src/libtracker-sparql/Makefile.in --replace "--shared-library=libtracker-sparql" "--shared-library=$out/lib/libtracker-sparql"
-  '';
+  # TODO: figure out wrapping unit tests, some of them fail on missing gsettings_desktop_schemas
+  configureFlags = [ "--disable-unit-tests" ];
 
-  preFixup = ''
-    gappsWrapperArgs+=(
-      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share"
-    )
+  postPatch = ''
+    patchShebangs utils/g-ir-merge/g-ir-merge
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/core/tracker/src.nix b/pkgs/desktops/gnome-3/core/tracker/src.nix
index 7a9b9ce3e38..afec65a4f63 100644
--- a/pkgs/desktops/gnome-3/core/tracker/src.nix
+++ b/pkgs/desktops/gnome-3/core/tracker/src.nix
@@ -1,10 +1,10 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
 fetchurl: {
-  name = "tracker-1.12.3";
+  name = "tracker-2.0.1";
 
   src = fetchurl {
-    url = mirror://gnome/sources/tracker/1.12/tracker-1.12.3.tar.xz;
-    sha256 = "1mpq418lzba7fad0w0m3bnxvz3khf461b5zya8zmq5n1g0w99ki3";
+    url = mirror://gnome/sources/tracker/2.0/tracker-2.0.1.tar.xz;
+    sha256 = "ac5c9f4dbb0741af5877ae2818d8c053aa9a431477a924a17976bb7e44411e47";
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/vte/default.nix b/pkgs/desktops/gnome-3/core/vte/default.nix
index b3962015d3c..251e27334b1 100644
--- a/pkgs/desktops/gnome-3/core/vte/default.nix
+++ b/pkgs/desktops/gnome-3/core/vte/default.nix
@@ -1,14 +1,13 @@
 { stdenv, fetchurl, intltool, pkgconfig
-, gnome3, ncurses, gobjectIntrospection, vala_0_32, libxml2, gnutls
+, gnome3, ncurses, gobjectIntrospection, vala, libxml2, gnutls
 , fetchFromGitHub, autoconf, automake, libtool, gtk_doc, gperf, pcre2
 }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gobjectIntrospection intltool gnome3.glib
-                  gnome3.gtk3 ncurses vala_0_32 libxml2 gperf ];
+  nativeBuildInputs = [ gobjectIntrospection intltool pkgconfig vala gperf libxml2 ];
+  buildInputs = [ gnome3.glib gnome3.gtk3 ncurses ];
 
   propagatedBuildInputs = [ gnutls pcre2 ];
 
diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix
index 585f79ddea6..f4cb7b8831c 100644
--- a/pkgs/desktops/gnome-3/default.nix
+++ b/pkgs/desktops/gnome-3/default.nix
@@ -54,7 +54,7 @@ let
   gnome3 = self // { recurseForDerivations = false; };
   gtk = gtk3;
   gtkmm = gtkmm3;
-  vala = pkgs.vala_0_32;
+  vala = pkgs.vala_0_38;
   gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; };
 
 # Simplify the nixos module and gnome packages
@@ -237,7 +237,9 @@ let
 
   totem-pl-parser = callPackage ./core/totem-pl-parser { };
 
-  tracker = callPackage ./core/tracker { giflib = pkgs.giflib_5_0; };
+  tracker = callPackage ./core/tracker { };
+
+  tracker-miners = callPackage ./core/tracker-miners { };
 
   vte = callPackage ./core/vte { };
 
diff --git a/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix
index ee3dd60e59a..cce734b474e 100644
--- a/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix
+++ b/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix
@@ -1,15 +1,17 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit
-, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }:
+{ stdenv, fetchurl, pkgconfig, meson, ninja, gettext, gnome3, libxslt, packagekit, polkit
+, fontconfig, libcanberra_gtk3, systemd, libnotify, wrapGAppsHook, dbus_glib, dbus_libs, desktop_file_utils }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
 
-  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
-  buildInputs = [ libxslt gnome3.gtk packagekit fontconfig
+  nativeBuildInputs = [ pkgconfig meson ninja gettext wrapGAppsHook desktop_file_utils ];
+  buildInputs = [ libxslt gnome3.gtk packagekit fontconfig systemd polkit
                   libcanberra_gtk3 libnotify dbus_glib dbus_libs ];
 
+  prePatch = "patchShebangs meson_post_install.sh";
+
   meta = with stdenv.lib; {
     homepage = https://www.freedesktop.org/software/PackageKit/;
     platforms = platforms.linux;
diff --git a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
index d236730282a..23be404ea40 100644
--- a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
+++ b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
@@ -1,25 +1,24 @@
-From ac9e8e835888da1faa57f07c54fa4e73783621e2 Mon Sep 17 00:00:00 2001
+From f7f7fe6bf36ca08c66192077bf964036eb02ffb5 Mon Sep 17 00:00:00 2001
 From: Jascha Geerds <jascha@jgeerds.name>
-Date: Sun, 25 Jun 2017 11:32:30 +0100
+Date: Tue, 19 Sep 2017 03:08:07 +0200
 Subject: [PATCH 1/3] Search for themes and icons in system data dirs
 
 ---
- gtweak/tweaks/tweak_group_interface.py | 17 ++++-------------
- gtweak/tweaks/tweak_group_keymouse.py  |  7 ++-----
- gtweak/utils.py                        | 17 +++++++++++++++++
- 3 files changed, 23 insertions(+), 18 deletions(-)
+ gtweak/tweaks/tweak_group_appearance.py | 17 ++++-------------
+ gtweak/utils.py                         | 17 +++++++++++++++++
+ 2 files changed, 21 insertions(+), 13 deletions(-)
 
-diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py
-index 97751ed..db89b85 100644
---- a/gtweak/tweaks/tweak_group_interface.py
-+++ b/gtweak/tweaks/tweak_group_interface.py
+diff --git a/gtweak/tweaks/tweak_group_appearance.py b/gtweak/tweaks/tweak_group_appearance.py
+index ccadefc..0d12194 100644
+--- a/gtweak/tweaks/tweak_group_appearance.py
++++ b/gtweak/tweaks/tweak_group_appearance.py
 @@ -26,7 +26,7 @@ from gi.repository import Gtk
  from gi.repository import GLib
  
  import gtweak
 -from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file
 +from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
- from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.tweakmodel import Tweak
  from gtweak.gshellwrapper import GnomeShellFactory
  from gtweak.gsettings import GSettingsSetting
 @@ -50,10 +50,7 @@ class GtkThemeSwitcher(GSettingsComboTweak):
@@ -58,33 +57,8 @@ index 97751ed..db89b85 100644
                      os.path.isdir(d) and \
                          os.path.exists(os.path.join(d, "cursors")))
          return valid
-diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py
-index 69c4b7e..b06900c 100644
---- a/gtweak/tweaks/tweak_group_keymouse.py
-+++ b/gtweak/tweaks/tweak_group_keymouse.py
-@@ -21,7 +21,7 @@ from gi.repository import GLib
- 
- import gtweak
- from gtweak.gshellwrapper import GnomeShellFactory
--from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default
-+from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
- from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
- 
- _shell = GnomeShellFactory().get_shell()
-@@ -41,10 +41,7 @@ class KeyThemeSwitcher(GSettingsComboTweak):
-             **options)
- 
-     def _get_valid_key_themes(self):
--        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
--                 os.path.join(GLib.get_user_data_dir(), "themes"),
--                 os.path.join(os.path.expanduser("~"), ".themes"))
--        valid = walk_directories(dirs, lambda d:
-+        valid = walk_directories(get_resource_dirs("themes"), lambda d:
-                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
-                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
-         return valid
 diff --git a/gtweak/utils.py b/gtweak/utils.py
-index 39f8833..b0993b6 100644
+index de6c345..6c60b88 100644
 --- a/gtweak/utils.py
 +++ b/gtweak/utils.py
 @@ -21,6 +21,7 @@ import tempfile
@@ -95,7 +69,7 @@ index 39f8833..b0993b6 100644
  
  import gtweak
  from gtweak.gsettings import GSettingsSetting
-@@ -116,6 +117,22 @@ def execute_subprocess(cmd_then_args, block=True):
+@@ -117,6 +118,22 @@ def execute_subprocess(cmd_then_args, block=True):
          stdout, stderr = p.communicate()
          return stdout, stderr, p.returncode
  
@@ -119,5 +93,5 @@ index 39f8833..b0993b6 100644
  class AutostartManager:
  
 -- 
-2.12.2
+2.14.1
 
diff --git a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
index 40c0969d588..77b952b4b1e 100644
--- a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
+++ b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
@@ -1,25 +1,24 @@
-From 25c047ac6a2ac892e2be3d7e002fbf7a16725a4c Mon Sep 17 00:00:00 2001
+From 8e75fe5f1ebd8a140a7306294d2219aea4ac47d2 Mon Sep 17 00:00:00 2001
 From: Jascha Geerds <jascha@jgeerds.name>
-Date: Sun, 25 Jun 2017 11:35:10 +0100
+Date: Tue, 19 Sep 2017 03:16:07 +0200
 Subject: [PATCH 2/3] Don't show multiple entries for a single theme
 
 ---
- gtweak/tweaks/tweak_group_interface.py |  8 ++++----
- gtweak/tweaks/tweak_group_keymouse.py  |  4 ++--
- gtweak/utils.py                        | 16 ++++++++++++++++
- 3 files changed, 22 insertions(+), 6 deletions(-)
+ gtweak/tweaks/tweak_group_appearance.py |  8 ++++----
+ gtweak/utils.py                         | 16 ++++++++++++++++
+ 2 files changed, 20 insertions(+), 4 deletions(-)
 
-diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py
-index db89b85..4697fe3 100644
---- a/gtweak/tweaks/tweak_group_interface.py
-+++ b/gtweak/tweaks/tweak_group_interface.py
+diff --git a/gtweak/tweaks/tweak_group_appearance.py b/gtweak/tweaks/tweak_group_appearance.py
+index 0d12194..8e05077 100644
+--- a/gtweak/tweaks/tweak_group_appearance.py
++++ b/gtweak/tweaks/tweak_group_appearance.py
 @@ -26,7 +26,7 @@ from gi.repository import Gtk
  from gi.repository import GLib
  
  import gtweak
 -from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
 +from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs, get_unique_resources
- from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.tweakmodel import Tweak
  from gtweak.gshellwrapper import GnomeShellFactory
  from gtweak.gsettings import GSettingsSetting
 @@ -54,7 +54,7 @@ class GtkThemeSwitcher(GSettingsComboTweak):
@@ -49,33 +48,11 @@ index db89b85..4697fe3 100644
  
  class ShellThemeTweak(Gtk.Box, Tweak):
  
-diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py
-index b06900c..d34793e 100644
---- a/gtweak/tweaks/tweak_group_keymouse.py
-+++ b/gtweak/tweaks/tweak_group_keymouse.py
-@@ -21,7 +21,7 @@ from gi.repository import GLib
- 
- import gtweak
- from gtweak.gshellwrapper import GnomeShellFactory
--from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
-+from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs, get_unique_resources
- from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
- 
- _shell = GnomeShellFactory().get_shell()
-@@ -44,7 +44,7 @@ class KeyThemeSwitcher(GSettingsComboTweak):
-         valid = walk_directories(get_resource_dirs("themes"), lambda d:
-                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
-                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
--        return valid
-+        return get_unique_resources(valid)
- 
- TWEAK_GROUPS = [
-     ListBoxTweakGroup(_("Keyboard and Mouse"),
 diff --git a/gtweak/utils.py b/gtweak/utils.py
-index b0993b6..0d995bc 100644
+index 6c60b88..6fd7c6a 100644
 --- a/gtweak/utils.py
 +++ b/gtweak/utils.py
-@@ -133,6 +133,22 @@ def get_resource_dirs(resource):
+@@ -134,6 +134,22 @@ def get_resource_dirs(resource):
  
      return [dir for dir in dirs if os.path.isdir(dir)]
  
@@ -99,5 +76,5 @@ index b0993b6..0d995bc 100644
  class AutostartManager:
  
 -- 
-2.12.2
+2.14.1
 
diff --git a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
index 5082a55387a..fcb35a02679 100644
--- a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
+++ b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
@@ -1,6 +1,6 @@
-From ba2eb4be6c69ee8206e0139268c896e6a2b278d8 Mon Sep 17 00:00:00 2001
+From 6a6a7d1c708a2f568277699c5b605fa03ccb5faa Mon Sep 17 00:00:00 2001
 From: Jascha Geerds <jascha@jgeerds.name>
-Date: Sun, 25 Jun 2017 11:50:33 +0100
+Date: Tue, 19 Sep 2017 03:17:20 +0200
 Subject: [PATCH 3/3] Create config dir if it doesn't exist
 
 ---
@@ -8,7 +8,7 @@ Subject: [PATCH 3/3] Create config dir if it doesn't exist
  1 file changed, 4 insertions(+)
 
 diff --git a/gtweak/gtksettings.py b/gtweak/gtksettings.py
-index a0c163b..f5883ec 100644
+index a11363b..2871c49 100644
 --- a/gtweak/gtksettings.py
 +++ b/gtweak/gtksettings.py
 @@ -36,6 +36,10 @@ class GtkSettingsManager:
@@ -23,5 +23,5 @@ index a0c163b..f5883ec 100644
              keyfile.load_from_file(self._path, 0)
          except MemoryError:
 -- 
-2.12.2
+2.14.1
 
diff --git a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/default.nix
index ad415368368..0ab752cf1ba 100644
--- a/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/default.nix
+++ b/pkgs/desktops/gnome-3/misc/gnome-tweak-tool/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, intltool, fetchurl, atk
+{ stdenv, meson, ninja, gettext, fetchurl, atk
 , pkgconfig, gtk3, glib, libsoup
-, bash, itstool, libxml2, python2Packages
+, bash, itstool, libxml2, python3Packages
 , gnome3, librsvg, gdk_pixbuf, file, libnotify, gobjectIntrospection, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
@@ -8,22 +8,25 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  checkPhase = "meson test";
 
-  makeFlags = [ "DESTDIR=/" ];
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk3 glib intltool itstool libxml2
-                  gnome3.gsettings_desktop_schemas file
+  nativeBuildInputs = [ meson ninja pkgconfig gettext itstool libxml2 file wrapGAppsHook ];
+  buildInputs = [ gtk3 glib gnome3.gsettings_desktop_schemas
                   gdk_pixbuf gnome3.defaultIconTheme librsvg
-                  libnotify gnome3.gnome_shell python2Packages.pygobject3
+                  libnotify gnome3.gnome_shell python3Packages.pygobject3
                   libsoup gnome3.gnome_settings_daemon gnome3.nautilus
-                  gnome3.gnome_desktop wrapGAppsHook gobjectIntrospection
+                  gnome3.gnome_desktop gobjectIntrospection
                 ];
 
+  postPatch = ''
+    patchShebangs meson-postinstall.py
+  '';
+
   preFixup = ''
     gappsWrapperArgs+=(
-      --prefix PYTHONPATH : "$out/${python2Packages.python.sitePackages}:$PYTHONPATH")
+      --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH")
   '';
 
   patches = [
diff --git a/pkgs/desktops/gnome-3/misc/libgda/default.nix b/pkgs/desktops/gnome-3/misc/libgda/default.nix
index f477c13c7ba..edb34996867 100644
--- a/pkgs/desktops/gnome-3/misc/libgda/default.nix
+++ b/pkgs/desktops/gnome-3/misc/libgda/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3, openssl }:
+{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, itstool, libxml2, gtk3, openssl }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;