summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/services/desktops/geoclue2.nix2
-rw-r--r--nixos/modules/services/networking/networkmanager.nix33
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix18
-rw-r--r--nixos/modules/services/x11/display-managers/gdm.nix4
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix2
-rw-r--r--nixos/tests/gnome3_16.nix34
-rw-r--r--pkgs/desktops/gnome-3/3.12/core/gdm/disable_x_access_control.patch6
-rw-r--r--pkgs/desktops/gnome-3/3.12/core/gnome-bluetooth/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.12/core/gnome-icon-theme-symbolic/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/3.12/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix55
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix39
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/glade/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gnome-boxes/default.nix46
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix51
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix47
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/pomodoro/default.nix49
-rw-r--r--pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/baobab/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/caribou/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/dconf/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/empathy/default.nix57
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/eog/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix53
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/epiphany/libxml_depend.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/evince/default.nix69
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/folks/default.nix43
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gconf/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gcr/default.nix29
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/disable_x_access_control.patch15
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/sessions_dir.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/xserver_path.patch83
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/disable_x_access_control.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/sessions_dir.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gdm/xserver_path.patch15
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gjs/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix53
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-contacts/gio_unix.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix60
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-control-center/vpn_plugins_path.patch19
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-menus/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix61
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix53
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/grilo/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix25
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gsound/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gtksourceview/nix_share_path.patch11
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgdata/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgee/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgee/fix_introspection_paths.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgnome-keyring/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libgxps/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libzapojit/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/mutter/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/nautilus/extension_dir.patch24
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/rest/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/sushi/default.nix38
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/totem/default.nix48
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/tracker/default.nix56
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/vino/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/vte/default.nix (renamed from pkgs/desktops/gnome-3/3.12/core/vte/0.38.0.nix)11
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/vte/expose_select_text.0.38.0.patch (renamed from pkgs/desktops/gnome-3/3.12/core/vte/expose_select_text.0.38.0.patch)0
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/yelp-tools/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/yelp/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/zenity/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/default.nix297
-rw-r--r--pkgs/desktops/gnome-3/3.16/desktop/rarian/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.16/devtools/anjuta/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/geary/default.nix52
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/geary/disable_valadoc.patch24
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gitg/default.nix47
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix45
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/find_gsettings.patch22
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/goffice/0.8.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/goffice/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/goffice/pcre_info.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/libgda/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/libgit2-glib/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix22
-rw-r--r--pkgs/development/libraries/appstream-glib/default.nix28
-rw-r--r--pkgs/development/libraries/atk/default.nix4
-rw-r--r--pkgs/development/libraries/clutter-gst/3.0.nix26
-rw-r--r--pkgs/development/libraries/clutter-gtk/1.4.nix26
-rw-r--r--pkgs/development/libraries/clutter-gtk/1.6.nix23
-rw-r--r--pkgs/development/libraries/clutter/1.22.nix52
-rw-r--r--pkgs/development/libraries/clutter/default.nix2
-rw-r--r--pkgs/development/libraries/cogl/1.20.nix57
-rw-r--r--pkgs/development/libraries/gcab/default.nix18
-rw-r--r--pkgs/development/libraries/gegl/3.0.nix28
-rw-r--r--pkgs/development/libraries/geoclue/2.0.nix2
-rw-r--r--pkgs/development/libraries/glib-networking/default.nix6
-rw-r--r--pkgs/development/libraries/glibmm/default.nix4
-rw-r--r--pkgs/development/libraries/gobject-introspection/default.nix6
-rw-r--r--pkgs/development/libraries/gtk+/3.16.nix69
-rw-r--r--pkgs/development/libraries/gtkmm/3.16.nix42
-rw-r--r--pkgs/development/libraries/gvfs/default.nix13
-rw-r--r--pkgs/development/libraries/libchamplain/default.nix6
-rw-r--r--pkgs/development/libraries/libxkbcommon/default.nix4
-rw-r--r--pkgs/development/libraries/webkitgtk/default.nix6
-rw-r--r--pkgs/tools/networking/network-manager-applet/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix33
146 files changed, 4428 insertions, 68 deletions
diff --git a/nixos/modules/services/desktops/geoclue2.nix b/nixos/modules/services/desktops/geoclue2.nix
index 6bdd5edff1f..0e041fdbfbc 100644
--- a/nixos/modules/services/desktops/geoclue2.nix
+++ b/nixos/modules/services/desktops/geoclue2.nix
@@ -34,6 +34,8 @@ with lib;
 
     services.dbus.packages = [ pkgs.geoclue2 ];
 
+    systemd.packages = [ pkgs.geoclue2 ];
+
   };
 
 }
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix
index f00c5d1f701..60f380f024b 100644
--- a/nixos/modules/services/networking/networkmanager.nix
+++ b/nixos/modules/services/networking/networkmanager.nix
@@ -98,13 +98,23 @@ in {
         '';
       };
 
