summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/3.22/core
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/gnome-3/3.22/core')
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/baobab/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/baobab/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/caribou/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/empathy/default.nix57
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/eog/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/eog/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix34
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evince/default.nix63
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evince/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/folks/default.nix43
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gconf/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gcr/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gcr/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch15
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch83
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/default.nix47
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch38
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix47
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix56
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix34
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix63
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix46
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix29
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh7
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsound/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgee/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/default.nix34
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/math.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch24
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/rest/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/sushi/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/sushi/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/tracker/default.nix48
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/tracker/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vino/default.nix39
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vino/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/default.nix55
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/zenity/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/zenity/src.nix10
145 files changed, 3112 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix
new file mode 100644
index 00000000000..3c3a05dc3af
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor_icon_theme }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # For convenience, we can specify adwaita-icon-theme only in packages
+  propagatedBuildInputs = [ hicolor_icon_theme ];
+
+  buildInputs = [ gdk_pixbuf librsvg ];
+
+  nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
+
+  # remove a tree of dirs with no files within
+  postInstall = '' rm -rf "$out/locale" '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix
new file mode 100644
index 00000000000..a48b404ceb6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "adwaita-icon-theme-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/adwaita-icon-theme/3.22/adwaita-icon-theme-3.22.0.tar.xz;
+    sha256 = "c18bf6e26087d9819a962c77288b291efab25d0419b73d909dd771716a45dcb7";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix b/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix
new file mode 100644
index 00000000000..f7a0ff473cc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl, vala_0_32, libgtop
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+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 ];
+
+  buildInputs = [ vala_0_32 pkgconfig gtk3 glib libgtop intltool itstool libxml2
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/baobab" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  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;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix b/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix
new file mode 100644
index 00000000000..df4cefc4816
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "baobab-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/baobab/3.22/baobab-3.22.0.tar.xz;
+    sha256 = "796e784886d5bdf2e9d8ac94d74d5f94e055f4285ef54dc16552fb9c9b9c3e99";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix
new file mode 100644
index 00000000000..d63b6e86af3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2, autoconf
+, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core, automake }:
+
+let
+  majorVersion = "0.4";
+in
+stdenv.mkDerivation rec {
+  name = "caribou-${majorVersion}.21";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/caribou/${majorVersion}/${name}.tar.xz";
+    sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww";
+  };
+
+  buildInputs = with gnome3;
+    [ glib pkgconfig gtk clutter at_spi2_core dbus pythonPackages.python automake
+      pythonPackages.pygobject3 libxml2 libXtst gtk2 intltool libxslt autoconf ];
+
+  propagatedBuildInputs = [ gnome3.libgee libxklavier ];
+
+  preBuild = ''
+    patchShebangs .
+    substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix
new file mode 100644
index 00000000000..6e0184e134e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
+, libxml2, intltool, docbook_xsl_ns, docbook_xsl, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ vala_0_32 libxslt glib dbus_glib gnome3.gtk libxml2 gnome3.defaultIconTheme
+                  intltool docbook_xsl docbook_xsl_ns gnome3.dconf ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix
new file mode 100644
index 00000000000..64e19864536
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "dconf-editor-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/dconf-editor/3.22/dconf-editor-3.22.0.tar.xz;
+    sha256 = "4ca3c2c3836f4c944f161540d1521507dab8e7bee0cac7d543560808efb9246f";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix b/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix
new file mode 100644
index 00000000000..02c60256e15
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
+, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }:
+
+let
+  majorVersion = "0.26";
+in
+stdenv.mkDerivation rec {
+  name = "dconf-${version}";
+  version = "${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/dconf/${majorVersion}/${name}.tar.xz";
+    sha256 = "1jaqsr1r0grpd25rbsc2v3vb0sc51lia9w31wlqswgqsncp2k0w6";
+  };
+
+  buildInputs = [ vala_0_32 libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2
+                  intltool docbook_xsl docbook_xsl_ns makeWrapper ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix
new file mode 100644
index 00000000000..9a29d11f1ae
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, gnome3, gdk_pixbuf
+, dbus_glib, dbus_libs, telepathy_glib, telepathy_farstream
+, clutter_gtk, clutter-gst, gst_all_1, cogl, gnome_online_accounts
+, gcr, libsecret, folks, libpulseaudio, telepathy_mission_control
+, telepathy_logger, libnotify, clutter, libsoup, gnutls
+, evolution_data_server
+, libcanberra_gtk3, p11_kit, farstream, libtool, shared_mime_info
+, bash, makeWrapper, itstool, libxml2, libxslt, icu, libgee  }:
+
+# TODO: enable more features
+
+let
+  majorVersion = "3.12";
+in
+stdenv.mkDerivation rec {
+  name = "empathy-${majorVersion}.11";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/empathy/${majorVersion}/${name}.tar.xz";
+    sha256 = "11yl8msyf017197fm6h15yw159yjp9i08566l967yashbx7gzr6i";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
+                            gnome_online_accounts shared_mime_info ];
+  propagatedBuildInputs = [ folks telepathy_logger evolution_data_server
+                            telepathy_mission_control ];
+  buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool
+                  libxml2 libxslt icu file makeWrapper
+                  telepathy_glib clutter_gtk clutter-gst cogl
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base
+                  gcr libsecret libpulseaudio gnome3.yelp_xsl gdk_pixbuf
+                  libnotify clutter libsoup gnutls libgee p11_kit
+                  libcanberra_gtk3 telepathy_farstream farstream
+                  gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas
+                  file libtool librsvg ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.dev}/lib/dbus-1.0/include" ];
+
+  preFixup = ''
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Empathy;
+    description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
+    maintainers = gnome3.maintainers;
+    # TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/eog/default.nix b/pkgs/desktops/gnome-3/3.22/core/eog/default.nix
new file mode 100644
index 00000000000..23759e3bf90
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/eog/default.nix
@@ -0,0 +1,20 @@
+{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3
+, shared_mime_info, wrapGAppsHook, librsvg, libexif }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = with gnome3;
+    [ intltool itstool libxml2 libjpeg gtk glib libpeas librsvg
+      gsettings_desktop_schemas shared_mime_info adwaita-icon-theme
+      gnome_desktop libexif dconf ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/EyeOfGnome;
+    platforms = platforms.linux;
+    description = "GNOME image viewer";
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/eog/src.nix b/pkgs/desktops/gnome-3/3.22/core/eog/src.nix
new file mode 100644
index 00000000000..f3995e6bc2c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/eog/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "eog-3.20.4";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/eog/3.20/eog-3.20.3.tar.xz;
+    sha256 = "09ic1ndvl31jnlsmigd5dgdv262ybq61ik0xh35kmvgcklw8qc0n";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix
new file mode 100644
index 00000000000..f29ee583db6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu
+, bash, wrapGAppsHook, gnome3, libwnck3, libxml2, libxslt, libtool
+, webkitgtk, libsoup, glib_networking, libsecret, gnome_desktop, libnotify, p11_kit
+, sqlite, gcr, avahi, nss, isocodes, itstool, file, which
+, gdk_pixbuf, librsvg, gnome_common }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Tests need an X display
+  configureFlags = [ "--disable-static --disable-tests" ];
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig file wrapGAppsHook ];
+
+  buildInputs = [ gtk3 glib intltool libwnck3 libxml2 libxslt pkgconfig 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 ];
+
+  NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Epiphany;
+    description = "WebKit based web browser for GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix b/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix
new file mode 100644
index 00000000000..09ea2baf197
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "epiphany-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/epiphany/3.22/epiphany-3.22.0.tar.xz;
+    sha256 = "a645d17c10a1c266d4647306ea3e5496d3ca575d2ed8152947ed77e9eb623a27";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evince/default.nix b/pkgs/desktops/gnome-3/3.22/core/evince/default.nix
new file mode 100644
index 00000000000..7629e5b5655
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evince/default.nix
@@ -0,0 +1,63 @@
+{ fetchurl, stdenv, pkgconfig, intltool, perl, perlXMLParser, libxml2
+, glib, gtk3, pango, atk, gdk_pixbuf, shared_mime_info, itstool, gnome3
+, poppler, ghostscriptX, djvulibre, libspectre, libsecret , wrapGAppsHook
+, librsvg, gobjectIntrospection
+, recentListSize ? null # 5 is not enough, allow passing a different number
+, supportXPS ? false    # Open XML Paper Specification via libgxps
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    intltool perl perlXMLParser libxml2
+    glib gtk3 pango atk gdk_pixbuf gobjectIntrospection
+    itstool gnome3.adwaita-icon-theme
+    gnome3.libgnome_keyring gnome3.gsettings_desktop_schemas
+    poppler ghostscriptX djvulibre libspectre
+    libsecret librsvg gnome3.adwaita-icon-theme gnome3.dconf
+  ] ++ stdenv.lib.optional supportXPS gnome3.libgxps;
+
+  configureFlags = [
+    "--disable-nautilus" # Do not use nautilus
+    "--enable-introspection"
+    (if supportXPS then "--enable-xps" else "--disable-xps")
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  preConfigure = with stdenv.lib;
+    optionalString doCheck ''
+      for file in test/*.py; do
+        echo "patching $file"
+        sed '1s,/usr,${python},' -i "$file"
+      done
+    '' + optionalString (recentListSize != null) ''
+      sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' shell/ev-open-recent-action.c
+      sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' shell/ev-window.c
+    '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared_mime_info}/share")
+  '';
+
+  doCheck = false; # would need pythonPackages.dogTail, which is missing
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/projects/evince/;
+    description = "GNOME's document viewer";
+
+    longDescription = ''
+      Evince is a document viewer for multiple document formats.  It
+      currently supports PDF, PostScript, DjVu, TIFF and DVI.  The goal
+      of Evince is to replace the multiple document viewers that exist
+      on the GNOME Desktop with a single simple application.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vcunat ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evince/src.nix b/pkgs/desktops/gnome-3/3.22/core/evince/src.nix
new file mode 100644
index 00000000000..36572a58e17
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evince/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "evince-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/evince/3.22/evince-3.22.0.tar.xz;
+    sha256 = "22ebabf890057e8b43020ffdebdbb57d6a586beba031838f0f0c8a596c479d46";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix
new file mode 100644
index 00000000000..6b13b726296
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, python
+, intltool, libsoup, libxml2, libsecret, icu, sqlite
+, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true, vala_0_32 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3;
+    [ pkgconfig glib python intltool libsoup libxml2 gtk gnome_online_accounts
+      gcr p11_kit libgweather libgdata gperf makeWrapper icu sqlite gsettings_desktop_schemas ]
+    ++ stdenv.lib.optional valaSupport vala_0_32;
+
+  propagatedBuildInputs = [ libsecret nss nspr libical db ];
+
+  # uoa irrelevant for now
+  configureFlags = [ "--disable-uoa" "--disable-google-auth" ]
+                   ++ stdenv.lib.optional valaSupport "--enable-vala-bindings";
+
+  preFixup = ''
+    for f in "$out/libexec/"*; do
+      wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix
new file mode 100644
index 00000000000..84817846f72
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "evolution-data-server-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/evolution-data-server/3.22/evolution-data-server-3.22.0.tar.xz;
+    sha256 = "8653a9a28980e661e8b91ba335dae04a0553e12611ad155bc48fb3fb3c98653d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/folks/default.nix b/pkgs/desktops/gnome-3/3.22/core/folks/default.nix
new file mode 100644
index 00000000000..790cf7959ce
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/folks/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, pkgconfig, glib, gnome3, nspr, intltool
+, vala_0_32, sqlite, libxml2, dbus_glib, libsoup, nss, dbus_libs
+, telepathy_glib, evolution_data_server, libsecret, db }:
+
+# TODO: enable more folks backends
+
+let
+  majorVersion = "0.11";
+in
+stdenv.mkDerivation rec {
+  name = "folks-${majorVersion}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/folks/${majorVersion}/${name}.tar.xz";
+    sha256 = "0q9hny6a38zn0gamv0ji0pn3jw6bpn2i0fr6vbzkhm9h9ws0cqvz";
+  };
+
+  propagatedBuildInputs = [ glib gnome3.libgee sqlite ];
+  # dbus_daemon needed for tests
+  buildInputs = [ dbus_glib telepathy_glib evolution_data_server dbus_libs
+                  vala_0_32 libsecret libxml2 libsoup nspr nss intltool db ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  configureFlags = "--disable-fatal-warnings";
+
+  NIX_CFLAGS_COMPILE = ["-I${nspr.dev}/include/nspr" "-I${nss.dev}/include/nss"
+                        "-I${dbus_glib.dev}/include/dbus-1.0" "-I${dbus_libs.dev}/include/dbus-1.0"];
+
+  enableParallelBuilding = true;
+
+  postBuild = "rm -rf $out/share/gtk-doc";
+
+  meta = {
+    description = "Folks";
+
+    homepage = https://wiki.gnome.org/Projects/Folks;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = gnome3.maintainers;
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix b/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix
new file mode 100644
index 00000000000..a4cb3e8c146
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, dbus_glib, gnome3 ? null, glib, libxml2
+, intltool, polkit, orbit, withGtk ? false }:
+
+assert withGtk -> (gnome3 != null);
+
+stdenv.mkDerivation rec {
+
+  versionMajor = "3.2";
+  versionMinor = "6";
+  moduleName   = "GConf";
+
+  origName = "${moduleName}-${versionMajor}.${versionMinor}";
+
+  name = "gconf-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${origName}.tar.xz";
+    sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr";
+  };
+
+  buildInputs = [ libxml2 polkit orbit ] ++ stdenv.lib.optional withGtk gnome3.gtk;
+  propagatedBuildInputs = [ glib dbus_glib  ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  # ToDo: ldap reported as not found but afterwards reported as supported
+
+  meta = with stdenv.lib; {
+    homepage = http://projects.gnome.org/gconf/;
+    description = "A system for storing application preferences";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix b/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix
new file mode 100644
index 00000000000..55eebf77be5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib
+, libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk
+, gobjectIntrospection, makeWrapper, libxslt, vala_0_32, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig intltool gnupg glib gobjectIntrospection libxslt
+    libgcrypt libtasn1 dbus_glib gtk pango gdk_pixbuf atk makeWrapper vala_0_32
+  ];
+
+  propagatedBuildInputs = [ p11_kit ];
+
+  #doCheck = true;
+
+  #enableParallelBuilding = true; issues on hydra
+
+  preFixup = ''
+    wrapProgram "$out/bin/gcr-viewer" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix b/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix
new file mode 100644
index 00000000000..d166f033266
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gcr-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gcr/3.20/gcr-3.20.0.tar.xz;
+    sha256 = "90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix
new file mode 100644
index 00000000000..51b67afb01f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus
+, intltool, accountsservice, libX11, gnome3, systemd, gnome_session
+, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "gdm-${gnome3.version}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gdm/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0mhv3q8z208qvhz00zrxlqn7w9gi5vy6w8dpjh5s2ka28l3yhbn3";
+  };
+
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X"
+    substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session'
+    substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.tools}/bin/dbus-launch'
+    substituteInPlace data/gdm.conf-custom.in --replace '#WaylandEnable=false' 'WaylandEnable=false'
+    sed 's/#Enable=true/Enable=true/' -i data/gdm.conf-custom.in
+ '';
+
+  configureFlags = [ "--localstatedir=/var" "--with-systemd=yes" "--without-plymouth"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+                     "--with-initial-vt=10" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool ];
+
+  #enableParallelBuilding = true; # problems compiling
+
+  # Disable Access Control because our X does not support FamilyServerInterpreted yet
+  patches = [ ./xserver_path.patch ./sessions_dir.patch ./disable_x_access_control.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GDM;
+    description = "A program that manages graphical display servers and handles graphical user logins";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch
new file mode 100644
index 00000000000..7691a9e86f0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch
@@ -0,0 +1,15 @@
+--- gdm-3.16.0/daemon/gdm-display.c.orig	2015-04-08 13:53:14.370274369 +0200
++++ gdm-3.16.0/daemon/gdm-display.c	2015-04-08 13:53:36.287520435 +0200
+@@ -1706,9 +1706,10 @@
+ 
+                 gdm_error_trap_push ();
+ 
+-                for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
++                /*for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+                         XAddHost (self->priv->x11_display, &host_entries[i]);
+-                }
++                }*/
++                XDisableAccessControl(self->priv->x11_display);
+ 
+                 XSync (self->priv->x11_display, False);
+                 if (gdm_error_trap_pop ()) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch
new file mode 100644
index 00000000000..b8fbad4d731
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
+index f759d2d..d154716 100644
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -373,9 +373,12 @@ get_system_session_dirs (void)
+ #ifdef ENABLE_WAYLAND_SUPPORT
+                 DATADIR "/wayland-sessions/",
+ #endif
++                NULL,
+                 NULL
+         };
+ 
++        search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL;
++
+         return search_dirs;
+ }
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch
new file mode 100644
index 00000000000..b451d129391
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch
@@ -0,0 +1,83 @@
+--- a/daemon/gdm-server.c	2014-07-30 23:00:17.786841724 +0200
++++ b/daemon/gdm-server.c	2014-07-30 23:02:10.491239180 +0200
+@@ -322,7 +322,11 @@
+ fallback:
+ #endif
+ 
+-        server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++            server->priv->command = g_strdup (g_getenv("GDM_X_SERVER"));
++        } else {
++            server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        }
+ }
+ 
+ static gboolean
+--- gdm-3.16.0/daemon/gdm-x-session.c.orig	2015-04-15 18:44:16.875743928 +0200
++++ gdm-3.16.0/daemon/gdm-x-session.c	2015-04-16 13:34:02.335708638 +0200
+@@ -207,6 +207,8 @@
+         char     *display_fd_string = NULL;
+         char     *vt_string = NULL;
+         char     *display_number;
++        int nixos_argc = 0;
++        char **nixos_argv = NULL;
+         gsize     display_number_size;
+ 
+         auth_file = prepare_auth_file ();
+@@ -236,7 +238,15 @@
+ 
+         display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
+ 
+-        g_ptr_array_add (arguments, X_SERVER);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++                int i = 0;
++                g_shell_parse_argv(g_getenv("GDM_X_SERVER"), &nixos_argc, &nixos_argv, NULL);
++                for (i = 0; i < nixos_argc; i++) {
++                        g_ptr_array_add (arguments, nixos_argv[i]);
++                }
++        } else {
++                g_ptr_array_add (arguments, X_SERVER);
++        }
+ 
+         if (vt_string != NULL) {
+                 g_ptr_array_add (arguments, vt_string);
+@@ -259,12 +269,12 @@
+         g_ptr_array_add (arguments, "-noreset");
+         g_ptr_array_add (arguments, "-keeptty");
+ 
+-        g_ptr_array_add (arguments, "-verbose");
++        /*g_ptr_array_add (arguments, "-verbose");
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "7");
+         } else {
+                 g_ptr_array_add (arguments, "3");
+-        }
++        }*/
+ 
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "-core");
+@@ -275,6 +285,9 @@
+                                                    (const char * const *) arguments->pdata,
+                                                    &error);
+         g_free (display_fd_string);
++        if (nixos_argv) {
++                 g_strfreev (nixos_argv);
++        }
+         g_clear_object (&launcher);
+         g_ptr_array_free (arguments, TRUE);
+ 
+--- gdm-3.16.0/daemon/gdm-session.c.orig	2015-04-16 14:19:01.392802683 +0200
++++ gdm-3.16.0/daemon/gdm-session.c	2015-04-16 14:20:36.012296764 +0200
+@@ -2359,6 +2359,12 @@
+         gchar *desktop_names;
+         const char *locale;
+ 
++        if (g_getenv ("GDM_X_SERVER") != NULL) {
++                gdm_session_set_environment_variable (self,
++                                                      "GDM_X_SERVER",
++                                                      g_getenv ("GDM_X_SERVER"));
++        }
++
+         gdm_session_set_environment_variable (self,
+                                               "GDMSESSION",
+                                               get_session_name (self));
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix
new file mode 100644
index 00000000000..3a440232a48
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus
+, intltool, accountsservice, libX11, gnome3, systemd, autoreconfHook
+, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection, plymouth }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Only needed to make it build
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
+  '';
+
+  configureFlags = [ "--sysconfdir=/etc"
+                     "--localstatedir=/var"
+                     "--with-systemd=yes"
+                     "--with-plymouth=yes"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool autoreconfHook
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool plymouth ];
+
+  #enableParallelBuilding = true; # problems compiling
+
+  # Disable Access Control because our X does not support FamilyServerInterpreted yet
+  patches = [ #./xserver_path.patch # gdm now uses wayland
+              ./sessions_dir.patch
+              ./gdm-x-session_extra_args.patch
+              ./gdm-session-worker_xserver-path.patch
+             # ./disable_x_access_control.patch ./no-dbus-launch.patch
+             # ./libsystemd.patch
+             ];
+
+  installFlags = [ "sysconfdir=$(out)/etc" "dbusconfdir=$(out)/etc/dbus-1/system.d" ];
+
+  postInstall = ''
+    mv $out/share/gdm/greeter/applications/gnome-shell.desktop $out/share/gdm/greeter/applications/org.gnome.Shell.desktop
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GDM;
+    description = "A program that manages graphical display servers and handles graphical user logins";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch
new file mode 100644
index 00000000000..e100e013b78
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch
@@ -0,0 +1,13 @@
+--- gdm-3.14.2/daemon/gdm-slave.c.orig	2015-04-16 15:05:27.844353079 +0200
++++ gdm-3.14.2/daemon/gdm-slave.c	2015-04-16 15:05:40.240417915 +0200
+@@ -369,8 +369,9 @@
+                 gdm_error_trap_push ();
+ 
+                 for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+-                        XAddHost (slave->priv->server_display, &host_entries[i]);
++                        //XAddHost (slave->priv->server_display, &host_entries[i]);
+                 }
++                XDisableAccessControl(slave->priv->server_display);
+ 
+                 XSync (slave->priv->server_display, False);
+                 if (gdm_error_trap_pop ()) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch
new file mode 100644
index 00000000000..d020752fef3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-session-worker.c.orig b/daemon/gdm-session-worker.c
+index 7bbda49..592691d 100644
+--- a/daemon/gdm-session-worker.c.orig
++++ b/daemon/gdm-session-worker.c
+@@ -1557,6 +1557,12 @@ gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
+                 goto out;
+         }
+ 
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("forwarding GDM_X_SERVER_EXTRA_ARGS= %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                gdm_session_worker_set_environment_variable (worker, "GDM_X_SERVER_EXTRA_ARGS",
++                                                             g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++        }
++
+         gdm_session_worker_update_environment_from_passwd_info (worker,
+                                                                 uid,
+                                                                 gid,
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch
new file mode 100644
index 00000000000..66071aa4af8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch
@@ -0,0 +1,38 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..1f4b7f1 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -211,6 +211,7 @@ spawn_x_server (State        *state,
+         char     *vt_string = NULL;
+         char     *display_number;
+         gsize     display_number_size;
++        gchar   **xserver_extra_args = NULL;
+ 
+         auth_file = prepare_auth_file ();
+ 
+@@ -285,6 +286,17 @@ spawn_x_server (State        *state,
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "-core");
+         }
++
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1);
++                for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) {
++                        if (strlen(*extra_arg) < 1) continue;
++			g_debug ("adding: %s", *extra_arg);
++                        g_ptr_array_add (arguments, *extra_arg);
++                }
++        }
++
+         g_ptr_array_add (arguments, NULL);
+ 
+         subprocess = g_subprocess_launcher_spawnv (launcher,
+@@ -332,6 +344,7 @@ spawn_x_server (State        *state,
+ 
+         is_running = TRUE;
+ out:
++	g_strfreev(xserver_extra_args);
+         g_clear_pointer (&auth_file, g_free);
+         g_clear_object (&data_stream);
+         g_clear_object (&subprocess);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch
new file mode 100644
index 00000000000..84081f4786c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch
@@ -0,0 +1,19 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..86f0d47 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -240,7 +240,13 @@ spawn_x_server (State        *state,
+ 
+         display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
+ 
+-        g_ptr_array_add (arguments, X_SERVER);
++        if (g_getenv ("GDM_X_SERVER") != NULL) {
++                g_debug ("using GDM_X_SERVER: %s", g_getenv("GDM_X_SERVER"));
++		g_ptr_array_add (arguments, g_getenv("GDM_X_SERVER"));
++        } else {
++                g_debug ("GDM_X_SERVER not set, using default: %s", X_SERVER);
++                g_ptr_array_add (arguments, X_SERVER);
++        }
+ 
+         if (vt_string != NULL) {
+                 g_ptr_array_add (arguments, vt_string);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch
new file mode 100644
index 00000000000..4556f418cc8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch
@@ -0,0 +1,21 @@
+https://github.com/GNOME/gdm/commit/eee5bf72c9bb1c1d62eb0e7102088ae3b9a188cd
+--- a/configure.ac	2016-05-27 11:10:44.589740789 +0200
++++ b/configure.ac	2016-05-27 11:11:00.146427723 +0200
+@@ -888,7 +888,7 @@
+ dnl ---------------------------------------------------------------------------
+ 
+ PKG_CHECK_MODULES(SYSTEMD,
+-                  [libsystemd-login >= 186 libsystemd-daemon],
++                  [libsystemd],
+                   [have_systemd=yes], [have_systemd=no])
+ 
+ if test "x$with_systemd" = "xauto" ; then
+@@ -912,7 +912,7 @@
+ AC_SUBST(SYSTEMD_LIBS)
+ 
+ PKG_CHECK_MODULES(JOURNALD,
+-                  [libsystemd-journal],
++                  [libsystemd],
+                   [have_journald=yes], [have_journald=no])
+ 
+ if test "x$enable_systemd_journal" = "xauto" ; then
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch
new file mode 100644
index 00000000000..c87554078c7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch
@@ -0,0 +1,20 @@
+--- a/daemon/gdm-launch-environment.c	2015-06-22 15:11:07.277474398 +0000
++++ b/daemon/gdm-launch-environment.c	2015-06-22 15:12:31.301157665 +0000
+@@ -48,8 +48,6 @@
+ #include "gdm-session-enum-types.h"
+ #include "gdm-launch-environment.h"
+ 
+-#define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch --exit-with-session"
+-
+ extern char **environ;
+ 
+ #define GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentPrivate))
+@@ -512,7 +510,7 @@
+                 gdm_session_select_program (launch_environment->priv->session, launch_environment->priv->command);
+         } else {
+                 /* wrap it in dbus-launch */
+-                char *command = g_strdup_printf ("%s %s", DBUS_LAUNCH_COMMAND, launch_environment->priv->command);
++                char *command = g_strdup (launch_environment->priv->command);
+ 
+                 gdm_session_select_program (launch_environment->priv->session, command);
+                 g_free (command);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch
new file mode 100644
index 00000000000..9714a68600a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch
@@ -0,0 +1,21 @@
+diff --git a/daemon/gdm-session.c.orig b/daemon/gdm-session.c
+index b839fea..053d4ac 100644
+--- a/daemon/gdm-session.c.orig
++++ b/daemon/gdm-session.c
+@@ -344,12 +344,16 @@ get_system_session_dirs (GdmSession *self)
+ #ifdef ENABLE_WAYLAND_SUPPORT
+                 DATADIR "/wayland-sessions/",
+ #endif
++                "/var/empty",
+                 "/etc/X11/sessions/",
+                 DMCONFDIR "/Sessions/",
+                 DATADIR "/gdm/BuiltInSessions/",
+                 DATADIR "/xsessions/",
+                 NULL
+         };
++        if (getenv("GDM_SESSIONS_DIR") != NULL) {
++                search_dirs[1] = getenv("GDM_SESSIONS_DIR");
++        };
+ 
+ #ifdef ENABLE_WAYLAND_SUPPORT
+         if (self->priv->ignore_wayland) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix
new file mode 100644
index 00000000000..795be7f4cfe
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gdm-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gdm/3.22/gdm-3.22.0.tar.xz;
+    sha256 = "b9180d07c6a4a3fb0e8df6bcb4f333008cb3071f0ef81e02f081ff8a144f62d4";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch
new file mode 100644
index 00000000000..3f2ec808cd6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-server.c.orig b/daemon/gdm-server.c
+index 6357d34..5bef5c8 100644
+--- a/daemon/gdm-server.c.orig
++++ b/daemon/gdm-server.c
+@@ -264,7 +264,11 @@ gdm_server_init_command (GdmServer *server)
+         return;
+ 
+ fallback:
+-        server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++            server->priv->command = g_strdup (g_getenv("GDM_X_SERVER"));
++        } else {
++            server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        }
+ 
+ }
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix
new file mode 100644
index 00000000000..4d75bdc4996
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix
@@ -0,0 +1,14 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, libsoup, json_glib }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig glib libsoup json_glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix
new file mode 100644
index 00000000000..135e05e90e9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "geocode-glib-3.20.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/geocode-glib/3.20/geocode-glib-3.20.1.tar.xz;
+    sha256 = "669fc832cabf8cc2f0fc4194a8fa464cdb9c03ebf9aca5353d7cf935ba8637a2";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
new file mode 100644
index 00000000000..ac5572decb8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
@@ -0,0 +1,20 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, gtk3, gobjectIntrospection
+, spidermonkey_24, pango, readline, glib, libxml2, dbus }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ libxml2 gobjectIntrospection pkgconfig gtk3 glib pango readline dbus ];
+
+  propagatedBuildInputs = [ spidermonkey_24 ];
+
+  postInstall = ''
+    sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la
+  '';
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
new file mode 100644
index 00000000000..1f4ef08f9b1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
@@ -0,0 +1,11 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  name = "gjs-${major}.0";
+  major = "1.46";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gjs/${major}/${name}.tar.xz";
+    sha256 = "2283591fa70785443793e1d7db66071b36052d707075f229baeb468d8dd25ad4";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix
new file mode 100644
index 00000000000..32d6d6e7535
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix
@@ -0,0 +1,12 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix
new file mode 100644
index 00000000000..2b20cae9cda
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-backgrounds-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-backgrounds/3.22/gnome-backgrounds-3.22.0.tar.xz;
+    sha256 = "6c83e01647375d5c409312d7215d038d705a3f214179227ed37d3158afdd001f";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix
new file mode 100644
index 00000000000..7fae0b5c67f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, gnome3, pkgconfig, gtk3, intltool, glib
+, udev, itstool, libxml2, makeWrapper, libnotify, libcanberra_gtk3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig intltool glib gtk3 udev libxml2 gnome3.defaultIconTheme
+                  makeWrapper gnome3.gsettings_desktop_schemas itstool
+                  libnotify libcanberra_gtk3 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/bluetooth-sendto" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en;
+    description = "Application that let you manage Bluetooth in the GNOME destkop";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix
new file mode 100644
index 00000000000..474d4722b4a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-bluetooth-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-bluetooth/3.20/gnome-bluetooth-3.20.0.tar.xz;
+    sha256 = "93b3ca16b348a168d044b3f777049b7dba2a9292c4adb2751a771e3bc5e4eb53";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix
new file mode 100644
index 00000000000..e1b81339e91
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libxml2
+, bash, gtk3, glib, wrapGAppsHook
+, itstool, gnome3, librsvg, gdk_pixbuf, mpfr, gmp, libsoup }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ bash gtk3 glib intltool itstool
+                  libxml2 gnome3.gtksourceview mpfr gmp
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas gnome3.dconf libsoup ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
+    description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix
new file mode 100644
index 00000000000..891ce5c58f6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-calculator-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-calculator/3.22/gnome-calculator-3.22.0.tar.xz;
+    sha256 = "fa0f192fc0cad43a8520d4015780ce008d9fc6201bd2dd6dc06365ba45458728";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix
new file mode 100644
index 00000000000..f9261e183ef
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, which, gnome3, autoconf, automake }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  patches = [(fetchurl {
+    name = "gnome-common-patch";
+    url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935";
+    sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl";
+  })];
+
+  propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome_common tends to require which
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix
new file mode 100644
index 00000000000..8ffe7e20e1a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-common-3.18.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz;
+    sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix
new file mode 100644
index 00000000000..8097cf32ba6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, intltool, fetchurl, evolution_data_server, db
+, pkgconfig, gtk3, glib, libsecret
+, libchamplain, clutter_gtk, geocode_glib
+, bash, makeWrapper, itstool, folks, libnotify, libxml2
+, gnome3, librsvg, gdk_pixbuf, file, telepathy_glib, nspr, nss
+, libsoup, vala_0_32, dbus_glib, automake115x, autoconf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard evolution_data_server ];
+
+  # force build from vala
+  preBuild = ''
+   touch src/*.vala
+  '';
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool evolution_data_server
+                  gnome3.gsettings_desktop_schemas makeWrapper file 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 automake115x autoconf db ];
+
+  preFixup = ''
+    for f in "$out/bin/gnome-contacts" "$out/libexec/gnome-contacts-search-provider"; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  patches = [ ./gio_unix.patch ];
+
+  patchFlags = "-p0";
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Contacts;
+    description = "Contacts is GNOME's integrated address book";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch
new file mode 100644
index 00000000000..f1b3d3c94ac
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch
@@ -0,0 +1,10 @@
+--- configure.ac.orig	2015-04-09 18:45:50.581232289 +0200
++++ configure.ac	2015-04-09 18:45:59.744280137 +0200
+@@ -54,6 +54,7 @@
+ 	     champlain-0.12
+ 	     clutter-gtk-1.0
+ 	     geocode-glib-1.0 >= 3.15.3
++	     gio-unix-2.0
+ 	     "
+ PKG_CHECK_MODULES(CONTACTS, [$pkg_modules])
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix
new file mode 100644
index 00000000000..4409747169b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-contacts-3.22.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-contacts/3.22/gnome-contacts-3.22.1.tar.xz;
+    sha256 = "e45297fb6f379a978605f7e183201be70dff2912f55072a363bdb1f67d9fe87b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix
new file mode 100644
index 00000000000..78fc82ebaed
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix
@@ -0,0 +1,56 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, ibus, intltool, upower, makeWrapper
+, libcanberra_gtk2, libcanberra_gtk3, accountsservice, libpwquality, libpulseaudio
+, gdk_pixbuf, librsvg, libxkbfile, libnotify, libgudev
+, libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk
+, cracklib, python, libkrb5, networkmanagerapplet, networkmanager
+, libwacom, samba, shared_mime_info, tzdata, icu, libtool, udev
+, docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter_gtk
+, fontconfig, sound-theme-freedesktop, grilo }:
+
+# http://ftp.gnome.org/pub/GNOME/teams/releng/3.10.2/gnome-suites-core-3.10.2.modules
+# TODO: bluetooth, wacom, printers
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs =
+    [ gnome3.gnome_themes_standard gnome3.libgnomekbd ];
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=752596
+  enableParallelBuilding = false;
+
+  buildInputs = with gnome3;
+    [ pkgconfig intltool ibus gtk glib upower libcanberra_gtk2 gsettings_desktop_schemas
+      libxml2 gnome_desktop gnome_settings_daemon polkit libxslt libgtop gnome-menus
+      gnome_online_accounts libsoup colord libpulseaudio fontconfig colord-gtk libpwquality
+      accountsservice libkrb5 networkmanagerapplet libwacom samba libnotify libxkbfile
+      shared_mime_info icu libtool docbook_xsl docbook_xsl_ns gnome3.grilo
+      gdk_pixbuf gnome3.defaultIconTheme librsvg clutter clutter_gtk
+      gnome3.vino udev libcanberra_gtk3 libgudev
+      networkmanager modemmanager makeWrapper gnome3.gnome-bluetooth grilo ];
+
+  preBuild = ''
+    substituteInPlace panels/datetime/tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab"
+
+    # hack to make test-endianess happy
+    mkdir -p $out/share/locale
+    substituteInPlace panels/datetime/test-endianess.c --replace "/usr/share/locale/" "$out/share/locale/"
+  '';
+
+  preFixup = with gnome3; ''
+    wrapProgram $out/bin/gnome-control-center \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:${sound-theme-freedesktop}/share:$out/share:$out/share/gnome-control-center:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    for i in $out/share/applications/*; do
+      substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Utilities to configure the GNOME desktop";
+    license = licenses.gpl2Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix
new file mode 100644
index 00000000000..bbe7f5a009d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-control-center-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-control-center/3.22/gnome-control-center-3.22.0.tar.xz;
+    sha256 = "d264ae919aeeb27987dcdd5af5577fad0590e1f184f506b563c89f356aab5052";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix
new file mode 100644
index 00000000000..7265f09731f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, python, libxml2Python, libxslt, which, libX11, gnome3, gtk3, glib
+, intltool, gnome_doc_utils, libxkbfile, xkeyboard_config, isocodes, itstool, wayland
+, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # this should probably be setuphook for glib
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig python libxml2Python libxslt which libX11
+                  xkeyboard_config isocodes itstool wayland
+                  gtk3 glib intltool gnome_doc_utils libxkbfile
+                  gobjectIntrospection ];
+
+  propagatedBuildInputs = [ gnome3.gsettings_desktop_schemas ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix
new file mode 100644
index 00000000000..8efa20f01dc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-desktop-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-desktop/3.22/gnome-desktop-3.22.0.tar.xz;
+    sha256 = "cff36ccd8d0a62177a4c1513ec70d13ead3b84fdc208ba54199cf7616f05644d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix
new file mode 100644
index 00000000000..c94c178558d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+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 ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 file
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  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"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Dictionary;
+    description = "Dictionary is the GNOME application to look up definitions";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix
new file mode 100644
index 00000000000..249cb314c2a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-dictionary-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz;
+    sha256 = "efb36377d46eff9291d3b8fec37baab2355f9dc8bc7edb791b6a625574716121";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix
new file mode 100644
index 00000000000..c329d68674a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
+, bash, gtk3, glib, makeWrapper, cracklib, libnotify
+, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python
+, libcanberra_gtk3, libxslt, libtool, 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 ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool
+                  libxslt libtool libsecret libpwquality cracklib
+                  libnotify libdvdread libcanberra_gtk3 docbook_xsl
+                  gdk_pixbuf gnome3.defaultIconTheme
+                  librsvg udisks2 gnome3.gnome_settings_daemon
+                  gnome3.gsettings_desktop_schemas makeWrapper libxml2 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-disks" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://en.wikipedia.org/wiki/GNOME_Disks;
+    description = "A udisks graphical front-end";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix
new file mode 100644
index 00000000000..c0a0798cd27
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-disk-utility-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-disk-utility/3.22/gnome-disk-utility-3.22.0.tar.xz;
+    sha256 = "757d4ff438e63ac337a8681c9ef184a36143b39494381b609cdf889128d7fb22";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix
new file mode 100644
index 00000000000..d0ec2307a85
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool
+, 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";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gnome_desktop
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-font-viewer" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Program that can preview fonts and create thumbnails for fonts";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix
new file mode 100644
index 00000000000..ee87655bba7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-font-viewer-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-font-viewer/3.22/gnome-font-viewer-3.22.0.tar.xz;
+    sha256 = "bd27cbc523016711508d7913878f32e262893cfcc7e10795171dbf8e35af9be0";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix
new file mode 100644
index 00000000000..3ea108808f5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib, libxslt
+, intltool, pango, gcr, gdk_pixbuf, atk, p11_kit, makeWrapper
+, docbook_xsl_ns, docbook_xsl, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3; [
+    dbus libgcrypt pam python gtk3 gconf libgnome_keyring
+    pango gcr gdk_pixbuf atk p11_kit makeWrapper
+  ];
+
+  propagatedBuildInputs = [ glib libtasn1 libxslt ];
+
+  nativeBuildInputs = [ pkgconfig intltool docbook_xsl_ns docbook_xsl ];
+
+  configureFlags = [
+    "--with-pkcs11-config=$$out/etc/pkcs11/" # installation directories
+    "--with-pkcs11-modules=$$out/lib/pkcs11/"
+  ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-keyring" \
+      --prefix XDG_DATA_DIRS : "${glib.out}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+    wrapProgram "$out/bin/gnome-keyring-daemon" \
+      --prefix XDG_DATA_DIRS : "${glib.out}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix
new file mode 100644
index 00000000000..88179fff3c7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-keyring-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-keyring/3.20/gnome-keyring-3.20.0.tar.xz;
+    sha256 = "bc17cecd748a0e46e302171d11c3ae3d76bba5258c441fabec3786f418e7ec99";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix
new file mode 100644
index 00000000000..90209634fbf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, intltool, pkgconfig, glib, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-menus-${version}";
+  version = "3.10.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-menus/3.10/${name}.tar.xz";
+    sha256 = "0wcacs1vk3pld8wvrwq7fdrm11i56nrajkrp6j1da6jc4yx0m5a6";
+  };
+
+  makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";
+
+  buildInputs = [ intltool pkgconfig glib gobjectIntrospection ];
+
+  meta = {
+    homepage = "http://www.gnome.org";
+    description = "Gnome menu specification";
+
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix
new file mode 100644
index 00000000000..85c15042614
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
+, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
+, telepathy_glib, intltool, dbus_libs, icu
+, libsoup, docbook_xsl_ns, docbook_xsl, gnome3
+}:
+
+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";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper
+                  libsecret dbus_glib telepathy_glib intltool icu libsoup
+                  docbook_xsl_ns docbook_xsl gnome3.defaultIconTheme ];
+
+  preFixup = ''
+    for f in "$out/libexec/"*; do
+      wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix
new file mode 100644
index 00000000000..3c1c426d264
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-online-accounts-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-online-accounts/3.22/gnome-online-accounts-3.22.0.tar.xz;
+    sha256 = "aacce93a71bf5e687a45ae0d00f31ea0625ddd8143235d6d8c64c4ec21bbfa33";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix
new file mode 100644
index 00000000000..90fc3a8737a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2
+, libsoup, json_glib, gmp, openssl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig glib gnome3.libgdata libxml2 libsoup gmp openssl
+                  gnome3.grilo gnome3.libzapojit gnome3.grilo-plugins
+                  gnome3.gnome_online_accounts makeWrapper gnome3.libmediaart
+                  gnome3.tracker gnome3.gfbgraph json_glib gnome3.rest ];
+
+  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";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix
new file mode 100644
index 00000000000..2bafae9967e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-online-miners-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-online-miners/3.22/gnome-online-miners-3.22.0.tar.xz;
+    sha256 = "bf51666866527b236d980fa3a0d036581a85987c59d604566ccb3ad685dd8bb8";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix
new file mode 100644
index 00000000000..29ebe8b0ca6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libcanberra_gtk3
+, bash, gtk3, glib, makeWrapper
+, itstool, 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";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-screenshot" \
+      --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"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://en.wikipedia.org/wiki/GNOME_Screenshot;
+    description = "Utility used in the GNOME desktop environment for taking screenshots";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix
new file mode 100644
index 00000000000..3668417d280
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-screenshot-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-screenshot/3.22/gnome-screenshot-3.22.0.tar.xz;
+    sha256 = "8a05f14b3c7c6cb42f9848ad0332034c7fe5c34a69742910203588fd60b00230";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix
new file mode 100644
index 00000000000..d25bf6b54ba
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix
@@ -0,0 +1,27 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, glib, dbus_glib, json_glib, upower
+, libxslt, intltool, makeWrapper, systemd, xorg }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = "--enable-systemd";
+
+  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 ];
+
+  # FIXME: glib binaries shouldn't be in .dev!
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-session" \
+      --prefix PATH : "${glib.dev}/bin" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix
new file mode 100644
index 00000000000..29f1ad93abb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-session-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-session/3.22/gnome-session-3.22.0.tar.xz;
+    sha256 = "ec5c5e133c8ff1c044802eb887f4911183c45ca2d9de4ce29c6f10768ddc8e42";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix
new file mode 100644
index 00000000000..2f51773049d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix
@@ -0,0 +1,34 @@
+{ 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, makeWrapper, ibus, xkeyboard_config }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # 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 makeWrapper gnome_themes_standard ];
+
+  # FIXME: glib binaries shouldn't be in .dev!
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-settings-daemon-localeexec" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix PATH : "${glib.dev}/bin" \
+      --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+    mkdir -p "$out/share/gnome/autostart"
+    cp "$out/etc/xdg/autostart/gnome-settings-daemon.desktop" "$out/share/gnome/autostart"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix
new file mode 100644
index 00000000000..1457aab1d01
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-settings-daemon-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-settings-daemon/3.22/gnome-settings-daemon-3.22.0.tar.xz;
+    sha256 = "430e42c4f2cc4cb72b669a44c744343f1592ec00d26d2168745a878afe73f82b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix
new file mode 100644
index 00000000000..e9eae87f14e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, intltool, fetchurl, libgtop, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, gnome3, file }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig gtk3 glib libgtop intltool itstool
+                  makeWrapper file ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions;
+    description = "Modify and extend GNOME Shell functionality and behavior";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix
new file mode 100644
index 00000000000..e17d02a011f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-shell-extensions-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-shell-extensions/3.22/gnome-shell-extensions-3.22.0.tar.xz;
+    sha256 = "317b35f6f1299d5162e693d39b21031f5fe875083c4020217db3ec056e245fc5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix
new file mode 100644
index 00000000000..3a19ee41f4c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix
@@ -0,0 +1,63 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, 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
+, libpulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper
+, accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }:
+
+# 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
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Needed to find /etc/NetworkManager/VPN
+  configureFlags = [ "--sysconfdir=/etc" ];
+
+  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 librsvg
+      clutter networkmanager libstartup_notification telepathy_glib docbook_xsl docbook_xsl_ns
+      libXtst p11_kit networkmanagerapplet gjs mutter libpulseaudio caribou evolution_data_server
+      libical libtool nss gtk gstreamer makeWrapper gdm
+      libcanberra_gtk3 gnome_control_center
+      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 ];
+
+  propagatedBuildInputs = [ python3Packages.pygobject3 python3Packages.python gobjectIntrospection ];
+
+  installFlags = [ "keysdir=$(out)/share/gnome-control-center/keybindings" ];
+
+  preBuild = ''
+    patchShebangs src/data-to-c.pl
+    substituteInPlace data/Makefile --replace " install-keysDATA" ""
+  '';
+
+  preFixup = with gnome3; ''
+    wrapProgram "$out/bin/gnome-shell" \
+      --prefix PATH : "${unzip}/bin" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --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"
+
+    wrapProgram "$out/bin/gnome-shell-extension-tool" \
+      --prefix PYTHONPATH : "${python3Packages.pygobject3}/${python3Packages.python.sitePackages}:$PYTHONPATH"
+
+    wrapProgram "$out/libexec/gnome-shell-calendar-server" \
+      --prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+
+    echo "${unzip}/bin" > $out/${passthru.mozillaPlugin}/extra-bin-path
+  '';
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix
new file mode 100644
index 00000000000..b835eea019c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-shell-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-shell/3.22/gnome-shell-3.22.0.tar.xz;
+    sha256 = "d8d22cc19e28641f2eac47e812065c209e4866b6e5f9d636647a0a8c96e5dca9";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix
new file mode 100644
index 00000000000..a6a196625b4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit
+, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3
+, json_glib, libsecret }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup
+                  gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
+                  gtkspell3 json_glib libsecret
+                  polkit attr acl libyaml ];
+  propagatedBuildInputs = [ isocodes ];
+
+  postInstall = ''
+    mkdir -p $out/share/xml/
+    ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "GNOME Software lets you install and update applications and system extensions.";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix
new file mode 100644
index 00000000000..a05e6bd09e5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-software-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-software/3.22/gnome-software-3.22.0.tar.xz;
+    sha256 = "22e30c84851b0768bd46dbb90de6d3308acdc2973d3ca4ee52a19cdb5a0182ba";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix
new file mode 100644
index 00000000000..50ee229cfa4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, pkgconfig
+, bash, gtk3, glib, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-system-log-3.9.90";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-system-log/3.9/${name}.tar.xz";
+    sha256 = "9eeb51982d347aa7b33703031e2c1d8084201374665425cd62199649b29a5411";
+  };
+
+  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 ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool
+                  gnome3.gsettings_desktop_schemas makeWrapper libxml2 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-system-log" \
+      --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"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-system-log/3.9/;
+    description = "Graphical, menu-driven viewer that you can use to view and monitor your system logs";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix
new file mode 100644
index 00000000000..bdbdefecf22
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtkmm3, libxml2
+, bash, gtk3, glib, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, libgtop }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libxml2
+                  gtkmm3 libgtop makeWrapper
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-system-monitor" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-system-monitor/3.12/;
+    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;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix
new file mode 100644
index 00000000000..e8e9ba37501
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-system-monitor-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-system-monitor/3.22/gnome-system-monitor-3.22.0.tar.xz;
+    sha256 = "4339d36c2f7b702652ee03424a241f855992c583bb437d7083c61d8dcfe3fff8";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix
new file mode 100644
index 00000000000..beb019947ce
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, gnome3, pango
+, gnome_doc_utils, intltool, libX11, 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 ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libuuid libxml2
+                        desktop_file_utils wrapGAppsHook ];
+
+  # Silly ./configure, it looks for dbus file from gnome-shell in the
+  # installation tree of the package it is configuring.
+  preConfigure = ''
+    mkdir -p "$out/share/dbus-1/interfaces"
+    cp "${gnome3.gnome_shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" "$out/share/dbus-1/interfaces"
+  '';
+
+  # FIXME: enable for gnome3
+  configureFlags = [ "--disable-migration" ];
+
+  meta = with stdenv.lib; {
+    description = "The GNOME Terminal Emulator";
+    homepage = https://wiki.gnome.org/Apps/Terminal/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix
new file mode 100644
index 00000000000..5d8088d78d3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-terminal-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-terminal/3.22/gnome-terminal-3.22.0.tar.xz;
+    sha256 = "97e6b1b4128ac133d8917b3940c71ddf9b89d189c5ac8402b1060126733993ed";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix
new file mode 100644
index 00000000000..5cc3385ad84
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2
+, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf
+                  gnome3.defaultIconTheme ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix
new file mode 100644
index 00000000000..8388bd61221
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-themes-standard-3.20.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-themes-standard/3.20/gnome-themes-standard-3.20.2.tar.xz;
+    sha256 = "9d0d9c4b2c9f9008301c3c1878ebb95859a735b7fd4a6a518802b9637e4a7915";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix
new file mode 100644
index 00000000000..4f02673e036
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gnome3.yelp itstool libxml2 intltool ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://help.gnome.org/users/gnome-help/${gnome3.version}";
+    description = "User and system administration help for the GNOME desktop";
+    maintainers = gnome3.maintainers;
+    license = licenses.cc-by-30;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix
new file mode 100644
index 00000000000..e7e67e0b4fb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-user-docs-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-user-docs/3.22/gnome-user-docs-3.22.0.tar.xz;
+    sha256 = "7467825a1c56ae2522fe9e36622a84b8887c731bb5f24cecfbf49acc66f6e3fc";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix
new file mode 100644
index 00000000000..f8b40e42d02
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, intltool, fetchurl, apacheHttpd_2_2, nautilus
+, pkgconfig, gtk3, glib, libxml2, gnused, systemd
+, bash, makeWrapper, itstool, libnotify, libtool, mod_dnssd
+, gnome3, librsvg, gdk_pixbuf, file, libcanberra_gtk3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  preConfigure = ''
+    sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' -i data/dav_user_2.2.conf
+  '';
+
+  configureFlags = [ "--with-httpd=${apacheHttpd_2_2.out}/bin/httpd"
+                     "--with-modules-path=${apacheHttpd_2_2.dev}/modules"
+                     "--with-systemduserunitdir=$(out)/etc/systemd/user"
+                     "--disable-bluetooth"
+                     "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool
+                  makeWrapper file gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  nautilus libnotify libcanberra_gtk3 systemd ];
+
+  postInstall = ''
+    mkdir -p $out/share/gsettings-schemas/$name
+    mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name
+    ${glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/$name/glib-2.0/schemas
+  '';
+
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-user-share-webdav" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-user-share/3.8;
+    description = "Service that exports the contents of the Public folder in your home directory on the local network";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix
new file mode 100644
index 00000000000..2d06f9e7a7c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix
@@ -0,0 +1,12 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  major = "3.18";
+  minor = "3";
+  name = "gnome-user-share-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-user-share/${major}/${name}.tar.xz";
+    sha256 = "3092fa7ad137531e35484195dde4ecbbc75a8a3d9b8209aef4c852717cf4bbf1";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix
new file mode 100644
index 00000000000..4b8fc90adad
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, sqlite
+, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp_av
+, gmime, json_glib, avahi, tracker, itstool }:
+
+stdenv.mkDerivation rec {
+  major = "0.3";
+  minor = "3";
+  name = "grilo-plugins-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo-plugins/${major}/${name}.tar.xz";
+    sha256 = "fe66e887847fef9c361bcb7226047c43b2bc22b172aaf22afd5534947cc85b9c";
+  };
+
+  installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-${major}" ];
+
+  buildInputs = [ pkgconfig gnome3.grilo libxml2 gupnp gssdp gnome3.libgdata
+                  lua5 liboauth gupnp_av sqlite gnome3.gnome_online_accounts
+                  gnome3.totem-pl-parser gnome3.rest gmime json_glib
+                  avahi gnome3.libmediaart tracker intltool itstool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
+    description = "A collection of plugins for the Grilo framework";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix
new file mode 100644
index 00000000000..0deac26c259
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib
+, libxml2, gnome3, gobjectIntrospection, libsoup, python3Packages }:
+
+stdenv.mkDerivation rec {
+  major = "0.3"; # if you change this, also change ./setup-hook.sh
+  minor = "2";
+  name = "grilo-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo/${major}/${name}.tar.xz";
+    sha256 = "f26f684a5d76aea8dbce136750bc67d2170b36575f109292fbb78ae99ec87f5b";
+  };
+
+  setupHook = ./setup-hook.sh;
+
+  configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ];
+
+  preConfigure = ''
+    for f in src/Makefile.in libs/pls/Makefile.in libs/net/Makefile.in; do
+       substituteInPlace $f --replace @INTROSPECTION_GIRDIR@ "$out/share/gir-1.0/"
+       substituteInPlace $f --replace @INTROSPECTION_TYPELIBDIR@ "$out/lib/girepository-1.0"
+    done
+  '';
+
+  buildInputs = [ pkgconfig file intltool glib libxml2 libsoup
+                  gnome3.totem-pl-parser ];
+
+  propagatedBuildInputs = [ python3Packages.pygobject3 gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
+    description = "Framework that provides access to various sources of multimedia content, using a pluggable system";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh b/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh
new file mode 100644
index 00000000000..3291e38addb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh
@@ -0,0 +1,7 @@
+make_grilo_find_plugins() {
+    if [ -d "$1"/lib/grilo-0.3 ]; then
+        addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.3"
+    fi
+}
+
+envHooks+=(make_grilo_find_plugins)
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix
new file mode 100644
index 00000000000..5123cadbdaf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, intltool, glib, gobjectIntrospection
+  # just for passthru
+, gnome3, gtk3, gsettings_desktop_schemas }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  postPatch = ''
+    for file in "background" "screensaver"; do
+      substituteInPlace "schemas/org.gnome.desktop.$file.gschema.xml.in" \
+        --replace "@datadir@" "${gnome3.gnome-backgrounds}/share/"
+    done
+  '';
+
+  buildInputs = [ glib gobjectIntrospection ];
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix
new file mode 100644
index 00000000000..50a54eab7eb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gsettings-desktop-schemas-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gsettings-desktop-schemas/3.22/gsettings-desktop-schemas-3.22.0.tar.xz;
+    sha256 = "0f06c7ba34c3a99e4d58b10889496133c9aaad6698ea2d8405d481c7f1a7eae1";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix b/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix
new file mode 100644
index 00000000000..95785d9ed4d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, libcanberra_gtk2, gobjectIntrospection, libtool, gnome3 }:
+
+let
+  majVer = "1.0";
+in stdenv.mkDerivation rec {
+  name = "gsound-${majVer}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gsound/${majVer}/${name}.tar.xz";
+    sha256 = "ea0dd94429c0645f2f98824274ef04543fe459dd83a5449a68910acc3ba67f29";
+  };
+
+  buildInputs = [ pkgconfig glib libcanberra_gtk2 gobjectIntrospection libtool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GSound;
+    description = "Small library for playing system sounds";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix
new file mode 100644
index 00000000000..aac1739a6e9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk3, pango
+, libxml2Python, perl, intltool, gettext, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedBuildInputs = [ gtk3 ];
+
+  buildInputs = [ pkgconfig atk cairo glib pango
+                  libxml2Python perl intltool gettext ];
+
+  preBuild = ''
+    substituteInPlace gtksourceview/gtksourceview-utils.c --replace "@NIX_SHARE_PATH@" "$out/share"
+  '';
+
+  patches = [ ./nix_share_path.patch ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch
new file mode 100644
index 00000000000..c87350167c2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch
@@ -0,0 +1,11 @@
+--- 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/3.22/core/gtksourceview/src.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix
new file mode 100644
index 00000000000..6e010227fc3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gtksourceview-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gtksourceview/3.22/gtksourceview-3.22.0.tar.xz;
+    sha256 = "70657f48732427984dce6cc812bdd3f2b701c0a49e0a0a08889705b3dadcf8e5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix
new file mode 100644
index 00000000000..d0453ba8ebb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, pkgconfig, gtkmm, glibmm, gtksourceview }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig glibmm gtkmm gtksourceview ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    homepage = "https://developer.gnome.org/gtksourceviewmm/";
+    description = "C++ wrapper for gtksourceview";
+    license = licenses.lgpl2;
+    maintainers = [ maintainers.juliendehos ];
+  };
+}
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix
new file mode 100644
index 00000000000..21618c45e05
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gtksourceviewmm-3.21.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gtksourceviewmm/3.21/gtksourceviewmm-3.21.2.tar.xz;
+    sha256 = "d21296d8624a1046841bfec082021b7b966df0b62e19ee300828519bc54dd9c6";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix
new file mode 100644
index 00000000000..05aff866606
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3
+, glib, desktop_file_utils, bash, appdata-tools
+, makeWrapper, gnome3, file, itstool, libxml2 }:
+
+# TODO: icons and theme still does not work
+# use packaged gnome3.adwaita-icon-theme
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+
+  buildInputs = [ pkgconfig gtk3 intltool itstool glib appdata-tools
+                  gnome3.yelp_tools libxml2 file desktop_file_utils
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gucharmap" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Gucharmap;
+    description = "GNOME Character Map, based on the Unicode Character Database";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix b/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix
new file mode 100644
index 00000000000..69c0dd60025
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gucharmap-3.18.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gucharmap/3.18/gucharmap-3.18.2.tar.xz;
+    sha256 = "80141d3e892c3c4812c1a8fad8f89978559ef19e933843267e6e9a5524c09ec9";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix
new file mode 100644
index 00000000000..a4c46ef85d4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, glib }:
+
+stdenv.mkDerivation rec {
+  name = "libcroco-0.6.11";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz";
+    sha256 = "0mm0wldbi40am5qn0nv7psisbg01k42rwzjxl3gv11l5jj554aqk";
+  };
+
+  outputs = [ "out" "dev" ];
+  outputBin = "dev";
+
+  configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic";
+
+  buildInputs = [ pkgconfig libxml2 glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix
new file mode 100644
index 00000000000..e455be07bdf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, intltool, libxml2, glib, json_glib
+, gobjectIntrospection, liboauth, gnome3, p11_kit, openssl, uhttpmock }:
+
+let
+  majorVersion = "0.17";
+in
+stdenv.mkDerivation rec {
+  name = "libgdata-${majorVersion}.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgdata/${majorVersion}/${name}.tar.xz";
+    sha256 = "1xniw4y90hbk9fa548pa9pfclibw7amr2f458lfh16jdzq7gw5cz";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.libsoup.dev}/include/libsoup-gnome-2.4/ -I${gnome3.gcr}/include/gcr-3 -I${gnome3.gcr}/include/gck-1";
+
+  buildInputs = with gnome3;
+    [ pkgconfig libsoup intltool libxml2 glib gobjectIntrospection
+      liboauth gcr gnome_online_accounts p11_kit openssl uhttpmock ];
+
+  propagatedBuildInputs = [ json_glib ];
+
+  meta = with stdenv.lib; {
+    description = "GData API library";
+    maintainers = with maintainers; [ raskin lethalman ];
+    platforms = platforms.linux;
+    license = licenses.lgpl21Plus;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix
new file mode 100644
index 00000000000..7b49af3c50f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, autoconf, vala_0_32, pkgconfig, glib, gobjectIntrospection, gnome3 }:
+let
+  ver_maj = "0.18";
+  ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "libgee-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgee/${ver_maj}/${name}.tar.xz";
+    sha256 = "16a34js81w9m2bw4qd8csm4pcgr3zq5z87867j4b8wfh6zwrxnaa";
+  };
+
+  doCheck = true;
+
+  patches = [ ./fix_introspection_paths.patch ];
+
+  buildInputs = [ autoconf vala_0_32 pkgconfig glib gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    description = "Utility library providing GObject-based interfaces and classes for commonly used data structures";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch b/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch
new file mode 100644
index 00000000000..67003f45164
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch
@@ -0,0 +1,13 @@
+--- 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/3.22/core/libgepub/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix
new file mode 100644
index 00000000000..47cb96de6c3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, autoconf, pkgconfig, glib, gobjectIntrospection, gnome3
+, webkitgtk, libsoup, libxml2, libarchive }:
+stdenv.mkDerivation rec {
+  name = "libgepub-${version}";
+  version = "0.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgepub/${version}/${name}.tar.xz";
+    sha256 = "5666a1c4d186d205bd2d91b71d4c1cd5426025569114a765dd913a564f149ff4";
+  };
+
+  doCheck = true;
+
+  buildInputs = [ autoconf pkgconfig glib gobjectIntrospection webkitgtk libsoup
+    libxml2 libarchive ];
+
+  meta = with stdenv.lib; {
+    description = "GObject based library for handling and rendering epub documents";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
new file mode 100644
index 00000000000..c6c9323c010
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "libgnome-keyring-3.12.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnome-keyring/3.12/${name}.tar.xz";
+    sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783";
+  };
+
+  propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = {
+    description = "Framework for managing passwords and other secrets";
+    homepage = http://live.gnome.org/GnomeKeyring;
+    license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ];
+    inherit (glib.meta) platforms maintainers;
+
+    longDescription = ''
+      gnome-keyring is a program that keeps password and other secrets for
+      users. The library libgnome-keyring is used by applications to integrate
+      with the gnome-keyring system.
+    '';
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix
new file mode 100644
index 00000000000..2bcbefc8dbf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig file intltool glib gtk3 libxklavier makeWrapper ];
+
+  preFixup = ''
+    wrapProgram $out/bin/gkbd-keyboard-display \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Keyboard management library";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix
new file mode 100644
index 00000000000..02fa2716987
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "libgnomekbd-3.22.0.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/libgnomekbd/3.22/libgnomekbd-3.22.0.1.tar.xz;
+    sha256 = "4efdb6b8ec92f04caced710b5edb285fb27715059ed6ca5e100b6933999a93de";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix
new file mode 100644
index 00000000000..79ede15df8f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf
+, pango, gdk_pixbuf, atk, tzdata, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";
+
+  configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" ];
+  propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk gnome3.geocode_glib ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix b/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix
new file mode 100644
index 00000000000..94657351946
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "libgweather-3.20.3";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/libgweather/3.20/libgweather-3.20.3.tar.xz;
+    sha256 = "fb6bc5b64ef5db3dc40a9798f072b83ebcafe7ff5af472aaee70600619b56c0b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix
new file mode 100644
index 00000000000..b39e1f6fa56
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, glib, cairo, libarchive, freetype, libjpeg, libtiff
+, openssl, bzip2, acl, attr, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  name = "libgxps-0.2.2";
+
+  src = fetchurl {
+    url = "http://ftp.acc.umu.se/pub/GNOME/core/3.10/3.10.2/sources/${name}.tar.xz";
+    sha256 = "1gi0b0x0354jyqc48vspk2hg2q1403cf2p9ibj847nzhkdrh9l9r";
+  };
+
+  buildInputs = [ pkgconfig glib cairo freetype libjpeg libtiff acl openssl bzip2 attr libxml2 ];
+  propagatedBuildInputs = [ libarchive ];
+
+  configureFlags = "--without-liblcms2";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix b/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix
new file mode 100644
index 00000000000..1ba143539d4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, glib, gtk3, gobjectIntrospection, python3Packages, ncurses
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = [ "--enable-python3" ];
+
+  buildInputs =  [ intltool pkgconfig glib gtk3 gnome3.defaultIconTheme ncurses python3Packages.python python3Packages.pygobject3 gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    description = "A GObject-based plugins engine";
+    homepage = "http://ftp.acc.umu.se/pub/GNOME/sources/libpeas/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix b/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix
new file mode 100644
index 00000000000..cd440858946
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix
@@ -0,0 +1,13 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  major = "1.18";
+  minor = "0";
+  version = "${major}.${minor}";
+  name = "libpeas-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libpeas/${major}/${name}.tar.xz";
+    sha256 = "09jy2rwwgp0xx7cnypxl56m7zzxnj3j4v58xqjxjasf3chn88jdz";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix b/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix
new file mode 100644
index 00000000000..5a8117528b6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, pkgconfig, glib, intltool, json_glib, rest, libsoup, gtk, gnome_online_accounts }:
+
+stdenv.mkDerivation rec {
+  name = "libzapojit-0.0.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libzapojit/0.0/${name}.tar.xz";
+    sha256 = "0zn3s7ryjc3k1abj4k55dr2na844l451nrg9s6cvnnhh569zj99x";
+  };
+
+  buildInputs = [ pkgconfig glib intltool json_glib rest libsoup gtk gnome_online_accounts ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix b/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix
new file mode 100644
index 00000000000..546c140c4ed
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix
@@ -0,0 +1,34 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo
+, pango, cogl, clutter, libstartup_notification, libcanberra_gtk2, zenity, libcanberra_gtk3
+, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libudev, libinput
+, libgudev }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # fatal error: gio/gunixfdlist.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  configureFlags = "--with-x --disable-static --enable-shape --enable-sm --enable-startup-notification --enable-xsync --enable-verbose-mode --with-libcanberra";
+
+  buildInputs = with gnome3;
+    [ pkgconfig intltool glib gobjectIntrospection gtk gsettings_desktop_schemas upower
+      gnome_desktop cairo pango cogl clutter zenity libstartup_notification libcanberra_gtk2
+      gnome3.geocode_glib libudev libinput libgudev
+      libcanberra_gtk3 zenity libtool makeWrapper xkeyboard_config libxkbfile libxkbcommon ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/mutter" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  patches = [
+  #./x86.patch ./math.patch
+  ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch b/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch
new file mode 100644
index 00000000000..dbdfd93f5e1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch
@@ -0,0 +1,10 @@
+--- mutter-3.18.0/src/backends/meta-cursor-renderer.c.orig	2015-09-23 13:54:31.297523343 +0200
++++ mutter-3.18.0/src/backends/meta-cursor-renderer.c	2015-09-23 13:54:43.728271766 +0200
+@@ -31,6 +31,7 @@
+ 
+ #include <cogl/cogl.h>
+ #include <clutter/clutter.h>
++#include <math.h>
+ 
+ #include "meta-stage.h"
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix b/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix
new file mode 100644
index 00000000000..02e9b6e0d84
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "mutter-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/mutter/3.22/mutter-3.22.0.tar.xz;
+    sha256 = "a5acdde788f5d137ec6dfe218a214c1f6cfb7e2e851fbcebe0b2d67b4c96e5f3";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch b/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch
new file mode 100644
index 00000000000..a997b27540e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch
@@ -0,0 +1,33 @@
+--- a/src/core/window.c	2015-05-26 10:52:41.382834963 +0200
++++ b/src/core/window.c	2015-05-26 10:53:03.039948034 +0200
+@@ -3499,7 +3499,7 @@
+ 
+ static MetaMonitorInfo *
+ find_monitor_by_winsys_id (MetaWindow *window,
+-                           guint       winsys_id)
++                           gint       winsys_id)
+ {
+   int i;
+ 
+@@ -3618,7 +3618,7 @@
+    */
+ 
+   gboolean did_placement;
+-  guint old_output_winsys_id;
++  gint old_output_winsys_id;
+   MetaRectangle unconstrained_rect;
+   MetaRectangle constrained_rect;
+   MetaMoveResizeResultFlags result = 0;
+--- a/src/core/startup-notification.c	2016-06-06 12:13:27.100251933 +0200
++++ b/src/core/startup-notification.c	2016-06-06 12:13:42.554956773 +0200
+@@ -418,7 +418,7 @@
+   elapsed = ctod->now - timestamp;
+ 
+   meta_topic (META_DEBUG_STARTUP,
+-              "Sequence used %ld ms vs. %d max: %s\n",
++              "Sequence used %" G_GINT64_FORMAT " ms vs. %d max: %s\n",
+               elapsed, STARTUP_TIMEOUT,
+               meta_startup_notification_sequence_get_id (sequence));
+ 
+[?25l[?25h[?1049h[?1h=[?25h[?25l~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              [?25h[?25lType  :quit<Enter>  to exit Vim[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h

+[?1l>[?1049l
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix b/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix
new file mode 100644
index 00000000000..d508f148359
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, dbus_glib, shared_mime_info, libexif
+, gtk, gnome3, libunique, intltool, gobjectIntrospection, gnome-autoar, glib
+, libnotify, wrapGAppsHook, exempi, librsvg, tracker, libselinux }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  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 ];
+
+  propagatedBuildInputs = [ gnome-autoar ];
+
+  # fatal error: gio/gunixinputstream.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+#  hardeningDisable = [ "format" ];
+  enableParallelBuilding = true;
+
+  patches = [ ./extension_dir.patch ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch b/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch
new file mode 100644
index 00000000000..e1313999675
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch
@@ -0,0 +1,24 @@
+diff --git a/src/nautilus-module.c b/src/nautilus-module.c
+index 6273a76..4adcc8a 100644
+--- a/src/nautilus-module.c
++++ b/src/nautilus-module.c
+@@ -242,11 +242,17 @@ void
+ nautilus_module_setup (void)
+ {
+     static gboolean initialized = FALSE;
++    const gchar* extensiondir = NULL;
+ 
+     if (!initialized)
+     {
+         initialized = TRUE;
+ 
+-        load_module_dir (NAUTILUS_EXTENSIONDIR);
++        extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR");
++        if (extensiondir == NULL) {
++            extensiondir = NAUTILUS_EXTENSIONDIR;
++        }
++
++        load_module_dir (extensiondir);
+ 
+         eel_debug_call_at_shutdown (free_module_objects);
+     }
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix b/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix
new file mode 100644
index 00000000000..e0c7f3034f9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "nautilus-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/nautilus/3.22/nautilus-3.22.0.tar.xz;
+    sha256 = "7671d9cf9df0321f5ad03abce03ab35ab6d643e1b3392a84f3c1d7c23ce29816";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/rest/default.nix b/pkgs/desktops/gnome-3/3.22/core/rest/default.nix
new file mode 100644
index 00000000000..d467cad93b4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/rest/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "rest-${version}";
+  major = "0.8";
+  version = "${major}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/rest/${major}/${name}.tar.xz";
+    sha256 = "e7b89b200c1417073aef739e8a27ff2ab578056c27796ec74f5886a5e0dff647";
+  };
+
+  buildInputs = [ pkgconfig glib libsoup gobjectIntrospection];
+
+  configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix b/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix
new file mode 100644
index 00000000000..fb010756f29
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gobjectIntrospection, glib
+, clutter_gtk, clutter-gst, gnome3, gtksourceview, libmusicbrainz
+, webkitgtk, libmusicbrainz5, icu, makeWrapper, gst_all_1
+, gdk_pixbuf, librsvg, gtk3, harfbuzz }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ];
+
+  buildInputs = [ pkgconfig file intltool gobjectIntrospection glib gtk3
+                  clutter_gtk clutter-gst gnome3.gjs gtksourceview gdk_pixbuf
+                  librsvg gnome3.defaultIconTheme libmusicbrainz5 webkitgtk
+                  gnome3.evince icu makeWrapper harfbuzz ];
+
+  enableParallelBuilding = true;
+
+  postConfigure = ''
+    substituteInPlace src/libsushi/sushi-font-widget.h \
+        --replace "<hb-ft.h>" "<harfbuzz/hb-ft.h>"
+    substituteInPlace src/libsushi/sushi-font-widget.c \
+        --replace "<hb-glib.h>" "<harfbuzz/hb-glib.h>"
+  '';
+
+  preFixup = ''
+    wrapProgram $out/libexec/sushi-start \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://en.wikipedia.org/wiki/Sushi_(software)";
+    description = "A quick previewer for Nautilus";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix b/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix
new file mode 100644
index 00000000000..e1fc1011b56
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "sushi-3.21.91";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/sushi/3.21/sushi-3.21.91.tar.xz;
+    sha256 = "db71c9ec3dd2dde6aed03b469253ce7d9f30c60ff50c2a8dc9f7776b70d15d55";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix
new file mode 100644
index 00000000000..63f36004bcd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "totem-pl-parser-3.10.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/totem-pl-parser/3.10/${name}.tar.xz";
+    sha256 = "38be09bddc46ddecd2b5ed7c82144ef52aafe879a5ec3d8b192b4b64ba995469";
+  };
+
+  buildInputs = [ pkgconfig file intltool gmime libxml2 libsoup ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Videos;
+    description = "Simple GObject-based library to parse and save a host of playlist formats";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem/default.nix b/pkgs/desktops/gnome-3/3.22/core/totem/default.nix
new file mode 100644
index 00000000000..6e62a2d522f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, intltool, fetchurl, gst_all_1
+, 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 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig 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 ];
+
+  propagatedBuildInputs = [ gobjectIntrospection python3Packages.pylint python3Packages.pygobject2 ];
+
+  configureFlags = [ "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  GI_TYPELIB_PATH = "$out/lib/girepository-1.0";
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Videos;
+    description = "Movie player for the GNOME desktop based on GStreamer";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem/src.nix b/pkgs/desktops/gnome-3/3.22/core/totem/src.nix
new file mode 100644
index 00000000000..11e20f665b7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "totem-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/totem/3.22/totem-3.22.0.tar.xz;
+    sha256 = "026a5b5b1674bdb941bc28e1ee95ecc168627e0fc323b6ec8d73407d21964fea";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix b/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix
new file mode 100644
index 00000000000..72ebd543e90
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, intltool, fetchurl, libxml2, upower
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, 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 }:
+
+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;
+
+  buildInputs = [ vala_0_32 pkgconfig gtk3 glib intltool itstool libxml2
+                  bzip2 gnome3.totem-pl-parser libxslt
+                  gnome3.gsettings_desktop_schemas makeWrapper 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 ];
+
+  preConfigure = ''
+    substituteInPlace src/libtracker-sparql/Makefile.in --replace "--shared-library=libtracker-sparql" "--shared-library=$out/lib/libtracker-sparql"
+  '';
+
+  preFixup = ''
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  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/3.22/core/tracker/src.nix b/pkgs/desktops/gnome-3/3.22/core/tracker/src.nix
new file mode 100644
index 00000000000..6889f6ee09e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/tracker/src.nix
@@ -0,0 +1,11 @@
+fetchurl: rec {
+  major = "1.10";
+  minor = "0";
+  name = "tracker-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/tracker/${major}/${name}.tar.xz";
+    sha256 = "df95b4a1e7de442f66d1097b725dd3cdd739862f491453fc7d7b1f88181a12fb";
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vino/default.nix b/pkgs/desktops/gnome-3/3.22/core/vino/default.nix
new file mode 100644
index 00000000000..52481395756
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vino/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, lib, makeWrapper
+, 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 }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [
+    makeWrapper
+    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 = ''
+    wrapProgram "$out/libexec/vino-server" \
+      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Vino;
+    description = "GNOME desktop sharing server";
+    maintainers = with maintainers; [ lethalman domenkozar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vino/src.nix b/pkgs/desktops/gnome-3/3.22/core/vino/src.nix
new file mode 100644
index 00000000000..8cf55272da9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vino/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "vino-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/vino/3.22/vino-3.22.0.tar.xz;
+    sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix b/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix
new file mode 100644
index 00000000000..cbb52c9aaa1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  versionMajor = "0.36";
+  versionMinor = "3";
+  moduleName   = "vte";
+
+  name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+    sha256 = "54e5b07be3c0f7b158302f54ee79d4de1cb002f4259b6642b79b1e0e314a959c";
+  };
+
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses ];
+
+  configureFlags = [ "--enable-introspection" ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses.out}/lib -lncurses"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/;
+    description = "A library implementing a terminal emulator widget for GTK+";
+    longDescription = ''
+      VTE is a library (libvte) implementing a terminal emulator widget for
+      GTK+, and a minimal sample application (vte) using that.  Vte is
+      mainly used in gnome-terminal, but can also be used to embed a
+      console/terminal in games, editors, IDEs, etc. VTE supports Unicode and
+      character set conversion, as well as emulating any terminal known to
+      the system's terminfo database.
+    '';
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ astsmtl antono lethalman ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/default.nix b/pkgs/desktops/gnome-3/3.22/core/vte/default.nix
new file mode 100644
index 00000000000..80699e21289
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, intltool, pkgconfig
+, gnome3, ncurses, gobjectIntrospection, vala_0_32, libxml2, gnutls
+
+, selectTextPatch ? false
+, fetchFromGitHub, autoconf, automake, libtool, gtk_doc, gperf
+}:
+
+let baseAttrs = rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib
+                  gnome3.gtk3 ncurses vala_0_32 libxml2 ];
+
+  propagatedBuildInputs = [ gnutls ];
+
+  preConfigure = "patchShebangs .";
+
+  configureFlags = [ "--enable-introspection" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/;
+    description = "A library implementing a terminal emulator widget for GTK+";
+    longDescription = ''
+      VTE is a library (libvte) implementing a terminal emulator widget for
+      GTK+, and a minimal sample application (vte) using that.  Vte is
+      mainly used in gnome-terminal, but can also be used to embed a
+      console/terminal in games, editors, IDEs, etc. VTE supports Unicode and
+      character set conversion, as well as emulating any terminal known to
+      the system's terminfo database.
+    '';
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ astsmtl antono lethalman ];
+    platforms = platforms.linux;
+  };
+};
+
+in stdenv.mkDerivation ( baseAttrs
+  // stdenv.lib.optionalAttrs selectTextPatch rec {
+      name = "vte-ng-${version}";
+      version = "0.42.4.a";
+      src = fetchFromGitHub {
+        owner = "thestinger";
+        repo = "vte-ng";
+        rev = version;
+        sha256 = "1w91lz30j5lrskp9ds5j3nn27m5mpdpn7nlcvf5y1w63mpmjg8k1";
+      };
+      # slightly hacky; I couldn't make it work with autoreconfHook
+      configureScript = "./autogen.sh";
+      nativeBuildInputs = (baseAttrs.nativeBuildInputs or [])
+        ++ [ gtk_doc autoconf automake libtool gperf ];
+  }
+)
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/src.nix b/pkgs/desktops/gnome-3/3.22/core/vte/src.nix
new file mode 100644
index 00000000000..99b7b621bf7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/src.nix
@@ -0,0 +1,11 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  name = "vte-${major}.2";
+  major = "0.44";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/vte/${major}/${name}.tar.xz";
+    sha256 = "a1ea594814bb136a3a9a6c7656b46240571f6a198825c1111007fe99194b0949";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix
new file mode 100644
index 00000000000..9111802eb6a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ libxml2 libxslt itstool gnome3.yelp_xsl pkgconfig ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp/Tools;
+    description = "Small programs that help you create, edit, manage, and publish your Mallard or DocBook documentation";
+    maintainers = with maintainers; [ domenkozar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix
new file mode 100644
index 00000000000..f03c6d1bc31
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-tools-3.18.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp-tools/3.18/yelp-tools-3.18.0.tar.xz;
+    sha256 = "c6c1d65f802397267cdc47aafd5398c4b60766e0a7ad2190426af6c0d0716932";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix
new file mode 100644
index 00000000000..0a3976f35a1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, intltool, fetchurl, pkgconfig, bash
+, itstool, libxml2, libxslt, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig intltool itstool libxml2 libxslt ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp;
+    description = "Yelp's universal stylesheets for Mallard and DocBook";
+    maintainers = gnome3.maintainers;
+    license = [licenses.gpl2 licenses.lgpl2];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix
new file mode 100644
index 00000000000..de5d68d1fab
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-xsl-3.20.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp-xsl/3.20/yelp-xsl-3.20.1.tar.xz;
+    sha256 = "dc61849e5dca473573d32e28c6c4e3cf9c1b6afe241f8c26e29539c415f97ba0";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix
new file mode 100644
index 00000000000..4ee79bbc3dc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, gnome3, gdk_pixbuf, sqlite, groff
+, bash, makeWrapper, itstool, libxml2, libxslt, icu, gst_all_1
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+
+  buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool sqlite
+                  libxml2 libxslt icu file makeWrapper gnome3.yelp_xsl
+                  librsvg gdk_pixbuf gnome3.defaultIconTheme groff
+                  gnome3.gsettings_desktop_schemas wrapGAppsHook
+                  gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp;
+    description = "The help viewer in Gnome";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix
new file mode 100644
index 00000000000..7f38bab736f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp/3.22/yelp-3.22.0.tar.xz;
+    sha256 = "8616b77c239aaa731312609f192c9b2c71d54b2cae42ff23efa23b5b3188778e";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix b/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix
new file mode 100644
index 00000000000..8f525945a6a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, itstool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  preBuild = ''
+    mkdir -p $out/include
+  '';
+
+  buildInputs = [ gnome3.gtk libxml2 libxslt libX11 itstool ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix b/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix
new file mode 100644
index 00000000000..75476b43b95
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "zenity-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/zenity/3.22/zenity-3.22.0.tar.xz;
+    sha256 = "1ecdfa1071d383b373b8135954b3ec38d402d671dcd528e69d144aff36a0e466";
+  };
+}