+      # Ugly hack for using the correct gnome3 packageSet
+      basePackages = mkOption {
+        type = types.attrsOf types.path;
+        default = { inherit networkmanager modemmanager wpa_supplicant
+                            networkmanager_openvpn networkmanager_vpnc
+                            networkmanager_openconnect
+                            networkmanager_pptp networkmanager_l2tp; };
+        internal = true;
+      };
+
       packages = mkOption {
         type = types.listOf types.path;
         default = [ ];
         description = ''
           Extra packages that provide NetworkManager plugins.
         '';
-        apply = list: [ networkmanager modemmanager wpa_supplicant ] ++ list;
+        apply = list: (attrValues cfg.basePackages) ++ list;
       };
 
       appendNameservers = mkOption {
@@ -164,7 +174,7 @@ in {
 
     boot.kernelModules = [ "ppp_mppe" ]; # Needed for most (all?) PPTP VPN connections.
 
-    environment.etc = [
+    environment.etc = with cfg.basePackages; [
       { source = ipUpScript;
         target = "NetworkManager/dispatcher.d/01nixos-ip-up";
       }
@@ -195,14 +205,7 @@ in {
         target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
       }) cfg.dispatcherScripts;
 
-    environment.systemPackages = cfg.packages ++ [
-        networkmanager_openvpn
-        networkmanager_vpnc
-        networkmanager_openconnect
-        networkmanager_pptp
-        networkmanager_l2tp
-        modemmanager
-        ];
+    environment.systemPackages = cfg.packages;
 
     users.extraGroups = singleton {
       name = "networkmanager";
@@ -238,15 +241,7 @@ in {
 
     security.polkit.extraConfig = polkitConf;
 
-    # openvpn plugin has only dbus interface
-    services.dbus.packages = cfg.packages ++ [
-        networkmanager_openvpn
-        networkmanager_vpnc
-        networkmanager_openconnect
-        networkmanager_pptp
-        networkmanager_l2tp
-        modemmanager
-        ];
+    services.dbus.packages = cfg.packages;
 
     services.udev.packages = cfg.packages;
   };
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 6398a15bfcc..c951f3eae77 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -21,7 +21,7 @@ let
     destination = "/share/applications/mimeapps.list";
     text = ''
       [Default Applications]
-      inode/directory=nautilus.desktop
+      inode/directory=nautilus.desktop;org.gnome.Nautilus.desktop
     '';
   };
 
@@ -80,6 +80,7 @@ in {
     services.telepathy.enable = mkDefault true;
     networking.networkmanager.enable = mkDefault true;
     services.upower.enable = config.powerManagement.enable;
+    hardware.bluetooth.enable = mkDefault true;
 
     fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];
 
@@ -108,7 +109,7 @@ in {
           # Override default mimeapps
           export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
 
-          # Let gnome-control-center find gnome-shell search providers
+          # Let gnome-control-center find gnome-shell search providers. GNOME 3.12 compatibility.
           export GNOME_SEARCH_PROVIDERS_DIR=${config.system.path}/share/gnome-shell/search-providers/
 
           # Let nautilus find extensions
@@ -120,6 +121,9 @@ in {
           # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
           ${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
 
+          # Find the mouse
+          export XCURSOR_PATH=~/.icons:${config.system.path}/share/icons
+
           ${gnome3.gnome_session}/bin/gnome-session&
           waitPID=$!
         '';
@@ -138,11 +142,11 @@ in {
         gnome3.dconf
         gnome3.gnome-backgrounds
         gnome3.gnome_control_center
-        gnome3.gnome_icon_theme
         gnome3.gnome-menus
         gnome3.gnome_settings_daemon
         gnome3.gnome_shell
         gnome3.gnome_themes_standard
+        gnome3.defaultIconTheme
       ] ++ cfg.sessionPath ++ (removePackagesByName [
         gnome3.baobab
         gnome3.empathy
@@ -154,6 +158,7 @@ in {
         gnome3.totem
         gnome3.vino
         gnome3.yelp
+        gnome3.gnome-bluetooth
         gnome3.gnome-calculator
         gnome3.gnome-contacts
         gnome3.gnome-font-viewer
@@ -175,6 +180,13 @@ in {
         gnome3.nautilus-sendto
       ] config.environment.gnome3.excludePackages);
 
+    # Use the correct gnome3 packageSet
+    networking.networkmanager.basePackages =
+      { inherit (pkgs) networkmanager modemmanager wpa_supplicant;
+        inherit (gnome3) networkmanager_openvpn networkmanager_vpnc
+                         networkmanager_openconnect networkmanager_pptp
+                         networkmanager_l2tp; };
+
     # Needed for themes and backgrounds
     environment.pathsToLink = [ "/share" ];
 
diff --git a/nixos/modules/services/x11/display-managers/gdm.nix b/nixos/modules/services/x11/display-managers/gdm.nix
index a7ebafa28b3..6c3c5273086 100644
--- a/nixos/modules/services/x11/display-managers/gdm.nix
+++ b/nixos/modules/services/x11/display-managers/gdm.nix
@@ -58,14 +58,14 @@ in
           # Find the mouse
           XCURSOR_PATH = "~/.icons:${config.system.path}/share/icons";
         };
-        execCmd = "exec ${gdm}/sbin/gdm";
+        execCmd = "exec ${gdm}/bin/gdm";
       };
 
     # Because sd_login_monitor_new requires /run/systemd/machines
     systemd.services.display-manager.wants = [ "systemd-machined.service" ];
     systemd.services.display-manager.after = [ "systemd-machined.service" ];
 
-    systemd.services.display-manager.path = [ gnome3.gnome_shell gnome3.caribou ];
+    systemd.services.display-manager.path = [ gnome3.gnome_shell gnome3.caribou pkgs.xlibs.xhost pkgs.dbus_tools ];
 
     services.dbus.packages = [ gdm ];
 
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index 6a7b810261d..139013cff50 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -19,7 +19,7 @@ let
     '';
 
   theme = pkgs.gnome3.gnome_themes_standard;
-  icons = pkgs.gnome3.gnome_icon_theme;
+  icons = pkgs.gnome3.defaultIconTheme;
 
   # The default greeter provided with this expression is the GTK greeter.
   # Again, we need a few things in the environment for the greeter to run with
diff --git a/nixos/tests/gnome3_16.nix b/nixos/tests/gnome3_16.nix
new file mode 100644
index 00000000000..23a66aba50c
--- /dev/null
+++ b/nixos/tests/gnome3_16.nix
@@ -0,0 +1,34 @@
+import ./make-test.nix {
+  name = "gnome3";
+
+  machine =
+    { config, pkgs, ... }:
+
+    { imports = [ ./common/user-account.nix ];
+
+      services.xserver.enable = true;
+
+      services.xserver.displayManager.auto.enable = true;
+      services.xserver.displayManager.auto.user = "alice";
+      services.xserver.desktopManager.gnome3.enable = true;
+
+      environment.gnome3.packageSet = pkgs.gnome3_16;
+
+      virtualisation.memorySize = 512;
+    };
+
+  testScript =
+    ''
+      $machine->waitForX;
+      $machine->sleep(15);
+
+      # Check that logging in has given the user ownership of devices.
+      $machine->succeed("getfacl /dev/snd/timer | grep -q alice");
+
+      $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
+      $machine->waitForWindow(qr/Terminal/);
+      $machine->sleep(20);
+      $machine->screenshot("screen");
+    '';
+
+}
diff --git a/pkgs/desktops/gnome-3/3.12/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.12/core/gdm/disable_x_access_control.patch
index 74d054f8c88..5985dbe0e01 100644
--- a/pkgs/desktops/gnome-3/3.12/core/gdm/disable_x_access_control.patch
+++ b/pkgs/desktops/gnome-3/3.12/core/gdm/disable_x_access_control.patch
@@ -1,7 +1,7 @@
-diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
+diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
 index 1afe48e..e3d1ec2 100644
---- a/daemon/gdm-slave.c
-+++ b/daemon/gdm-slave.c
+--- a/daemon/gdm-display.c
++++ b/daemon/gdm-display.c
 @@ -291,9 +291,10 @@ gdm_slave_connect_to_x11_display (GdmSlave *slave)
 
                  gdm_error_trap_push ();
diff --git a/pkgs/desktops/gnome-3/3.12/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.12/core/gnome-bluetooth/default.nix
new file mode 100644
index 00000000000..fae47476898
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.12/core/gnome-bluetooth/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gnome3, pkgconfig, intltool, glib
+, udev, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-bluetooth-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-bluetooth/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0rsw27yj6887axk7s2vwpsr0pmic0wdskl7sx8rk4kns7b0ifs88";
+  };
+
+  buildInputs = with gnome3; [ pkgconfig intltool glib gtk3 udev libxml2
+                               gsettings_desktop_schemas itstool ];
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.12/core/gnome-icon-theme-symbolic/default.nix b/pkgs/desktops/gnome-3/3.12/core/gnome-icon-theme-symbolic/default.nix
index 7b9e2097bef..066951c63a6 100644
--- a/pkgs/desktops/gnome-3/3.12/core/gnome-icon-theme-symbolic/default.nix
+++ b/pkgs/desktops/gnome-3/3.12/core/gnome-icon-theme-symbolic/default.nix
@@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ gnome3.gnome_icon_theme ];
 
+  propagatedUserEnvPkgs = [ gnome3.gnome_icon_theme ];
+
   meta = with stdenv.lib; {
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.12/default.nix b/pkgs/desktops/gnome-3/3.12/default.nix
index ac5427d0e40..dce75eb2176 100644
--- a/pkgs/desktops/gnome-3/3.12/default.nix
+++ b/pkgs/desktops/gnome-3/3.12/default.nix
@@ -16,6 +16,11 @@ rec {
   orbit = ORBit2;
   inherit (pkgs) libsoup;
 
+  version = "3.12";
+
+# Simplify the nixos module and gnome packages
+  defaultIconTheme = gnome_icon_theme_symbolic;
+
 #### Core (http://ftp.acc.umu.se/pub/GNOME/core/)
 
   baobab = callPackage ./core/baobab { };
@@ -52,6 +57,8 @@ rec {
 
   gnome-backgrounds = callPackage ./core/gnome-backgrounds { };
 
+  gnome-bluetooth = callPackage ./core/gnome-bluetooth { };
+
   gnome-contacts = callPackage ./core/gnome-contacts { };
 
   gnome_control_center = callPackage ./core/gnome-control-center { };
@@ -158,10 +165,12 @@ rec {
     inherit gnome3;
   };
 
+  networkmanager_l2tp = pkgs.networkmanager_l2tp.override {
+    inherit gnome3;
+  };
+
   networkmanagerapplet = pkgs.networkmanagerapplet.override {
-    inherit gnome3 gsettings_desktop_schemas glib_networking
-      networkmanager_openvpn networkmanager_pptp networkmanager_vpnc
-      networkmanager_openconnect;
+    inherit gnome3 gsettings_desktop_schemas glib_networking;
   };
 
   rest = callPackage ./core/rest { };
@@ -178,10 +187,6 @@ rec {
 
   vte = callPackage ./core/vte { };
 
-  vte_038 = callPackage ./core/vte/0.38.0.nix { }; # To be moved in gnome 3.14 when available
-
-  vte-select-text = vte_038.override { selectTextPatch = true; };
-
   vino = callPackage ./core/vino { };
 
   yelp = callPackage ./core/yelp {
diff --git a/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix b/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix
new file mode 100644
index 00000000000..3bce034507a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, intltool, fetchurl, pkgconfig, glib
+, evolution_data_server, evolution, sqlite
+, hicolor_icon_theme, makeWrapper, itstool, desktop_file_utils
+, clutter_gtk, libuuid, webkitgtk, zeitgeist
+, gnome3, librsvg, gdk_pixbuf, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "bijiben-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/bijiben/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0ndb7bv03rqxh4an44xd4cwxxp5z1wywk9xazmab01jsa0a0zx7r";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig glib intltool itstool libxml2
+                  clutter_gtk libuuid webkitgtk gnome3.tracker
+                  gnome3.gnome_online_accounts zeitgeist desktop_file_utils
+                  gnome3.gsettings_desktop_schemas makeWrapper
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  evolution_data_server evolution sqlite
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/bijiben" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Bijiben;
+    description = "Note editor designed to remain simple to use";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix b/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix
new file mode 100644
index 00000000000..af60d890673
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
+, pkgconfig, gtk3, glib, hicolor_icon_theme, libnotify, gtkspell3
+, makeWrapper, itstool, shared_mime_info, libical, db, gcr, sqlite
+, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool
+, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit }:
+
+let
+  majVer = gnome3.version;
+in stdenv.mkDerivation rec {
+  name = "evolution-${majVer}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/evolution/${majVer}/${name}.tar.xz";
+    sha256 = "1lm877rrcfy98mpp4iq7m9p8r1nr9kir916n4qin2ygas9zx0qlb";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  propagatedBuildInputs = [ gnome3.gtkhtml ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg db icu
+                  gnome3.evolution_data_server libsecret libical gcr
+                  webkitgtk shared_mime_info gnome3.gnome_desktop gtkspell3
+                  libcanberra_gtk3 bogofilter gnome3.libgdata sqlite
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base p11_kit
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  nss nspr libnotify procps highlight gnome3.libgweather
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar"
+                     "--disable-libcryptui" ];
+
+  NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  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:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Evolution;
+    description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix b/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix
new file mode 100644
index 00000000000..d36162e13c2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive
+, attr, bzip2, acl, makeWrapper, librsvg, gdk_pixbuf, hicolor_icon_theme }:
+
+stdenv.mkDerivation rec {
+  name = "file-roller-${version}";
+
+  majVersion = gnome3.version;
+  version = "${majVersion}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/file-roller/${majVersion}/${name}.tar.xz";
+    sha256 = "12c6lpvc3mi1q10nas64kfcjw2arv3z4955zdfgf4c5wy4dczqyh";
+  };
+
+  # TODO: support nautilus
+  # it tries to create {nautilus}/lib/nautilus/extensions-3.0/libnautilus-fileroller.so
+
+  buildInputs = [ glib pkgconfig gnome3.gtk intltool itstool libxml2 libarchive
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  attr bzip2 acl gdk_pixbuf librsvg makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/file-roller" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/FileRoller;
+    description = "Archive manager for the GNOME desktop environment";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix
new file mode 100644
index 00000000000..172c817f6f9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, intltool, fetchurl, enchant, isocodes
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool, libsoup, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  name = "gedit-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gedit/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0bs0vf773l0k7f4zxqlyb8z772s5dcn7ww0073hs7z3hj0l3lzrc";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool enchant isocodes
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg libsoup
+                  gnome3.libpeas gnome3.gtksourceview libxml2
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas makeWrapper file ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/gedit" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix LD_LIBRARY_PATH : "${gnome3.libpeas}/lib:${gnome3.gtksourceview}/lib" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Gedit;
+    description = "Official text editor of the GNOME desktop environment";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix b/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix
new file mode 100644
index 00000000000..22b896c3337
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, python
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, makeWrapper, itstool, libxml2, docbook_xsl
+, gnome3, librsvg, gdk_pixbuf, libxslt }:
+
+stdenv.mkDerivation rec {
+  name = "glade-3.16.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/glade/3.16/${name}.tar.xz";
+    sha256 = "994ac258bc100d3907ed40a2880c3144f13997b324477253e812d59f2716523f";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 python
+                  gnome3.gsettings_desktop_schemas makeWrapper docbook_xsl
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg libxslt
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/glade" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Glade;
+    description = "User interface designer for GTK+ applications";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-boxes/default.nix
new file mode 100644
index 00000000000..3b30cdbbcfb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-boxes/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, itstool, libvirt-glib
+, glib, gobjectIntrospection, libxml2, gtk3, gtkvnc, libvirt, spice_gtk
+, spice_protocol, libuuid, libsoup, libosinfo, systemd, tracker, vala
+, libcap_ng, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg
+, hicolor_icon_theme, desktop_file_utils, mtools, cdrkit, libcdio
+}:
+
+# TODO: ovirt (optional)
+
+stdenv.mkDerivation rec {
+  name = "gnome-boxes-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-boxes/${gnome3.version}/${name}.tar.xz";
+    sha256 = "03a8x1bnbchsh2bs86gnwvddnwbf643wp5nrhyvg9j86d57axvs1";
+  };
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  buildInputs = [
+    makeWrapper pkgconfig intltool itstool libvirt-glib glib
+    gobjectIntrospection libxml2 gtk3 gtkvnc libvirt spice_gtk spice_protocol
+    libuuid libsoup libosinfo systemd tracker vala libcap_ng libcap yajl gmp
+    gdbm cyrus_sasl gnome3.adwaita-icon-theme
+    librsvg hicolor_icon_theme desktop_file_utils
+  ];
+
+  preFixup = ''
+    for prog in "$out/bin/"*; do
+        wrapProgram "$prog" \
+            --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+            --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+            --prefix PATH : "${mtools}/bin:${cdrkit}/bin:${libcdio}/bin"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple GNOME 3 application to access remote or virtual systems";
+    homepage = https://wiki.gnome.org/action/show/Apps/Boxes;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bjornfor ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix
new file mode 100644
index 00000000000..8bdfcfd9f88
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, intltool, fetchurl, libgweather, libnotify
+, pkgconfig, gtk3, glib, hicolor_icon_theme, gsound
+, makeWrapper, itstool, libcanberra_gtk3, libtool
+, gnome3, librsvg, gdk_pixbuf, geoclue2 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-clocks-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-clocks/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1k7khghaq7y3j0r3kn9q7dwgi1875bfn4iy0sr1ls14m1p2bl10q";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas makeWrapper
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  gnome3.gnome_desktop gnome3.geocode_glib geoclue2
+                  libgweather libnotify libtool gsound
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-clocks" \
+      --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/Clocks;
+    description = "Clock application designed for GNOME 3";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix
new file mode 100644
index 00000000000..50fff0cd1d2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, intltool, fetchurl, evince, gjs
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, makeWrapper, itstool, libxslt, webkitgtk
+, gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl
+, gobjectIntrospection, json_glib
+, gmp, desktop_file_utils }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-documents-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-documents/${gnome3.version}/${name}.tar.xz";
+    sha256 = "154ssnyq4lwq2rsy3l5kqk8x1qjvn2j5gqm23i0aiw7qsbx5phrs";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxslt
+                  docbook_xsl desktop_file_utils
+                  gnome3.gsettings_desktop_schemas makeWrapper gmp
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg evince
+                  libsoup webkitgtk gjs gobjectIntrospection gnome3.rest
+                  gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts
+                  gnome3.gnome_desktop gnome3.libzapojit json_glib
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  enableParallelBuilding = true;
+
+  preFixup =
+    ''
+    substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib}/bin/gapplication"
+
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram "$f" \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+        --run "if [ -z \"\$XDG_CACHE_DIR\" ]; then XDG_CACHE_DIR=\$HOME/.cache; fi; if [ -w \"\$XDG_CACHE_DIR/..\" ]; then mkdir -p \"\$XDG_CACHE_DIR/gnome-documents\"; fi"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Documents;
+    description = "Document manager application designed to work with GNOME 3";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix
new file mode 100644
index 00000000000..31ee8a7230c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker
+, python3, libxml2, python3Packages, libnotify
+, pkgconfig, gtk3, glib, hicolor_icon_theme, cairo
+, makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-music-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-music/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1pyj192kva0swad6w2kaj5shcwpgiflyda6zmsiaximsgzc4as8i";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg python3
+                  gnome3.grilo libxml2 python3Packages.pygobject3 libnotify
+                  python3Packages.pycairo python3Packages.dbus gnome3.totem-pl-parser
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base
+                  gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas makeWrapper tracker ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-music" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
+      --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \
+      --prefix PYTHONPATH : "$PYTHONPATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Music;
+    description = "Music player and management application for the GNOME desktop environment";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix
new file mode 100644
index 00000000000..fba1a541812
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, intltool, fetchurl, exempi, libxml2
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, makeWrapper, itstool, gegl, babl, lcms2
+, desktop_file_utils, gmp, libmediaart
+, gnome3, librsvg, gdk_pixbuf, libexif }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-photos-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-photos/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0jv3b5nd4sazyq2k132rdjizfg24sj6i63ls1m6x2qqqf8grxznj";
+  };
+
+  # doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gegl babl gnome3.libgdata
+                  gnome3.gsettings_desktop_schemas makeWrapper gmp libmediaart
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg exempi
+                  gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo
+                  gnome3.gnome_online_accounts gnome3.gnome_desktop
+                  lcms2 libexif gnome3.tracker libxml2 desktop_file_utils
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  preFixup = ''
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram "$f" \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Photos;
+    description = "Photos is an application to access, organize and share your photos with GNOME 3";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix b/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix
new file mode 100644
index 00000000000..5a85e00e4e4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool
+, gobjectIntrospection, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "nautilus-sendto-${version}";
+
+  version = "3.8.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/nautilus-sendto/3.8/${name}.tar.xz";
+    sha256 = "03fa46bff271acdbdedab6243b2a84e5ed3daa19c81b69d087b3e852c8fe5dab";
+  };
+
+  buildInputs = [ glib pkgconfig gobjectIntrospection intltool makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "Integrates Evolution and Pidgin into the Nautilus file manager";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/pomodoro/default.nix b/pkgs/desktops/gnome-3/3.16/apps/pomodoro/default.nix
new file mode 100644
index 00000000000..bce514364ce
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/pomodoro/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, which, automake113x, intltool, pkgconfig, libtool, makeWrapper,
+  dbus_glib, libcanberra, gst_all_1, upower, vala, gnome3, gtk3, gst_plugins_base,
+  glib, gobjectIntrospection, hicolor_icon_theme
+}:
+
+stdenv.mkDerivation rec {
+  rev = "0.10.3";
+  name = "gnome-shell-pomodoro-${rev}-61df3fa";
+
+  src = fetchFromGitHub {
+      owner = "codito";
+      repo = "gnome-shell-pomodoro";
+      rev = "${rev}";
+      sha256 = "0i0glmijalppb5hdb1xd6xnmv824l2w831rpkqmhxi0iqbvaship";
+  };
+
+  configureScript = ''./autogen.sh'';
+
+  buildInputs = [
+    which automake113x intltool glib gobjectIntrospection pkgconfig libtool
+    makeWrapper dbus_glib libcanberra upower vala gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+    gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
+    gnome3.gnome_common gnome3.gnome_shell hicolor_icon_theme gtk3
+  ];
+
+  preBuild = ''
+    sed -i \
+        -e 's|/usr\(/share/gir-1.0/UPowerGlib\)|${upower}\1|' \
+        -e 's|/usr\(/share/gir-1.0/GnomeDesktop\)|${gnome3.gnome_desktop}\1|' \
+        vapi/Makefile
+  '';
+
+  preFixup = ''
+    wrapProgram $out/bin/gnome-pomodoro \
+        --prefix XDG_DATA_DIRS : \
+        "$out/share:$GSETTINGS_SCHEMAS_PATH:$XDG_DATA_DIRS"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/codito/gnome-shell-pomodoro;
+    description =
+      "Personal information management application that provides integrated " + 
+      "mail, calendaring and address book functionality";
+    maintainers = with maintainers; [ DamienCassou ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix b/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix
new file mode 100644
index 00000000000..cebbce78177
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, intltool, fetchurl, vala
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, makeWrapper, itstool, gnupg, libsoup
+, gnome3, librsvg, gdk_pixbuf, gpgme
+, libsecret, avahi, p11_kit }:
+
+let
+  majVer = "3.14";
+in stdenv.mkDerivation rec {
+  name = "seahorse-${majVer}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/seahorse/${majVer}/${name}.tar.xz";
+    sha256 = "14syy2qxxrim220aj64mbp76jbrrc6wmdwc4lfl4sngsh84qjah9";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gcr
+                  gnome3.gsettings_desktop_schemas makeWrapper gnupg
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg gpgme
+                  libsecret avahi libsoup p11_kit vala gnome3.gcr
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/seahorse" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Seahorse;
+    description = "Application for managing encryption keys and passwords in the GnomeKeyring";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix
new file mode 100644
index 00000000000..a445ff73608
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor_icon_theme }:
+
+stdenv.mkDerivation rec {
+  name = "adwaita-icon-theme-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/adwaita-icon-theme/${gnome3.version}/${name}.tar.xz";
+    sha256 = "a3c8ad3b099ca571b423811a20ee9a7a43498cfa04d299719ee43cd7af6f6eb1";
+  };
+
+  # For convenience, we can specify adwaita-icon-theme only in packages
+  propagatedBuildInputs = [ hicolor_icon_theme ];
+
+  buildInputs = [ gdk_pixbuf librsvg ];
+  
+  nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix b/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix
new file mode 100644
index 00000000000..87c21e3eb01
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, intltool, fetchurl, vala, libgtop
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  name = "baobab-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/baobab/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1wnf3yd3qi0xsmm37s6pk23qh095pk1fv9nhqjya1p9svwrh9r0z";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ vala pkgconfig gtk3 glib libgtop intltool itstool libxml2
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix
new file mode 100644
index 00000000000..b75b055fc3f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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, automake114x }:
+
+let
+  majorVersion = "0.4";
+in
+stdenv.mkDerivation rec {
+  name = "caribou-${majorVersion}.18.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/caribou/${majorVersion}/${name}.tar.xz";
+    sha256 = "0l1ikx56ddgayvny3s2xv8hs3p23xsclw4zljs3cczv4b89dzymf";
+  };
+
+  buildInputs = with gnome3;
+    [ glib pkgconfig gtk clutter at_spi2_core dbus pythonPackages.python automake114x
+      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 = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix b/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix
new file mode 100644
index 00000000000..141d1413f6f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, vala, libxslt, pkgconfig, glib, dbus_glib, gnome3
+, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }:
+
+let
+  majorVersion = "0.24";
+in
+stdenv.mkDerivation rec {
+  name = "dconf-${version}";
+  version = "${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/dconf/${majorVersion}/${name}.tar.xz";
+    sha256 = "4373e0ced1f4d7d68d518038796c073696280e22957babb29feb0267c630fec2";
+  };
+
+  buildInputs = [ vala libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2
+                  intltool docbook_xsl docbook_xsl_ns makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/dconf-editor" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+
+    rm $out/lib/gio/modules/giomodule.cache
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix
new file mode 100644
index 00000000000..ab5ea0cbcca
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, hicolor_icon_theme, 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, pulseaudio, 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}.8";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/empathy/${majorVersion}/${name}.tar.xz";
+    sha256 = "10z6ksia6yx7vg0wsdbk4w6vjgfg3cg3n04jf9bj2vr7kr5zvs7w";
+  };
+
+  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 pulseaudio gnome3.yelp_xsl gdk_pixbuf
+                  libnotify clutter libsoup gnutls libgee p11_kit
+                  libcanberra_gtk3 telepathy_farstream farstream
+                  gnome3.adwaita-icon-theme hicolor_icon_theme 
+                  gnome3.gsettings_desktop_schemas file libtool librsvg ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus_glib}/include/dbus-1.0"
+                         "-I${dbus_libs}/include/dbus-1.0"
+                         "-I${dbus_libs}/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 = with maintainers; [ lethalman ];
+    # TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/eog/default.nix b/pkgs/desktops/gnome-3/3.16/core/eog/default.nix
new file mode 100644
index 00000000000..093bab63fe4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/eog/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3
+, shared_mime_info, makeWrapper, librsvg, libexif }:
+
+
+stdenv.mkDerivation rec {
+  name = "eog-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/eog/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1ry10wvd2zq7vv4rf1qz0x1b77sdzaqlxyjbw3a0lccp4f2x2y99";
+  };
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig itstool libxml2 libjpeg gtk glib libpeas makeWrapper librsvg
+      gsettings_desktop_schemas shared_mime_info adwaita-icon-theme gnome_desktop libexif ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/eog" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${shared_mime_info}/share:${gnome3.adwaita-icon-theme}/share:${gnome3.gtk}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/EyeOfGnome; 
+    platforms = platforms.linux;
+    description = "GNOME image viewer";
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix
new file mode 100644
index 00000000000..b03fbd4e9c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu
+, bash, makeWrapper, gnome3, libwnck3, libxml2, libxslt, libtool
+, webkitgtk, libsoup, libsecret, gnome_desktop, libnotify, p11_kit
+, sqlite, gcr, avahi, nss, isocodes, itstool, file, which
+, hicolor_icon_theme, gdk_pixbuf, librsvg, gnome_common }:
+
+stdenv.mkDerivation rec {
+  name = "epiphany-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/epiphany/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1bicv1rfi697hk12p5n3jmcgjc81bwicjsmppdfjmvj94r4iniz8";
+  };
+
+  # Tests need an X display
+  configureFlags = [ "--disable-static --disable-tests" ];
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig file ];
+
+  configureScript = "./autogen.sh";
+
+  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.adwaita-icon-theme librsvg which gnome_common
+                  gcr avahi gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  patches = [ ./libxml_depend.patch ];
+
+  patchFlags = [ "-p0" ];
+
+  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/Apps/Epiphany;
+    description = "WebKit based web browser for GNOME";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/epiphany/libxml_depend.patch b/pkgs/desktops/gnome-3/3.16/core/epiphany/libxml_depend.patch
new file mode 100644
index 00000000000..89e3694a02d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/epiphany/libxml_depend.patch
@@ -0,0 +1,10 @@
+--- configure.ac.orig	2015-04-08 18:53:52.284580835 +0200
++++ configure.ac	2015-04-08 18:55:55.697225280 +0200
+@@ -113,6 +113,7 @@
+ PKG_CHECK_MODULES(WEB_EXTENSION, [
+                   webkit2gtk-web-extension-4.0 >= $WEBKIT_GTK_REQUIRED
+                   libsecret-1 >= $LIBSECRET_REQUIRED
++                  libxml-2.0 >= $LIBXML_REQUIRED
+                   ])
+ AC_SUBST(WEB_EXTENSION_CFLAGS)
+ AC_SUBST(WEB_EXTENSION_LIBS)
diff --git a/pkgs/desktops/gnome-3/3.16/core/evince/default.nix b/pkgs/desktops/gnome-3/3.16/core/evince/default.nix
new file mode 100644
index 00000000000..aa75b55358b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/evince/default.nix
@@ -0,0 +1,69 @@
+{ fetchurl, stdenv, pkgconfig, intltool, perl, perlXMLParser, libxml2
+, glib, gtk3, pango, atk, gdk_pixbuf, shared_mime_info, itstool, gnome3
+, poppler, ghostscriptX, djvulibre, libspectre, libsecret , makeWrapper
+, librsvg, recentListSize ? null # 5 is not enough, allow passing a different number
+, gobjectIntrospection
+}:
+
+stdenv.mkDerivation rec {
+  name = "evince-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/evince/${gnome3.version}/${name}.tar.xz";
+    sha256 = "016d9i83srv49saslmjl7v02n7sc6d7v6h68y06y9rfgbk8f4f2i";
+  };
+
+  buildInputs = [
+    pkgconfig 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
+    makeWrapper libsecret librsvg gnome3.adwaita-icon-theme
+  ];
+
+  configureFlags = [
+    "--disable-nautilus" # Do not use nautilus
+    "--enable-introspection"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/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 = ''
+    # Tell Glib/GIO about the MIME info directory, which is used
+    # by `g_file_info_get_content_type ()'.
+    wrapProgram "$out/bin/evince" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:${shared_mime_info}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+
+  '';
+
+  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.16/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix
new file mode 100644
index 00000000000..7193b845468
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, python
+, intltool, libsoup, libxml2, libsecret, icu, sqlite
+, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true, vala }:
+
+
+stdenv.mkDerivation rec {
+  name = "evolution-data-server-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/evolution-data-server/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0lgb8jvn8kx50692gg1m9klvwm7msvk4f7wm0yl7rj880wbxzvh4";
+  };
+
+  buildInputs = with gnome3;
+    [ pkgconfig glib python intltool libsoup libxml2 gtk gnome_online_accounts
+      gcr p11_kit libgweather libgdata gperf makeWrapper icu sqlite ]
+    ++ stdenv.lib.optional valaSupport vala;
+
+  propagatedBuildInputs = [ libsecret nss nspr libical db ];
+
+  # uoa irrelevant for now
+  configureFlags = [ "--disable-uoa" ]
+                   ++ 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 = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/folks/default.nix b/pkgs/desktops/gnome-3/3.16/core/folks/default.nix
new file mode 100644
index 00000000000..5f3954f14f3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/folks/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, pkgconfig, glib, gnome3, nspr, intltool
+, vala, 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}.0";
+
+  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 libsecret libxml2 libsoup nspr nss intltool db ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  configureFlags = "--disable-fatal-warnings";
+
+  NIX_CFLAGS_COMPILE = ["-I${nspr}/include/nspr" "-I${nss}/include/nss"
+                        "-I${dbus_glib}/include/dbus-1.0" "-I${dbus_libs}/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 = with stdenv.lib.maintainers; [ lethalman ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gconf/default.nix b/pkgs/desktops/gnome-3/3.16/core/gconf/default.nix
new file mode 100644
index 00000000000..47dae0486e9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gconf/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, dbus_glib, gnome3, glib, libxml2
+, intltool, polkit, orbit }:
+
+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 gnome3.gtk orbit ];
+  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.16/core/gcr/default.nix b/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix
new file mode 100644
index 00000000000..b3acdee072d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib
+, libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk
+, gobjectIntrospection, makeWrapper, libxslt, vala, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "gcr-3.14.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gcr/3.14/${name}.tar.xz";
+    sha256 = "2a2231147a01e2061f57fa9ca77557ff97bc6ceab028cee5528079f4b2fca63d";
+  };
+
+  buildInputs = [
+    pkgconfig intltool gnupg p11_kit glib gobjectIntrospection libxslt
+    libgcrypt libtasn1 dbus_glib gtk pango gdk_pixbuf atk makeWrapper vala
+  ];
+
+  #doCheck = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/gcr-viewer" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+	maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix
new file mode 100644
index 00000000000..450914ce745
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix
@@ -0,0 +1,40 @@
+{ 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}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gdm/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0qg2qxlfdvi1081r8bbid5hg7vqlpm91996ck2z7fq6kczy4hvdv";
+  };
+
+  # Only needed to make it build
+  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'
+ '';
+
+  configureFlags = [ "--localstatedir=/var" "--with-systemd=yes" "--without-plymouth"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
+  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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.16/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.16/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.16/core/gdm/3.16-wip/sessions_dir.patch b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/sessions_dir.patch
new file mode 100644
index 00000000000..b8fbad4d731
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/gdm/3.16-wip/xserver_path.patch b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/xserver_path.patch
new file mode 100644
index 00000000000..b451d129391
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix
new file mode 100644
index 00000000000..43a3d450ac7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix
@@ -0,0 +1,42 @@
+{ 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-3.14.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gdm/3.14/${name}.tar.xz";
+    sha256 = "0c2rvgcrf4s0nkxb19hf9pgh9c5pm6pginsq21dxj6hnjqabc3p2";
+  };
+
+  # Only needed to make it build
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X"
+  '';
+
+  configureFlags = [ "--localstatedir=/var" "--with-systemd=yes"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool ];
+
+  #enableParallelBuilding = true; # problems compiling
+
+  preBuild = ''
+    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'
+  '';
+
+  # 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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.16/core/gdm/disable_x_access_control.patch
new file mode 100644
index 00000000000..e100e013b78
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/3.16/core/gdm/sessions_dir.patch
new file mode 100644
index 00000000000..b8fbad4d731
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/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.16/core/gdm/xserver_path.patch b/pkgs/desktops/gnome-3/3.16/core/gdm/xserver_path.patch
new file mode 100644
index 00000000000..412daee9f27
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/xserver_path.patch
@@ -0,0 +1,15 @@
+--- 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
diff --git a/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix
new file mode 100644
index 00000000000..8c546394bd2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix
@@ -0,0 +1,21 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, libsoup, json_glib }:
+
+
+stdenv.mkDerivation rec {
+  name = "geocode-glib-${gnome3.version}.0";
+
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/geocode-glib/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1cbfv0kds6b6k0cl7q47xpj3x1scwcd7m68zl1rf7i4hmhw4hpqj";
+  };
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig glib libsoup json_glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+	maintainers = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.16/core/gjs/default.nix
new file mode 100644
index 00000000000..2bb4364a19e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gjs/default.nix
@@ -0,0 +1,23 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, gobjectIntrospection, spidermonkey_24, pango }:
+
+let
+  majorVersion = "1.42";
+in
+stdenv.mkDerivation rec {
+  name = "gjs-${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gjs/${majorVersion}/${name}.tar.xz";
+    sha256 = "0c9afb7d5be6ead5b68059596f08eb7c3902b1676ee9c8846aa8df09647dba13";
+  };
+
+  buildInputs = with gnome3;
+    [ gobjectIntrospection pkgconfig glib pango ];
+
+  propagatedBuildInputs = [ spidermonkey_24 ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix
new file mode 100644
index 00000000000..d48e2341722
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, intltool }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-backgrounds-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-backgrounds/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0fx0pjz356v4w462i9a3z9r26khxqmj0zhp7wfl5scyq07fzkqvn";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+	maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix
new file mode 100644
index 00000000000..ab8f380f672
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gnome3, pkgconfig, intltool, glib
+, udev, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-bluetooth-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-bluetooth/${gnome3.version}/${name}.tar.xz";
+    sha256 = "12z0792j5ln238ajhgqx5jrm34wz2yqbbskhlp23p9c0cwnj1srz";
+  };
+
+  buildInputs = with gnome3; [ pkgconfig intltool glib gtk3 udev libxml2
+                               gsettings_desktop_schemas itstool ];
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix
new file mode 100644
index 00000000000..c2eb745a7e5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libxml2
+, bash, gtk3, glib, hicolor_icon_theme, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, mpfr, gmp }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-calculator-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-calculator/${gnome3.version}/${name}.tar.xz";
+    sha256 = "068mnwkxliwafcfk70cz85fqna76vjj7kgsm4yqs4c1fd72gphmv";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool
+                  libxml2 gnome3.gtksourceview mpfr gmp
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-calculator" \
+      --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/action/show/Apps/Calculator;
+    description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix
new file mode 100644
index 00000000000..b5c99849afe
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, which, gnome3, autoconf, automake }:
+
+let
+  majVer = "3.14";
+in stdenv.mkDerivation rec {
+  name = "gnome-common-${majVer}.0";
+
+  src = fetchurl {
+    url = "https://download.gnome.org/sources/gnome-common/${majVer}/${name}.tar.xz";
+    sha256 = "0b1676g4q44ah73c5gwl1kg88pc93pnq1pa9kwl43d0vg0pj802c";
+  };
+
+  patches = [(fetchurl {
+    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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix
new file mode 100644
index 00000000000..0983fd26635
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, intltool, fetchurl, evolution_data_server, db
+, pkgconfig, gtk3, glib, hicolor_icon_theme, libsecret
+, libchamplain, clutter_gtk, geocode_glib
+, bash, makeWrapper, itstool, folks, libnotify, libxml2
+, gnome3, librsvg, gdk_pixbuf, file, telepathy_glib, nspr, nss
+, libsoup, vala, dbus_glib, automake115x, autoconf }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-contacts-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-contacts/${gnome3.version}/${name}.tar.xz";
+    sha256 = "09syi67ijdx9dhsx9c740mf3fhs6z3kaijdr3fyj8gd80h7a3hym";
+  };
+
+  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.adwaita-icon-theme librsvg
+                  libchamplain clutter_gtk geocode_glib
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  vala 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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/gio_unix.patch b/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/gio_unix.patch
new file mode 100644
index 00000000000..f1b3d3c94ac
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix
new file mode 100644
index 00000000000..f442bd88973
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix
@@ -0,0 +1,60 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, ibus, intltool, upower, makeWrapper
+, libcanberra, accountsservice, libpwquality, pulseaudio, fontconfig
+, gdk_pixbuf, hicolor_icon_theme, librsvg, libxkbfile, libnotify
+, libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk
+, cracklib, python, krb5, networkmanagerapplet, networkmanager
+, libwacom, samba, shared_mime_info, tzdata, icu, libtool, udev
+, docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter_gtk }:
+
+# 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 {
+  name = "gnome-control-center-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-control-center/${gnome3.version}/${name}.tar.xz";
+    sha256 = "07vvmnqjjcc0cblpr6cdmg3693hihpjrq3q30mm3q68pdyfzbjgf";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard gnome3.libgnomekbd ];
+
+  enableParallelBuilding = true;
+
+  buildInputs = with gnome3;
+    [ pkgconfig intltool ibus gtk glib upower libcanberra gsettings_desktop_schemas
+      libxml2 gnome_desktop gnome_settings_daemon polkit libxslt libgtop gnome-menus
+      gnome_online_accounts libsoup colord pulseaudio fontconfig colord-gtk libpwquality
+      accountsservice krb5 networkmanagerapplet libwacom samba libnotify libxkbfile
+      shared_mime_info icu libtool docbook_xsl docbook_xsl_ns gnome3.grilo
+      gdk_pixbuf gnome3.adwaita-icon-theme librsvg clutter clutter_gtk
+      hicolor_icon_theme gnome3.adwaita-icon-theme gnome3.vino udev
+      networkmanager modemmanager makeWrapper gnome3.gnome-bluetooth ];
+
+  preBuild = ''
+    substituteInPlace tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab"
+    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/"
+  '';
+
+  patches = [ ./vpn_plugins_path.patch ];
+
+  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:$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 = "Single sign-on framework for GNOME";
+    maintainers = with maintainers; [ lethalman ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/vpn_plugins_path.patch b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/vpn_plugins_path.patch
new file mode 100644
index 00000000000..e25105a303f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/vpn_plugins_path.patch
@@ -0,0 +1,19 @@
+diff --git a/panels/network/connection-editor/vpn-helpers.c b/panels/network/connection-editor/vpn-helpers.c
+index 7dc23c2..fcb1384 100644
+--- a/panels/network/connection-editor/vpn-helpers.c
++++ b/panels/network/connection-editor/vpn-helpers.c
+@@ -95,14 +95,6 @@ vpn_get_plugins (GError **error)
+ 		if (!so_path)
+ 			goto next;
+ 
+-		/* Remove any path and extension components, then reconstruct path
+-		 * to the SO in LIBDIR
+-		 */
+-		so_name = g_path_get_basename (so_path);
+-		g_free (so_path);
+-		so_path = g_build_filename (NM_VPN_MODULE_DIR, so_name, NULL);
+-		g_free (so_name);
+-
+ 		module = g_module_open (so_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+ 		if (!module) {
+ 			g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot load the VPN plugin which provides the "
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix
new file mode 100644
index 00000000000..fc721f93648
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix
@@ -0,0 +1,30 @@
+{ 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 {
+
+  majorVersion = gnome3.version;
+  minorVersion = "1";
+  name = "gnome-desktop-${majorVersion}.${minorVersion}";
+
+  # this should probably be setuphook for glib
+  NIX_CFLAGS_COMPILE = "-I${glib}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-desktop/${majorVersion}/${name}.tar.xz";
+    sha256 = "0v7md6csbnv55j4kns2q0zjl4040zwf3ld6lc3qvik40fkzzbrjb";
+  };
+
+  buildInputs = [ pkgconfig python libxml2Python libxslt which libX11
+                  xkeyboard_config isocodes itstool wayland
+                  gtk3 glib intltool gnome_doc_utils libxkbfile
+                  gnome3.gsettings_desktop_schemas gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix
new file mode 100644
index 00000000000..a99ddbc9eb4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-dictionary-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-dictionary/${gnome3.version}/${name}.tar.xz";
+    sha256 = "17ha4pmnh9v98hxqy4pr3ri9wsck9njfjwd8qa0gycksmbyd1cag";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                            hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  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}/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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix
new file mode 100644
index 00000000000..54034798a49
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
+, bash, gtk3, glib, hicolor_icon_theme, makeWrapper, cracklib, libnotify
+, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python
+, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-disk-utility-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-disk-utility/${gnome3.version}/${name}.tar.xz";
+    sha256 = "14h92bznizq0k4qz7hn41axhhfjyw2ncnmbkf8kldi9x909fvpml";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/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.adwaita-icon-theme
+                  librsvg udisks2 gnome3.gnome_settings_daemon
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix
new file mode 100644
index 00000000000..60492c52164
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool
+, gnome3, librsvg, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-font-viewer-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-font-viewer/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0dnkpg1d71dbzazi5chg3vj8bbia2w6k0ji4vh2f4s0b9rvybgzc";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gnome_desktop
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix
new file mode 100644
index 00000000000..aacc62a30a9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix
@@ -0,0 +1,41 @@
+{ 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 }:
+
+let
+  majVer = gnome3.version;
+in stdenv.mkDerivation rec {
+  name = "gnome-keyring-${majVer}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-keyring/${majVer}/${name}.tar.xz";
+    sha256 = "1xg1xha3x3hzlmvdq2zm90hc61pj7pnf9yxxvgq4ynl5af6bp8qm";
+  };
+
+  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-ca-certificates=/etc/ssl/certs/ca-bundle.crt" # NixOS hardcoded path
+    "--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}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+    wrapProgram "$out/bin/gnome-keyring-daemon" \
+      --prefix XDG_DATA_DIRS : "${glib}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-menus/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-menus/default.nix
new file mode 100644
index 00000000000..37d2ea1c086
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-menus/default.nix
@@ -0,0 +1,24 @@
+{ 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";
+
+  preBuild = "patchShebangs ./scripts";
+
+  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.16/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix
new file mode 100644
index 00000000000..8e0c1709642
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
+, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
+, telepathy_glib, intltool, dbus_libs, icu, autoreconfHook
+, libsoup, docbook_xsl_ns, docbook_xsl, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  name = "gnome-online-accounts-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-online-accounts/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1mpzj6fc42hhx77lki8cdycgfj9gjrm611rh0wsaqam4qq2c9a9c";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib}/include/dbus-1.0 -I${dbus_libs}/include/dbus-1.0";
+
+  enableParallelBuilding = true;
+
+  preAutoreconf = ''
+    sed '/disable-settings/d' -i configure.ac
+    sed "/if HAVE_INTROSPECTION/a INTROSPECTION_COMPILER_ARGS = --shared-library=$out/lib/libgoa-1.0.so" -i src/goa/Makefile.am
+  '';
+
+  buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper
+                  libsecret dbus_glib telepathy_glib intltool icu libsoup autoreconfHook
+                  docbook_xsl_ns docbook_xsl ];
+
+  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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix
new file mode 100644
index 00000000000..a44d31e9ccb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2
+, libsoup, json_glib, gmp, openssl, makeWrapper }:
+
+let
+  majVer = "3.14";
+in stdenv.mkDerivation rec {
+  name = "gnome-online-miners-${majVer}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-online-miners/${majVer}/${name}.tar.xz";
+    sha256 = "0bbak8srcrvnw18s4ls5mqaamx9nqdi93lij6yjs0a3q320k22xl";
+  };
+
+  doCheck = true;
+
+  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-0.2"
+    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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix
new file mode 100644
index 00000000000..d571c90f898
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libcanberra_gtk3
+, bash, gtk3, glib, hicolor_icon_theme, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-screenshot-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-screenshot/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0hjbay906xk31rbjmm1ihrhnysh9hf4xgxlkvxj2jlnypx4hvdrv";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                            hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  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}/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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix
new file mode 100644
index 00000000000..63fea43baed
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, glib, dbus_glib, json_glib, upower
+, libxslt, intltool, makeWrapper, systemd, xorg }:
+
+
+stdenv.mkDerivation rec {
+  name = "gnome-session-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-session/${gnome3.version}/${name}.tar.xz";
+    sha256 = "17d9zryq13ajmai6fqynpfgghms52sj9h756f086i7fxbr2nsm4v";
+  };
+
+  configureFlags = "--enable-systemd";
+
+  buildInputs = with gnome3;
+    [ pkgconfig glib gnome_desktop gtk dbus_glib json_glib libxslt 
+      gnome3.gnome_settings_daemon xorg.xtrans
+      gsettings_desktop_schemas upower intltool gconf makeWrapper systemd ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-session" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix
new file mode 100644
index 00000000000..e4d2d80e9f4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, glib, libnotify, lcms2, libXtst
+, libxkbfile, pulseaudio, libcanberra_gtk3, upower, colord, libgweather, polkit
+, geoclue2, librsvg, xf86_input_wacom, udev, libwacom, libxslt, libtool, networkmanager
+, docbook_xsl, docbook_xsl_ns, makeWrapper, ibus, xkeyboard_config }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-settings-daemon-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-settings-daemon/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1l61h497v57g3iqfmyzjh15z4c4akky3xziymphswzigb1ssv3da";
+  };
+
+  # fatal error: gio/gunixfdlist.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${glib}/include/gio-unix-2.0";
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig ibus gtk glib gsettings_desktop_schemas networkmanager
+      libnotify gnome_desktop lcms2 libXtst libxkbfile pulseaudio
+      libcanberra_gtk3 upower colord libgweather xkeyboard_config
+      polkit geocode_glib geoclue2 librsvg xf86_input_wacom udev libwacom libxslt
+      libtool docbook_xsl docbook_xsl_ns makeWrapper gnome_themes_standard ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-settings-daemon-localeexec" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix PATH : "${glib}/bin" \
+      --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix
new file mode 100644
index 00000000000..abb7b882a2b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, libgtop
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool
+, gnome3, file }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-shell-extensions-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-shell-extensions/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0hd7jskwhrki0s9lmx6vc6rw9y689zp2h7zhlxk90hghy4nkvkc8";
+  };
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix
new file mode 100644
index 00000000000..f7e3efd1dd9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix
@@ -0,0 +1,61 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret
+, python3, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core
+, libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip
+, hicolor_icon_theme, sqlite, libgweather
+, pulseaudio, 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 {
+  name = "gnome-shell-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-shell/${gnome3.version}/${name}.tar.xz";
+    sha256 = "00gjdfaznpnspb4jmjc19axiz6snd9drvqmzpq4sw0xh1ysgpncv";
+  };
+
+  # 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 python3 libsoup polkit libcanberra gdk_pixbuf librsvg
+      clutter networkmanager libstartup_notification telepathy_glib docbook_xsl docbook_xsl_ns
+      libXtst p11_kit networkmanagerapplet gjs mutter pulseaudio caribou evolution_data_server
+      libical libtool nss gobjectIntrospection gtk gstreamer makeWrapper gdm gnome_control_center
+      hicolor_icon_theme adwaita-icon-theme 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_session gnome_desktop telepathy_logger gnome3.gnome_settings_daemon ];
+
+  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:$GSETTINGS_SCHEMAS_PATH"
+
+    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 = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix
new file mode 100644
index 00000000000..f0f2f829a33
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, intltool, fetchurl, pkgconfig
+, bash, gtk3, glib, hicolor_icon_theme, 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}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                            hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  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}/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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix
new file mode 100644
index 00000000000..e1f4944f86c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtkmm3, libxml2
+, bash, gtk3, glib, hicolor_icon_theme, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, libgtop }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-system-monitor-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-system-monitor/${gnome3.version}/${name}.tar.xz";
+    sha256 = "14akcz4dwjnfx47gncyavjr82zc78a912v5gdp6h3z19bn5nx4q0";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libxml2
+                  gtkmm3 libgtop makeWrapper
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix
new file mode 100644
index 00000000000..4a07dbee129
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, libuuid, vala
+, desktop_file_utils, itstool, makeWrapper, appdata-tools }:
+
+stdenv.mkDerivation rec {
+
+  versionMajor = gnome3.version;
+  versionMinor = "1";
+
+  name = "gnome-terminal-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-terminal/${versionMajor}/${name}.tar.xz";
+    sha256 = "0nxlsz9hwajqfrblvqzc09599dra3van2znmcknnhjcfv3slvkkx";
+  };
+
+  buildInputs = [ gnome3.gtk gnome3.gsettings_desktop_schemas gnome3.vte appdata-tools
+                  gnome3.dconf itstool makeWrapper gnome3.nautilus vala ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libuuid libxml2 desktop_file_utils ];
+
+  # FIXME: enable for gnome3
+  configureFlags = [ "--disable-search-provider" "--disable-migration" ];
+
+  preFixup = ''
+    for f in "$out/libexec/gnome-terminal-server"; do
+      wrapProgram "$f" --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix
new file mode 100644
index 00000000000..6e98b9817c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-themes-standard-${gnome3.version}.0";
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-themes-standard/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0kyrbfrgl6g6wm6zpllldz36fclvl8vwmn1snwk18kf7f6ncpsac";
+  };
+  
+  buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix
new file mode 100644
index 00000000000..969459aad31
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-user-docs-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-user-docs/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0cck9hnp9az6qan97cv2d5lxlnzfss38h73g1a6dbspl4bnghy4n";
+  };
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.cc-by-30;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix
new file mode 100644
index 00000000000..2f158be4e0d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, intltool, fetchurl, apacheHttpd_2_2, nautilus
+, pkgconfig, gtk3, glib, hicolor_icon_theme, libxml2, gnused
+, bash, makeWrapper, itstool, libnotify, libtool, mod_dnssd
+, gnome3, librsvg, gdk_pixbuf, file, libcanberra_gtk3 }:
+
+let
+  majVer = "3.14";
+in stdenv.mkDerivation rec {
+  name = "gnome-user-share-${majVer}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-user-share/${majVer}/${name}.tar.xz";
+    sha256 = "1s9fjzr161hy53i9ibk6aamc9af0cg8s151zj2fb6fxg67pv61bb";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/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}/bin/httpd"
+                     "--with-modules-path=${apacheHttpd_2_2}/modules"
+                     "--disable-bluetooth"
+                     "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool
+                  makeWrapper file gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  nautilus libnotify libcanberra_gtk3 ];
+
+  postInstall = ''
+    mkdir -p $out/share/gsettings-schemas/$name
+    mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name
+    ${glib}/bin/glib-compile-schemas $out/share/gsettings-schemas/$name/glib-2.0/schemas
+  '';
+
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-user-share" \
+      --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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix
new file mode 100644
index 00000000000..9076d5c5839
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, sqlite
+, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp_av
+, gmime, json_glib, avahi, tracker, itstool }:
+
+stdenv.mkDerivation rec {
+  name = "grilo-plugins-0.2.13";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo-plugins/0.2/${name}.tar.xz";
+    sha256 = "008jwm5ydl0k25p3d2fkcail40fj9y3qknihxb5fg941p8qlhm55";
+  };
+
+  installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-0.2" ];
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix
new file mode 100644
index 00000000000..a9be29f2b0e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib
+, libxml2, gnome3, gobjectIntrospection, libsoup }:
+
+stdenv.mkDerivation rec {
+  name = "grilo-0.2.12";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo/0.2/${name}.tar.xz";
+    sha256 = "11bvc7rsrjjwz8hp67p3fn8zmywrpawrcbi3vgw8b0dwa0sndd2m";
+  };
+
+  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 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 = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix
new file mode 100644
index 00000000000..a13b17fe5e0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, intltool, glib, gobjectIntrospection
+  # just for passthru
+, gnome3, gtk3, gsettings_desktop_schemas }:
+
+stdenv.mkDerivation rec {
+
+  versionMajor = gnome3.version;
+  versionMinor = "1";
+  moduleName   = "gsettings-desktop-schemas";
+
+  name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+    sha256 = "0q9l9fr90pcb3s6crbxkj3wiwn7wp9zfpv7bdxkadj0hspd9zzkl";
+  };
+
+  buildInputs = [ glib gobjectIntrospection ];
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix b/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix
new file mode 100644
index 00000000000..a9dbbb61316
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, libcanberra, gobjectIntrospection, libtool }:
+
+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 gobjectIntrospection libtool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GSound;
+    description = "Small library for playing system sounds";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix
new file mode 100644
index 00000000000..0de89bc5dd6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk3, pango
+, libxml2Python, perl, intltool, gettext, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "gtksourceview-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gtksourceview/${gnome3.version}/${name}.tar.xz";
+    sha256 = "030v7x1dmx5blqi9jcknsjd91jppbpl7f4z69k8c8kklr939i7k6";
+  };
+
+  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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/gtksourceview/nix_share_path.patch b/pkgs/desktops/gnome-3/3.16/core/gtksourceview/nix_share_path.patch
new file mode 100644
index 00000000000..c87350167c2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix
new file mode 100644
index 00000000000..454196df7a6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix
@@ -0,0 +1,38 @@
+{ 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 {
+  name = "gucharmap-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gucharmap/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1l26prbi5dmzxs62fz3vrhsif9jwqw4065qxp8hnc8bv34h59phw";
+  };
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix
new file mode 100644
index 00000000000..1875c1491f9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, glib }:
+
+stdenv.mkDerivation rec {
+  name = "libcroco-0.6.8";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz";
+    sha256 = "0w453f3nnkbkrly7spx5lx5pf6mwynzmd5qhszprq8amij2invpa";
+  };
+
+  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.16/core/libgdata/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgdata/default.nix
new file mode 100644
index 00000000000..bedbbee2dfe
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libgdata/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, intltool, libxml2, glib, json_glib
+, gobjectIntrospection, liboauth, gnome3, p11_kit, openssl }:
+
+let
+  majorVersion = "0.16";
+in
+stdenv.mkDerivation rec {
+  name = "libgdata-${majorVersion}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgdata/${majorVersion}/${name}.tar.xz";
+    sha256 = "8740e071ecb2ae0d2a4b9f180d2ae5fdf9dc4c41e7ff9dc7e057f62442800827";
+  };
+
+  # TODO: need libuhttpmock
+  configureFlags = "--disable-tests";
+  
+  NIX_CFLAGS_COMPILE = "-I${gnome3.libsoup}/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 ];
+
+  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.16/core/libgee/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix
new file mode 100644
index 00000000000..82536735b39
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, autoconf, vala, pkgconfig, glib, gobjectIntrospection }:
+let
+  ver_maj = "0.16";
+  ver_min = "1";
+in
+stdenv.mkDerivation rec {
+  name = "libgee-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgee/${ver_maj}/${name}.tar.xz";
+    sha256 = "d95f8ea8e78f843c71b1958fa2fb445e4a325e4821ec23d0d5108d8170e564a5";
+  };
+
+  doCheck = true;
+
+  patches = [ ./fix_introspection_paths.patch ];
+
+  buildInputs = [ autoconf vala 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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgee/fix_introspection_paths.patch b/pkgs/desktops/gnome-3/3.16/core/libgee/fix_introspection_paths.patch
new file mode 100644
index 00000000000..67003f45164
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgnome-keyring/default.nix
new file mode 100644
index 00000000000..c6c9323c010
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/libgnomekbd/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix
new file mode 100644
index 00000000000..1156474e5a7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "libgnomekbd-3.6.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnomekbd/3.6/${name}.tar.xz";
+    sha256 = "c41ea5b0f64da470925ba09f9f1b46b26b82d4e433e594b2c71eab3da8856a09";
+  };
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix
new file mode 100644
index 00000000000..571fc73e039
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf
+, pango, gdk_pixbuf, atk, tzdata, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "libgweather-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgweather/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1zadscn3i86fy7xpqiyw14pvz4f5cdw50ir77wd0zfr72hk5a2fv";
+  };
+
+  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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgxps/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgxps/default.nix
new file mode 100644
index 00000000000..72d307f4f1a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libgxps/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, glib, cairo, libarchive, freetype, libjpeg, libtiff
+, openssl, bzip2, acl, attr
+}:
+
+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 libarchive freetype libjpeg libtiff acl openssl bzip2 attr];
+
+  configureFlags = "--without-liblcms2";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix b/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix
new file mode 100644
index 00000000000..e59d81f3c1d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, intltool
+, glib, gtk3, gobjectIntrospection, python, pygobject3
+}:
+
+let
+  majorVersion = "1.12";
+in
+stdenv.mkDerivation rec {
+  name = "libpeas-${version}";
+  version = "${majorVersion}.1";
+
+  buildInputs =  [
+   intltool pkgconfig
+   glib gtk3 gobjectIntrospection python pygobject3
+  ];
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libpeas/${majorVersion}/${name}.tar.xz";
+    sha256 = "e610be31c9d382580fb5d8686f8311149f27413f55af6abf5c033178b99452d6";
+  };
+
+  preFixup = ''
+  '';
+
+  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 = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/libzapojit/default.nix b/pkgs/desktops/gnome-3/3.16/core/libzapojit/default.nix
new file mode 100644
index 00000000000..5a8117528b6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/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.16/core/mutter/default.nix b/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix
new file mode 100644
index 00000000000..3df5d9f55d9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix
@@ -0,0 +1,35 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo
+, pango, cogl, clutter, libstartup_notification, libcanberra, zenity, libcanberra_gtk3
+, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon }:
+
+
+stdenv.mkDerivation rec {
+  name = "mutter-${gnome3.version}.1.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/mutter/${gnome3.version}/${name}.tar.xz";
+    sha256 = "07059jmwhc7zf2gww2xw94hhy4csjj2v30ivyzllbas2nvv88l3r";
+  };
+
+  # fatal error: gio/gunixfdlist.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/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
+      gnome3.geocode_glib
+      libcanberra_gtk3 zenity libtool makeWrapper xkeyboard_config libxkbfile libxkbcommon ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/mutter" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix b/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix
new file mode 100644
index 00000000000..6d004ceb2a3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, dbus_glib, shared_mime_info, libexif
+, gtk, gnome3, libunique, intltool, gobjectIntrospection
+, libnotify, makeWrapper, exempi, librsvg, tracker }:
+
+stdenv.mkDerivation rec {
+  name = "nautilus-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/nautilus/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0y83adhfaq4ns01rdkqmrvdwj0ch2pb10hl43as98kqqzm0qxs3y";
+  };
+
+  buildInputs = [ pkgconfig libxml2 dbus_glib shared_mime_info libexif gtk libunique intltool exempi librsvg
+                  gnome3.gnome_desktop gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas libnotify makeWrapper tracker ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/nautilus" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  patches = [ ./extension_dir.patch ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/nautilus/extension_dir.patch b/pkgs/desktops/gnome-3/3.16/core/nautilus/extension_dir.patch
new file mode 100644
index 00000000000..317b8257992
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/nautilus/extension_dir.patch
@@ -0,0 +1,24 @@
+diff --git a/libnautilus-private/nautilus-module.c b/libnautilus-private/nautilus-module.c
+index 6273a76..4adcc8a 100644
+--- a/libnautilus-private/nautilus-module.c
++++ b/libnautilus-private/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.16/core/rest/default.nix b/pkgs/desktops/gnome-3/3.16/core/rest/default.nix
new file mode 100644
index 00000000000..d1bfee5c14a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/rest/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "rest-0.7.92";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/rest/0.7/${name}.tar.xz";
+    sha256 = "07548c8785a3e743daf54a82b952ff5f32af94fee68997df4c83b00d52f9c0ec";
+  };
+
+  buildInputs = [ pkgconfig glib libsoup gobjectIntrospection];
+
+  configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-bundle.crt";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix b/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix
new file mode 100644
index 00000000000..9105dd8e736
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gobjectIntrospection, glib
+, clutter_gtk, clutter-gst, gnome3, gtksourceview, libmusicbrainz
+, webkitgtk, libmusicbrainz5, icu, makeWrapper, gst_all_1
+, gdk_pixbuf, librsvg, hicolor_icon_theme, gtk3 }:
+
+stdenv.mkDerivation rec {
+  name = "sushi-3.12.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/sushi/3.12/${name}.tar.xz";
+    sha256 = "78594a858371b671671205e7b2518e7eb82ed8c2540b62f45a657aaabdf1a9ff";
+  };
+
+  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.adwaita-icon-theme hicolor_icon_theme 
+                  libmusicbrainz5 webkitgtk gnome3.evince icu makeWrapper ];
+
+  enableParallelBuilding = true;
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix
new file mode 100644
index 00000000000..f1b3bfe53c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup }:
+
+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 = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/totem/default.nix b/pkgs/desktops/gnome-3/3.16/core/totem/default.nix
new file mode 100644
index 00000000000..511a37e09a0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/totem/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, intltool, fetchurl, gst_all_1
+, clutter_gtk, clutter-gst, pygobject3, shared_mime_info
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool, libxml2, dbus_glib
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  name = "totem-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/totem/${gnome3.version}/${name}.tar.xz";
+    sha256 = "1qv6s7c06r6kdrd3jjqk8h79y8a7h8pjcx02rzp869jr7d9hkcb9";
+  };
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/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
+                  gnome3.libpeas pygobject3 shared_mime_info dbus_glib
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg gnome3.gnome_desktop
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas makeWrapper file ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/totem" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
+      --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Videos;
+    description = "Movie player for the GNOME desktop based on GStreamer";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix b/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix
new file mode 100644
index 00000000000..2b11c22c5f3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, intltool, fetchurl, libxml2, upower
+, pkgconfig, gtk3, glib, hicolor_icon_theme
+, bash, makeWrapper, itstool, vala, 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 }:
+
+let
+  majorVersion = "1.4";
+in
+stdenv.mkDerivation rec {
+  name = "tracker-${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/tracker/${majorVersion}/${name}.tar.xz";
+    sha256 = "1ssisbix7ib3d6bgx9s675gx6ayy68jq2srhpzv038mkbaskaz68";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0 -I${poppler}/include/poppler";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ vala pkgconfig gtk3 glib intltool itstool libxml2
+                  bzip2 gnome3.totem-pl-parser libxslt
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.adwaita-icon-theme 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
+                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+
+  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 = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/vino/default.nix b/pkgs/desktops/gnome-3/3.16/core/vino/default.nix
new file mode 100644
index 00000000000..c4082095918
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/vino/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, intltool, fetchurl, gtk3, glib, libsoup, pkgconfig, makeWrapper
+, hicolor_icon_theme, gnome3
+, libnotify, file, telepathy_glib, dbus_glib }:
+
+stdenv.mkDerivation rec {
+  name = "vino-${versionMajor}.${versionMinor}";
+  versionMajor = gnome3.version;
+  versionMinor = "0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/vino/${versionMajor}/${name}.tar.xz";
+    sha256 = "1icdc2y78xfg7czfiz05y9vsxkzzgrc0dpsrcxb41bg0sh9kd3b0";
+  };
+
+  doCheck = true;
+
+  buildInputs = [ gtk3 intltool glib libsoup pkgconfig libnotify
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  dbus_glib telepathy_glib file makeWrapper ];
+
+  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 iElectric ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.12/core/vte/0.38.0.nix b/pkgs/desktops/gnome-3/3.16/core/vte/default.nix
index 548ca347a45..82252224906 100644
--- a/pkgs/desktops/gnome-3/3.12/core/vte/0.38.0.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/vte/default.nix
@@ -1,8 +1,8 @@
 { stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection, vala, libxml2
-, selectTextPatch ? false }:
+, gnutls, selectTextPatch ? false }:
 
 stdenv.mkDerivation rec {
-  versionMajor = "0.38";
+  versionMajor = "0.40";
   versionMinor = "0";
   moduleName   = "vte";
 
@@ -10,12 +10,15 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
-    sha256 = "1llg2xnjpn630vd86ci8csbjjacj3ia6syck2bsq4kinr66z5zsw";
+    sha256 = "0lnq0bgkmsixjwmfacb2ch9qfjqjxa8zkk1hiv3l29kgca0n3nal";
   };
 
   patches = with stdenv.lib; optional selectTextPatch ./expose_select_text.0.38.0.patch;
 
-  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses vala libxml2 ];
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib 
+                  gnome3.gtk3 ncurses vala libxml2 ];
+
+  propagatedBuildInputs = [ gnutls ];
 
   preConfigure = "patchShebangs .";
 
diff --git a/pkgs/desktops/gnome-3/3.12/core/vte/expose_select_text.0.38.0.patch b/pkgs/desktops/gnome-3/3.16/core/vte/expose_select_text.0.38.0.patch
index 0a9b82a8598..0a9b82a8598 100644
--- a/pkgs/desktops/gnome-3/3.12/core/vte/expose_select_text.0.38.0.patch
+++ b/pkgs/desktops/gnome-3/3.16/core/vte/expose_select_text.0.38.0.patch
diff --git a/pkgs/desktops/gnome-3/3.16/core/yelp-tools/default.nix b/pkgs/desktops/gnome-3/3.16/core/yelp-tools/default.nix
new file mode 100644
index 00000000000..adf01c6df84
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/yelp-tools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }:
+
+let
+  majVer = gnome3.version;
+in stdenv.mkDerivation rec {
+  name = "yelp-tools-${majVer}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/yelp-tools/${majVer}/${name}.tar.xz";
+    sha256 = "177qzvj5w019isdp41qxqcys2kc4sq2x6dqhqn6l9ipib8a6rxml";
+  };
+
+  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; [ iElectric ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix
new file mode 100644
index 00000000000..3ade5f355d4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, intltool, fetchurl, pkgconfig, bash
+, itstool, libxml2, libxslt, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "yelp-xsl-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/yelp-xsl/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0jhpni4mmfvj3xf57rjm61nc8d0x66hz9gd1ywws5lh39g6fx59j";
+  };
+
+  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 = with maintainers; [ lethalman ];
+    license = [licenses.gpl2 licenses.lgpl2];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix b/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix
new file mode 100644
index 00000000000..413042d752c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, hicolor_icon_theme, gnome3, gdk_pixbuf, sqlite
+, bash, makeWrapper, itstool, libxml2, libxslt, icu }:
+
+stdenv.mkDerivation rec {
+  name = "yelp-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/yelp/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0az2f1g8gz341i93zxnm6sabrqx416a348ylwfr8vzlg592am2r3";
+  };
+
+  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.adwaita-icon-theme
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/yelp" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/:${gnome3.gnome_themes_standard}/share:${gnome3.yelp_xsl}/share/yelp-xsl:${gnome3.gsettings_desktop_schemas}/share:$out/share:$out/share/yelp:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp;
+    description = "The help viewer in Gnome";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix b/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix
new file mode 100644
index 00000000000..72e8ee6a593
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, itstool }:
+
+stdenv.mkDerivation rec {
+
+  versionMajor = "3.14";
+  versionMinor = "0";
+
+  name = "zenity-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/zenity/${versionMajor}/${name}.tar.xz";
+    sha256 = "0bw95d6ns67h0mw90qcbhxvhbglbpgd66vinvha7gwba8mnfqmvb";
+  };
+
+  buildInputs = [ gnome3.gtk libxml2 libxslt libX11 itstool ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+	maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/default.nix b/pkgs/desktops/gnome-3/3.16/default.nix
new file mode 100644
index 00000000000..a26b5263dcd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/default.nix
@@ -0,0 +1,297 @@
+{ callPackage, pkgs, self }:
+
+rec {
+  inherit (pkgs) libsoup glib gtk2;
+  inherit (pkgs.gnome2) ORBit2;
+  gtk3 = pkgs.gtk3_16;
+  gtkmm3 = pkgs.gtkmm3_16;
+  orbit = ORBit2;
+  gnome3 = self // { recurseForDerivations = false; };
+  clutter = pkgs.clutter_1_22;
+  clutter_gtk = pkgs.clutter_gtk_1_6.override { inherit clutter gtk3; };
+  clutter-gst = pkgs.clutter-gst_3_0.override { inherit clutter; };
+  cogl = pkgs.cogl_1_20;
+  gtk = gtk3;
+  gtkmm = gtkmm3;
+  vala = pkgs.vala_0_26;
+  gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; };
+
+  # Due to gtk 3.12 -> 3.16 transition
+  libcanberra_gtk3 = pkgs.libcanberra_gtk3.override { inherit gtk; }; 
+  libcanberra = libcanberra_gtk3;
+  ibus = pkgs.ibus.override { inherit gnome3; };
+  colord-gtk = pkgs.colord-gtk.override { inherit gtk3; };
+  webkitgtk24x = pkgs.webkitgtk24x.override { inherit gtk3; };
+  webkitgtk = pkgs.webkitgtk.override { inherit gtk3; };
+  libwnck3 = pkgs.libwnck3.override { inherit gtk3; };
+  gtkspell3 = pkgs.gtkspell3.override { inherit gtk3; };
+  librsvg = pkgs.librsvg.override { inherit gtk3; };
+  iconnamingutils = pkgs.iconnamingutils.override { inherit librsvg; };
+  libchamplain = pkgs.libchamplain.override { inherit gtk3 clutter_gtk; };
+  djvulibre = pkgs.djvulibre.override { inherit librsvg; };
+
+  version = "3.16";
+
+# Simplify the nixos module and gnome packages
+  defaultIconTheme = adwaita-icon-theme;
+
+# Backward compatibility, must be removed in favor of defaultIconTheme
+  gnome_icon_theme = adwaita-icon-theme;
+  gnome_icon_theme_symbolic = adwaita-icon-theme;
+
+#### Core (http://ftp.acc.umu.se/pub/GNOME/core/)
+
+  adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { };
+
+  baobab = callPackage ./core/baobab { };
+
+  caribou = callPackage ./core/caribou { };
+
+  dconf = callPackage ./core/dconf { };
+
+  empathy = callPackage ./core/empathy { 
+    webkitgtk = webkitgtk24x;
+    clutter-gst = pkgs.clutter-gst;
+  };
+
+  epiphany = callPackage ./core/epiphany { };
+
+  evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests
+
+  evolution_data_server = callPackage ./core/evolution-data-server { };
+
+  gconf = callPackage ./core/gconf { };
+
+  geocode_glib = callPackage ./core/geocode-glib { };
+
+  gcr = callPackage ./core/gcr { }; # ToDo: tests fail
+
+  gdm = callPackage ./core/gdm { };
+
+  gjs = callPackage ./core/gjs { };
+
+  glib_networking = pkgs.glib_networking.override {
+    inherit gsettings_desktop_schemas;
+  };
+
+  gnome-backgrounds = callPackage ./core/gnome-backgrounds { };
+
+  gnome-bluetooth = callPackage ./core/gnome-bluetooth { };
+
+  gnome-contacts = callPackage ./core/gnome-contacts { };
+
+  gnome_control_center = callPackage ./core/gnome-control-center { };
+
+  gnome-calculator = callPackage ./core/gnome-calculator { };
+
+  gnome_common = callPackage ./core/gnome-common { };
+
+  gnome_desktop = callPackage ./core/gnome-desktop { };
+
+  gnome-dictionary = callPackage ./core/gnome-dictionary { };
+
+  gnome-disk-utility = callPackage ./core/gnome-disk-utility { };
+
+  gnome-font-viewer = callPackage ./core/gnome-font-viewer { };
+
+  gnome-menus = callPackage ./core/gnome-menus { };
+
+  gnome_keyring = callPackage ./core/gnome-keyring { };
+
+  libgnome_keyring = callPackage ./core/libgnome-keyring { };
+
+  libgnomekbd = callPackage ./core/libgnomekbd { };
+
+  folks = callPackage ./core/folks { };
+
+  gnome_online_accounts = callPackage ./core/gnome-online-accounts { };
+
+  gnome-online-miners = callPackage ./core/gnome-online-miners { };
+
+  gnome_session = callPackage ./core/gnome-session { };
+
+  gnome_shell = callPackage ./core/gnome-shell { };
+
+  gnome-shell-extensions = callPackage ./core/gnome-shell-extensions { };
+
+  gnome-screenshot = callPackage ./core/gnome-screenshot { };
+
+  gnome_settings_daemon = callPackage ./core/gnome-settings-daemon { };
+
+  gnome-system-log = callPackage ./core/gnome-system-log { };
+
+  gnome-system-monitor = callPackage ./core/gnome-system-monitor { };
+
+  gnome_terminal = callPackage ./core/gnome-terminal { };
+
+  gnome_themes_standard = callPackage ./core/gnome-themes-standard { };
+
+  gnome-user-docs = callPackage ./core/gnome-user-docs { };
+
+  gnome-user-share = callPackage ./core/gnome-user-share { };
+
+  grilo = callPackage ./core/grilo { };
+
+  grilo-plugins = callPackage ./core/grilo-plugins { };
+
+  gsettings_desktop_schemas = callPackage ./core/gsettings-desktop-schemas { };
+
+  gsound = callPackage ./core/gsound { };
+
+  gtksourceview = callPackage ./core/gtksourceview { };
+
+  gucharmap = callPackage ./core/gucharmap { };
+
+  gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; };
+
+  eog = callPackage ./core/eog { };
+
+  libcroco = callPackage ./core/libcroco {};
+
+  libgee = callPackage ./core/libgee { };
+
+  libgdata = callPackage ./core/libgdata { };
+
+  libgxps = callPackage ./core/libgxps { };
+
+  libpeas = callPackage ./core/libpeas {};
+
+  libgweather = callPackage ./core/libgweather { };
+
+  libzapojit = callPackage ./core/libzapojit { };
+
+  mutter = callPackage ./core/mutter { };
+
+  nautilus = callPackage ./core/nautilus { };
+
+  networkmanager_openvpn = pkgs.networkmanager_openvpn.override {
+    inherit gnome3;
+  };
+
+  networkmanager_pptp = pkgs.networkmanager_pptp.override {
+    inherit gnome3;
+  };
+
+  networkmanager_vpnc = pkgs.networkmanager_vpnc.override {
+    inherit gnome3;
+  };
+
+  networkmanager_openconnect = pkgs.networkmanager_openconnect.override {
+    inherit gnome3;
+  };
+
+  networkmanager_l2tp = pkgs.networkmanager_l2tp.override {
+    inherit gnome3;
+  };
+
+  networkmanagerapplet = pkgs.networkmanagerapplet.override {
+    inherit gnome3 gsettings_desktop_schemas glib_networking;
+  };
+
+  rest = callPackage ./core/rest { };
+
+  sushi = callPackage ./core/sushi {
+    webkitgtk = webkitgtk24x;
+    clutter-gst = pkgs.clutter-gst;
+  };
+
+  totem = callPackage ./core/totem { };
+
+  totem-pl-parser = callPackage ./core/totem-pl-parser { };
+
+  tracker = callPackage ./core/tracker { giflib = pkgs.giflib_5_0; };
+
+  vte = callPackage ./core/vte { };
+
+  vte-select-text = vte.override { selectTextPatch = true; };
+
+  vino = callPackage ./core/vino { };
+
+  yelp = callPackage ./core/yelp { 
+    webkitgtk = webkitgtk24x;
+  };
+
+  yelp_xsl = callPackage ./core/yelp-xsl { };
+
+  yelp_tools = callPackage ./core/yelp-tools { };
+
+  zenity = callPackage ./core/zenity { };
+
+
+#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/)
+
+  bijiben = callPackage ./apps/bijiben {
+    webkitgtk = webkitgtk24x;
+  };
+
+  evolution = callPackage ./apps/evolution {
+    webkitgtk = webkitgtk24x;
+  };
+
+  file-roller = callPackage ./apps/file-roller { };
+
+  gedit = callPackage ./apps/gedit { };
+
+  glade = callPackage ./apps/glade { };
+
+  gnome-boxes = callPackage ./apps/gnome-boxes {
+    gtkvnc = pkgs.gtkvnc.override { enableGTK3 = true; };
+    spice_gtk = pkgs.spice_gtk.override { enableGTK3 = true; };
+  };
+
+  gnome-clocks = callPackage ./apps/gnome-clocks { };
+
+  gnome-documents = callPackage ./apps/gnome-documents { };
+
+  gnome-music = callPackage ./apps/gnome-music { };
+
+  gnome-photos = callPackage ./apps/gnome-photos {
+    gegl = gegl_0_3;
+  };
+
+  nautilus-sendto = callPackage ./apps/nautilus-sendto { };
+
+  # scrollkeeper replacement
+  rarian = callPackage ./desktop/rarian { };
+
+  seahorse = callPackage ./apps/seahorse { };
+
+  pomodoro = callPackage ./apps/pomodoro { };
+
+#### Dev http://ftp.gnome.org/pub/GNOME/devtools/
+
+  anjuta = callPackage ./devtools/anjuta { };
+
+  gdl = callPackage ./devtools/gdl { };
+
+#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/
+
+  geary = callPackage ./misc/geary { 
+    webkitgtk = webkitgtk24x;
+  };
+
+  gfbgraph = callPackage ./misc/gfbgraph { };
+
+  goffice = callPackage ./misc/goffice { };
+
+  gitg = callPackage ./misc/gitg { 
+    webkitgtk = webkitgtk24x;
+  };
+
+  libgda = callPackage ./misc/libgda { };
+
+  libgit2-glib = callPackage ./misc/libgit2-glib {
+    libgit2 = pkgs.libgit2.override { libssh2 = null; };
+  };
+
+  libmediaart = callPackage ./misc/libmediaart { };
+
+  gexiv2 = callPackage ./misc/gexiv2 { };
+
+  gnome-tweak-tool = callPackage ./misc/gnome-tweak-tool { };
+
+  gpaste = callPackage ./misc/gpaste { };
+
+  gtkhtml = callPackage ./misc/gtkhtml { };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.16/desktop/rarian/default.nix b/pkgs/desktops/gnome-3/3.16/desktop/rarian/default.nix
new file mode 100644
index 00000000000..a1b38b21869
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/desktop/rarian/default.nix
@@ -0,0 +1,16 @@
+{stdenv, fetchurl, pkgconfig, perl, perlXMLParser, libxml2, libxslt, docbook_xml_dtd_42}:
+
+stdenv.mkDerivation rec {
+  name = "rarian-0.8.1";
+  src = fetchurl {
+    url = "mirror://gnome/sources/rarian/0.8/${name}.tar.bz2";
+    sha256 = "aafe886d46e467eb3414e91fa9e42955bd4b618c3e19c42c773026b205a84577";
+  };
+
+  buildInputs = [pkgconfig perl perlXMLParser libxml2 libxslt];
+  configureFlags = "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/docbook.cat";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/devtools/anjuta/default.nix b/pkgs/desktops/gnome-3/3.16/devtools/anjuta/default.nix
new file mode 100644
index 00000000000..a55adf6d975
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/devtools/anjuta/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, flex, bison, libxml2, intltool,
+  itstool, python }:
+
+let
+  major = gnome3.version;
+  minor = "0";
+
+in stdenv.mkDerivation rec {
+  version = "${major}.${minor}";
+  name = "anjuta-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/anjuta/${major}/${name}.tar.xz";
+    sha256 = "b1aac2d4c35891b23c9bc3f168bf2845e02d0a438742478c98e450950d82b5e5";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig flex bison gtk3 libxml2 gnome3.gjs gnome3.gdl
+    gnome3.libgda gnome3.gtksourceview intltool itstool python ];
+
+  meta = with stdenv.lib; {
+    description = "Software development studio";
+    homepage = http://anjuta.org/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix b/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix
new file mode 100644
index 00000000000..9cad72de8f9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk3, gnome3, intltool }:
+
+let
+  major = gnome3.version;
+  minor = "0";
+
+in stdenv.mkDerivation rec {
+  version = "${major}.${minor}";
+  name = "gdl-${version}";
+
+  src = fetchurl {
+    url = "https://download.gnome.org/sources/gdl/${major}/${name}.tar.xz";
+    sha256 = "4b903c28a8894a82b997a1732a443c8b1d6a510304b3c3b511023339ff5d01db";
+  };
+
+  buildInputs = [ pkgconfig libxml2 gtk3 intltool ];
+
+  meta = with stdenv.lib; {
+    description = "Gnome docking library";
+    homepage = https://developer.gnome.org/gdl/;
+    license = [ licenses.gpl2 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix b/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix
new file mode 100644
index 00000000000..21f55a6d81e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala
+, makeWrapper, gdk_pixbuf, cmake, desktop_file_utils
+, libnotify, libcanberra, libsecret, gmime
+, libpthreadstubs, hicolor_icon_theme
+, gnome3, librsvg, gnome_doc_utils, webkitgtk }:
+
+let
+  majorVersion = "0.8";
+in
+stdenv.mkDerivation rec {
+  name = "geary-${majorVersion}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/geary/${majorVersion}/${name}.tar.xz";
+    sha256 = "3cfa626168935acf49c9415fad54c7849f17fd833026cfd3c224ba0fb892d641";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ intltool pkgconfig gtk3 makeWrapper cmake desktop_file_utils gnome_doc_utils
+                  vala webkitgtk libnotify libcanberra gnome3.libgee libsecret gmime
+                  libpthreadstubs gnome3.gsettings_desktop_schemas hicolor_icon_theme
+                  gdk_pixbuf librsvg gnome3.adwaita-icon-theme gnome3.adwaita-icon-theme ];
+
+  preConfigure = ''
+    substituteInPlace src/CMakeLists.txt --replace '`pkg-config --variable=girdir gobject-introspection-1.0`' '${webkitgtk}/share/gir-1.0'
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/gsettings-schemas/${name}/
+    mv $out/share/glib-2.0 $out/share/gsettings-schemas/${name}
+  '';
+
+  preFixup = ''
+    wrapProgram "$out/bin/geary" \
+      --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"
+  '';
+
+  enableParallelBuilding = true;
+
+  patches = [ ./disable_valadoc.patch ];
+  patchFlags = "-p0";
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Geary;
+    description = "Mail client for GNOME 3";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/geary/disable_valadoc.patch b/pkgs/desktops/gnome-3/3.16/misc/geary/disable_valadoc.patch
new file mode 100644
index 00000000000..e65c0dea747
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/geary/disable_valadoc.patch
@@ -0,0 +1,24 @@
+--- src/CMakeLists.txt.orig	2014-05-23 14:41:20.809160364 +0200
++++ src/CMakeLists.txt	2014-05-23 14:41:29.240261581 +0200
+@@ -696,21 +696,6 @@
+         ${CMAKE_COMMAND} -E copy geary-mailer ${CMAKE_BINARY_DIR}/
+ )
+ 
+-# Valadoc
+-#################################################
+-foreach(pkg ${ENGINE_PACKAGES})
+-    list(APPEND valadoc_pkg_opts "--pkg=${pkg}")
+-endforeach(pkg ${ENGINE_PACKAGES})
+-
+-include(FindValadoc)
+-add_custom_target(
+-    valadoc
+-    WORKING_DIRECTORY
+-        ${CMAKE_SOURCE_DIR}/src
+-    COMMAND
+-        ${VALADOC_EXECUTABLE} --force --no-protected -b ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_SOURCE_DIR}/valadoc --package-name=geary --package-version=${VERSION} ${ENGINE_SRC} ${valadoc_pkg_opts} --vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi
+-)
+-
+ ## Make clean: remove copied files
+ ##################################################
+ set_property(
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix
new file mode 100644
index 00000000000..7d2c8cf0eb3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4 }:
+
+let
+  majorVersion = "0.10";
+in
+stdenv.mkDerivation rec {
+  name = "gexiv2-${version}";
+  version = "${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gexiv2/${majorVersion}/${name}.tar.xz";
+    sha256 = "2fd21f0ed5125e51d02226e7f41be751cfa8ae411a8ed1a651e16b06d79047b2";
+  };
+  
+  preConfigure = ''
+    patchShebangs .
+  '';
+  
+  buildInputs = [ pkgconfig glib libtool m4 ];
+  propagatedBuildInputs = [ exiv2 ];
+  
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/gexiv2;
+    description = "GObject wrapper around the Exiv2 photo metadata library";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix
new file mode 100644
index 00000000000..d36534f0d32
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, intltool, fetchurl, pkgconfig, glib
+, gnome3, libsoup, json_glib }:
+
+stdenv.mkDerivation rec {
+  name = "gfbgraph-0.2.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gfbgraph/0.2/${name}.tar.xz";
+    sha256 = "66c7b1c951863565c179d0b4b5207f27b3b36f80afed9f6a9acfc5fc3ae775d4";
+  };
+
+  buildInputs = [ pkgconfig glib gnome3.gnome_online_accounts ];
+  propagatedBuildInputs = [ libsoup json_glib gnome3.rest ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "GLib/GObject wrapper for the Facebook Graph API";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gitg/default.nix
new file mode 100644
index 00000000000..998f1f5f735
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gitg/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, fetchgit, vala, intltool, libgit2, pkgconfig, gtk3, glib
+, json_glib, webkitgtk,  makeWrapper, libpeas, bash, gobjectIntrospection
+, gnome3, gtkspell3, shared_mime_info, libgee, libgit2-glib, librsvg }:
+
+# TODO: icons and theme still does not work
+# use packaged gnome3.adwaita-icon-theme 
+
+let
+  majorVersion = "3.14";
+in
+stdenv.mkDerivation rec {
+  name = "gitg-${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gitg/${majorVersion}/${name}.tar.xz";
+    sha256 = "8e45a7198896eedd829a20ff8de437a08869d30005638114ca87abd42ffea11b";
+  };
+
+  preCheck = ''
+    substituteInPlace tests/libgitg/test-commit.c --replace "/bin/bash" "${bash}/bin/bash"
+  '';
+  doCheck = true;
+
+  makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";
+
+  propagatedUserEnvPkgs = [ shared_mime_info
+                            gnome3.gnome_themes_standard ];
+
+  buildInputs = [ vala intltool libgit2 pkgconfig gtk3 glib json_glib webkitgtk libgee libpeas
+                  libgit2-glib gtkspell3 gnome3.gsettings_desktop_schemas gnome3.gtksourceview librsvg
+                  gobjectIntrospection makeWrapper gnome3.adwaita-icon-theme ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gitg" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/Gitg;
+    description = "GNOME GUI client to view git repositories";
+    maintainers = with maintainers; [ iElectric ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix
new file mode 100644
index 00000000000..2af75a7ffac
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, intltool, fetchurl, python, pygobject3, atk
+, pkgconfig, gtk3, glib, hicolor_icon_theme, libsoup
+, bash, makeWrapper, itstool, libxml2, python3Packages
+, gnome3, librsvg, gdk_pixbuf, file, libnotify }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-tweak-tool-${gnome3.version}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-tweak-tool/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0pc62qwxgjrgxdhn3qqdzxpx0prrn6c948hqj66w2dy8r0yrdiqw";
+  };
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  makeFlags = [ "DESTDIR=/" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.adwaita-icon-theme librsvg
+                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  python pygobject3 libnotify gnome3.gnome_shell
+                  libsoup gnome3.gnome_settings_daemon gnome3.nautilus
+                  gnome3.gnome_desktop ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-tweak-tool" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix PYTHONPATH : "$PYTHONPATH:$(toPythonPath $out)"
+  '';
+
+  patches = [ ./find_gsettings.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool;
+    description = "A tool to customize advanced GNOME 3 options";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/find_gsettings.patch b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/find_gsettings.patch
new file mode 100644
index 00000000000..3e68c04cb3a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/find_gsettings.patch
@@ -0,0 +1,22 @@
+diff --git a/gtweak/gsettings.py b/gtweak/gsettings.py
+index a00fe19..dce74b2 100644
+--- a/gtweak/gsettings.py
++++ b/gtweak/gsettings.py
+@@ -33,10 +33,15 @@ class GSettingsMissingError(Exception):
+ 
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+-        if not schema_dir:
+-            schema_dir = gtweak.GSETTINGS_SCHEMA_DIR
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
++        if not schema_dir:
++            schema_dir = gtweak.GSETTINGS_SCHEMA_DIR
++            for xdg_dir in GLib.get_system_data_dirs():
++                dir = os.path.join(xdg_dir, "glib-2.0", "schemas")
++                if os.path.exists(os.path.join(dir, schema_filename)):
++                    schema_dir = dir
++                    break
+ 
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
diff --git a/pkgs/desktops/gnome-3/3.16/misc/goffice/0.8.nix b/pkgs/desktops/gnome-3/3.16/misc/goffice/0.8.nix
new file mode 100644
index 00000000000..02520a9f121
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/goffice/0.8.nix
@@ -0,0 +1,37 @@
+{ fetchurl, stdenv, pkgconfig, glib, gtk, libglade, bzip2
+, pango, libgsf, libxml2, libart, intltool, gettext
+, cairo, gconf, libgnomeui, pcre, gnome3/*just meta*/ }:
+
+stdenv.mkDerivation rec {
+  name = "goffice-0.8.17";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/goffice/0.8/${name}.tar.xz";
+    sha256 = "165070beb67b84580afe80a8a100b674a81d553ab791acd72ac0c655f4fadb15";
+  };
+
+  # fix linking error: undefined reference to pcre_info
+  patches = [ ./pcre_info.patch ]; # inspired by https://bugs.php.net/bug.php?id=60986
+
+  buildInputs = [
+    pkgconfig libglade bzip2 libart intltool gettext
+    gconf libgnomeui pcre
+  ];
+
+  propagatedBuildInputs = [
+    # All these are in the "Requires:" field of `libgoffice-0.6.pc'.
+    glib libgsf libxml2 gtk libglade libart cairo pango
+  ];
+
+  postInstall =
+    ''
+      # Get GnuCash to build.  Might be unnecessary if we upgrade pkgconfig.
+      substituteInPlace $out/lib/pkgconfig/libgoffice-*.pc --replace Requires.private Requires
+    '';
+
+  doCheck = true;
+
+  meta = gnome3.goffice.meta // {
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/goffice/default.nix b/pkgs/desktops/gnome-3/3.16/misc/goffice/default.nix
new file mode 100644
index 00000000000..fd16d2d4985
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/goffice/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, pkgconfig, intltool, glib, gtk3
+, libgsf, libxml2, libxslt, cairo, pango, librsvg, libspectre }:
+
+stdenv.mkDerivation rec {
+  name = "goffice-0.10.12";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/goffice/0.10/${name}.tar.xz";
+    sha256 = "0vh0sdig5n8sxzh4xx82lm8y8d0jcdhc2ipb1kq02qs142zs74ff";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  propagatedBuildInputs = [ # ToDo lasem library for MathML, opt. introspection?
+    glib gtk3 libxml2 cairo pango libgsf
+  ];
+
+  buildInputs = [ libxslt librsvg ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = {
+    description = "A Glib/GTK+ set of document centric objects and utilities";
+
+    longDescription = ''
+      There are common operations for document centric applications that are
+      conceptually simple, but complex to implement fully: plugins, load/save
+      documents, undo/redo.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    platforms = stdenv.lib.platforms.gnu;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/goffice/pcre_info.patch b/pkgs/desktops/gnome-3/3.16/misc/goffice/pcre_info.patch
new file mode 100644
index 00000000000..cd4ef3c9fed
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/goffice/pcre_info.patch
@@ -0,0 +1,13 @@
+diff --git a/goffice/utils/regutf8.c b/goffice/utils/regutf8.c
+index bc4aae4..3adb696 100644
+--- a/goffice/utils/regutf8.c
++++ b/goffice/utils/regutf8.c
+@@ -155,7 +155,7 @@ go_regcomp (GORegexp *gor, const char *pat, int cflags)
+ 		default: return GO_REG_BADPAT;
+ 		}
+ 	} else {
+-		gor->re_nsub = pcre_info (r, NULL, NULL);
++		gor->re_nsub = pcre_fullinfo (r, NULL, NULL, NULL);
+ 		gor->nosub = (cflags & GO_REG_NOSUB) != 0;
+ 		return 0;
+ 	}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix
new file mode 100644
index 00000000000..3975b84a05a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, intltool, autoreconfHook, pkgconfig, vala, glib
+, pango, gtk3, gnome3, dbus, clutter, appstream-glib, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  version = "${gnome3.version}";
+  name = "gpaste-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/Keruspe/GPaste/archive/v${version}.tar.gz";
+    sha256 = "1dj5pv87j9s32f778i5bdlmrg60i9cyh4411a66kxbqyfdrq7ys0";
+  };
+
+  buildInputs = [ intltool autoreconfHook pkgconfig vala glib
+                  gtk3 gnome3.gnome_control_center dbus.libs
+                  clutter pango appstream-glib makeWrapper ];
+
+  preConfigure = "intltoolize -f";
+
+  configureFlags = [ "--with-controlcenterdir=$(out)/gnome-control-center/keybindings"
+                     "--with-dbusservicesdir=$(out)/share/dbus-1/services" ];
+
+  enableParallelBuilding = true;
+
+  preFixup = 
+    let
+      libPath = stdenv.lib.makeLibraryPath
+        [ glib gtk3 clutter pango ];
+    in
+    ''
+      for i in $out/libexec/gpaste/*; do
+        wrapProgram $i \
+          --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+          --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
+      done
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Keruspe/GPaste;
+    description = "Clipboard management system with GNOME3 integration";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix
new file mode 100644
index 00000000000..49d888a866b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, intltool
+, gnome3, enchant, isocodes }:
+
+let
+  majorVersion = "4.8";
+in
+stdenv.mkDerivation rec {
+  name = "gtkhtml-${majorVersion}.5";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gtkhtml/${majorVersion}/${name}.tar.xz";
+    sha256 = "2ff5bbec4d8e7eca66a36f7e3863a104e098ce9b58e6d0374de7cb80c3d93e8d";
+  };
+
+  buildInputs = [ pkgconfig gtk3 intltool gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas ];
+
+  propagatedBuildInputs = [ enchant isocodes ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/libgda/default.nix b/pkgs/desktops/gnome-3/3.16/misc/libgda/default.nix
new file mode 100644
index 00000000000..3944644a453
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/libgda/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3 }:
+
+let
+  major = "5.2";
+  minor = "2";
+
+in stdenv.mkDerivation rec {
+  version = "${major}.${minor}";
+  name = "libgda-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgda/${major}/${name}.tar.xz";
+    sha256 = "c9b8b1c32f1011e47b73c5dcf36649aaef2f1edaa5f5d75be20d9caadc2bc3e4";
+  };
+
+  configureFlags = [
+    "--enable-gi-system-install=no"
+  ];
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig intltool itstool libxml2 gtk3 ];
+
+  meta = with stdenv.lib; {
+    description = "Database access library";
+    homepage = http://www.gnome-db.org/;
+    license = [ licenses.lgpl2 licenses.gpl2 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.16/misc/libgit2-glib/default.nix
new file mode 100644
index 00000000000..0bcf85e1d42
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/libgit2-glib/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala
+, gtk_doc, gobjectIntrospection, libgit2, glib }:
+
+let
+  majorVersion = "0.0";
+in
+stdenv.mkDerivation rec {
+  name = "libgit2-glib-${majorVersion}.24";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgit2-glib/0.0/${name}.tar.xz";
+    sha256 = "8a0a6f65d86f2c8cb9bcb20c5e0ea6fd02271399292a71fc7e6852f13adbbdb8";
+  };
+
+  configureScript = "sh ./autogen.sh";
+
+  buildInputs = [ gnome3.gnome_common libtool pkgconfig vala
+                  gtk_doc gobjectIntrospection libgit2 glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix b/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix
new file mode 100644
index 00000000000..5ac6b50198b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, gobjectIntrospection }:
+
+let
+  majorVersion = "1.9";
+in
+stdenv.mkDerivation rec {
+  name = "libmediaart-${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libmediaart/${majorVersion}/${name}.tar.xz";
+    sha256 = "0vshvm3sfwqs365glamvkmgnzjnmxd15j47xn0ak3p6l57dqlrll";
+  };
+
+  buildInputs = [ pkgconfig glib gdk_pixbuf gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    description = "Library tasked with managing, extracting and handling media art caches";
+    maintainers = with maintainers; [ lethalman ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/appstream-glib/default.nix b/pkgs/development/libraries/appstream-glib/default.nix
new file mode 100644
index 00000000000..14fbcdf7342
--- /dev/null
+++ b/pkgs/development/libraries/appstream-glib/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool, glib
+, gtk_doc, autoconf, automake, libtool, libarchive, libyaml
+, gobjectIntrospection, sqlite, libsoup, gcab, attr, acl, docbook_xsl
+}:
+
+stdenv.mkDerivation rec {
+  name = "appstream-glib-0.3.6";
+
+  src = fetchurl {
+    url = "https://github.com/hughsie/appstream-glib/archive/appstream_glib_0_3_6.tar.gz";
+    sha256 = "1zdxg9dk9vxw2cs04cswd138di3dysz0hxk4918750hh19s3859c";
+  };
+
+  buildInputs = [ glib libtool pkgconfig gtk_doc gettext intltool sqlite libsoup
+                  gcab attr acl docbook_xsl
+                  libarchive libyaml gtk3 autoconf automake gobjectIntrospection ];
+
+  configureScript = "./autogen.sh";
+
+  meta = with stdenv.lib; {
+    description = "Objects and helper methods to read and write AppStream metadata";
+    homepage    = https://github.com/hughsie/appstream-glib;
+    license     = licenses.lgpl21Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ lethalman ];
+  };
+
+}
diff --git a/pkgs/development/libraries/atk/default.nix b/pkgs/development/libraries/atk/default.nix
index ce7f92a2035..d5e442c738c 100644
--- a/pkgs/development/libraries/atk/default.nix
+++ b/pkgs/development/libraries/atk/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, perl, glib, libintlOrEmpty, gobjectIntrospection }:
 
 let
-  ver_maj = "2.12";
+  ver_maj = "2.16";
   ver_min = "0";
 in
 stdenv.mkDerivation rec {
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/atk/${ver_maj}/${name}.tar.xz";
-    sha256 = "13zijfcmx7sda83qkryzsmr9hw0r3b73xkagq9cmm733fhcl7a28";
+    sha256 = "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9";
   };
 
   buildInputs = libintlOrEmpty;
diff --git a/pkgs/development/libraries/clutter-gst/3.0.nix b/pkgs/development/libraries/clutter-gst/3.0.nix
new file mode 100644
index 00000000000..617501130ca
--- /dev/null
+++ b/pkgs/development/libraries/clutter-gst/3.0.nix
@@ -0,0 +1,26 @@
+{ fetchurl, stdenv, pkgconfig, clutter, gtk3, glib, cogl }:
+
+stdenv.mkDerivation rec {
+  name = "clutter-gst-3.0.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/clutter-gst/3.0/${name}.tar.xz";
+    sha256 = "0ahn6m9ca78cgf7xad16sb50x4dx0fcn5ircllilkir84iri2466";
+  };
+
+  propagatedBuildInputs = [ clutter gtk3 glib cogl ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  postBuild = "rm -rf $out/share/gtk-doc";
+
+  meta = {
+    description = "GStreamer bindings for clutter";
+
+    homepage = http://www.clutter-project.org/;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ lethalman ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/development/libraries/clutter-gtk/1.4.nix b/pkgs/development/libraries/clutter-gtk/1.4.nix
new file mode 100644
index 00000000000..e493bab1bc7
--- /dev/null
+++ b/pkgs/development/libraries/clutter-gtk/1.4.nix
@@ -0,0 +1,26 @@
+{ fetchurl, stdenv, pkgconfig, gobjectIntrospection, clutter, gtk3 }:
+
+stdenv.mkDerivation rec {
+  name = "clutter-gtk-1.4.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/clutter-gtk/1.4/${name}.tar.xz";
+    sha256 = "bc3108594a01a08bb6d9b538afe995e4fd78634a8356064ee8137d87aad51b2e";
+  };
+
+  propagatedBuildInputs = [ clutter gtk3 ];
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection ];
+
+  postBuild = "rm -rf $out/share/gtk-doc";
+
+  meta = {
+    description = "Clutter-GTK";
+
+    homepage = http://www.clutter-project.org/;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ urkud lethalman ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/development/libraries/clutter-gtk/1.6.nix b/pkgs/development/libraries/clutter-gtk/1.6.nix
new file mode 100644
index 00000000000..9c4e7ae1271
--- /dev/null
+++ b/pkgs/development/libraries/clutter-gtk/1.6.nix
@@ -0,0 +1,23 @@
+{ fetchurl, stdenv, pkgconfig, gobjectIntrospection, clutter, gtk3 }:
+
+stdenv.mkDerivation rec {
+  name = "clutter-gtk-1.6.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/clutter-gtk/1.6/${name}.tar.xz";
+    sha256 = "883550b574a036363239442edceb61cf3f6bedc8adc97d3404278556dc82234d";
+  };
+
+  propagatedBuildInputs = [ clutter gtk3 ];
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection ];
+
+  postBuild = "rm -rf $out/share/gtk-doc";
+
+  meta = {
+    description = "Clutter-GTK";
+    homepage = http://www.clutter-project.org/;
+    license = stdenv.lib.licenses.lgpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ urkud lethalman ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/development/libraries/clutter/1.22.nix b/pkgs/development/libraries/clutter/1.22.nix
new file mode 100644
index 00000000000..e303d5f0339
--- /dev/null
+++ b/pkgs/development/libraries/clutter/1.22.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, glib, pkgconfig, mesa, libX11, libXext, libXfixes
+, libXdamage, libXcomposite, libXi, cogl, pango, atk, json_glib, 
+gobjectIntrospection 
+}:
+
+let
+  ver_maj = "1.22";
+  ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "clutter-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/clutter/${ver_maj}/${name}.tar.xz";
+    sha256 = "5225fef91f717118654a5b98e24f2018d09ca3c37d61ecff84f77069de0fbf54";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  propagatedBuildInputs =
+    [ libX11 mesa libXext libXfixes libXdamage libXcomposite libXi cogl pango
+      atk json_glib gobjectIntrospection
+    ];
+
+  configureFlags = [ "--enable-introspection" ]; # needed by muffin AFAIK
+
+  #doCheck = true; # no tests possible without a display
+
+  meta = {
+    description = "Clutter, a library for creating fast, dynamic graphical user interfaces";
+
+    longDescription =
+      '' Clutter is free software library for creating fast, compelling,
+         portable, and dynamic graphical user interfaces.  It is a core part
+         of MeeGo, and is supported by the open source community.  Its
+         development is sponsored by Intel.
+
+         Clutter uses OpenGL for rendering (and optionally OpenGL|ES for use
+         on mobile and embedded platforms), but wraps an easy to use,
+         efficient, flexible API around GL's complexity.
+
+         Clutter enforces no particular user interface style, but provides a
+         rich, generic foundation for higher-level toolkits tailored to
+         specific needs.
+      '';
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+    homepage = http://www.clutter-project.org/;
+
+    maintainers = with stdenv.lib.maintainers; [ urkud lethalman ];
+    platforms = stdenv.lib.platforms.mesaPlatforms;
+  };
+}
diff --git a/pkgs/development/libraries/clutter/default.nix b/pkgs/development/libraries/clutter/default.nix
index 67de04050af..37b2c73fe44 100644
--- a/pkgs/development/libraries/clutter/default.nix
+++ b/pkgs/development/libraries/clutter/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.lgpl2Plus;
     homepage = http://www.clutter-project.org/;
 
-    maintainers = with stdenv.lib.maintainers; [ urkud ];
+    maintainers = with stdenv.lib.maintainers; [ urkud lethalman ];
     platforms = stdenv.lib.platforms.mesaPlatforms;
   };
 }
diff --git a/pkgs/development/libraries/cogl/1.20.nix b/pkgs/development/libraries/cogl/1.20.nix
new file mode 100644
index 00000000000..1489f48c9b4
--- /dev/null
+++ b/pkgs/development/libraries/cogl/1.20.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, pkgconfig, mesa_noglu, glib, gdk_pixbuf, xorg, libintlOrEmpty
+, pangoSupport ? true, pango, cairo, gobjectIntrospection
+, gstreamerSupport ? true, gst_all_1 }:
+
+let
+  ver_maj = "1.20";
+  ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "cogl-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/cogl/${ver_maj}/${name}.tar.xz";
+    sha256 = "729e35495829e7d31fafa3358e47b743ba21a2b08ff9b6cd28fb74c0de91192b";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  configureFlags = [
+    "--enable-introspection"
+    "--enable-gles1"
+    "--enable-gles2"
+    "--enable-kms-egl-platform"
+  ] ++ stdenv.lib.optional gstreamerSupport "--enable-cogl-gst";
+
+  propagatedBuildInputs = with xorg; [
+      glib gdk_pixbuf gobjectIntrospection
+      mesa_noglu libXrandr libXfixes libXcomposite libXdamage
+    ]
+    ++ libintlOrEmpty
+    ++ stdenv.lib.optionals gstreamerSupport [ gst_all_1.gstreamer
+                                               gst_all_1.gst-plugins-base ];
+
+  buildInputs = stdenv.lib.optionals pangoSupport [ pango cairo ];
+
+  COGL_PANGO_DEP_CFLAGS
+    = stdenv.lib.optionalString (stdenv.isDarwin && pangoSupport)
+      "-I${pango}/include/pango-1.0 -I${cairo}/include/cairo";
+
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lintl";
+
+  #doCheck = true; # all tests fail (no idea why)
+
+  meta = with stdenv.lib; {
+    description = "A small open source library for using 3D graphics hardware for rendering";
+    maintainers = with maintainers; [ lovek323 ];
+
+    longDescription = ''
+      Cogl is a small open source library for using 3D graphics hardware for
+      rendering. The API departs from the flat state machine style of OpenGL
+      and is designed to make it easy to write orthogonal components that can
+      render without stepping on each other's toes.
+    '';
+
+    platforms = stdenv.lib.platforms.mesaPlatforms;
+  };
+}
diff --git a/pkgs/development/libraries/gcab/default.nix b/pkgs/development/libraries/gcab/default.nix
new file mode 100644
index 00000000000..5a8b1f2fcbc
--- /dev/null
+++ b/pkgs/development/libraries/gcab/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, intltool, gobjectIntrospection, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "gcab-0.6";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gcab/0.6/${name}.tar.xz";
+    sha256 = "a0443b904bfa7227b5155bfcdf9ea9256b6e26930b8febe1c41f972f6f1334bb";
+  };
+
+  buildInputs = [ intltool gobjectIntrospection pkgconfig ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
+  };
+
+}
diff --git a/pkgs/development/libraries/gegl/3.0.nix b/pkgs/development/libraries/gegl/3.0.nix
new file mode 100644
index 00000000000..575e2d562aa
--- /dev/null
+++ b/pkgs/development/libraries/gegl/3.0.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, pkgconfig, glib, babl, libpng, cairo, libjpeg, which
+, librsvg, pango, gtk, bzip2, intltool, libtool, automake, autoconf, json_glib }:
+
+stdenv.mkDerivation rec {
+  name = "gegl-0.3.0-20140619";
+
+  src = fetchgit {
+    url = "https://git.gnome.org/browse/gegl";
+    sha256 = "1rjmv2y7z34zrnlqczmmh0bm724iszzdf6jpibszxnp3w0npwjrb";
+    rev = "0014eb1bad50244314ed09592fe57efa9322678c";
+  };
+
+  configureScript = "./autogen.sh";
+
+  # needs fonts otherwise  don't know how to pass them
+  configureFlags = "--disable-docs";
+
+  buildInputs = [ babl libpng cairo libjpeg librsvg pango gtk bzip2 intltool
+                  autoconf automake libtool which json_glib ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  meta = { 
+    description = "Graph-based image processing framework";
+    homepage = http://www.gegl.org;
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/pkgs/development/libraries/geoclue/2.0.nix b/pkgs/development/libraries/geoclue/2.0.nix
index 88d9837d597..88545bf732c 100644
--- a/pkgs/development/libraries/geoclue/2.0.nix
+++ b/pkgs/development/libraries/geoclue/2.0.nix
@@ -19,6 +19,8 @@ stdenv.mkDerivation rec {
      substituteInPlace configure --replace "-Werror" ""
   '';
 
+  configureFlags = [ "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
   propagatedBuildInputs = [ dbus dbus_glib glib ];
 
   meta = {
diff --git a/pkgs/development/libraries/glib-networking/default.nix b/pkgs/development/libraries/glib-networking/default.nix
index ee7f39585ef..6f0394823a6 100644
--- a/pkgs/development/libraries/glib-networking/default.nix
+++ b/pkgs/development/libraries/glib-networking/default.nix
@@ -2,15 +2,15 @@
 , gsettings_desktop_schemas }:
 
 let
-  ver_maj = "2.42";
-  ver_min = "1";
+  ver_maj = "2.44";
+  ver_min = "0";
 in
 stdenv.mkDerivation rec {
   name = "glib-networking-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/glib-networking/${ver_maj}/${name}.tar.xz";
-    sha256 = "c06bf76da3353695fcc791b7b02e5d60c01c379e554f7841dc6cbca32f65f3a0";
+    sha256 = "8f8a340d3ba99bfdef38b653da929652ea6640e27969d29f7ac51fbbe11a4346";
   };
 
   configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-bundle.crt";
diff --git a/pkgs/development/libraries/glibmm/default.nix b/pkgs/development/libraries/glibmm/default.nix
index 9e06ed66412..25666066601 100644
--- a/pkgs/development/libraries/glibmm/default.nix
+++ b/pkgs/development/libraries/glibmm/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, glib, libsigcxx }:
 
 let
-  ver_maj = "2.42";
+  ver_maj = "2.44";
   ver_min = "0";
 in
 stdenv.mkDerivation rec {
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/glibmm/${ver_maj}/${name}.tar.xz";
-    sha256 = "985083d97378d234da27a7243587cc0d186897a4b2d3c1286f794089be1a3397";
+    sha256 = "1a1fczy7hcpn24fglyn4i79f4yjc8s50is70q03mb294bm1c02hv";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix
index 8263ee7071c..200c0d4e01d 100644
--- a/pkgs/development/libraries/gobject-introspection/default.nix
+++ b/pkgs/development/libraries/gobject-introspection/default.nix
@@ -5,7 +5,7 @@
 # In that case its about 6MB which could be separated
 
 let
-  ver_maj = "1.40";
+  ver_maj = "1.42";
   ver_min = "0";
 in
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/gobject-introspection/${ver_maj}/${name}.tar.xz";
-    sha256 = "162flbzwzz0b8axab2gimc4dglpaw88fh1d177zfg0whczlpbsln";
+    sha256 = "3ba2edfad4f71d4f0de16960b5d5f2511335fa646b2c49bbb93ce5942b3f95f7";
   };
 
   buildInputs = [ flex bison pkgconfig python ]
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "A middleware layer between C libraries and language bindings";
     homepage    = http://live.gnome.org/GObjectIntrospection;
-    maintainers = with maintainers; [ lovek323 urkud ];
+    maintainers = with maintainers; [ lovek323 urkud lethalman ];
     platforms   = platforms.unix;
 
     longDescription = ''
diff --git a/pkgs/development/libraries/gtk+/3.16.nix b/pkgs/development/libraries/gtk+/3.16.nix
new file mode 100644
index 00000000000..84bea07602f
--- /dev/null
+++ b/pkgs/development/libraries/gtk+/3.16.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchurl, pkgconfig, gettext, perl
+, expat, glib, cairo, pango, gdk_pixbuf, atk, at_spi2_atk, gobjectIntrospection
+, xlibs, x11, wayland, libxkbcommon, epoxy
+, xineramaSupport ? stdenv.isLinux
+, cupsSupport ? stdenv.isLinux, cups ? null
+}:
+
+assert xineramaSupport -> xlibs.libXinerama != null;
+assert cupsSupport -> cups != null;
+
+let
+  ver_maj = "3.16";
+  ver_min = "2";
+  version = "${ver_maj}.${ver_min}";
+in
+stdenv.mkDerivation rec {
+  name = "gtk+3-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gtk+/${ver_maj}/gtk+-${version}.tar.xz";
+    sha256 = "1yhwg2l72l3khfkprydcjlpxjrg11ccqfc80sjl56llz3jk66fd0";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext gobjectIntrospection perl ];
+
+  buildInputs = [ libxkbcommon epoxy ];
+  propagatedBuildInputs = with xlibs; with stdenv.lib;
+    [ expat glib cairo pango gdk_pixbuf atk at_spi2_atk ]
+    ++ optionals stdenv.isLinux [ libXrandr libXrender libXcomposite libXi libXcursor wayland ]
+    ++ optional stdenv.isDarwin x11
+    ++ optional xineramaSupport libXinerama
+    ++ optional cupsSupport cups;
+
+  # demos fail to install, no idea where's the problem
+  preConfigure = "sed '/^SRC_SUBDIRS /s/demos//' -i Makefile.in";
+
+  enableParallelBuilding = true;
+
+  postInstall = "rm -rf $out/share/gtk-doc";
+
+  passthru = {
+    gtkExeEnvPostBuild = ''
+      rm $out/lib/gtk-3.0/3.0.0/immodules.cache
+      $out/bin/gtk-query-immodules-3.0 $out/lib/gtk-3.0/3.0.0/immodules/*.so > $out/lib/gtk-3.0/3.0.0/immodules.cache
+    ''; # workaround for bug of nix-mode for Emacs */ '';
+  };
+
+  meta = {
+    description = "A multi-platform toolkit for creating graphical user interfaces";
+
+    longDescription = ''
+      GTK+ is a highly usable, feature rich toolkit for creating
+      graphical user interfaces which boasts cross platform
+      compatibility and an easy to use API.  GTK+ it is written in C,
+      but has bindings to many other popular programming languages
+      such as C++, Python and C# among others.  GTK+ is licensed
+      under the GNU LGPL 2.1 allowing development of both free and
+      proprietary software with GTK+ without any license fees or
+      royalties.
+    '';
+
+    homepage = http://www.gtk.org/;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ urkud raskin vcunat lethalman ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/gtkmm/3.16.nix b/pkgs/development/libraries/gtkmm/3.16.nix
new file mode 100644
index 00000000000..bc327468855
--- /dev/null
+++ b/pkgs/development/libraries/gtkmm/3.16.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, glibmm, cairomm, pangomm, atkmm }:
+
+let
+  ver_maj = "3.16";
+  ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "gtkmm-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gtkmm/${ver_maj}/${name}.tar.xz";
+    sha256 = "036xn22jkaf3akpid7w23b8vkqa3xxqz93mwacmyar5vw7slm3cv";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  propagatedBuildInputs = [ glibmm gtk3 atkmm cairomm pangomm ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = {
+    description = "C++ interface to the GTK+ graphical user interface library";
+
+    longDescription = ''
+      gtkmm is the official C++ interface for the popular GUI library
+      GTK+.  Highlights include typesafe callbacks, and a
+      comprehensive set of widgets that are easily extensible via
+      inheritance.  You can create user interfaces either in code or
+      with the Glade User Interface designer, using libglademm.
+      There's extensive documentation, including API reference and a
+      tutorial.
+    '';
+
+    homepage = http://gtkmm.org/;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ raskin urkud vcunat ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/libraries/gvfs/default.nix b/pkgs/development/libraries/gvfs/default.nix
index 739b0ad3136..dcdef696ffd 100644
--- a/pkgs/development/libraries/gvfs/default.nix
+++ b/pkgs/development/libraries/gvfs/default.nix
@@ -5,15 +5,15 @@
 , gnomeSupport ? false, gnome,libgnome_keyring, gconf, makeWrapper }:
 
 let
-  ver_maj = "1.18";
-  version = "${ver_maj}.3";
+  ver_maj = "1.22";
+  version = "${ver_maj}.2";
 in
 stdenv.mkDerivation rec {
   name = "gvfs-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gvfs/${ver_maj}/${name}.tar.xz";
-    sha256 = "0b27vidnrwh6yb2ga9a1k9qlrz6lrzsaz2hcxqbc1igivhb9g0hx";
+    sha256 = "8d08c4927b6c20d990498c23280017e7033b31a386f09b4c3ce5bedd20316250";
   };
 
   nativeBuildInputs = [ pkgconfig intltool libtool ];
@@ -35,8 +35,9 @@ stdenv.mkDerivation rec {
     wrapProgram $out/libexec/gvfsd --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
   '';
 
-  meta = {
-    description = "Virtual Filesystem support library" + stdenv.lib.optionalString gnomeSupport " (full GNOME support)";
-    platforms = stdenv.lib.platforms.linux;
+  meta = with stdenv.lib; {
+    description = "Virtual Filesystem support library" + optionalString gnomeSupport " (full GNOME support)";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lethalman ];
   };
 }
diff --git a/pkgs/development/libraries/libchamplain/default.nix b/pkgs/development/libraries/libchamplain/default.nix
index 9cdf9d411cc..1a3c33eb80a 100644
--- a/pkgs/development/libraries/libchamplain/default.nix
+++ b/pkgs/development/libraries/libchamplain/default.nix
@@ -2,11 +2,11 @@
 , clutter_gtk, libsoup /*, libmemphis */ }:
 
 stdenv.mkDerivation rec {
-  name = "libchamplain-0.12.2";
+  name = "libchamplain-0.12.10";
 
   src = fetchurl {
-    url = mirror://gnome/sources/libchamplain/0.12/libchamplain-0.12.2.tar.xz;
-    sha256 = "0bkyzm378gh6qs7grr2vgzrl4z1pi99yysy8iwzdqzs0bs3rfgyj";
+    url = "mirror://gnome/sources/libchamplain/0.12/${name}.tar.xz";
+    sha256 = "019b8scnx7d3wdylmpk9ihzh06w25b63x9cn8nhj6kjx82rcwlxz";
   };
 
   buildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/libxkbcommon/default.nix b/pkgs/development/libraries/libxkbcommon/default.nix
index e5682219dba..8abacf6f1c8 100644
--- a/pkgs/development/libraries/libxkbcommon/default.nix
+++ b/pkgs/development/libraries/libxkbcommon/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, yacc, flex, xkeyboard_config, libxcb }:
 
 stdenv.mkDerivation rec {
-  name = "libxkbcommon-0.4.2";
+  name = "libxkbcommon-0.4.3";
 
   src = fetchurl {
     url = "http://xkbcommon.org/download/${name}.tar.xz";
-    sha256 = "0mw9ljc5fbqbhnm884w7ns5pf6f2rqj9ww5xcaps9nzdgsq73z50";
+    sha1 = "2251adc7425c816ec7af4f1c3776a619a53293b6";
   };
 
   buildInputs = [ pkgconfig yacc flex xkeyboard_config libxcb ];
diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix
index f67e3f2468b..54502610887 100644
--- a/pkgs/development/libraries/webkitgtk/default.nix
+++ b/pkgs/development/libraries/webkitgtk/default.nix
@@ -11,7 +11,7 @@ assert enableGeoLocation -> geoclue2 != null;
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "webkitgtk-${version}";
-  version = "2.6.5";
+  version = "2.8.0";
 
   meta = {
     description = "Web content rendering engine, GTK+ port";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://webkitgtk.org/releases/${name}.tar.xz";
-    sha256 = "14vmqq6hr3jzphay49984kj22vlqhpsjmwh1krdm9k57rqbq0rdi";
+    sha256 = "05b8mkr1mv1w5vi5vyczzirgf5nr6qavrdwbcaiv0dghylwx5yh5";
   };
 
   patches = [ ./finding-harfbuzz-icu.patch ];
@@ -47,5 +47,5 @@ stdenv.mkDerivation rec {
     libsoup gtk3
   ];
 
-  # enableParallelBuilding = true; # build problems on Hydra
+  enableParallelBuilding = true; # build problems on Hydra
 }
diff --git a/pkgs/tools/networking/network-manager-applet/default.nix b/pkgs/tools/networking/network-manager-applet/default.nix
index 54b349c425c..1ea61b0fea2 100644
--- a/pkgs/tools/networking/network-manager-applet/default.nix
+++ b/pkgs/tools/networking/network-manager-applet/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, intltool, pkgconfig, libglade, networkmanager, gnome3
 , libnotify, libsecret, dbus_glib, polkit, isocodes
 , mobile_broadband_provider_info, glib_networking, gsettings_desktop_schemas
-, makeWrapper, udev, hicolor_icon_theme, dconf }:
+, makeWrapper, udev, hicolor_icon_theme }:
 
 let
   pn = "network-manager-applet";
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
 
   preFixup = ''
     wrapProgram "$out/bin/nm-applet" \
-      --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules:${dconf}/lib/gio/modules" \
+      --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules:${gnome3.dconf}/lib/gio/modules" \
       --prefix XDG_DATA_DIRS : "${gnome3.gtk}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
       --set GCONF_CONFIG_SOURCE "xml::~/.gconf" \
       --prefix PATH ":" "${gnome3.gconf}/bin"
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 93b7e339cbe..1c0bc08be13 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2093,7 +2093,7 @@ let
 
   networkmanager_openconnect = callPackage ../tools/networking/network-manager/openconnect.nix { };
 
-  networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet { dconf = gnome3.dconf; };
+  networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet { };
 
   newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter { };
 
@@ -5420,6 +5420,8 @@ let
 
   appstream = callPackage ../development/libraries/appstream { };
 
+  appstream-glib = callPackage ../development/libraries/appstream-glib { };
+
   apr = callPackage ../development/libraries/apr { };
 
   aprutil = callPackage ../development/libraries/apr-util {
@@ -5552,10 +5554,19 @@ let
     cogl = cogl_1_18;
   };
 
+  clutter_1_22 = callPackage ../development/libraries/clutter/1.22.nix {
+    cogl = cogl_1_20;
+  };
+
   clutter-gst = callPackage ../development/libraries/clutter-gst { };
 
+  clutter-gst_3_0 = callPackage ../development/libraries/clutter-gst/3.0.nix { };
+
   clutter_gtk = callPackage ../development/libraries/clutter-gtk { };
   clutter_gtk_0_10 = callPackage ../development/libraries/clutter-gtk/0.10.8.nix { };
+  clutter_gtk_1_6 = callPackage ../development/libraries/clutter-gtk/1.6.nix {
+    clutter = clutter_1_22;
+  };
 
   cminpack = callPackage ../development/libraries/cminpack { };
 
@@ -5563,6 +5574,8 @@ let
 
   cogl_1_18 = callPackage ../development/libraries/cogl/1.18.nix { };
 
+  cogl_1_20 = callPackage ../development/libraries/cogl/1.20.nix { };
+
   coin3d = callPackage ../development/libraries/coin3d { };
 
   commoncpp2 = callPackage ../development/libraries/commoncpp2 { };
@@ -5760,6 +5773,8 @@ let
 
   gav = callPackage ../games/gav { };
 
+  gcab = callPackage ../development/libraries/gcab { };
+
   gsb = callPackage ../games/gsb { };
 
   gdome2 = callPackage ../development/libraries/gdome2 {
@@ -5772,6 +5787,8 @@ let
 
   gegl = callPackage ../development/libraries/gegl { };
 
+  gegl_0_3 = callPackage ../development/libraries/gegl/3.0.nix { };
+
   geoclue = callPackage ../development/libraries/geoclue {};
 
   geoclue2 = callPackage ../development/libraries/geoclue/2.0.nix {};
@@ -6025,10 +6042,17 @@ let
 
   gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { };
 
+  gtk3_16 = callPackage ../development/libraries/gtk+/3.16.nix {
+    gettext = gettextWithExpat gettext_0_19;
+  };
+
   gtk = pkgs.gtk2;
 
   gtkmm = callPackage ../development/libraries/gtkmm/2.x.nix { };
   gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { };
+  gtkmm3_16 = callPackage ../development/libraries/gtkmm/3.16.nix {
+    gtk3 = gtk3_16;
+  };
 
   gtkmozembedsharp = callPackage ../development/libraries/gtkmozembed-sharp {
     gtksharp = gtk-sharp;
@@ -11978,7 +12002,7 @@ let
 
   termite = callPackage ../applications/misc/termite {
     gtk = gtk3;
-    vte = gnome3_12.vte-select-text;
+    vte = gnome3_16.vte-select-text;
    };
 
   tesseract = callPackage ../applications/graphics/tesseract { };
@@ -13003,6 +13027,11 @@ let
     callPackage = pkgs.newScope pkgs.gnome3_12;
   });
 
+  gnome3_16 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.16 {
+    callPackage = pkgs.newScope pkgs.gnome3_16;
+    self = pkgs.gnome3_16;
+  });
+
   gnome3 = gnome3_12;
 
   gnome = recurseIntoAttrs gnome2;