about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/functions.xml14
-rw-r--r--doc/languages-frameworks/python.md40
-rw-r--r--lib/trivial.nix8
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/desktops/gnome3/evolution-data-server.nix2
-rw-r--r--nixos/modules/services/desktops/gnome3/gnome-terminal-server.nix44
-rw-r--r--nixos/modules/services/desktops/gnome3/gvfs.nix2
-rw-r--r--nixos/modules/services/desktops/gnome3/tracker.nix2
-rw-r--r--nixos/modules/services/networking/networkmanager.nix3
-rw-r--r--nixos/modules/services/networking/tftpd.nix3
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/trac.nix1
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix3
-rw-r--r--nixos/modules/services/x11/display-managers/gdm.nix7
-rw-r--r--nixos/modules/services/x11/xserver.nix15
-rw-r--r--nixos/tests/virtualbox.nix4
-rw-r--r--pkgs/applications/audio/ardour/ardour3.nix10
-rw-r--r--pkgs/applications/audio/ardour/ardour4.nix10
-rw-r--r--pkgs/applications/audio/ardour/default.nix10
-rw-r--r--pkgs/applications/audio/gpodder/default.nix2
-rw-r--r--pkgs/applications/audio/lastwatch/default.nix14
-rw-r--r--pkgs/applications/audio/mopidy-moped/default.nix4
-rw-r--r--pkgs/applications/audio/picard/default.nix3
-rw-r--r--pkgs/applications/editors/nvpy/default.nix21
-rw-r--r--pkgs/applications/gis/grass/default.nix2
-rw-r--r--pkgs/applications/graphics/gimp/2.8.nix4
-rw-r--r--pkgs/applications/graphics/inkscape/default.nix6
-rw-r--r--pkgs/applications/graphics/mcomix/default.nix2
-rw-r--r--pkgs/applications/misc/bleachbit/default.nix2
-rw-r--r--pkgs/applications/misc/calibre/default.nix2
-rw-r--r--pkgs/applications/misc/cherrytree/default.nix3
-rw-r--r--pkgs/applications/misc/chirp/default.nix8
-rw-r--r--pkgs/applications/misc/gnuradio/default.nix4
-rw-r--r--pkgs/applications/misc/gramps/default.nix2
-rw-r--r--pkgs/applications/misc/hamster-time-tracker/default.nix2
-rw-r--r--pkgs/applications/misc/keepassx/2.0.nix4
-rw-r--r--pkgs/applications/misc/loxodo/default.nix2
-rw-r--r--pkgs/applications/misc/ranger/default.nix2
-rw-r--r--pkgs/applications/misc/roxterm/default.nix8
-rw-r--r--pkgs/applications/misc/rtv/default.nix1
-rw-r--r--pkgs/applications/misc/zk-shell/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix6
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix9
-rw-r--r--pkgs/applications/networking/instant-messengers/gajim/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/pybitmessage/default.nix2
-rw-r--r--pkgs/applications/networking/mailreaders/mailnag/default.nix8
-rw-r--r--pkgs/applications/networking/mailreaders/mailpile/default.nix2
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix4
-rw-r--r--pkgs/applications/networking/p2p/transmission-remote-cli/default.nix1
-rw-r--r--pkgs/applications/networking/p2p/tribler/default.nix2
-rw-r--r--pkgs/applications/office/beancount/bean-add.nix2
-rw-r--r--pkgs/applications/office/impressive/default.nix4
-rw-r--r--pkgs/applications/office/keepnote/default.nix2
-rw-r--r--pkgs/applications/office/scribus/default.nix8
-rw-r--r--pkgs/applications/office/zim/default.nix2
-rw-r--r--pkgs/applications/science/logic/z3/default.nix16
-rw-r--r--pkgs/applications/science/logic/z3_opt/default.nix16
-rw-r--r--pkgs/applications/science/math/R/default.nix4
-rw-r--r--pkgs/applications/science/math/gfan/default.nix24
-rw-r--r--pkgs/applications/science/math/maxima/default.nix23
-rw-r--r--pkgs/applications/science/math/nauty/default.nix24
-rw-r--r--pkgs/applications/science/math/pari/alpha.nix31
-rw-r--r--pkgs/applications/science/math/ratpoints/default.nix21
-rw-r--r--pkgs/applications/science/math/singular/default.nix41
-rw-r--r--pkgs/applications/science/math/symmetrica/default.nix29
-rw-r--r--pkgs/applications/version-management/bazaar/default.nix7
-rw-r--r--pkgs/applications/version-management/bazaar/tools.nix10
-rw-r--r--pkgs/applications/version-management/git-and-tools/fast-export/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-hub/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix2
-rw-r--r--pkgs/applications/version-management/mercurial/default.nix5
-rw-r--r--pkgs/applications/video/handbrake/default.nix4
-rw-r--r--pkgs/applications/video/kodi/default.nix6
-rw-r--r--pkgs/applications/video/miro/default.nix2
-rw-r--r--pkgs/applications/video/mpv/default.nix4
-rw-r--r--pkgs/applications/video/pitivi/default.nix2
-rw-r--r--pkgs/applications/virtualization/openstack/glance.nix9
-rw-r--r--pkgs/applications/virtualization/openstack/keystone.nix8
-rw-r--r--pkgs/applications/virtualization/openstack/neutron.nix8
-rw-r--r--pkgs/applications/virtualization/openstack/nova.nix8
-rw-r--r--pkgs/applications/virtualization/virt-manager/default.nix2
-rw-r--r--pkgs/applications/virtualization/virtinst/default.nix2
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix2
-rw-r--r--pkgs/applications/virtualization/virtualbox/libressl.patch47
-rw-r--r--pkgs/applications/virtualization/virtualbox/upstream-info.json10
-rw-r--r--pkgs/applications/virtualization/xen/generic.nix8
-rw-r--r--pkgs/applications/window-managers/jwm/default.nix18
-rw-r--r--pkgs/applications/window-managers/qtile/default.nix2
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix4
-rw-r--r--pkgs/data/fonts/unifont/default.nix6
-rw-r--r--pkgs/data/fonts/unifont_upper/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/accerciser/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/accerciser/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/bijiben/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/bijiben/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/cheese/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/cheese/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/evolution/default.nix46
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/evolution/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/file-roller/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/file-roller/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gedit/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gedit/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/glade/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/glade/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-characters/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-characters/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-documents/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-documents/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-logs/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-logs/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-maps/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-maps/soup.patch12
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-maps/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-music/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-music/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-nettool/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-photos/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-photos/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-weather/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/gnome-weather/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/nautilus-sendto/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/polari/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/polari/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/seahorse/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/seahorse/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/vinagre/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/apps/vinagre/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/baobab/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/baobab/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/caribou/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/dconf/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/empathy/default.nix57
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/eog/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/eog/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evince/default.nix63
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evince/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/folks/default.nix43
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gconf/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gcr/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gcr/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch15
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch83
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch38
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix47
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix56
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix35
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix34
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix65
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix32
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix14
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix46
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix29
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo/default.nix37
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh7
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gsound/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix30
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgee/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix13
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/math.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch33
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch24
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/rest/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/sushi/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/sushi/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem/default.nix41
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/totem/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/tracker/default.nix48
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/tracker/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vino/default.nix39
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vino/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/default.nix36
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/vte/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/yelp/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/zenity/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/zenity/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/default.nix398
-rw-r--r--pkgs/desktops/gnome-3/3.22/desktop/rarian/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/anjuta/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/anjuta/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/devhelp/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/devhelp/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/gdl/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/gdl/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/nemiver/bool_slot.patch13
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/nemiver/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/nemiver/safe_ptr.patch10
-rw-r--r--pkgs/desktops/gnome-3/3.22/devtools/nemiver/src.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/aisleriot/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/aisleriot/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/five-or-more/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/five-or-more/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/four-in-a-row/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/four-in-a-row/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-chess/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-chess/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-klotski/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-klotski/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-mines/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-mines/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-robots/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-robots/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/default.nix17
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-taquin/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-taquin/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/hitori/default.nix24
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/hitori/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/iagno/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/iagno/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/lightsoff/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/lightsoff/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/quadrapassel/default.nix21
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/quadrapassel/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/swell-foop/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/swell-foop/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/tali/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/3.22/games/tali/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/installer.nix15
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch39
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/california/default.nix39
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/geary/default.nix49
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gexiv2/default.nix28
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gfbgraph/default.nix23
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gitg/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gitg/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/default.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/src.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch120
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch100
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch29
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch22
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-video-effects/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gpaste/default.nix45
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix11
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gtkhtml/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gtkhtml/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libgames-support/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libgda/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libgda/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/default.nix13
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/src.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/libmediaart/default.nix22
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/pidgin/default.nix42
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/pomodoro/default.nix50
-rw-r--r--pkgs/development/arduino/ino/default.nix16
-rw-r--r--pkgs/development/compilers/edk2/default.nix7
-rw-r--r--pkgs/development/compilers/llvm/3.7/default.nix13
-rw-r--r--pkgs/development/compilers/llvm/3.7/lldb.nix4
-rw-r--r--pkgs/development/compilers/llvm/3.7/llvm.nix4
-rw-r--r--pkgs/development/compilers/llvm/3.8/default.nix13
-rw-r--r--pkgs/development/compilers/llvm/3.9/default.nix13
-rw-r--r--pkgs/development/compilers/openjdk/8.nix18
-rw-r--r--pkgs/development/interpreters/clisp/default.nix24
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.5.nix4
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.6.nix4
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/default.nix169
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/python-2.7-distutils-C++.patch260
-rw-r--r--pkgs/development/interpreters/python/cpython/3.3/default.nix48
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/default.nix62
-rw-r--r--pkgs/development/interpreters/python/cpython/3.5/default.nix50
-rw-r--r--pkgs/development/interpreters/python/cpython/3.6/default.nix51
-rw-r--r--pkgs/development/interpreters/python/mk-python-derivation.nix4
-rw-r--r--pkgs/development/interpreters/python/pypy/2.7/default.nix6
-rw-r--r--pkgs/development/interpreters/spidermonkey/185-1.0.0.nix4
-rw-r--r--pkgs/development/interpreters/spidermonkey/24.2.nix4
-rw-r--r--pkgs/development/interpreters/spidermonkey/31.5.nix4
-rw-r--r--pkgs/development/libraries/Xaw3d/builder.sh24
-rw-r--r--pkgs/development/libraries/Xaw3d/config.patch51
-rw-r--r--pkgs/development/libraries/Xaw3d/default.nix14
-rw-r--r--pkgs/development/libraries/Xaw3d/laylex.patch13
-rw-r--r--pkgs/development/libraries/arb/default.nix21
-rw-r--r--pkgs/development/libraries/arb/git.nix21
-rw-r--r--pkgs/development/libraries/at-spi2-atk/default.nix6
-rw-r--r--pkgs/development/libraries/at-spi2-core/default.nix6
-rw-r--r--pkgs/development/libraries/aubio/default.nix10
-rw-r--r--pkgs/development/libraries/avro-c++/default.nix5
-rw-r--r--pkgs/development/libraries/cddlib/default.nix23
-rw-r--r--pkgs/development/libraries/cogl/default.nix10
-rw-r--r--pkgs/development/libraries/eclib/default.nix23
-rw-r--r--pkgs/development/libraries/fflas-ffpack/1.nix21
-rw-r--r--pkgs/development/libraries/fflas-ffpack/default.nix23
-rw-r--r--pkgs/development/libraries/flint/default.nix22
-rw-r--r--pkgs/development/libraries/fplll/20160331.nix23
-rw-r--r--pkgs/development/libraries/fplll/default.nix23
-rw-r--r--pkgs/development/libraries/gcab/default.nix7
-rw-r--r--pkgs/development/libraries/gdal/default.nix11
-rw-r--r--pkgs/development/libraries/gf2x/default.nix18
-rw-r--r--pkgs/development/libraries/git2/default.nix4
-rw-r--r--pkgs/development/libraries/givaro/3.7.nix18
-rw-r--r--pkgs/development/libraries/givaro/3.nix18
-rw-r--r--pkgs/development/libraries/givaro/default.nix20
-rw-r--r--pkgs/development/libraries/gnutls/3.3.nix4
-rw-r--r--pkgs/development/libraries/gnutls/3.4.nix4
-rw-r--r--pkgs/development/libraries/gnutls/3.5.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix4
-rw-r--r--pkgs/development/libraries/gtkmm/3.x.nix4
-rw-r--r--pkgs/development/libraries/http-parser/default.nix6
-rw-r--r--pkgs/development/libraries/iml/default.nix20
-rw-r--r--pkgs/development/libraries/kerberos/heimdal.nix4
-rw-r--r--pkgs/development/libraries/keybinder/default.nix4
-rw-r--r--pkgs/development/libraries/libdwarf/default.nix4
-rw-r--r--pkgs/development/libraries/libgap/default.nix18
-rw-r--r--pkgs/development/libraries/libgtop/default.nix10
-rw-r--r--pkgs/development/libraries/libhttpseverywhere/default.nix4
-rw-r--r--pkgs/development/libraries/libmusicbrainz/5.x.nix15
-rw-r--r--pkgs/development/libraries/libpqxx/default.nix4
-rw-r--r--pkgs/development/libraries/libpst/default.nix13
-rw-r--r--pkgs/development/libraries/libsoup/default.nix4
-rw-r--r--pkgs/development/libraries/libxml2/default.nix6
-rw-r--r--pkgs/development/libraries/mesa/default.nix4
-rw-r--r--pkgs/development/libraries/mpfi/default.nix17
-rw-r--r--pkgs/development/libraries/mpir/\20
-rw-r--r--pkgs/development/libraries/mpir/default.nix20
-rw-r--r--pkgs/development/libraries/openslp/default.nix15
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtdeclarative/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtbase/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix4
-rw-r--r--pkgs/development/libraries/qt-5/5.7/qtwebkit/default.nix4
-rw-r--r--pkgs/development/libraries/science/math/liblapack/3.5.0.nix6
-rw-r--r--pkgs/development/libraries/science/math/liblapack/default.nix6
-rw-r--r--pkgs/development/libraries/tachyon/default.nix32
-rw-r--r--pkgs/development/libraries/telepathy/glib/default.nix6
-rw-r--r--pkgs/development/libraries/telepathy/qt/default.nix4
-rw-r--r--pkgs/development/libraries/vaapi-intel/default.nix4
-rw-r--r--pkgs/development/libraries/vigra/default.nix7
-rw-r--r--pkgs/development/libraries/webkitgtk/2.12.nix4
-rw-r--r--pkgs/development/libraries/zziplib/default.nix6
-rw-r--r--pkgs/development/python-modules/cython_test.patch15
-rw-r--r--pkgs/development/python-modules/matplotlib/default.nix2
-rw-r--r--pkgs/development/python-modules/numpy-distutils-C++.patch23
-rw-r--r--pkgs/development/python-modules/numpy.nix8
-rw-r--r--pkgs/development/python-modules/pycairo/default.nix4
-rw-r--r--pkgs/development/python-modules/pygobject/3.nix4
-rw-r--r--pkgs/development/python-modules/wxPython/3.0.nix8
-rw-r--r--pkgs/development/ruby-modules/gem-config/default.nix7
-rw-r--r--pkgs/development/tools/analysis/valgrind/default.nix18
-rw-r--r--pkgs/development/tools/build-managers/scons/default.nix20
-rw-r--r--pkgs/development/tools/cdecl/default.nix4
-rw-r--r--pkgs/development/tools/devpi-client/default.nix15
-rw-r--r--pkgs/development/tools/documentation/gnome-doc-utils/default.nix13
-rw-r--r--pkgs/development/tools/misc/itstool/default.nix7
-rw-r--r--pkgs/development/tools/misc/saleae-logic/default.nix6
-rw-r--r--pkgs/development/web/nodejs/nodejs.nix4
-rw-r--r--pkgs/development/web/nodejs/v0_10.nix4
-rw-r--r--pkgs/development/web/nodejs/v4.nix2
-rw-r--r--pkgs/development/web/nodejs/v5.nix12
-rw-r--r--pkgs/development/web/nodejs/v6.nix2
-rw-r--r--pkgs/games/anki/default.nix8
-rw-r--r--pkgs/games/mnemosyne/default.nix1
-rw-r--r--pkgs/games/privateer/default.nix4
-rw-r--r--pkgs/misc/jackaudio/default.nix4
-rw-r--r--pkgs/misc/jackaudio/git.nix4
-rw-r--r--pkgs/misc/lilypond/default.nix4
-rw-r--r--pkgs/misc/solfege/default.nix4
-rw-r--r--pkgs/misc/themes/zuki/default.nix6
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/default.nix3
-rw-r--r--pkgs/os-specific/darwin/cctools/port.nix3
-rw-r--r--pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch17
-rw-r--r--pkgs/os-specific/linux/apparmor/default.nix1
-rw-r--r--pkgs/os-specific/linux/crda/default.nix4
-rw-r--r--pkgs/os-specific/linux/iotop/default.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.1.nix4
-rw-r--r--pkgs/os-specific/linux/wireguard/default.nix6
-rw-r--r--pkgs/servers/apache-kafka/default.nix4
-rw-r--r--pkgs/servers/bird/default.nix4
-rw-r--r--pkgs/servers/corosync/default.nix4
-rw-r--r--pkgs/servers/inginious/default.nix4
-rw-r--r--pkgs/servers/matrix-synapse/default.nix2
-rw-r--r--pkgs/servers/nosql/influxdb/default.nix15
-rw-r--r--pkgs/servers/nosql/influxdb/deps-0.13.0.json.nix0
-rw-r--r--pkgs/servers/nosql/influxdb/deps-0.13.0.nix200
-rwxr-xr-xpkgs/servers/nosql/influxdb/gdm2nix.rb39
-rw-r--r--pkgs/servers/nosql/influxdb/v0.nix13
-rw-r--r--pkgs/servers/nosql/influxdb/v1.nix13
-rw-r--r--pkgs/servers/sabnzbd/default.nix4
-rw-r--r--pkgs/shells/oh-my-zsh/default.nix6
-rw-r--r--pkgs/stdenv/darwin/default.nix2
-rw-r--r--pkgs/tools/admin/cli53/default.nix7
-rw-r--r--pkgs/tools/admin/salt/default.nix8
-rw-r--r--pkgs/tools/audio/beets/default.nix2
-rw-r--r--pkgs/tools/audio/mpdris2/default.nix4
-rw-r--r--pkgs/tools/backup/duplicity/default.nix4
-rw-r--r--pkgs/tools/filesystems/btrfs-progs/default.nix4
-rw-r--r--pkgs/tools/filesystems/ceph/generic.nix12
-rw-r--r--pkgs/tools/filesystems/gitfs/default.nix13
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.nix4
-rw-r--r--pkgs/tools/misc/fpp/default.nix4
-rw-r--r--pkgs/tools/misc/kargo/default.nix36
-rw-r--r--pkgs/tools/misc/openopc/default.nix14
-rw-r--r--pkgs/tools/misc/parted/default.nix4
-rw-r--r--pkgs/tools/misc/venus/default.nix2
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix4
-rw-r--r--pkgs/tools/networking/getmail/default.nix4
-rw-r--r--pkgs/tools/networking/httpie/default.nix2
-rw-r--r--pkgs/tools/networking/httpstat/default.nix16
-rw-r--r--pkgs/tools/networking/network-manager/strongswan.nix34
-rw-r--r--pkgs/tools/networking/offlineimap/default.nix4
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/default.nix2
-rw-r--r--pkgs/tools/networking/wicd/default.nix2
-rw-r--r--pkgs/tools/package-management/koji/default.nix8
-rw-r--r--pkgs/tools/package-management/nixops/generic.nix1
-rw-r--r--pkgs/tools/security/ecryptfs/default.nix4
-rw-r--r--pkgs/tools/security/ecryptfs/helper.nix4
-rw-r--r--pkgs/tools/security/fail2ban/default.nix2
-rw-r--r--pkgs/tools/security/gencfsm/default.nix7
-rw-r--r--pkgs/tools/security/knockknock/default.nix9
-rw-r--r--pkgs/tools/security/tor/tor-arm.nix2
-rw-r--r--pkgs/tools/text/grin/default.nix8
-rw-r--r--pkgs/tools/text/ruby-zoom/Gemfile2
-rw-r--r--pkgs/tools/text/ruby-zoom/Gemfile.lock25
-rw-r--r--pkgs/tools/text/ruby-zoom/default.nix18
-rw-r--r--pkgs/tools/text/ruby-zoom/gemset.nix58
-rw-r--r--pkgs/tools/typesetting/tex/dblatex/default.nix6
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix4
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix183
-rw-r--r--pkgs/top-level/default.nix111
-rw-r--r--pkgs/top-level/perl-packages.nix8
-rw-r--r--pkgs/top-level/python-packages.nix376
-rw-r--r--pkgs/top-level/release-small.nix1
545 files changed, 8415 insertions, 1480 deletions
diff --git a/doc/functions.xml b/doc/functions.xml
index 908e9571ed69..e767d01d8431 100644
--- a/doc/functions.xml
+++ b/doc/functions.xml
@@ -52,6 +52,20 @@ in ...</programlisting>
     It's equivalent to <varname>pkgs</varname> in the above example.
   </para>
 
+  <para>
+    Note that in previous versions of nixpkgs, this method replaced any changes from <link 
+    linkend="sec-modify-via-packageOverrides">config.packageOverrides</link>,
+    along with that from previous calls if this function was called repeatedly.
+    Now those previous changes will be preserved so this function can be "chained" meaningfully.
+    To recover the old behavior, make sure <varname>config.packageOverrides<varname> is unset,
+    and call this only once off a "freshly" imported nixpkgs:
+
+    <programlisting>let
+  pkgs = import &lt;nixpkgs&gt; { config: {}; };
+  newpkgs = pkgs.overridePackages ...;
+in ...</programlisting>
+  </para>
+
 </section>
 
 <section xml:id="sec-pkg-override">
diff --git a/doc/languages-frameworks/python.md b/doc/languages-frameworks/python.md
index e7dbe3bd7db0..127614a71b75 100644
--- a/doc/languages-frameworks/python.md
+++ b/doc/languages-frameworks/python.md
@@ -3,7 +3,7 @@
 ## User Guide
 
 Several versions of Python are available on Nix as well as a high amount of
-packages. The default interpreter is CPython 2.7.
+packages. The default interpreter is CPython 3.5.
 
 ### Using Python
 
@@ -409,36 +409,21 @@ and in this case the `python35` interpreter is automatically used.
 
 ### Interpreters
 
-Versions 2.6, 2.7, 3.3, 3.4 and 3.5 of the CPython interpreter are available on
-Nix and are available as `python26`, `python27`, `python33`, `python34` and
-`python35`. The PyPy interpreter is also available as `pypy`. Currently, the
-aliases `python` and `python3` correspond to respectively `python27` and
-`python35`. The Nix expressions for the interpreters can be found in
+Versions 2.6, 2.7, 3.3, 3.4 and 3.5 of the CPython interpreter are as respectively
+`python26`, `python27`, `python33`, `python34` and `python35`. The PyPy interpreter
+is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and
+`python35`. The default interpreter, `python`, maps to `python3`.
+The Nix expressions for the interpreters can be found in
 `pkgs/development/interpreters/python`.
 
-
-#### Missing modules standard library
-
-The interpreters `python26` and `python27` do not include modules that
-require external dependencies. This is done in order to reduce the closure size.
-The following modules need to be added as `buildInput` explicitly:
-
-* `python.modules.bsddb`
-* `python.modules.curses`
-* `python.modules.curses_panel`
-* `python.modules.crypt`
-* `python.modules.gdbm`
-* `python.modules.sqlite3`
-* `python.modules.tkinter`
-* `python.modules.readline`
-
-For convenience `python27Full` and `python26Full` are provided with all
-modules included.
-
 All packages depending on any Python interpreter get appended
 `out/{python.sitePackages}` to `$PYTHONPATH` if such directory
 exists.
 
+#### Missing `tkinter` module standard library
+
+To reduce closure size the `Tkinter`/`tkinter` is available as a separate package, `pythonPackages.tkinter`.
+
 #### Attributes on interpreters packages
 
 Each interpreter has the following attributes:
@@ -448,7 +433,7 @@ Each interpreter has the following attributes:
 - `buildEnv`. Function to build python interpreter environments with extra packages bundled together. See section *python.buildEnv function* for usage and documentation.
 - `withPackages`. Simpler interface to `buildEnv`. See section *python.withPackages function* for usage and documentation.
 - `sitePackages`. Alias for `lib/${libPrefix}/site-packages`.
-- `executable`. Name of the interpreter executable, ie `python3.4`.
+- `executable`. Name of the interpreter executable, e.g. `python3.4`.
 
 ### Building packages and applications
 
@@ -475,8 +460,9 @@ sets are
 
 and the aliases
 
-* `pkgs.pythonPackages` pointing to `pkgs.python27Packages`
+* `pkgs.python2Packages` pointing to `pkgs.python27Packages`
 * `pkgs.python3Packages` pointing to `pkgs.python35Packages`
+* `pkgs.pythonPackages` pointing to `pkgs.python3Packages`
 
 #### `buildPythonPackage` function
 
diff --git a/lib/trivial.nix b/lib/trivial.nix
index dac8b8d0106d..39cbd67fba36 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -69,9 +69,13 @@ rec {
   #
   #     nix-repl> obj
   #     { __unfix__ = «lambda»; bar = "bar"; extend = «lambda»; foo = "foo + "; foobar = "foo + bar"; }
-  makeExtensible = rattrs:
+  makeExtensible = makeExtensibleWithCustomName "extend";
+
+  # Same as `makeExtensible` but the name of the extending attribute is
+  # customized.
+  makeExtensibleWithCustomName = extenderName: rattrs:
     fix' rattrs // {
-      extend = f: makeExtensible (extends f rattrs);
+      ${extenderName} = f: makeExtensibleWithCustomName extenderName (extends f rattrs);
    };
 
   # Flip the order of the arguments of a binary function.
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2daa0854fa4e..61596265124a 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -167,6 +167,7 @@
   ./services/desktops/gnome3/gnome-keyring.nix
   ./services/desktops/gnome3/gnome-online-accounts.nix
   ./services/desktops/gnome3/gnome-online-miners.nix
+  ./services/desktops/gnome3/gnome-terminal-server.nix
   ./services/desktops/gnome3/gnome-user-share.nix
   ./services/desktops/gnome3/gvfs.nix
   ./services/desktops/gnome3/seahorse.nix
diff --git a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix
index a8f8da0eed56..2db2e2fe1c34 100644
--- a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix
+++ b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix
@@ -37,6 +37,8 @@ in
 
     services.dbus.packages = [ gnome3.evolution_data_server ];
 
+    systemd.packages = [ gnome3.evolution_data_server ];
+
   };
 
 }
diff --git a/nixos/modules/services/desktops/gnome3/gnome-terminal-server.nix b/nixos/modules/services/desktops/gnome3/gnome-terminal-server.nix
new file mode 100644
index 000000000000..384cede679c6
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/gnome-terminal-server.nix
@@ -0,0 +1,44 @@
+# GNOME Documents daemon.
+
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+  gnome3 = config.environment.gnome3.packageSet;
+in
+{
+
+  ###### interface
+
+  options = {
+
+    services.gnome3.gnome-terminal-server = {
+
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable GNOME Terminal server service,
+          needed for gnome-terminal.
+        '';
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.services.gnome3.gnome-terminal-server.enable {
+
+    environment.systemPackages = [ gnome3.gnome_terminal ];
+
+    services.dbus.packages = [ gnome3.gnome_terminal ];
+
+    systemd.packages = [ gnome3.gnome_terminal ];
+
+  };
+
+}
diff --git a/nixos/modules/services/desktops/gnome3/gvfs.nix b/nixos/modules/services/desktops/gnome3/gvfs.nix
index a07cdadbb12b..6bbabe8d3c56 100644
--- a/nixos/modules/services/desktops/gnome3/gvfs.nix
+++ b/nixos/modules/services/desktops/gnome3/gvfs.nix
@@ -37,6 +37,8 @@ in
 
     services.dbus.packages = [ gnome3.gvfs ];
 
+    systemd.packages = [ gnome3.gvfs ];
+
     services.udev.packages = [ pkgs.libmtp.bin ];
 
   };
diff --git a/nixos/modules/services/desktops/gnome3/tracker.nix b/nixos/modules/services/desktops/gnome3/tracker.nix
index 8c5935a5ee3c..dcaa60103a3b 100644
--- a/nixos/modules/services/desktops/gnome3/tracker.nix
+++ b/nixos/modules/services/desktops/gnome3/tracker.nix
@@ -37,6 +37,8 @@ in
 
     services.dbus.packages = [ gnome3.tracker ];
 
+    systemd.packages = [ gnome3.tracker ];
+
   };
 
 }
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix
index 65ffaece4772..8f353979d3fc 100644
--- a/nixos/modules/services/networking/networkmanager.nix
+++ b/nixos/modules/services/networking/networkmanager.nix
@@ -198,6 +198,9 @@ in {
       { source = "${networkmanager_l2tp}/etc/NetworkManager/VPN/nm-l2tp-service.name";
         target = "NetworkManager/VPN/nm-l2tp-service.name";
       }
+      { source = "${networkmanager_strongswan}/etc/NetworkManager/VPN/nm-strongswan-service.name";
+        target = "NetworkManager/VPN/nm-strongswan-service.name";
+      }
     ] ++ optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
            { source = overrideNameserversScript;
              target = "NetworkManager/dispatcher.d/02overridedns";
diff --git a/nixos/modules/services/networking/tftpd.nix b/nixos/modules/services/networking/tftpd.nix
index 9b3cc6b8ec4f..c9c0a2b321d5 100644
--- a/nixos/modules/services/networking/tftpd.nix
+++ b/nixos/modules/services/networking/tftpd.nix
@@ -13,12 +13,13 @@ with lib;
       default = false;
       description = ''
         Whether to enable tftpd, a Trivial File Transfer Protocol server.
+        The server will be run as an xinetd service.
       '';
     };
 
     services.tftpd.path = mkOption {
       type = types.path;
-      default = "/home/tftp";
+      default = "/srv/tftp";
       description = ''
         Where the tftp server files are stored.
       '';
diff --git a/nixos/modules/services/web-servers/apache-httpd/trac.nix b/nixos/modules/services/web-servers/apache-httpd/trac.nix
index 3196edc2838b..87ed36e35305 100644
--- a/nixos/modules/services/web-servers/apache-httpd/trac.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/trac.nix
@@ -102,7 +102,6 @@ in
             pkgs.setuptools
             pkgs.pythonPackages.genshi
             pkgs.pythonPackages.psycopg2
-            pkgs.python.modules.sqlite3
             subversion
           ];
     };
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index dc71531759b8..5d1af09e7aa7 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -82,7 +82,7 @@ in {
 
     environment.gnome3.packageSet = mkOption {
       default = null;
-      example = literalExample "pkgs.gnome3_20";
+      example = literalExample "pkgs.gnome3_22";
       description = "Which GNOME 3 package set to use.";
       apply = p: if p == null then pkgs.gnome3 else p;
     };
@@ -108,6 +108,7 @@ in {
     services.gnome3.gnome-documents.enable = mkDefault true;
     services.gnome3.gnome-keyring.enable = true;
     services.gnome3.gnome-online-accounts.enable = mkDefault true;
+    services.gnome3.gnome-terminal-server.enable = mkDefault true;
     services.gnome3.gnome-user-share.enable = mkDefault true;
     services.gnome3.gvfs.enable = true;
     services.gnome3.seahorse.enable = mkDefault true;
diff --git a/nixos/modules/services/x11/display-managers/gdm.nix b/nixos/modules/services/x11/display-managers/gdm.nix
index 52847d2f8d2c..d3aa63fd4284 100644
--- a/nixos/modules/services/x11/display-managers/gdm.nix
+++ b/nixos/modules/services/x11/display-managers/gdm.nix
@@ -95,9 +95,8 @@ in
     services.xserver.displayManager.job =
       {
         environment = {
-          GDM_X_SERVER = "${cfg.xserverBin} ${cfg.xserverArgs}";
+          GDM_X_SERVER_EXTRA_ARGS = "${cfg.xserverArgs}";
           GDM_SESSIONS_DIR = "${cfg.session.desktops}";
-          XDG_CONFIG_DIRS = "${gnome3.gnome_settings_daemon}/etc/xdg";
           # Find the mouse
           XCURSOR_PATH = "~/.icons:${config.system.path}/share/icons";
         };
@@ -108,10 +107,12 @@ in
     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 pkgs.xorg.xhost pkgs.dbus_tools ];
+    systemd.services.display-manager.path = [ gnome3.gnome_session ];
 
     services.dbus.packages = [ gdm ];
 
+    systemd.user.services.dbus.wantedBy = [ "default.target" ];
+
     programs.dconf.profiles.gdm = "${gdm}/share/dconf/profile/gdm";
 
     # Use AutomaticLogin if delay is zero, because it's immediate.
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index f5ed52338182..db60e47c3ea6 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -547,18 +547,19 @@ in
         };
       };
 
-    services.xserver.displayManager.xserverArgs =
-      [ "-terminate"
+    services.xserver.displayManager.xserverArgs = mkDefault (
+      [ #"-terminate"
         "-config ${configFile}"
         "-xkbdir" "${cfg.xkbDir}"
         # Log at the default verbosity level to stderr rather than /var/log/X.*.log.
-        "-verbose" "3" "-logfile" "/dev/null"
-      ] ++ optional (cfg.display != null) ":${toString cfg.display}"
-        ++ optional (cfg.tty     != null) "vt${toString cfg.tty}"
+        #"-verbose" "3" "-logfile" "/dev/null"
+      ] #++ optional (cfg.display != null) ":${toString cfg.display}"
+        #++ optional (cfg.tty     != null) "vt${toString cfg.tty}"
         ++ optional (cfg.dpi     != null) "-dpi ${toString cfg.dpi}"
-        ++ optional (!cfg.enableTCP) "-nolisten tcp"
+        #++ optional (!cfg.enableTCP) "-nolisten tcp");
         ++ optional (cfg.autoRepeatDelay != null) "-ardelay ${toString cfg.autoRepeatDelay}"
-        ++ optional (cfg.autoRepeatInterval != null) "-arinterval ${toString cfg.autoRepeatInterval}";
+        ++ optional (cfg.autoRepeatInterval != null) "-arinterval ${toString cfg.autoRepeatInterval}"
+);
 
     services.xserver.modules =
       concatLists (catAttrs "modules" cfg.drivers) ++
diff --git a/nixos/tests/virtualbox.nix b/nixos/tests/virtualbox.nix
index 66f16ed8bcc5..02a8fc680280 100644
--- a/nixos/tests/virtualbox.nix
+++ b/nixos/tests/virtualbox.nix
@@ -11,10 +11,10 @@ let
       #!${pkgs.stdenv.shell} -xe
       export PATH="${lib.makeBinPath [ pkgs.coreutils pkgs.utillinux ]}"
 
-      mkdir -p /var/run/dbus
+      mkdir -p /run/dbus
       cat > /etc/passwd <<EOF
       root:x:0:0::/root:/bin/false
-      messagebus:x:1:1::/var/run/dbus:/bin/false
+      messagebus:x:1:1::/run/dbus:/bin/false
       EOF
       cat > /etc/group <<EOF
       root:x:0:
diff --git a/pkgs/applications/audio/ardour/ardour3.nix b/pkgs/applications/audio/ardour/ardour3.nix
index ff2d4bbce4e2..13fea9a99afe 100644
--- a/pkgs/applications/audio/ardour/ardour3.nix
+++ b/pkgs/applications/audio/ardour/ardour3.nix
@@ -3,7 +3,7 @@
 , libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
 , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
 , libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper, pango
-, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
+, perl, pkgconfig, python2, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
 
 let
 
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
       libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
       libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv-svn lv2
-      makeWrapper pango perl pkgconfig python rubberband serd sord-svn sratom suil taglib vampSDK
+      makeWrapper pango perl pkgconfig python2 rubberband serd sord-svn sratom suil taglib vampSDK
     ];
 
   patchPhase = ''
@@ -52,12 +52,12 @@ stdenv.mkDerivation rec {
     patchShebangs ./tools/
   '';
 
-  configurePhase = "python waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
+  configurePhase = "${python2.interpreter} waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
 
-  buildPhase = "python waf";
+  buildPhase = "${python2.interpreter} waf";
 
   installPhase = ''
-    python waf install
+    ${python2.interpreter} waf install
 
     # Install desktop file
     mkdir -p "$out/share/applications"
diff --git a/pkgs/applications/audio/ardour/ardour4.nix b/pkgs/applications/audio/ardour/ardour4.nix
index f9d64ff6f637..b6123f40ee1d 100644
--- a/pkgs/applications/audio/ardour/ardour4.nix
+++ b/pkgs/applications/audio/ardour/ardour4.nix
@@ -3,7 +3,7 @@
 , libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
 , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
 , libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper, pango
-, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
+, perl, pkgconfig, python2, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
 
 let
 
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
       libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
       libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv-svn lv2
-      makeWrapper pango perl pkgconfig python rubberband serd sord-svn sratom suil taglib vampSDK
+      makeWrapper pango perl pkgconfig python2 rubberband serd sord-svn sratom suil taglib vampSDK
     ];
 
   # ardour's wscript has a "tarball" target but that required the git revision
@@ -46,12 +46,12 @@ stdenv.mkDerivation rec {
     patchShebangs ./tools/
   '';
 
-  configurePhase = "python waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
+  configurePhase = "${python2.interpreter} waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
 
-  buildPhase = "python waf";
+  buildPhase = "${python2.interpreter} waf";
 
   installPhase = ''
-    python waf install
+    ${python2.interpreter} waf install
     # Install desktop file
     mkdir -p "$out/share/applications"
     cat > "$out/share/applications/ardour.desktop" << EOF
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index 6adb3a0ed47a..b7ea32cd1d49 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -3,7 +3,7 @@
 , libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
 , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
 , libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper
-, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom
+, perl, pkgconfig, python2, rubberband, serd, sord-svn, sratom
 , taglib, vampSDK, dbus, fftw, pango, suil, libarchive }:
 
 let
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
       libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
       libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv-svn lv2
-      makeWrapper pango perl pkgconfig python rubberband serd sord-svn
+      makeWrapper pango perl pkgconfig python2 rubberband serd sord-svn
       sratom suil taglib vampSDK libarchive
     ];
 
@@ -47,12 +47,12 @@ stdenv.mkDerivation rec {
     patchShebangs ./tools/
   '';
 
-  configurePhase = "python waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
+  configurePhase = "${python2.interpreter} waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
 
-  buildPhase = "python waf";
+  buildPhase = "${python2.interpreter} waf";
 
   installPhase = ''
-    python waf install
+    ${python2.interpreter} waf install
 
     # Install desktop file
     mkdir -p "$out/share/applications"
diff --git a/pkgs/applications/audio/gpodder/default.nix b/pkgs/applications/audio/gpodder/default.nix
index f22aaa84b891..eb9ddf164d48 100644
--- a/pkgs/applications/audio/gpodder/default.nix
+++ b/pkgs/applications/audio/gpodder/default.nix
@@ -30,7 +30,7 @@ pythonPackages.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with pythonPackages; [
-    feedparser dbus-python mygpoclient sqlite3 pygtk eyeD3
+    feedparser dbus-python mygpoclient pygtk eyeD3
   ] ++ stdenv.lib.optional ipodSupport libgpod;
 
   checkPhase = ''
diff --git a/pkgs/applications/audio/lastwatch/default.nix b/pkgs/applications/audio/lastwatch/default.nix
index 61d502ce3345..0e4e1a5a8a38 100644
--- a/pkgs/applications/audio/lastwatch/default.nix
+++ b/pkgs/applications/audio/lastwatch/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchgit, pythonPackages }:
+{ stdenv, fetchgit, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "lastwatch-${version}";
   namePrefix = "";
   version = "0.4.1";
@@ -11,14 +11,12 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0nlng3595j5jvnikk8i5hb915zak5zsmfn2306cc4gfcns9xzjwp";
   };
 
-  pythonPath = [
-    pythonPackages.pyinotify
-    pythonPackages.pylast
-    pythonPackages.mutagen
+  propagatedBuildInputs = with python2Packages; [
+    pyinotify
+    pylast
+    mutagen
   ];
 
-  propagatedBuildInputs = pythonPath;
-
   meta = {
     homepage = "https://github.com/aszlig/LastWatch";
     description = "An inotify-based last.fm audio scrobbler";
diff --git a/pkgs/applications/audio/mopidy-moped/default.nix b/pkgs/applications/audio/mopidy-moped/default.nix
index ee3134f5fd82..c8afd4c6290f 100644
--- a/pkgs/applications/audio/mopidy-moped/default.nix
+++ b/pkgs/applications/audio/mopidy-moped/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pythonPackages, mopidy }:
+{ stdenv, fetchurl, pythonPackages, mopidy, glibcLocales }:
 
 pythonPackages.buildPythonApplication rec {
   name = "mopidy-moped-${version}";
@@ -9,6 +9,8 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0xff8y1kc7rwwsd7ppgbvywf6i8lchjwbxjisfl1kmilwsb166yr";
   };
 
+  LC_ALL = "en_US.UTF-8";
+  buildInputs = [ glibcLocales ];
   propagatedBuildInputs = [ mopidy ];
 
   doCheck = false;
diff --git a/pkgs/applications/audio/picard/default.nix b/pkgs/applications/audio/picard/default.nix
index 046789119ec6..4b789e158bbf 100644
--- a/pkgs/applications/audio/picard/default.nix
+++ b/pkgs/applications/audio/picard/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, pythonPackages, fetchurl, gettext
+{ stdenv, python2Packages, fetchurl, gettext
 , pkgconfig, libofa, ffmpeg, chromaprint
 }:
 
 let
   version = "1.3.2";
+  pythonPackages = python2Packages;
 in pythonPackages.buildPythonApplication {
   name = "picard-${version}";
   namePrefix = "";
diff --git a/pkgs/applications/editors/nvpy/default.nix b/pkgs/applications/editors/nvpy/default.nix
index 58893d085892..c9d86561fe26 100644
--- a/pkgs/applications/editors/nvpy/default.nix
+++ b/pkgs/applications/editors/nvpy/default.nix
@@ -1,6 +1,8 @@
-{ pkgs, fetchurl, tk, pythonPackages }:
+{ pkgs, fetchurl, tk, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+let
+  pythonPackages = python2Packages;
+in pythonPackages.buildPythonApplication rec {
   version = "0.9.7";
   name = "nvpy-${version}";
 
@@ -9,22 +11,21 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1rd3vlaqkg16iz6qcw6rkbq0jmyvc0843wa3brnvn1nz0kla243f";
   };
 
-  buildInputs = [tk];
-
-  propagatedBuildInputs = [
-    pythonPackages.markdown
-    pythonPackages.tkinter
-    pythonPackages.docutils
+  propagatedBuildInputs = with pythonPackages; [
+    markdown
+    tkinter
+    docutils
   ];
 
+  # No tests
+  doCheck = false;
+
   postInstall = ''
     install -dm755 "$out/share/licenses/nvpy/"
     install -m644 LICENSE.txt "$out/share/licenses/nvpy/LICENSE"
 
     install -dm755 "$out/share/doc/nvpy/"
     install -m644 README.rst "$out/share/doc/nvpy/README"
-
-    wrapProgram $out/bin/nvpy --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
   '';
 
   meta = with pkgs.lib; {
diff --git a/pkgs/applications/gis/grass/default.nix b/pkgs/applications/gis/grass/default.nix
index 5773718b0a4c..fb6c76be0794 100644
--- a/pkgs/applications/gis/grass/default.nix
+++ b/pkgs/applications/gis/grass/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ flex bison zlib proj gdal libtiff libpng fftw sqlite pkgconfig cairo
   readline ffmpeg makeWrapper wxGTK30 netcdf geos postgresql mysql.client blas ]
-    ++ (with pythonPackages; [ python dateutil wxPython30 numpy sqlite3 ]);
+    ++ (with pythonPackages; [ python dateutil wxPython30 numpy ]);
 
   configureFlags = [
     "--with-proj-share=${proj}/share/proj"
diff --git a/pkgs/applications/graphics/gimp/2.8.nix b/pkgs/applications/graphics/gimp/2.8.nix
index 4b380ed18864..b123dcade1d7 100644
--- a/pkgs/applications/graphics/gimp/2.8.nix
+++ b/pkgs/applications/graphics/gimp/2.8.nix
@@ -1,10 +1,10 @@
 { stdenv, fetchurl, pkgconfig, intltool, babl, gegl, gtk2, glib, gdk_pixbuf
 , pango, cairo, freetype, fontconfig, lcms, libpng, libjpeg, poppler, libtiff
 , webkit, libmng, librsvg, libwmf, zlib, libzip, ghostscript, aalib, jasper
-, pythonPackages, libart_lgpl, libexif, gettext, xorg }:
+, python2Packages, libart_lgpl, libexif, gettext, xorg }:
 
 let
-  inherit (pythonPackages) pygtk wrapPython python;
+  inherit (python2Packages) pygtk wrapPython python;
 in stdenv.mkDerivation rec {
   name = "gimp-${version}";
   version = "2.8.18";
diff --git a/pkgs/applications/graphics/inkscape/default.nix b/pkgs/applications/graphics/inkscape/default.nix
index ce8a22fd90f8..06b2fa63c7fa 100644
--- a/pkgs/applications/graphics/inkscape/default.nix
+++ b/pkgs/applications/graphics/inkscape/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, perl, perlXMLParser, libXft
 , libpng, zlib, popt, boehmgc, libxml2, libxslt, glib, gtkmm2
 , glibmm, libsigcxx, lcms, boost, gettext, makeWrapper, intltool
-, gsl, python, poppler, imagemagick, libwpg, librevenge
+, gsl, python2, poppler, imagemagick, libwpg, librevenge
 , libvisio, libcdr, libexif, unzip, automake114x, autoconf
 , boxMakerPlugin ? false # boxmaker plugin
 }:
 
 let 
-  pythonEnv = python.withPackages(ps: with ps; [ pyxml numpy lxml ]);
+  python2Env = python2.withPackages(ps: with ps; [ numpy lxml ]);
 
 boxmaker = fetchurl {
   # http://www.inkscapeforum.com/viewtopic.php?f=11&t=10403
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
 
   # Python is used at run-time to execute scripts, e.g., those from
   # the "Effects" menu.
-  propagatedBuildInputs = [ pythonEnv ];
+  propagatedBuildInputs = [ python2Env ];
 
   buildInputs = [
     pkgconfig perl perlXMLParser libXft libpng zlib popt boehmgc
diff --git a/pkgs/applications/graphics/mcomix/default.nix b/pkgs/applications/graphics/mcomix/default.nix
index c88c3337c928..20c01f77bbf8 100644
--- a/pkgs/applications/graphics/mcomix/default.nix
+++ b/pkgs/applications/graphics/mcomix/default.nix
@@ -9,7 +9,7 @@ python27Packages.buildPythonApplication rec {
       sha256 = "0fzsf9pklhfs1rzwzj64c0v30b74nk94p93h371rpg45qnfiahvy";
     };
 
-    propagatedBuildInputs = with python27Packages; [ pygtk pillow sqlite3 ];
+    propagatedBuildInputs = with python27Packages; [ pygtk pillow ];
 
     meta = {
       description = "Image viewer designed to handle comic books";
diff --git a/pkgs/applications/misc/bleachbit/default.nix b/pkgs/applications/misc/bleachbit/default.nix
index 84a122d6fd71..e67480fb3c7a 100644
--- a/pkgs/applications/misc/bleachbit/default.nix
+++ b/pkgs/applications/misc/bleachbit/default.nix
@@ -22,7 +22,7 @@ pythonPackages.buildPythonApplication rec {
     substituteInPlace $out/bin/bleachbit --replace "#!/usr/bin/env python" "#!${pythonPackages.python.interpreter}"
   '';
 
-  propagatedBuildInputs = with pythonPackages; [ pygtk sqlite3 ];
+  propagatedBuildInputs = with pythonPackages; [ pygtk ];
 
   meta = {
     homepage = "http://bleachbit.sourceforge.net";
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index 39b25c63c73f..7b47b9fb3cb0 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
     python pyqt5 sip poppler_utils libpng imagemagick libjpeg
     fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils
   ] ++ (with pythonPackages; [
-    apsw beautifulsoup cssselect cssutils dateutil lxml mechanize netifaces pillow sqlite3
+    apsw beautifulsoup cssselect cssutils dateutil lxml mechanize netifaces pillow
     # the following are distributed with calibre, but we use upstream instead
     chardet cherrypy html5lib odfpy routes
   ]);
diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix
index 4198a9f32b25..43e41284f144 100644
--- a/pkgs/applications/misc/cherrytree/default.nix
+++ b/pkgs/applications/misc/cherrytree/default.nix
@@ -11,9 +11,6 @@ stdenv.mkDerivation rec {
     sha256 = "45f1cee4067598cf2ca8ae6f89d03789b86f9e3bf196236119868653420d7cdd";
   };
 
-  propagatedBuildInputs = with pythonPackages;
-  [ sqlite3 ];
-
   buildInputs = with pythonPackages;
   [ python gettext wrapPython pygtk dbus-python pygtksourceview ];
 
diff --git a/pkgs/applications/misc/chirp/default.nix b/pkgs/applications/misc/chirp/default.nix
index e77dd0e8c8a4..469da1f6ec42 100644
--- a/pkgs/applications/misc/chirp/default.nix
+++ b/pkgs/applications/misc/chirp/default.nix
@@ -2,15 +2,15 @@
 , python, pyserial, pygtk
 }:
 let
-  version = "0.4.1";
+  version = "20161018";
 in
 stdenv.mkDerivation rec {
-  name = "chirp-${version}";
+  name = "chirp-daily-${version}";
   inherit version;
 
   src = fetchurl {
-    url = "http://chirp.danplanet.com/download/0.4.1/chirp-${version}.tar.gz";
-    sha256 = "17iihghqjprn2hld193qw0yl1kkrf6m0fp57l7ibkflxr0nnb7cc";
+    url = "http://trac.chirp.danplanet.com/chirp_daily/daily-${version}/chirp-daily-${version}.tar.gz";
+    sha256 = "0f3r919az4vvcgxzqmxvhrxa2byzk5algy7srzzs15ihkvyxcwkb";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/misc/gnuradio/default.nix b/pkgs/applications/misc/gnuradio/default.nix
index 543f84bdfbc0..efe39e5d8b76 100644
--- a/pkgs/applications/misc/gnuradio/default.nix
+++ b/pkgs/applications/misc/gnuradio/default.nix
@@ -4,7 +4,7 @@
 # python wrappers
 , python, swig2, numpy, scipy, matplotlib
 # grc - the gnu radio companion
-, cheetahTemplate, pygtk
+, cheetah, pygtk
 # gr-wavelet: collection of wavelet blocks
 , gsl
 # gr-qtgui: the Qt-based GUI
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
   ];
 
   propagatedBuildInputs = [
-    cheetahTemplate numpy scipy matplotlib pyqt4 pygtk wxPython pyopengl
+    cheetah numpy scipy matplotlib pyqt4 pygtk wxPython pyopengl
   ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix
index d750aea01ef0..4dcb5be8a21d 100644
--- a/pkgs/applications/misc/gramps/default.nix
+++ b/pkgs/applications/misc/gramps/default.nix
@@ -17,7 +17,7 @@ in buildPythonApplication rec {
     sha256 = "0jdps7yx2mlma1hdj64wssvnqd824xdvw0bmn2dnal5fn3h7h060";
   };
 
-  pythonPath = with pythonPackages; [ pygobject3 pycairo bsddb ] ++ [ pango ];
+  pythonPath = with pythonPackages; [ pygobject3 pycairo ] ++ [ pango ];
 
   # Same installPhase as in buildPythonApplication but without --old-and-unmanageble
   # install flag.
diff --git a/pkgs/applications/misc/hamster-time-tracker/default.nix b/pkgs/applications/misc/hamster-time-tracker/default.nix
index 3191c00e9ec9..b8bd514c9ff3 100644
--- a/pkgs/applications/misc/hamster-time-tracker/default.nix
+++ b/pkgs/applications/misc/hamster-time-tracker/default.nix
@@ -21,7 +21,7 @@ pythonPackages.buildPythonApplication rec {
     docbook2x libxslt gnome_doc_utils intltool dbus_glib hicolor_icon_theme
   ];
 
-  propagatedBuildInputs = with pythonPackages; [ pygobject2 pygtk pyxdg gnome_python dbus-python sqlite3 ];
+  propagatedBuildInputs = with pythonPackages; [ pygobject2 pygtk pyxdg gnome_python dbus-python ];
 
   configurePhase = ''
     python waf configure --prefix="$out"
diff --git a/pkgs/applications/misc/keepassx/2.0.nix b/pkgs/applications/misc/keepassx/2.0.nix
index b76d59c30e14..030b1d326e1d 100644
--- a/pkgs/applications/misc/keepassx/2.0.nix
+++ b/pkgs/applications/misc/keepassx/2.0.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "keepassx2-${version}";
-  version = "2.0.2";
+  version = "2.0.3";
 
   src = fetchurl {
     url = "https://www.keepassx.org/releases/${version}/keepassx-${version}.tar.gz";
-    sha256 = "1f1nlbd669rmpzr52d9dgfgclg4jcaq2jkrby3b8q1vjkksdqjr0";
+    sha256 = "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3";
   };
 
   buildInputs = [ cmake libgcrypt qt4 xorg.libXtst ];
diff --git a/pkgs/applications/misc/loxodo/default.nix b/pkgs/applications/misc/loxodo/default.nix
index 7a877afb0c3a..291e225d6c4f 100644
--- a/pkgs/applications/misc/loxodo/default.nix
+++ b/pkgs/applications/misc/loxodo/default.nix
@@ -12,7 +12,7 @@ py.buildPythonApplication rec {
     sha256 = "1cg0dfcv57ps54f1a0ksib7hgkrbdi9q699w302xyyfyvjcb5dd2";
   };
 
-  propagatedBuildInputs = with py; [ wxPython python.modules.readline ];
+  propagatedBuildInputs = with py; [ wxPython ];
 
   postInstall = ''
     mv $out/bin/loxodo.py $out/bin/loxodo
diff --git a/pkgs/applications/misc/ranger/default.nix b/pkgs/applications/misc/ranger/default.nix
index 0a32fdf748e6..048a7877362b 100644
--- a/pkgs/applications/misc/ranger/default.nix
+++ b/pkgs/applications/misc/ranger/default.nix
@@ -15,7 +15,7 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0yaviybviwdvfg2a0pf2kk28g10k245499xmbpqlai7fv91f7xll";
   };
 
-  propagatedBuildInputs = [ pythonPackages.python.modules.curses file ];
+  propagatedBuildInputs = [ file ];
 
   preConfigure = ''
     substituteInPlace ranger/ext/img_display.py \
diff --git a/pkgs/applications/misc/roxterm/default.nix b/pkgs/applications/misc/roxterm/default.nix
index 2b5054d158a2..d07863df0e0d 100644
--- a/pkgs/applications/misc/roxterm/default.nix
+++ b/pkgs/applications/misc/roxterm/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, docbook_xsl, dbus_libs, dbus_glib, expat, gettext
 , gsettings_desktop_schemas, gdk_pixbuf, gtk2, gtk3, hicolor_icon_theme
 , imagemagick, itstool, librsvg, libtool, libxslt, lockfile, makeWrapper
-, pkgconfig, pythonFull, pythonPackages, vte }:
+, pkgconfig, python, pythonPackages, vte }:
 
 # TODO: Still getting following warning.
 # WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
@@ -19,7 +19,7 @@ in stdenv.mkDerivation rec {
 
   buildInputs =
     [ docbook_xsl expat imagemagick itstool librsvg libtool libxslt
-      makeWrapper pkgconfig pythonFull pythonPackages.lockfile ];
+      makeWrapper pkgconfig python pythonPackages.lockfile ];
 
   propagatedBuildInputs =
     [ dbus_libs dbus_glib gdk_pixbuf gettext gsettings_desktop_schemas gtk2 gtk3 hicolor_icon_theme vte ];
@@ -29,8 +29,8 @@ in stdenv.mkDerivation rec {
                          "-I${dbus_libs.lib}/lib/dbus-1.0/include" ];
 
   # Fix up python path so the lockfile library is on it.
-  PYTHONPATH = stdenv.lib.makeSearchPathOutput "lib" pythonFull.sitePackages [
-    pythonPackages.curses pythonPackages.lockfile
+  PYTHONPATH = stdenv.lib.makeSearchPathOutput "lib" python.sitePackages [
+    pythonPackages.lockfile
   ];
 
   buildPhase = ''
diff --git a/pkgs/applications/misc/rtv/default.nix b/pkgs/applications/misc/rtv/default.nix
index 399951b6bfe3..8488a8e6842c 100644
--- a/pkgs/applications/misc/rtv/default.nix
+++ b/pkgs/applications/misc/rtv/default.nix
@@ -17,7 +17,6 @@ pythonPackages.buildPythonApplication rec {
     six
     praw
     kitchen
-    python.modules.curses
     praw
   ] ++ lib.optional (!pythonPackages.isPy3k) futures;
 
diff --git a/pkgs/applications/misc/zk-shell/default.nix b/pkgs/applications/misc/zk-shell/default.nix
index 9f090e608236..ec8deadf9f54 100644
--- a/pkgs/applications/misc/zk-shell/default.nix
+++ b/pkgs/applications/misc/zk-shell/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, buildPythonApplication, fetchFromGitHub, pythonPackages }:
+{ stdenv, fetchFromGitHub, pythonPackages }:
 
-buildPythonApplication rec {
+pythonPackages.buildPythonApplication rec {
   version = "1.0.0";
   name = "zk-shell-" + version;
 
@@ -12,7 +12,7 @@ buildPythonApplication rec {
   };
 
   propagatedBuildInputs = (with pythonPackages; [
-    ansi kazoo nose six tabulate twitter readline
+    ansi kazoo nose six tabulate twitter
   ]);
 
   #requires a running zookeeper, don't know how to fix that for the moment
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index c0e26af42742..8a561e75f790 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -7,7 +7,7 @@
 , xdg_utils, yasm, minizip, libwebp
 , libusb1, pciutils, nss
 
-, python, pythonPackages, perl, pkgconfig
+, python2Packages, perl, pkgconfig
 , nspr, systemd, kerberos
 , utillinux, alsaLib
 , bison, gperf
@@ -38,6 +38,8 @@ buildFun:
 with stdenv.lib;
 
 let
+  inherit (python2Packages) python gyp ply jinja2;
+
   # The additional attributes for creating derivations based on the chromium
   # source tree.
   extraAttrs = buildFun base;
@@ -119,7 +121,7 @@ let
       glib gtk2 dbus_glib
       libXScrnSaver libXcursor libXtst mesa
       pciutils protobuf speechd libXdamage
-      pythonPackages.gyp pythonPackages.ply pythonPackages.jinja2
+      gyp ply jinja2
     ] ++ optional gnomeKeyringSupport libgnome_keyring3
       ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
       ++ optional enableSELinux libselinux
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index 029310825e07..650f4a3006a2 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchurl, pkgconfig, gtk2, gtk3, pango, perl, python, zip, libIDL
 , libjpeg, zlib, dbus, dbus_glib, bzip2, xorg
 , freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
-, yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
+, yasm, mesa, sqlite, unzip, makeWrapper
 , hunspell, libevent, libstartup_notification, libvpx
 , cairo, gstreamer, gst_plugins_base, icu, libpng, jemalloc, libpulseaudio
 , autoconf213, which
@@ -34,7 +34,7 @@ common = { pname, version, sha512 }: stdenv.mkDerivation rec {
       python dbus dbus_glib pango freetype fontconfig xorg.libXi
       xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
       alsaLib nspr nss libnotify xorg.pixman yasm mesa
-      xorg.libXScrnSaver xorg.scrnsaverproto pysqlite
+      xorg.libXScrnSaver xorg.scrnsaverproto
       xorg.libXext xorg.xextproto sqlite unzip makeWrapper
       hunspell libevent libstartup_notification libvpx /* cairo */
       icu libpng jemalloc
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 81fca6614a59..4d598bbb3a9d 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -70,11 +70,11 @@ let
 in
 stdenv.mkDerivation rec {
   name = "flashplayer-${version}";
-  version = "11.2.202.637";
+  version = "11.2.202.643";
 
   src = fetchurl {
     url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
-    sha256 = "0xp1pxhrnam4yi8wfwaifqx7m2im0zx2xv8xgbdm0llrzbkc57mh";
+    sha256 = "02imhdzhali42m8d1rw3bqscvi70707mssss7c43dm2kf67z6y8s";
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index f22cc57b6273..bbceca88ae8e 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "terraform-${version}";
-  version = "0.7.6";
+  version = "0.7.7";
   rev = "v${version}";
 
   goPackagePath = "github.com/hashicorp/terraform";
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "hashicorp";
     repo = "terraform";
-    sha256 = "02k3g38jk2dm70dkfl4w6is563m4abqvip5srv8bhv7xcgj0nfkq";
+    sha256 = "0wza5ladh406lf8hd4fbh4ri82qbcf91lif82357ldy78ghsi5g7";
   };
 
   postInstall = ''
@@ -27,6 +27,9 @@ buildGoPackage rec {
     description = "Tool for building, changing, and versioning infrastructure";
     homepage = "https://www.terraform.io/";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ zimbatm ];
+    maintainers = with maintainers; [
+      jgeerds
+      zimbatm
+    ];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/gajim/default.nix b/pkgs/applications/networking/instant-messengers/gajim/default.nix
index cc0c07daca40..e03b99aa1718 100644
--- a/pkgs/applications/networking/instant-messengers/gajim/default.nix
+++ b/pkgs/applications/networking/instant-messengers/gajim/default.nix
@@ -61,7 +61,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [
     pythonPackages.pygobject2 pythonPackages.pyGtkGlade
-    pythonPackages.sqlite3 pythonPackages.pyasn1
+    pythonPackages.pyasn1
     pythonPackages.pyxdg
     pythonPackages.nbxmpp
     pythonPackages.pyopenssl pythonPackages.dbus-python
diff --git a/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix b/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
index 9675b5d5315a..ec4eb91d6ab1 100644
--- a/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "1f4h0yc1mfjnxzvxiv9hxgak59mgr3a5ykv50vlyiay82za20jax";
   };
 
-  buildInputs = with pythonPackages; [ python pyqt4 wrapPython sqlite3 ] ++ [ openssl ];
+  buildInputs = with pythonPackages; [ python pyqt4 wrapPython ] ++ [ openssl ];
 
   preConfigure = ''
     substituteInPlace Makefile \
diff --git a/pkgs/applications/networking/mailreaders/mailnag/default.nix b/pkgs/applications/networking/mailreaders/mailnag/default.nix
index bf3f6296acc2..7720fd69eebd 100644
--- a/pkgs/applications/networking/mailreaders/mailnag/default.nix
+++ b/pkgs/applications/networking/mailreaders/mailnag/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, gettext, gtk3, pythonPackages
+{ stdenv, fetchurl, gettext, gtk3, python2Packages
 , gdk_pixbuf, libnotify, gst_all_1
 , libgnome_keyring3 ? null, networkmanager ? null
 }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "mailnag-${version}";
   version = "1.1.0";
 
@@ -13,8 +13,8 @@ pythonPackages.buildPythonApplication rec {
   };
 
   buildInputs = [
-    gettext gtk3 pythonPackages.pygobject3 pythonPackages.dbus-python
-    pythonPackages.pyxdg gdk_pixbuf libnotify gst_all_1.gstreamer
+    gettext gtk3 python2Packages.pygobject3 python2Packages.dbus-python
+    python2Packages.pyxdg gdk_pixbuf libnotify gst_all_1.gstreamer
     gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
     gst_all_1.gst-plugins-bad libgnome_keyring3 networkmanager
   ];
diff --git a/pkgs/applications/networking/mailreaders/mailpile/default.nix b/pkgs/applications/networking/mailreaders/mailpile/default.nix
index be74e0796918..031e835d3f73 100644
--- a/pkgs/applications/networking/mailreaders/mailpile/default.nix
+++ b/pkgs/applications/networking/mailreaders/mailpile/default.nix
@@ -16,7 +16,7 @@ pythonPackages.buildPythonApplication rec {
 
   propagatedBuildInputs = with pythonPackages; [
     makeWrapper pillow jinja2 spambayes pythonPackages.lxml
-    python.modules.readline pgpdump gnupg1orig
+    pgpdump gnupg1orig
   ];
 
   postInstall = ''
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index e34813154166..d44c749a55ad 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -13,7 +13,7 @@
   enableOfficialBranding ? false
 }:
 
-let version = "45.3.0"; in
+let version = "45.4.0"; in
 let verName = "${version}"; in
 
 stdenv.mkDerivation rec {
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://mozilla/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.xz";
-    sha512 = "1226b35535d68b9c088ab8692f61120c99951e1ecbae4739ced711665a3237d248202831831f00536c724e2f6359db4601fa5c90f2793433eab4bd9dab0c1165";
+    sha512 = "9c601d9625b43103b64e111da3a88fccdc30d4a52aa8a66ee02120bc13f3c5600d24fa1cfd3817975a0e58be9078d192334dd3099aa462468d8ab0cd05a3bcd5";
   };
 
   buildInputs = # from firefox30Pkgs.xulrunner, without gstreamer and libvpx
diff --git a/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix b/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
index ddb37a3f64b7..fc803fa2745c 100644
--- a/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
+++ b/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
@@ -10,7 +10,6 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = with pythonPackages; [ python wrapPython ];
-  pythonPath = [ pythonPackages.curses ];
 
   installPhase = ''
     install -D transmission-remote-cli $out/bin/transmission-remote-cli
diff --git a/pkgs/applications/networking/p2p/tribler/default.nix b/pkgs/applications/networking/p2p/tribler/default.nix
index 210dbaf41c84..890271916544 100644
--- a/pkgs/applications/networking/p2p/tribler/default.nix
+++ b/pkgs/applications/networking/p2p/tribler/default.nix
@@ -21,7 +21,6 @@ stdenv.mkDerivation rec {
   pythonPath = [
     libtorrentRasterbar
     pythonPackages.wxPython
-    pythonPackages.curses
     pythonPackages.apsw
     pythonPackages.twisted
     pythonPackages.gmpy
@@ -32,7 +31,6 @@ stdenv.mkDerivation rec {
     pythonPackages.requests
     pythonPackages.setuptools
     pythonPackages.m2crypto
-    pythonPackages.sqlite3
   ];
 
   installPhase =
diff --git a/pkgs/applications/office/beancount/bean-add.nix b/pkgs/applications/office/beancount/bean-add.nix
index ca003da9c46b..3afb7ce4b10a 100644
--- a/pkgs/applications/office/beancount/bean-add.nix
+++ b/pkgs/applications/office/beancount/bean-add.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "09xdsskk5rc3xsf1v1vq7nkdxrxy8w2fixx2vdv8c97ak6a4hrca";
   };
 
-  propagatedBuildInputs = with python3Packages; [ python readline ];
+  propagatedBuildInputs = with python3Packages; [ python ];
 
   installPhase = ''
     mkdir -p $out/bin/
diff --git a/pkgs/applications/office/impressive/default.nix b/pkgs/applications/office/impressive/default.nix
index 1422369d20ef..1a4461e2f8cf 100644
--- a/pkgs/applications/office/impressive/default.nix
+++ b/pkgs/applications/office/impressive/default.nix
@@ -1,8 +1,8 @@
-{ fetchurl, stdenv, pythonPackages, makeWrapper, lib
+{ fetchurl, stdenv, python2Packages, makeWrapper, lib
 , xpdf, mesa, freeglut }:
 
 let
-  inherit (pythonPackages) python pyopengl pygame setuptools pillow;
+  inherit (python2Packages) python pyopengl pygame setuptools pillow;
   version = "0.10.5";
 in stdenv.mkDerivation {
     # This project was formerly known as KeyJNote.
diff --git a/pkgs/applications/office/keepnote/default.nix b/pkgs/applications/office/keepnote/default.nix
index 3f3b5c2966c5..b8d04baf356d 100644
--- a/pkgs/applications/office/keepnote/default.nix
+++ b/pkgs/applications/office/keepnote/default.nix
@@ -9,7 +9,7 @@ pythonPackages.buildPythonApplication {
     sha256 = "0nhkkv1n0lqf3zn17pxg5cgryv1wwlj4hfmhixwd76rcy8gs45dh";
   };
 
-  propagatedBuildInputs = with pythonPackages; [ sqlite3 pyGtkGlade ];
+  propagatedBuildInputs = with pythonPackages; [ pyGtkGlade ];
 
   # Testing fails.
   doCheck = false;
diff --git a/pkgs/applications/office/scribus/default.nix b/pkgs/applications/office/scribus/default.nix
index e1c80c50ee51..a6f0bccec96b 100644
--- a/pkgs/applications/office/scribus/default.nix
+++ b/pkgs/applications/office/scribus/default.nix
@@ -1,8 +1,10 @@
 { stdenv, fetchurl, pkgconfig, freetype, lcms, libtiff, libxml2
-, libart_lgpl, qt4, pythonFull, cups, fontconfig, libjpeg
+, libart_lgpl, qt4, python2, cups, fontconfig, libjpeg
 , zlib, libpng, xorg, cairo, podofo, aspell, boost, cmake }:
 
-stdenv.mkDerivation rec {
+let
+  pythonEnv = python2.withPackages(ps: [ps.tkinter]);
+in stdenv.mkDerivation rec {
   name = "scribus-1.4.6";
 
   src = fetchurl {
@@ -14,7 +16,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = with xorg;
     [ pkgconfig cmake freetype lcms libtiff libxml2 libart_lgpl qt4
-      pythonFull cups fontconfig
+      pythonEnv cups fontconfig
       libjpeg zlib libpng podofo aspell cairo
       boost # for internal 2geom library
       libXaw libXext libX11 libXtst libXi libXinerama
diff --git a/pkgs/applications/office/zim/default.nix b/pkgs/applications/office/zim/default.nix
index ec33388f0869..cda8fc63a127 100644
--- a/pkgs/applications/office/zim/default.nix
+++ b/pkgs/applications/office/zim/default.nix
@@ -17,7 +17,7 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "15pdq4fxag85qjsrdmmssiq85qsk5vnbp8mrqnpvx8lm8crz6hjl";
   };
 
-  propagatedBuildInputs = with pythonPackages; [ sqlite3 pyGtkGlade pyxdg pygobject2 ];
+  propagatedBuildInputs = with pythonPackages; [ pyGtkGlade pyxdg pygobject2 ];
 
   preBuild = ''
     export HOME=$TMP
diff --git a/pkgs/applications/science/logic/z3/default.nix b/pkgs/applications/science/logic/z3/default.nix
index 43ce46b8e7a0..0e43abdd681d 100644
--- a/pkgs/applications/science/logic/z3/default.nix
+++ b/pkgs/applications/science/logic/z3/default.nix
@@ -1,6 +1,8 @@
-{ stdenv, fetchFromGitHub, python }:
+{ stdenv, fetchFromGitHub, python2 }:
 
-stdenv.mkDerivation rec {
+let
+  python = python2;
+in stdenv.mkDerivation rec {
   name = "z3-${version}";
   version = "4.4.1";
 
@@ -14,21 +16,21 @@ stdenv.mkDerivation rec {
   buildInputs = [ python ];
   enableParallelBuilding = true;
 
-  configurePhase = "python scripts/mk_make.py --prefix=$out && cd build";
+  configurePhase = "${python.interpreter} scripts/mk_make.py --prefix=$out && cd build";
 
   # z3's install phase is stupid because it tries to calculate the
   # python package store location itself, meaning it'll attempt to
   # write files into the nix store, and fail.
   soext = if stdenv.system == "x86_64-darwin" then ".dylib" else ".so";
   installPhase = ''
-    mkdir -p $out/bin $out/lib/${python.libPrefix}/site-packages $out/include
+    mkdir -p $out/bin $out/${python.sitePackages} $out/include
     cp ../src/api/z3*.h       $out/include
     cp ../src/api/c++/z3*.h   $out/include
     cp z3                     $out/bin
     cp libz3${soext}          $out/lib
-    cp libz3${soext}          $out/lib/${python.libPrefix}/site-packages
-    cp z3*.pyc                $out/lib/${python.libPrefix}/site-packages
-    cp ../src/api/python/*.py $out/lib/${python.libPrefix}/site-packages
+    cp libz3${soext}          $out/${python.sitePackages}
+    cp z3*.pyc                $out/${python.sitePackages}
+    cp ../src/api/python/*.py $out/${python.sitePackages}
   '';
 
   meta = {
diff --git a/pkgs/applications/science/logic/z3_opt/default.nix b/pkgs/applications/science/logic/z3_opt/default.nix
index b4d8fbc95298..1b989097758e 100644
--- a/pkgs/applications/science/logic/z3_opt/default.nix
+++ b/pkgs/applications/science/logic/z3_opt/default.nix
@@ -1,8 +1,10 @@
-{ stdenv, fetchFromGitHub, python }:
+{ stdenv, fetchFromGitHub, python2 }:
 
 # Copied shamelessly from the normal z3 .nix
 
-stdenv.mkDerivation rec {
+let
+  python = python2;
+in stdenv.mkDerivation rec {
   name = "z3_opt-${version}";
   version = "4.3.2";
 
@@ -16,21 +18,21 @@ stdenv.mkDerivation rec {
   buildInputs = [ python ];
   enableParallelBuilding = true;
 
-  configurePhase = "python scripts/mk_make.py --prefix=$out && cd build";
+  configurePhase = "${python.interpreter} scripts/mk_make.py --prefix=$out && cd build";
 
   # z3's install phase is stupid because it tries to calculate the
   # python package store location itself, meaning it'll attempt to
   # write files into the nix store, and fail.
   soext = if stdenv.system == "x86_64-darwin" then ".dylib" else ".so";
   installPhase = ''
-    mkdir -p $out/bin $out/lib/${python.libPrefix}/site-packages $out/include
+    mkdir -p $out/bin $out/${python.sitePackages} $out/include
     cp ../src/api/z3*.h       $out/include
     cp ../src/api/c++/z3*.h   $out/include
     cp z3                     $out/bin
     cp libz3${soext}          $out/lib
-    cp libz3${soext}          $out/lib/${python.libPrefix}/site-packages
-    cp z3*.pyc                $out/lib/${python.libPrefix}/site-packages
-    cp ../src/api/python/*.py $out/lib/${python.libPrefix}/site-packages
+    cp libz3${soext}          $out/${python.sitePackages}
+    cp z3*.pyc                $out/${python.sitePackages}
+    cp ../src/api/python/*.py $out/${python.sitePackages}
   '';
 
   meta = {
diff --git a/pkgs/applications/science/math/R/default.nix b/pkgs/applications/science/math/R/default.nix
index 430c6629df2a..dea095c834ff 100644
--- a/pkgs/applications/science/math/R/default.nix
+++ b/pkgs/applications/science/math/R/default.nix
@@ -7,11 +7,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "R-3.2.3";
+  name = "R-3.2.4";
 
   src = fetchurl {
     url = "http://cran.r-project.org/src/base/R-3/${name}.tar.gz";
-    sha256 = "b93b7d878138279234160f007cb9b7f81b8a72c012a15566e9ec5395cfd9b6c1";
+    sha256 = "0l6k3l3cy6fa9xkn23zvz5ykpw10s45779x88yz3pzn2x5gl1zds";
   };
 
   buildInputs = [ bzip2 gfortran libX11 libXmu libXt
diff --git a/pkgs/applications/science/math/gfan/default.nix b/pkgs/applications/science/math/gfan/default.nix
new file mode 100644
index 000000000000..dbd28cf9e8ce
--- /dev/null
+++ b/pkgs/applications/science/math/gfan/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, gmp, mpir, cddlib}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "gfan";
+  version = "0.5";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "http://home.math.au.dk/jensen/software/gfan/gfan${version}.tar.gz";
+    sha256 = "0adk9pia683wf6kn6h1i02b3801jz8zn67yf39pl57md7bqbrsma";
+  };
+  preBuild = ''
+    sed -e 's@static int i;@//&@' -i app_minkowski.cpp
+  '';
+  makeFlags = ''PREFIX=$(out)'';
+  buildInputs = [gmp mpir cddlib];
+  meta = {
+    inherit version;
+    description = ''A software package for computing Gröbner fans and tropical varieties'';
+    license = stdenv.lib.licenses.gpl2 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://home.math.au.dk/jensen/software/gfan/gfan.html";
+  };
+}
diff --git a/pkgs/applications/science/math/maxima/default.nix b/pkgs/applications/science/math/maxima/default.nix
index 4981767f21f2..55443f90c6f9 100644
--- a/pkgs/applications/science/math/maxima/default.nix
+++ b/pkgs/applications/science/math/maxima/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, sbcl, texinfo, perl, python, makeWrapper, rlwrap ? null, tk ? null, gnuplot ? null }:
+{ stdenv, fetchurl, sbcl, texinfo, perl, python, makeWrapper, rlwrap ? null,
+tk ? null, gnuplot ? null, ecl ? null, ecl-fasl ? false
+}:
 
 let
   name    = "maxima";
@@ -6,9 +8,9 @@ let
 
   searchPath =
     stdenv.lib.makeBinPath
-      (stdenv.lib.filter (x: x != null) [ sbcl rlwrap tk gnuplot ]);
+      (stdenv.lib.filter (x: x != null) [ sbcl ecl rlwrap tk gnuplot ]);
 in
-stdenv.mkDerivation {
+stdenv.mkDerivation ({
   name = "${name}-${version}";
 
   src = fetchurl {
@@ -16,7 +18,8 @@ stdenv.mkDerivation {
     sha256 = "1p6646rvq43hk09msyp0dk50cqpkh07mf4x0bc2fqisqmcv6b1hf";
   };
 
-  buildInputs = [sbcl texinfo perl python makeWrapper];
+  buildInputs = stdenv.lib.filter (x: x != null)
+    [sbcl ecl texinfo perl python makeWrapper];
 
   postInstall = ''
     # Make sure that maxima can find its runtime dependencies.
@@ -27,7 +30,11 @@ stdenv.mkDerivation {
     mkdir -p $out/share/emacs $out/share/doc
     ln -s ../maxima/${version}/emacs $out/share/emacs/site-lisp
     ln -s ../maxima/${version}/doc $out/share/doc/maxima
-  '';
+  ''
+   + (stdenv.lib.optionalString ecl-fasl ''
+     cp src/binary-ecl/maxima.fas* "$out/lib/maxima/${version}/binary-ecl/"
+   '')
+  ;
 
   # Failures in the regression test suite won't abort the build process. We run
   # the suite only so that potential errors show up in the build log. See also:
@@ -51,4 +58,8 @@ stdenv.mkDerivation {
     platforms = stdenv.lib.platforms.unix;
     maintainers = [ stdenv.lib.maintainers.peti ];
   };
-}
+} // (stdenv.lib.optionalAttrs ecl-fasl {
+  preConfigure = ''
+    sed -e '/c::build-program "binary-ecl\/maxima"/i(c::build-fasl "binary-ecl\/maxima.fasl" :lisp-files obj :ld-flags (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*" (find-package "MAXIMA"))))) (if (and x (not (string= x ""))) (list x))))' -i src/maxima.system
+  '';
+}))
diff --git a/pkgs/applications/science/math/nauty/default.nix b/pkgs/applications/science/math/nauty/default.nix
new file mode 100644
index 000000000000..7503c50c6d22
--- /dev/null
+++ b/pkgs/applications/science/math/nauty/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+  name = "nauty-${version}";
+  version = "26r7";
+  src = fetchurl {
+    url = "http://pallini.di.uniroma1.it/nauty${version}.tar.gz";
+    sha256 = "1indcc1im7s5x89x0xn4699izw1wwars1aanpmf8jibnw66n9dcp";
+  };
+  buildInputs = [];
+  installPhase = ''
+    mkdir -p "$out"/{bin,share/doc/nauty}
+
+    cp $(find . -type f -perm -111 \! -name '*.*' ) "$out/bin"
+    cp [Rr][Ee][Aa][Dd]* COPYRIGHT This* [Cc]hange* "$out/share/doc/nauty"
+  '';
+  meta = {
+    inherit version;
+    description = ''Programs for computing automorphism groups of graphs and digraphs'';
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://pallini.di.uniroma1.it/";
+  };
+}
diff --git a/pkgs/applications/science/math/pari/alpha.nix b/pkgs/applications/science/math/pari/alpha.nix
new file mode 100644
index 000000000000..2f94d6360376
--- /dev/null
+++ b/pkgs/applications/science/math/pari/alpha.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gmp, readline, perl }:
+
+stdenv.mkDerivation rec {
+  version = "2.8.0.alpha";
+  name = "pari-${version}";
+
+  src = fetchurl {
+    url = "http://pari.math.u-bordeaux.fr/pub/pari/testing/${name}.tar.gz";
+    sha256 = "1nrjybrqv55p669rmlkghb940hzf63vnpn34sbwhy9zlbw3hg305";
+  };
+
+  buildInputs = [gmp readline];
+  nativeBuildInputs = [perl];
+
+  configureScript = "./Configure";
+  configureFlags =
+    "--with-gmp=${gmp.dev} " +
+    "--with-readline=${readline.dev}";
+
+  meta = with stdenv.lib; {
+    description = "Computer algebra system for high-performance number theory computations";
+    homepage    = "http://pari.math.u-bordeaux.fr/";
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ertes raskin ];
+    platforms   = platforms.linux;
+
+    inherit version;
+    downloadPage = "http://pari.math.u-bordeaux.fr/download.html";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/applications/science/math/ratpoints/default.nix b/pkgs/applications/science/math/ratpoints/default.nix
new file mode 100644
index 000000000000..1e99b8782a96
--- /dev/null
+++ b/pkgs/applications/science/math/ratpoints/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl, gmp}:
+stdenv.mkDerivation rec {
+  name = "ratpoints-${version}";
+  version = "2.1.3";
+  src = fetchurl {
+    url = "http://www.mathe2.uni-bayreuth.de/stoll/programs/ratpoints-${version}.tar.gz";
+    sha256 = "0zhad84sfds7izyksbqjmwpfw4rvyqk63yzdjd3ysd32zss5bgf4";
+  };
+  buildInputs = [gmp];
+  makeFlags = "INSTALL_DIR=$(out)";
+  preInstall = ''mkdir -p "$out"/{bin,share,lib,include}'';
+  meta = {
+    inherit version;
+    description = ''A program to find rational points on hyperelliptic curves'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://www.mathe2.uni-bayreuth.de/stoll/programs/";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/applications/science/math/singular/default.nix b/pkgs/applications/science/math/singular/default.nix
index a0fdf7c82395..6cd66c62a0ad 100644
--- a/pkgs/applications/science/math/singular/default.nix
+++ b/pkgs/applications/science/math/singular/default.nix
@@ -1,30 +1,47 @@
-{ stdenv, fetchurl, gmp, bison, perl, autoconf, ncurses, readline, coreutils }:
+{ stdenv, fetchurl, gmp, bison, perl, autoconf, ncurses, readline, coreutils, pkgconfig
+, asLibsingular ? false
+}:
 
 stdenv.mkDerivation rec {
   name = "singular-${version}";
-  version="3-1-2";
+  version="3-1-7";
 
   src = fetchurl {
-    url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${version}/${name}.tar.gz";
-    sha256 = "04f9i1xar0r7qrrbfki1h9rrmx5y2xg4w7rrvlbx05v2dy6s8djv";
+    url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${version}/Singular-${version}.tar.gz";
+    sha256 = "1j4mcpnwzdp3h4qspk6ww0m67rmx4s11cy17pvzbpf70lm0jzzh2";
   };
 
-  buildInputs = [ gmp bison perl autoconf ncurses readline coreutils ];
+  buildInputs = [ gmp perl ncurses readline ];
+  nativeBuildInputs = [ autoconf bison pkgconfig ];
 
   preConfigure = ''
     find . -exec sed -e 's@/bin/rm@${coreutils}&@g' -i '{}' ';'
     find . -exec sed -e 's@/bin/uname@${coreutils}&@g' -i '{}' ';'
+    ${stdenv.lib.optionalString asLibsingular ''NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DLIBSINGULAR"''}
   '';
 
   hardeningDisable = stdenv.lib.optional stdenv.isi686 "stackprotector";
 
-  postInstall = ''
-    rm -rf "$out/LIB"
-    cp -r Singular/LIB "$out"
+  # The Makefile actually defaults to `make install` anyway
+  buildPhase = "true;";
+
+  installPhase = ''
+    mkdir -p "$out"
+    cp -r Singular/LIB "$out/LIB"
+    make install${stdenv.lib.optionalString asLibsingular "-libsingular"}
+
+    binaries="$(find "$out"/* \( -type f -o -type l \) -perm -111 \! -name '*.so' -maxdepth 1)"
+    ln -s "$out"/*/{include,lib} "$out"
     mkdir -p "$out/bin"
-    ln -s "$out/"*/Singular "$out/bin"
+    for b in $binaries; do
+      bbn="$(basename "$b")"
+      echo -e '#! ${stdenv.shell}\n"'"$b"'" "$@"' > "$out/bin/$bbn"
+      chmod a+x "$out/bin/$bbn"
+    done
   '';
 
+  enableParallelBuild = true;
+
   meta = with stdenv.lib; {
     description = "A CAS for polynomial computations";
     maintainers = with maintainers;
@@ -32,10 +49,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4
     homepage = "http://www.singular.uni-kl.de/index.php";
-  };
-  passthru = {
-    updateInfo = {
-      downloadPage = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/";
-    };
+    downloadPage = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/";
   };
 }
diff --git a/pkgs/applications/science/math/symmetrica/default.nix b/pkgs/applications/science/math/symmetrica/default.nix
new file mode 100644
index 000000000000..0c87beb22dfc
--- /dev/null
+++ b/pkgs/applications/science/math/symmetrica/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+  name = "symmetrica-${version}";
+  version = "2.0";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/SYM2_0_tar.gz";
+    sha256 = "1qhfrbd5ybb0sinl9pad64rscr08qvlfzrzmi4p4hk61xn6phlmz";
+    name = "symmetrica-2.0.tar.gz";
+  };
+  buildInputs = [];
+  sourceRoot = ".";
+  installPhase = ''
+    mkdir -p "$out"/{lib,share/doc/symmetrica,include/symmetrica}
+    ar crs libsymmetrica.a *.o
+    ranlib libsymmetrica.a
+    cp libsymmetrica.a "$out/lib"
+    cp *.h "$out/include/symmetrica"
+    cp README *.doc "$out/share/doc/symmetrica"
+  '';
+  meta = {
+    inherit version;
+    description = ''A collection of routines for representation theory and combinatorics'';
+    license = stdenv.lib.licenses.publicDomain;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://www.symmetrica.de/";
+  };
+}
diff --git a/pkgs/applications/version-management/bazaar/default.nix b/pkgs/applications/version-management/bazaar/default.nix
index 689daef45ef5..a397acddbcfa 100644
--- a/pkgs/applications/version-management/bazaar/default.nix
+++ b/pkgs/applications/version-management/bazaar/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   version = "2.7";
   release = ".0";
   name = "bazaar-${version}${release}";
@@ -10,9 +10,6 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d";
   };
 
-  # Readline support is needed by bzrtools.
-  propagatedBuildInputs = [ pythonPackages.python.modules.readline ];
-
   doCheck = false;
 
   # Bazaar can't find the certificates alone
diff --git a/pkgs/applications/version-management/bazaar/tools.nix b/pkgs/applications/version-management/bazaar/tools.nix
index 68b69f335b63..d6c65548c1f7 100644
--- a/pkgs/applications/version-management/bazaar/tools.nix
+++ b/pkgs/applications/version-management/bazaar/tools.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, makeWrapper, python2, bazaar }:
+{ stdenv, fetchurl, makeWrapper, python2Packages, bazaar }:
 
-stdenv.mkDerivation rec {
+python2Packages.buildPythonApplication rec {
   name = "bzr-tools-${version}";
   version = "2.6.0";
   
@@ -9,12 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "0n3zzc6jf5866kfhmrnya1vdr2ja137a45qrzsz8vz6sc6xgn5wb";
   };
 
-  buildInputs = [ makeWrapper python2 ];
+  doCheck = false;
 
-  installPhase = ''
-    ${python2}/bin/python ./setup.py install --prefix=$out
-  '';
-      
   meta = {
     description = "Bazaar plugins";
     homepage = http://wiki.bazaar.canonical.com/BzrTools;
diff --git a/pkgs/applications/version-management/git-and-tools/fast-export/default.nix b/pkgs/applications/version-management/git-and-tools/fast-export/default.nix
index bb3bc806a68a..474faa30467b 100644
--- a/pkgs/applications/version-management/git-and-tools/fast-export/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/fast-export/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation {
     mv *.py $l
     for p in $out/bin/*.sh; do
       wrapProgram $p \
-        --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages}" \
+        --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages or []}" \
         --prefix PATH : "$(dirname $(type -p python))":$l
     done
   '';
diff --git a/pkgs/applications/version-management/git-and-tools/git-hub/default.nix b/pkgs/applications/version-management/git-and-tools/git-hub/default.nix
index 579cb363702f..d561f751cc97 100644
--- a/pkgs/applications/version-management/git-and-tools/git-hub/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-hub/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, docutils, python }:
+{ stdenv, fetchFromGitHub, docutils, python2 }:
 
 stdenv.mkDerivation rec {
   name = "git-hub-${version}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "sociomantic-tsunami";
   };
 
-  buildInputs = [ python ];
+  buildInputs = [ python2 ];
   nativeBuildInputs = [ docutils ];
 
   postPatch = ''
diff --git a/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix b/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
index 68c680ca9798..547f5f997b98 100644
--- a/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     wrapProgram $out/bin/git-remote-hg \
-      --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages}"
+      --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages or []}"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix
index 290d27b37368..82fcfcfb2384 100644
--- a/pkgs/applications/version-management/mercurial/default.nix
+++ b/pkgs/applications/version-management/mercurial/default.nix
@@ -6,7 +6,7 @@ let
   # if you bump version, update pkgs.tortoisehg too or ping maintainer
   version = "3.9.1";
   name = "mercurial-${version}";
-  inherit (python2Packages) curses docutils hg-git dulwich python;
+  inherit (python2Packages) docutils hg-git dulwich python;
 in
 
 stdenv.mkDerivation {
@@ -18,7 +18,6 @@ stdenv.mkDerivation {
   };
 
   inherit python; # pass it so that the same version can be used in hg2git
-  pythonPackages = [ curses ];
 
   buildInputs = [ python makeWrapper docutils unzip ];
 
@@ -43,7 +42,7 @@ stdenv.mkDerivation {
     ''
       for i in $(cd $out/bin && ls); do
         wrapProgram $out/bin/$i \
-          --prefix PYTHONPATH : "$(toPythonPath "$out ${curses}"):$(toPythonPath "$out ${hg-git}"):$(toPythonPath "$out ${dulwich}")" \
+          --prefix PYTHONPATH : "$(toPythonPath "$out ${hg-git}"):$(toPythonPath "$out ${dulwich}")" \
           $WRAP_TK
       done
 
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index 1dbe34553b0a..b8a161649889 100644
--- a/pkgs/applications/video/handbrake/default.nix
+++ b/pkgs/applications/video/handbrake/default.nix
@@ -12,7 +12,7 @@
 # TODO: package and use libappindicator
 
 { stdenv, config, fetchurl,
-  python, pkgconfig, yasm,
+  python2, pkgconfig, yasm,
   autoconf, automake, libtool, m4,
   libass, libsamplerate, fribidi, libxml2, bzip2,
   libogg, libtheora, libvorbis, libdvdcss, a52dec, fdk_aac,
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
     wrapGAppsHook
   ];
 
-  nativeBuildInputs = [ python pkgconfig yasm autoconf automake libtool m4 ];
+  nativeBuildInputs = [ python2 pkgconfig yasm autoconf automake libtool m4 ];
   buildInputs = [
     fribidi fontconfig freetype hicolor_icon_theme
     libass libsamplerate libxml2 bzip2
diff --git a/pkgs/applications/video/kodi/default.nix b/pkgs/applications/video/kodi/default.nix
index 1926913c8d04..dccb84127336 100644
--- a/pkgs/applications/video/kodi/default.nix
+++ b/pkgs/applications/video/kodi/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchurl, makeWrapper
-, pkgconfig, cmake, gnumake, yasm, pythonFull
+, pkgconfig, cmake, gnumake, yasm, python2
 , boost, avahi, libdvdcss, lame, autoreconfHook
 , gettext, pcre-cpp, yajl, fribidi, which
 , openssl, gperf, tinyxml2, taglib, libssh, swig, jre
@@ -54,7 +54,7 @@ in stdenv.mkDerivation rec {
 
     buildInputs = [
       makeWrapper libxml2 gnutls
-      pkgconfig cmake gnumake yasm pythonFull
+      pkgconfig cmake gnumake yasm python2
       boost libmicrohttpd autoreconfHook
       gettext pcre-cpp yajl fribidi libva
       openssl gperf tinyxml2 taglib libssh swig jre
@@ -107,7 +107,7 @@ in stdenv.mkDerivation rec {
     postInstall = ''
       for p in $(ls $out/bin/) ; do
         wrapProgram $out/bin/$p \
-          --prefix PATH ":" "${pythonFull}/bin" \
+          --prefix PATH ":" "${python2}/bin" \
           --prefix PATH ":" "${glxinfo}/bin" \
           --prefix PATH ":" "${xdpyinfo}/bin" \
           --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
diff --git a/pkgs/applications/video/miro/default.nix b/pkgs/applications/video/miro/default.nix
index 9e08f2fffb16..0652ac7e6642 100644
--- a/pkgs/applications/video/miro/default.nix
+++ b/pkgs/applications/video/miro/default.nix
@@ -75,7 +75,7 @@ in buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with pythonPackages; [
-    pygobject2 pygtk pycurl sqlite3 mutagen pycairo dbus-python
+    pygobject2 pygtk pycurl mutagen pycairo dbus-python
     pywebkitgtk] ++ [ libtorrentRasterbar
     gst_python gst_plugins_base gst_plugins_good gst_ffmpeg
   ] ++ optional enableBonjour avahi;
diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix
index 88b2f9d09459..b41eae41a5cb 100644
--- a/pkgs/applications/video/mpv/default.nix
+++ b/pkgs/applications/video/mpv/default.nix
@@ -77,13 +77,13 @@ let
   };
 in stdenv.mkDerivation rec {
   name = "mpv-${version}";
-  version = "0.20.0";
+  version = "0.21.0";
 
   src = fetchFromGitHub {
     owner = "mpv-player";
     repo  = "mpv";
     rev    = "v${version}";
-    sha256 = "0zp852b505lr2gllqylg2xrc8sgw9b1xjn1c7px36hzddny15c16";
+    sha256 = "1v1qfppysi0qn40q9z7cx9gs7pcrz2hn1g44iynygvgj29h1gify";
   };
 
   patchPhase = ''
diff --git a/pkgs/applications/video/pitivi/default.nix b/pkgs/applications/video/pitivi/default.nix
index d487f07e3d6d..c2c64bfa4966 100644
--- a/pkgs/applications/video/pitivi/default.nix
+++ b/pkgs/applications/video/pitivi/default.nix
@@ -42,7 +42,7 @@ in stdenv.mkDerivation rec {
     gst-plugins-base gst-plugins-good
     gst-plugins-bad gst-plugins-ugly gst-libav gst-validate
   ]) ++ (with python3Packages; [
-    python pygobject3 gst-python pyxdg numpy pycairo sqlite3 matplotlib
+    python pygobject3 gst-python pyxdg numpy pycairo matplotlib
     dbus-python
   ]);
 
diff --git a/pkgs/applications/virtualization/openstack/glance.nix b/pkgs/applications/virtualization/openstack/glance.nix
index 3cfe8dc527c9..f78e5da9a8c0 100644
--- a/pkgs/applications/virtualization/openstack/glance.nix
+++ b/pkgs/applications/virtualization/openstack/glance.nix
@@ -1,7 +1,6 @@
+{ stdenv, fetchurl, python2Packages, sqlite, which, strace }:
 
-{ stdenv, fetchurl, pythonPackages, sqlite, which, strace }:
-
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "glance-${version}";
   version = "11.0.0";
   namePrefix = "";
@@ -14,7 +13,7 @@ pythonPackages.buildPythonApplication rec {
   };
 
   # https://github.com/openstack/glance/blob/stable/liberty/requirements.txt
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
      pbr sqlalchemy anyjson eventlet PasteDeploy routes webob sqlalchemy_migrate
      httplib2 pycrypto iso8601 stevedore futurist keystonemiddleware paste
      jsonschema keystoneclient pyopenssl six retrying semantic-version qpid-python
@@ -26,7 +25,7 @@ pythonPackages.buildPythonApplication rec {
      MySQL_python
   ];
 
-  buildInputs = with pythonPackages; [
+  buildInputs = with python2Packages; [
     Babel coverage fixtures mox3 mock oslosphinx requests2 testrepository pep8
     testresources testscenarios testtools psutil_1 oslotest psycopg2
     sqlite which strace
diff --git a/pkgs/applications/virtualization/openstack/keystone.nix b/pkgs/applications/virtualization/openstack/keystone.nix
index bbce75b5e51e..3a5941880795 100644
--- a/pkgs/applications/virtualization/openstack/keystone.nix
+++ b/pkgs/applications/virtualization/openstack/keystone.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages, xmlsec, which, openssl }:
+{ stdenv, fetchurl, python2Packages, xmlsec, which, openssl }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "keystone-${version}";
   version = "8.0.0";
   namePrefix = "";
@@ -16,7 +16,7 @@ pythonPackages.buildPythonApplication rec {
   patches = [ ./remove-oslo-policy-tests.patch ];
 
   # https://github.com/openstack/keystone/blob/stable/liberty/requirements.txt
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
     pbr webob eventlet greenlet PasteDeploy paste routes cryptography six
     sqlalchemy sqlalchemy_migrate stevedore passlib keystoneclient memcached
     keystonemiddleware oauthlib pysaml2 dogpile_cache jsonschema pycadf msgpack
@@ -28,7 +28,7 @@ pythonPackages.buildPythonApplication rec {
     oslo-utils
   ];
 
-  buildInputs = with pythonPackages; [
+  buildInputs = with python2Packages; [
     coverage fixtures mock subunit tempest-lib testtools testrepository
     ldap ldappool webtest requests2 oslotest pep8 pymongo which
   ];
diff --git a/pkgs/applications/virtualization/openstack/neutron.nix b/pkgs/applications/virtualization/openstack/neutron.nix
index ac839d9f9143..c1ee231d97f5 100644
--- a/pkgs/applications/virtualization/openstack/neutron.nix
+++ b/pkgs/applications/virtualization/openstack/neutron.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages, xmlsec, which, dnsmasq }:
+{ stdenv, fetchurl, python2Packages, xmlsec, which, dnsmasq }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "neutron-${version}";
   version = "7.0.0";
   namePrefix = "";
@@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec {
   };
 
   # https://github.com/openstack/neutron/blob/stable/liberty/requirements.txt
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
    pbr paste PasteDeploy routes debtcollector eventlet greenlet httplib2 requests2
    jinja2 keystonemiddleware netaddr retrying sqlalchemy webob alembic six
    stevedore pecan ryu networking-hyperv MySQL_python
@@ -34,7 +34,7 @@ pythonPackages.buildPythonApplication rec {
   '';
   patches = [ ./neutron-iproute-4.patch ];
 
-  buildInputs = with pythonPackages; [
+  buildInputs = with python2Packages; [
     cliff coverage fixtures mock subunit requests-mock oslosphinx testrepository
     testtools testresources testscenarios webtest oslotest os-testr tempest-lib
     ddt pep8
diff --git a/pkgs/applications/virtualization/openstack/nova.nix b/pkgs/applications/virtualization/openstack/nova.nix
index a4e0779d3f91..219026f1e0fb 100644
--- a/pkgs/applications/virtualization/openstack/nova.nix
+++ b/pkgs/applications/virtualization/openstack/nova.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages, openssl, openssh }:
+{ stdenv, fetchurl, python2Packages, openssl, openssh }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "nova-${version}";
   version = "12.0.0";
   namePrefix = "";
@@ -21,7 +21,7 @@ pythonPackages.buildPythonApplication rec {
   '';
 
   # https://github.com/openstack/nova/blob/stable/liberty/requirements.txt
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
     pbr sqlalchemy boto decorator eventlet jinja2 lxml routes cryptography
     webob greenlet PasteDeploy paste prettytable sqlalchemy_migrate netaddr
     netifaces paramiko Babel iso8601 jsonschema keystoneclient requests2 six
@@ -37,7 +37,7 @@ pythonPackages.buildPythonApplication rec {
     cinderclient neutronclient glanceclient
   ];
 
-  buildInputs = with pythonPackages; [
+  buildInputs = with python2Packages; [
     coverage fixtures mock mox3 subunit requests-mock pillow oslosphinx
     oslotest testrepository testresources testtools tempest-lib bandit
     oslo-vmware pep8 barbicanclient ironicclient openssl openssh
diff --git a/pkgs/applications/virtualization/virt-manager/default.nix b/pkgs/applications/virtualization/virt-manager/default.nix
index 5cda21066b55..0964e1b4814b 100644
--- a/pkgs/applications/virtualization/virt-manager/default.nix
+++ b/pkgs/applications/virtualization/virt-manager/default.nix
@@ -20,7 +20,7 @@ buildPythonApplication rec {
   propagatedBuildInputs =
     [ eventlet greenlet gflags netaddr carrot routes
       PasteDeploy m2crypto ipy twisted
-      distutils_extra simplejson readline glanceclient cheetah lockfile httplib2
+      distutils_extra simplejson glanceclient cheetah lockfile httplib2
       urlgrabber virtinst pyGtkGlade dbus-python gnome_python pygobject3
       libvirt libxml2Python ipaddr vte libosinfo gobjectIntrospection gtk3 mox
       gtkvnc libvirt-glib glib gsettings_desktop_schemas gnome3.defaultIconTheme
diff --git a/pkgs/applications/virtualization/virtinst/default.nix b/pkgs/applications/virtualization/virtinst/default.nix
index 36fe43b1d3d9..04223d9a9e9d 100644
--- a/pkgs/applications/virtualization/virtinst/default.nix
+++ b/pkgs/applications/virtualization/virtinst/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   pythonPath = with pythonPackages;
     [ setuptools eventlet greenlet gflags netaddr carrot routes
       PasteDeploy m2crypto ipy twisted
-      distutils_extra simplejson readline glanceclient cheetah lockfile httplib2
+      distutils_extra simplejson glanceclient cheetah lockfile httplib2
       # !!! should libvirt be a build-time dependency?  Note that
       # libxml2Python is a dependency of libvirt.py.
       libvirt libxml2Python urlgrabber
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index ef834897022d..64275448651c 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -81,7 +81,7 @@ in stdenv.mkDerivation {
   '';
 
   patches = optional enableHardening ./hardened.patch
-    ++ [ ./libressl.patch ./qtx11extras.patch ];
+    ++ [ ./qtx11extras.patch ];
 
   postPatch = ''
     sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
diff --git a/pkgs/applications/virtualization/virtualbox/libressl.patch b/pkgs/applications/virtualization/virtualbox/libressl.patch
deleted file mode 100644
index db9b7e7a59d9..000000000000
--- a/pkgs/applications/virtualization/virtualbox/libressl.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff --git a/src/VBox/Runtime/common/crypto/digest-builtin.cpp b/src/VBox/Runtime/common/crypto/digest-builtin.cpp
-index 66b4304..1aaceff 100644
---- a/src/VBox/Runtime/common/crypto/digest-builtin.cpp
-+++ b/src/VBox/Runtime/common/crypto/digest-builtin.cpp
-@@ -561,7 +561,7 @@ static PCRTCRDIGESTDESC const g_apDigestOps[] =
-  * OpenSSL EVP.
-  */
- 
--# if OPENSSL_VERSION_NUMBER >= 0x10100000
-+# if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
- /** @impl_interface_method{RTCRDIGESTDESC::pfnNew} */
- static DECLCALLBACK(void*) rtCrDigestOsslEvp_New(void)
- {
-@@ -597,7 +597,7 @@ static DECLCALLBACK(int) rtCrDigestOsslEvp_Init(void *pvState, void *pvOpaque, b
-     if (fReInit)
-     {
-         pEvpType = EVP_MD_CTX_md(pThis);
--# if OPENSSL_VERSION_NUMBER >= 0x10100000
-+# if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
-         EVP_MD_CTX_reset(pThis);
- # else
-         EVP_MD_CTX_cleanup(pThis);
-@@ -616,7 +616,7 @@ static DECLCALLBACK(int) rtCrDigestOsslEvp_Init(void *pvState, void *pvOpaque, b
- static DECLCALLBACK(void) rtCrDigestOsslEvp_Delete(void *pvState)
- {
-     EVP_MD_CTX *pThis = (EVP_MD_CTX *)pvState;
--# if OPENSSL_VERSION_NUMBER >= 0x10100000
-+# if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
-     EVP_MD_CTX_reset(pThis);
- # else
-     EVP_MD_CTX_cleanup(pThis);
-@@ -661,13 +661,13 @@ static RTCRDIGESTDESC const g_rtCrDigestOpenSslDesc =
-     NULL,
-     RTDIGESTTYPE_UNKNOWN,
-     EVP_MAX_MD_SIZE,
--# if OPENSSL_VERSION_NUMBER >= 0x10100000
-+# if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
-     0,
- # else
-     sizeof(EVP_MD_CTX),
- # endif
-     0,
--# if OPENSSL_VERSION_NUMBER >= 0x10100000
-+# if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
-     rtCrDigestOsslEvp_New,
-     rtCrDigestOsslEvp_Free,
- # else
diff --git a/pkgs/applications/virtualization/virtualbox/upstream-info.json b/pkgs/applications/virtualization/virtualbox/upstream-info.json
index 3a386004a3fd..d861a7e79324 100644
--- a/pkgs/applications/virtualization/virtualbox/upstream-info.json
+++ b/pkgs/applications/virtualization/virtualbox/upstream-info.json
@@ -1,8 +1,8 @@
 {
   "__NOTE": "Generated using update.py from the same directory.",
-  "extpack": "607ac3636bd49a738d5c48159b39261369b5487f71fb10afa2ecf869627a12de",
-  "extpackRev": "110634",
-  "guest": "cbcf9b9b1000e09911b3d20e1efe529aef8a945cf130f6abffc14a39522cc1ed",
-  "main": "2e0112b0d85841587b8f212e6ba8f6c35b31e1cce6b6999497dc917cd37e6911",
-  "version": "5.1.6"
+  "extpack": "d28bcd01c14eb07eedd2b964d1abe4876f0a7e0e89530e7ba285a5d6267bf322",
+  "extpackRev": "111374",
+  "guest": "347fd39df6ddee8079ad41fbc038e2fb64952a40255d75292e8e49a0a0cbf657",
+  "main": "e447031de468aee746529b2cf60768922f9beff22a13c54284aa430f5e925933",
+  "version": "5.1.8"
 }
diff --git a/pkgs/applications/virtualization/xen/generic.nix b/pkgs/applications/virtualization/xen/generic.nix
index 2f65322c3563..a697e2aa7ef4 100644
--- a/pkgs/applications/virtualization/xen/generic.nix
+++ b/pkgs/applications/virtualization/xen/generic.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, which, zlib, pkgconfig, SDL, openssl
 , libuuid, gettext, ncurses, dev86, iasl, pciutils, bzip2
-, lvm2, utillinux, procps, texinfo, perl, pythonPackages
+, lvm2, utillinux, procps, texinfo, perl, python2Packages
 , glib, bridge-utils, xorg, pixman, iproute, udev, bison
 , flex, cmake, ocamlPackages, figlet, libaio, yajl
 , checkpolicy, transfig, glusterfs, acl, fetchgit, xz, spice
@@ -38,16 +38,14 @@ stdenv.mkDerivation {
   buildInputs =
     [ which zlib pkgconfig SDL openssl libuuid gettext ncurses
       dev86 iasl pciutils bzip2 xz texinfo perl yajl
-      pythonPackages.python pythonPackages.wrapPython
+      python2Packages.python python2Packages.wrapPython
       glib bridge-utils pixman iproute udev bison xorg.libX11
       flex ocamlPackages.ocaml ocamlPackages.findlib figlet libaio
-      checkpolicy pythonPackages.markdown transfig
+      checkpolicy python2Packages.markdown transfig
       glusterfs acl cmake spice spice_protocol usbredir
       alsaLib quilt
     ];
 
-  pythonPath = [ pythonPackages.curses ];
-
   hardeningDisable = [ "stackprotector" "fortify" "pic" ];
 
   patches = stdenv.lib.optionals ((xenserverPatched == false) && (builtins.hasAttr "xenPatches" xenConfig)) xenConfig.xenPatches;
diff --git a/pkgs/applications/window-managers/jwm/default.nix b/pkgs/applications/window-managers/jwm/default.nix
index c3425afd9880..47130ac71ece 100644
--- a/pkgs/applications/window-managers/jwm/default.nix
+++ b/pkgs/applications/window-managers/jwm/default.nix
@@ -1,15 +1,17 @@
-{ stdenv, fetchurl, pkgconfig, automake, autoconf, libtool, gettext, which,
-  xorg, libX11, libXext, libXinerama, libXpm, libXft, libXau, libXdmcp,
-  libXmu, libpng, libjpeg, expat, xproto, xextproto, xineramaproto, librsvg,
-  freetype, fontconfig }:
+{ stdenv, fetchFromGitHub, pkgconfig, automake, autoconf, libtool,
+  gettext, which, xorg, libX11, libXext, libXinerama, libXpm, libXft,
+  libXau, libXdmcp, libXmu, libpng, libjpeg, expat, xproto, xextproto,
+  xineramaproto, librsvg, freetype, fontconfig }:
 
 stdenv.mkDerivation rec {
   name = "jwm-${version}";
-  version = "1548";
+  version = "1563";
   
-  src = fetchurl {
-     url = "https://github.com/joewing/jwm/archive/s${version}.tar.gz";
-     sha256 = "1ih5y7567vwcbnkjwm3cc9iq4n9rzz818mkh6ryli9ld230hla5r";
+  src = fetchFromGitHub {
+    owner = "joewing";
+    repo = "jwm";
+    rev = "s${version}";
+    sha256 = "0xfrsk0cffc0fmlmq1340ylzdcmancn2bwgzv6why3gklxplsp9z";
   };
 
   nativeBuildInputs = [ pkgconfig automake autoconf libtool gettext which ];
diff --git a/pkgs/applications/window-managers/qtile/default.nix b/pkgs/applications/window-managers/qtile/default.nix
index d170c9b74785..4b9da41b028c 100644
--- a/pkgs/applications/window-managers/qtile/default.nix
+++ b/pkgs/applications/window-managers/qtile/default.nix
@@ -31,7 +31,7 @@ python27Packages.buildPythonApplication rec {
 
   buildInputs = [ pkgconfig glib libxcb cairo pango python27Packages.xcffib ];
 
-  pythonPath = with python27Packages; [ xcffib cairocffi-xcffib trollius readline];
+  pythonPath = with python27Packages; [ xcffib cairocffi-xcffib trollius ];
 
   postInstall = ''
     wrapProgram $out/bin/qtile \
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 8a9bd3ecb4d5..c8e3d8b4cc82 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -252,10 +252,10 @@ stdenv.mkDerivation {
 
       # some linkers on some platforms don't support specific -z flags
       hardening_unsupported_flags=""
-      if [[ "$($ldPath/ld -z now 2>&1 || true)" =~ "unknown option" ]]; then
+      if [[ "$($ldPath/ld -z now 2>&1 || true)" =~ un(recognized|known)\ option ]]; then
         hardening_unsupported_flags+=" bindnow"
       fi
-      if [[ "$($ldPath/ld -z relro 2>&1 || true)" =~ "unknown option" ]]; then
+      if [[ "$($ldPath/ld -z relro 2>&1 || true)" =~ un(recognized|known)\ option ]]; then
         hardening_unsupported_flags+=" relro"
       fi
 
diff --git a/pkgs/data/fonts/unifont/default.nix b/pkgs/data/fonts/unifont/default.nix
index f18305ea3e6a..b4078720d0a3 100644
--- a/pkgs/data/fonts/unifont/default.nix
+++ b/pkgs/data/fonts/unifont/default.nix
@@ -2,16 +2,16 @@
 
 stdenv.mkDerivation rec {
   name = "unifont-${version}";
-  version = "9.0.02";
+  version = "9.0.03";
 
   ttf = fetchurl {
     url = "http://fossies.org/linux/unifont/font/precompiled/${name}.ttf";
-    sha256 = "14a254gpfyr2ssmbxqwfvh6166vc4klnx2vgz4nybx52bnr9qfkm";
+    sha256 = "00j97r658xl33zgi66glgbx2s7j9q52cj4iq7z1rrf3p38xzgbff";
   };
 
   pcf = fetchurl {
     url = "http://fossies.org/linux/unifont/font/precompiled/${name}.pcf.gz";
-    sha256 = "07wn2hlx1x22d2nil0zgsrlgy9b2hdhwly37sr70shp8lkba7wn2";
+    sha256 = "1w3gaz8afc3q7svgm4hmgjhvi9pxkmgsib8sscgi52c7ff0mhq9f";
   };
 
   buildInputs = [ mkfontscale mkfontdir ];
diff --git a/pkgs/data/fonts/unifont_upper/default.nix b/pkgs/data/fonts/unifont_upper/default.nix
index 27440a2a95da..7f7b53526e50 100644
--- a/pkgs/data/fonts/unifont_upper/default.nix
+++ b/pkgs/data/fonts/unifont_upper/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "unifont_upper-${version}";
-  version = "9.0.01";
+  version = "9.0.03";
 
   ttf = fetchurl {
-    url = "http://unifoundry.com/pub/unifont-9.0.01/font-builds/${name}.ttf";
-    sha256 = "06b7na4vb2fjn0zn14bmarzn6vb3ndkysixc89kmb2cc24kfpix1";
+    url = "http://unifoundry.com/pub/unifont-${version}/font-builds/${name}.ttf";
+    sha256 = "015v39y6nnyz4ld006349jzk9isyaqp4cnvmz005ylfnicl4zwhi";
   };
 
   phases = "installPhase";
diff --git a/pkgs/desktops/gnome-3/3.22/apps/accerciser/default.nix b/pkgs/desktops/gnome-3/3.22/apps/accerciser/default.nix
new file mode 100644
index 000000000000..7a5ab769cc96
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/accerciser/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, itstool, libxml2, python3Packages, at_spi2_core
+, dbus, intltool, libwnck3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) src name;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook itstool libxml2 python3Packages.python python3Packages.pyatspi
+    python3Packages.pygobject3 python3Packages.ipython
+    at_spi2_core dbus intltool libwnck3 gnome3.defaultIconTheme
+  ];
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Accerciser;
+    description = "Interactive Python accessibility explorer";
+    maintainers = gnome3.maintainers;
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/accerciser/src.nix b/pkgs/desktops/gnome-3/3.22/apps/accerciser/src.nix
new file mode 100644
index 000000000000..20bd00839649
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/accerciser/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "accerciser-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/accerciser/3.22/accerciser-3.22.0.tar.xz;
+    sha256 = "883306274442c7ecc076b24afca5190c835c40871ded1b9790da69347e9ca3c5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/bijiben/default.nix b/pkgs/desktops/gnome-3/3.22/apps/bijiben/default.nix
new file mode 100644
index 000000000000..00895f9a2bb2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/bijiben/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, pkgconfig, glib
+, evolution_data_server, evolution, sqlite
+, makeWrapper, itstool, desktop_file_utils
+, clutter_gtk, libuuid, webkitgtk, zeitgeist
+, gnome3, librsvg, gdk_pixbuf, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  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.defaultIconTheme librsvg
+                  evolution_data_server evolution sqlite ];
+
+  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 = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/bijiben/src.nix b/pkgs/desktops/gnome-3/3.22/apps/bijiben/src.nix
new file mode 100644
index 000000000000..b2c36c3d7aed
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/bijiben/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "bijiben-3.21.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/bijiben/3.21/bijiben-3.21.2.tar.xz;
+    sha256 = "d7f05abd82da837d8d48d9f7acc6035a289d934c722fc89870d17007ba158e0d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/cheese/default.nix b/pkgs/desktops/gnome-3/3.22/apps/cheese/default.nix
new file mode 100644
index 000000000000..b5f70d84e520
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/cheese/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra_gtk3
+, pkgconfig, gtk3, glib, clutter_gtk, clutter-gst, udev, gst_all_1, itstool
+, libgudev
+, adwaita-icon-theme, librsvg, gdk_pixbuf, gnome3, gnome_desktop, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 glib intltool wrapGAppsHook gnome-video-effects itstool
+                  gdk_pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer libxml2
+                  gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome_desktop
+                  gst_all_1.gst-plugins-bad clutter_gtk clutter-gst
+                  libcanberra_gtk3 libgudev ];
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Cheese;
+    description = "Take photos and videos with your webcam, with fun graphical effects";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/cheese/src.nix b/pkgs/desktops/gnome-3/3.22/apps/cheese/src.nix
new file mode 100644
index 000000000000..4a25b0153932
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/cheese/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "cheese-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/cheese/3.22/cheese-3.22.0.tar.xz;
+    sha256 = "0b52e4b0021cfb86a5abbd17356b72693f724892165d91b3ff7f5031a1ce53ea";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/evolution/default.nix b/pkgs/desktops/gnome-3/3.22/apps/evolution/default.nix
new file mode 100644
index 000000000000..0b72bf5965e0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/evolution/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
+, pkgconfig, gtk3, glib, libnotify, gtkspell3
+, wrapGAppsHook, itstool, shared_mime_info, libical, db, gcr, sqlite
+, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool
+, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit, dconf }:
+
+let
+  majVer = gnome3.version;
+in stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
+                            gnome3.evolution_data_server ];
+
+  propagatedBuildInputs = [ gnome3.gtkhtml ];
+
+  buildInputs = [ gtk3 glib intltool itstool libxml2 libtool
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg db icu
+                  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
+                  nss nspr libnotify procps highlight gnome3.libgweather
+                  gnome3.gsettings_desktop_schemas dconf
+                  gnome3.libgnome_keyring gnome3.glib_networking ];
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar"
+                     "--disable-libcryptui" ];
+
+  NIX_CFLAGS_COMPILE = "-I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Evolution;
+    description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+    requiredSystemFeatures = [ "big-parallel" ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/evolution/src.nix b/pkgs/desktops/gnome-3/3.22/apps/evolution/src.nix
new file mode 100644
index 000000000000..a3e0121f6f1d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/evolution/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "evolution-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/evolution/3.22/evolution-3.22.0.tar.xz;
+    sha256 = "3e4742032b450cd8752097ba7e56302134e3653d510d4c53196654fb353ebbeb";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/file-roller/default.nix b/pkgs/desktops/gnome-3/3.22/apps/file-roller/default.nix
new file mode 100644
index 000000000000..181888293777
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/file-roller/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive
+, attr, bzip2, acl, wrapGAppsHook, librsvg, gdk_pixbuf, libnotify, nautilus }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ glib gnome3.gtk intltool itstool libxml2 libarchive
+                  gnome3.defaultIconTheme attr bzip2 acl gdk_pixbuf librsvg
+                  gnome3.dconf libnotify nautilus ];
+
+  installFlags = [ "nautilus_extensiondir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/FileRoller;
+    description = "Archive manager for the GNOME desktop environment";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/file-roller/src.nix b/pkgs/desktops/gnome-3/3.22/apps/file-roller/src.nix
new file mode 100644
index 000000000000..029cdc2064d6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/file-roller/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "file-roller-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/file-roller/3.22/file-roller-3.22.0.tar.xz;
+    sha256 = "5065b71d43deb3dc3c7af6efa3f3b1188a63bfafb213be86af1d262b1dc11d42";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gedit/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gedit/default.nix
new file mode 100644
index 000000000000..69056e28c260
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gedit/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl, enchant, isocodes
+, pkgconfig, gtk3, glib
+, bash, wrapGAppsHook, itstool, libsoup, libxml2
+, gnome3, librsvg, gdk_pixbuf, file, gspell }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ gtk3 glib intltool itstool enchant isocodes
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg libsoup
+                  gnome3.libpeas gnome3.gtksourceview libxml2
+                  gnome3.gsettings_desktop_schemas gnome3.dconf file gspell ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ gnome3.libpeas gnome3.gtksourceview ]}")
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Gedit;
+    description = "Official text editor of the GNOME desktop environment";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gedit/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gedit/src.nix
new file mode 100644
index 000000000000..3fdc6cfaa685
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gedit/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gedit-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gedit/3.22/gedit-3.22.0.tar.xz;
+    sha256 = "063b5a0b5dcc8f540f6e8c3ea1c22cf8a3a19edffc25315a1b6bc51d462b3f45";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/glade/default.nix b/pkgs/desktops/gnome-3/3.22/apps/glade/default.nix
new file mode 100644
index 000000000000..a0f8d9669556
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/glade/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, intltool, fetchurl, python
+, pkgconfig, gtk3, glib
+, makeWrapper, itstool, libxml2, docbook_xsl
+, gnome3, librsvg, gdk_pixbuf, libxslt }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 python
+                  gnome3.gsettings_desktop_schemas makeWrapper docbook_xsl
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg libxslt ];
+
+  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 = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/glade/src.nix b/pkgs/desktops/gnome-3/3.22/apps/glade/src.nix
new file mode 100644
index 000000000000..d32dbd94d059
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/glade/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "glade-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/glade/3.20/glade-3.20.0.tar.xz;
+    sha256 = "82d96dca5dec40ee34e2f41d49c13b4ea50da8f32a3a49ca2da802ff14dc18fe";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/default.nix
new file mode 100644
index 000000000000..edb0075fdae5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, itstool, libvirt-glib
+, glib, gobjectIntrospection, libxml2, gtk3, gtkvnc, libvirt, spice_gtk
+, spice_protocol, libuuid, libsoup, libosinfo, systemd, tracker, vala_0_32
+, libcap_ng, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg
+, desktop_file_utils, mtools, cdrkit, libcdio, numactl, xen
+, libusb, libarchive, acl, libgudev, qemu
+}:
+
+# TODO: ovirt (optional)
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  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_0_32 libcap_ng libcap yajl gmp
+    gdbm cyrus_sasl gnome3.defaultIconTheme libusb libarchive
+    librsvg desktop_file_utils acl libgudev numactl xen
+  ];
+
+  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 : "${stdenv.lib.makeBinPath [ mtools cdrkit libcdio qemu ]}"
+    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.22/apps/gnome-boxes/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/src.nix
new file mode 100644
index 000000000000..7fa6fbf9da6b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-boxes/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-boxes-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-boxes/3.22/gnome-boxes-3.22.0.tar.xz;
+    sha256 = "9f02e3032f8b6aaa77d9eab6aabe7fc09902be429e266ad9fd4185b94ac867ee";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/default.nix
new file mode 100644
index 000000000000..fbd5d748f5eb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, intltool, evolution_data_server, sqlite, libxml2, libsoup
+, glib, gnome_online_accounts, gsettings_desktop_schemas }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool evolution_data_server
+    sqlite libxml2 libsoup glib gnome3.defaultIconTheme gnome_online_accounts
+    gsettings_desktop_schemas
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Calendar;
+    description = "Simple and beautiful calendar application for GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/src.nix
new file mode 100644
index 000000000000..b1ff598acaf6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-calendar/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-calendar-3.22.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-calendar/3.22/gnome-calendar-3.22.1.tar.xz;
+    sha256 = "e6a3670c63122c4b37fbe243a54486e019c1bfd9a27c709234fb81b9e0c13360";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/default.nix
new file mode 100644
index 000000000000..4571a5d50e8b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, intltool, gjs, gdk_pixbuf, librsvg }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool gjs gdk_pixbuf
+    librsvg gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Design/Apps/CharacterMap;
+    description = "Simple utility application to find and insert unusual characters";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/src.nix
new file mode 100644
index 000000000000..d4b90eb47682
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-characters/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-characters-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-characters/3.22/gnome-characters-3.22.0.tar.xz;
+    sha256 = "0778b625646d6d934cf252d58a2e16403889da6bfc237bdca1d3cb3258f63d4e";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/default.nix
new file mode 100644
index 000000000000..e39614e765d6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, intltool, fetchurl, libgweather, libnotify
+, pkgconfig, gtk3, glib, gsound
+, makeWrapper, itstool, libcanberra_gtk3, libtool
+, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas makeWrapper
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gnome_desktop gnome3.geocode_glib geoclue2
+                  libgweather libnotify libtool gsound
+                  wrapGAppsHook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Clocks;
+    description = "Clock application designed for GNOME 3";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/src.nix
new file mode 100644
index 000000000000..81a857cf1c03
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-clocks/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-clocks-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-clocks/3.22/gnome-clocks-3.22.0.tar.xz;
+    sha256 = "cdcd4ccd9716e7f12487a80d1b173aa28d9bde536d6274fbbc31acd6606c0511";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/default.nix
new file mode 100644
index 000000000000..4840d200cf99
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, intltool, fetchurl, evince, gjs
+, pkgconfig, gtk3, glib
+, makeWrapper, itstool, libxslt, webkitgtk
+, gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl
+, gobjectIntrospection, json_glib, inkscape, poppler_utils
+, gmp, desktop_file_utils, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  configureFlags = [ "--enable-getting-started" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxslt
+                  docbook_xsl desktop_file_utils inkscape poppler_utils
+                  gnome3.gsettings_desktop_schemas makeWrapper gmp
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg evince
+                  libsoup webkitgtk gjs gobjectIntrospection gnome3.rest
+                  gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts
+                  gnome3.gnome_desktop gnome3.libzapojit json_glib
+                  wrapGAppsHook ]
+                ++ (with gnome3; [ libgepub ]);
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.dev}/bin/gapplication"
+
+    gappsWrapperArgs+=(--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')
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Documents;
+    description = "Document manager application designed to work with GNOME 3";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/src.nix
new file mode 100644
index 000000000000..ca9dca1ff4ca
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-documents/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-documents-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-documents/3.22/gnome-documents-3.22.0.tar.xz;
+    sha256 = "edf5cd6b7b7f5847217b60885358030598e551010087d2a9d1765ae6777041ad";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/default.nix
new file mode 100644
index 000000000000..0c75ebd7c783
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ intltool itstool libxml2 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://live.gnome.org/DocumentationProject;
+    description = "Help a new user get started in GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.cc-by-sa-30;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/src.nix
new file mode 100644
index 000000000000..4cb82624254a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-getting-started-docs/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-getting-started-docs-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-getting-started-docs/3.22/gnome-getting-started-docs-3.22.0.tar.xz;
+    sha256 = "22b11fb4f6fd9f6d595dc01d5989fb1652c9a63732a4d1c997f3f5f82da75722";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/default.nix
new file mode 100644
index 000000000000..d4135fdb1bae
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, intltool, itstool, libxml2, systemd }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = [ "--disable-tests" ];
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2
+    systemd gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Logs;
+    description = "A log viewer for the systemd journal";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/src.nix
new file mode 100644
index 000000000000..995120855d53
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-logs/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-logs-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-logs/3.22/gnome-logs-3.22.0.tar.xz;
+    sha256 = "114da79579d69840904970b2b3a72dc8f6be76a5673174b6628b42fd6781eb4f";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/default.nix
new file mode 100644
index 000000000000..8625f21f3db7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, gtk3
+, gobjectIntrospection, gdk_pixbuf, librsvg, autoreconfHook
+, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, file, libsoup
+, webkitgtk }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig intltool gobjectIntrospection wrapGAppsHook
+                  gtk3 geoclue2 gnome3.gjs gnome3.libgee folks gfbgraph
+                  gnome3.geocode_glib libchamplain file libsoup
+                  gdk_pixbuf librsvg autoreconfHook
+                  gnome3.gsettings_desktop_schemas gnome3.evolution_data_server
+                  gnome3.gnome_online_accounts gnome3.defaultIconTheme
+                  webkitgtk ];
+
+  patches = [ ./soup.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Maps;
+    description = "A map application for GNOME 3";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/soup.patch b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/soup.patch
new file mode 100644
index 000000000000..ef8c7a1287db
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/soup.patch
@@ -0,0 +1,12 @@
+--- gnome-maps-3.18.0/configure.ac.orig	2015-09-24 18:38:31.912498368 +0200
++++ gnome-maps-3.18.0/configure.ac	2015-09-24 18:38:40.783320413 +0200
+@@ -50,8 +50,9 @@
+     folks                        >= $FOLKS_MIN_VERSION
+     geocode-glib-1.0             >= $GEOCODE_MIN_VERSION
+     champlain-0.12               >= $CHAMPLAIN_MIN_VERSION
+     libxml-2.0
+     rest-0.7
++    libsoup-2.4
+ ])
+ AC_SUBST(GNOME_MAPS_LIB_CFLAGS)
+ AC_SUBST(GNOME_MAPS_LIB_LIBS)
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/src.nix
new file mode 100644
index 000000000000..ef668faef533
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-maps/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-maps-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-maps/3.22/gnome-maps-3.22.0.tar.xz;
+    sha256 = "7ce98a683f1c38d3ba1b5d68c7d05add9f9366774678fd50fdeeda6987163c39";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-music/default.nix
new file mode 100644
index 000000000000..ea8f15fd4e59
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-music/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker
+, libxml2, python3Packages, libnotify, wrapGAppsHook
+, pkgconfig, gtk3, glib, cairo
+, makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg python3Packages.python
+                  gnome3.grilo gnome3.grilo-plugins gnome3.totem-pl-parser libxml2 libnotify
+                  python3Packages.pycairo python3Packages.dbus-python python3Packages.requests2
+                  python3Packages.pygobject3 gst_all_1.gstreamer gst_all_1.gst-plugins-base
+                  gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad wrapGAppsHook
+                  gnome3.gsettings_desktop_schemas makeWrapper tracker ];
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Music;
+    description = "Music player and management application for the GNOME desktop environment";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-music/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-music/src.nix
new file mode 100644
index 000000000000..5b3a79a111a3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-music/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-music-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-music/3.22/gnome-music-3.22.0.tar.xz;
+    sha256 = "170685ffa89556951b9fb0b9225b2bca863e54348d4079a56b8e5c4eeafa9b03";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-nettool/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-nettool/default.nix
new file mode 100644
index 000000000000..4c152777f2cb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-nettool/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, libgtop, intltool, itstool, libxml2, nmap, inetutils }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-nettool-3.8.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-nettool/3.8/${name}.tar.xz";
+    sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h";
+  };
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook libgtop intltool itstool libxml2
+    gnome3.defaultIconTheme
+  ];
+
+  propagatedUserEnvPkgs = [ nmap inetutils ];
+
+  meta = with stdenv.lib; {
+    homepage = http://projects.gnome.org/gnome-network;
+    description = "A collection of networking tools";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/default.nix
new file mode 100644
index 000000000000..df7e23ef9d4f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl, exempi, libxml2
+, pkgconfig, gtk3, glib
+, makeWrapper, itstool, gegl, babl, lcms2
+, desktop_file_utils, gmp, libmediaart, wrapGAppsHook
+, gnome3, librsvg, gdk_pixbuf, libexif, gexiv2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/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.defaultIconTheme librsvg exempi
+                  gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo
+                  gnome3.gnome_online_accounts gnome3.gnome_desktop
+                  lcms2 libexif gnome3.tracker libxml2 desktop_file_utils
+                  wrapGAppsHook gexiv2 ];
+
+  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 = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/src.nix
new file mode 100644
index 000000000000..f28d626ff940
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-photos/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-photos-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-photos/3.22/gnome-photos-3.22.0.tar.xz;
+    sha256 = "568329142855901a85f325ee014176e24f735b15a496842bcd31f5cb2615ba53";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/default.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/default.nix
new file mode 100644
index 000000000000..dbd5377d5bf5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs
+, libgweather, intltool, itstool, geoclue2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook gjs intltool itstool
+    libgweather gnome3.defaultIconTheme geoclue2 gnome3.gsettings_desktop_schemas
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Weather;
+    description = "Access current weather conditions and forecasts";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/src.nix b/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/src.nix
new file mode 100644
index 000000000000..8cfab25381ee
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/gnome-weather/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-weather-3.20.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-weather/3.20/gnome-weather-3.20.2.tar.xz;
+    sha256 = "7823ca7c08fa852232b98c2517830e3bd9b0ab80c9ac83f182c18ec140a5c18b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/nautilus-sendto/default.nix b/pkgs/desktops/gnome-3/3.22/apps/nautilus-sendto/default.nix
new file mode 100644
index 000000000000..093900dcb7ab
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/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 = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/polari/default.nix b/pkgs/desktops/gnome-3/3.22/apps/polari/default.nix
new file mode 100644
index 000000000000..1927585fd321
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/polari/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, intltool, fetchurl, gdk_pixbuf, adwaita-icon-theme
+, telepathy_glib, gjs, itstool, telepathy_idle, libxml2
+, pkgconfig, gtk3, glib, librsvg, gnome3, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ telepathy_idle ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool adwaita-icon-theme wrapGAppsHook
+                  telepathy_glib gjs gdk_pixbuf librsvg libxml2 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Polari;
+    description = "IRC chat client designed to integrate with the GNOME desktop";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/polari/src.nix b/pkgs/desktops/gnome-3/3.22/apps/polari/src.nix
new file mode 100644
index 000000000000..a8c4b303c383
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/polari/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "polari-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/polari/3.22/polari-3.22.0.tar.xz;
+    sha256 = "90ea3db7ed0a03d46d9376e3201b4332f56d6149bc284379c367159094b73818";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/seahorse/default.nix b/pkgs/desktops/gnome-3/3.22/apps/seahorse/default.nix
new file mode 100644
index 000000000000..e59df06f8a05
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/seahorse/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, intltool, fetchurl, vala_0_32
+, pkgconfig, gtk3, glib
+, makeWrapper, itstool, gnupg, libsoup
+, gnome3, librsvg, gdk_pixbuf, gpgme
+, libsecret, avahi, p11_kit, openssh }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gcr
+                  gnome3.gsettings_desktop_schemas makeWrapper gnupg
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg gpgme
+                  libsecret avahi libsoup p11_kit vala_0_32 gnome3.gcr
+                  openssh ];
+
+  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 = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/seahorse/src.nix b/pkgs/desktops/gnome-3/3.22/apps/seahorse/src.nix
new file mode 100644
index 000000000000..0ae195a0a7ba
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/seahorse/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "seahorse-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/seahorse/3.20/seahorse-3.20.0.tar.xz;
+    sha256 = "e2b07461ed54a8333e5628e9b8e517ec2b731068377bf376570aad998274c6df";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/vinagre/default.nix b/pkgs/desktops/gnome-3/3.22/apps/vinagre/default.nix
new file mode 100644
index 000000000000..8b8b6248642c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/vinagre/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtkvnc, intltool
+, libsecret, itstool, makeWrapper, librsvg }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 vte libxml2 gtkvnc intltool libsecret
+                  itstool makeWrapper gnome3.defaultIconTheme librsvg ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/vinagre" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Vinagre;
+    description = "Remote desktop viewer for GNOME";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/apps/vinagre/src.nix b/pkgs/desktops/gnome-3/3.22/apps/vinagre/src.nix
new file mode 100644
index 000000000000..3d1357c49898
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/apps/vinagre/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "vinagre-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/vinagre/3.22/vinagre-3.22.0.tar.xz;
+    sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix
new file mode 100644
index 000000000000..3c3a05dc3af8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor_icon_theme }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # For convenience, we can specify adwaita-icon-theme only in packages
+  propagatedBuildInputs = [ hicolor_icon_theme ];
+
+  buildInputs = [ gdk_pixbuf librsvg ];
+
+  nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
+
+  # remove a tree of dirs with no files within
+  postInstall = '' rm -rf "$out/locale" '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix
new file mode 100644
index 000000000000..a48b404ceb69
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/adwaita-icon-theme/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "adwaita-icon-theme-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/adwaita-icon-theme/3.22/adwaita-icon-theme-3.22.0.tar.xz;
+    sha256 = "c18bf6e26087d9819a962c77288b291efab25d0419b73d909dd771716a45dcb7";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix b/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix
new file mode 100644
index 000000000000..f7a0ff473cc1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/baobab/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl, vala_0_32, libgtop
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ vala_0_32 pkgconfig gtk3 glib libgtop intltool itstool libxml2
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/baobab" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Baobab;
+    description = "Graphical application to analyse disk usage in any Gnome environment";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix b/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix
new file mode 100644
index 000000000000..df4cefc48168
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/baobab/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "baobab-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/baobab/3.22/baobab-3.22.0.tar.xz;
+    sha256 = "796e784886d5bdf2e9d8ac94d74d5f94e055f4285ef54dc16552fb9c9b9c3e99";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix
new file mode 100644
index 000000000000..d63b6e86af3b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/caribou/default.nix
@@ -0,0 +1,31 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2, autoconf
+, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core, automake }:
+
+let
+  majorVersion = "0.4";
+in
+stdenv.mkDerivation rec {
+  name = "caribou-${majorVersion}.21";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/caribou/${majorVersion}/${name}.tar.xz";
+    sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww";
+  };
+
+  buildInputs = with gnome3;
+    [ glib pkgconfig gtk clutter at_spi2_core dbus pythonPackages.python automake
+      pythonPackages.pygobject3 libxml2 libXtst gtk2 intltool libxslt autoconf ];
+
+  propagatedBuildInputs = [ gnome3.libgee libxklavier ];
+
+  preBuild = ''
+    patchShebangs .
+    substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix
new file mode 100644
index 000000000000..6e0184e134e2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
+, libxml2, intltool, docbook_xsl_ns, docbook_xsl, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ vala_0_32 libxslt glib dbus_glib gnome3.gtk libxml2 gnome3.defaultIconTheme
+                  intltool docbook_xsl docbook_xsl_ns gnome3.dconf ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix
new file mode 100644
index 000000000000..64e19864536f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf-editor/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "dconf-editor-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/dconf-editor/3.22/dconf-editor-3.22.0.tar.xz;
+    sha256 = "4ca3c2c3836f4c944f161540d1521507dab8e7bee0cac7d543560808efb9246f";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix b/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix
new file mode 100644
index 000000000000..02c60256e15b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/dconf/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, vala_0_32, libxslt, pkgconfig, glib, dbus_glib, gnome3
+, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }:
+
+let
+  majorVersion = "0.26";
+in
+stdenv.mkDerivation rec {
+  name = "dconf-${version}";
+  version = "${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/dconf/${majorVersion}/${name}.tar.xz";
+    sha256 = "1jaqsr1r0grpd25rbsc2v3vb0sc51lia9w31wlqswgqsncp2k0w6";
+  };
+
+  buildInputs = [ vala_0_32 libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2
+                  intltool docbook_xsl docbook_xsl_ns makeWrapper ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix
new file mode 100644
index 000000000000..9a29d11f1aea
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/empathy/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, gnome3, gdk_pixbuf
+, dbus_glib, dbus_libs, telepathy_glib, telepathy_farstream
+, clutter_gtk, clutter-gst, gst_all_1, cogl, gnome_online_accounts
+, gcr, libsecret, folks, libpulseaudio, telepathy_mission_control
+, telepathy_logger, libnotify, clutter, libsoup, gnutls
+, evolution_data_server
+, libcanberra_gtk3, p11_kit, farstream, libtool, shared_mime_info
+, bash, makeWrapper, itstool, libxml2, libxslt, icu, libgee  }:
+
+# TODO: enable more features
+
+let
+  majorVersion = "3.12";
+in
+stdenv.mkDerivation rec {
+  name = "empathy-${majorVersion}.11";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/empathy/${majorVersion}/${name}.tar.xz";
+    sha256 = "11yl8msyf017197fm6h15yw159yjp9i08566l967yashbx7gzr6i";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard
+                            gnome_online_accounts shared_mime_info ];
+  propagatedBuildInputs = [ folks telepathy_logger evolution_data_server
+                            telepathy_mission_control ];
+  buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool
+                  libxml2 libxslt icu file makeWrapper
+                  telepathy_glib clutter_gtk clutter-gst cogl
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base
+                  gcr libsecret libpulseaudio gnome3.yelp_xsl gdk_pixbuf
+                  libnotify clutter libsoup gnutls libgee p11_kit
+                  libcanberra_gtk3 telepathy_farstream farstream
+                  gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas
+                  file libtool librsvg ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.dev}/include/dbus-1.0"
+                         "-I${dbus_libs.dev}/lib/dbus-1.0/include" ];
+
+  preFixup = ''
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Empathy;
+    description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
+    maintainers = gnome3.maintainers;
+    # TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/eog/default.nix b/pkgs/desktops/gnome-3/3.22/core/eog/default.nix
new file mode 100644
index 000000000000..23759e3bf90e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/eog/default.nix
@@ -0,0 +1,20 @@
+{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3
+, shared_mime_info, wrapGAppsHook, librsvg, libexif }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = with gnome3;
+    [ intltool itstool libxml2 libjpeg gtk glib libpeas librsvg
+      gsettings_desktop_schemas shared_mime_info adwaita-icon-theme
+      gnome_desktop libexif dconf ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/EyeOfGnome;
+    platforms = platforms.linux;
+    description = "GNOME image viewer";
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/eog/src.nix b/pkgs/desktops/gnome-3/3.22/core/eog/src.nix
new file mode 100644
index 000000000000..f3995e6bc2c6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/eog/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "eog-3.20.4";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/eog/3.20/eog-3.20.3.tar.xz;
+    sha256 = "09ic1ndvl31jnlsmigd5dgdv262ybq61ik0xh35kmvgcklw8qc0n";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix
new file mode 100644
index 000000000000..9d36648d5cdc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/epiphany/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu
+, bash, wrapGAppsHook, gnome3, libwnck3, libxml2, libxslt, libtool
+, webkitgtk, libsoup, glib_networking, libsecret, gnome_desktop, libnotify, p11_kit
+, sqlite, gcr, avahi, nss, isocodes, itstool, file, which
+, gdk_pixbuf, librsvg, gnome_common }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Tests need an X display
+  configureFlags = [ "--disable-static --disable-tests" ];
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig file wrapGAppsHook ];
+
+  buildInputs = [ gtk3 glib intltool libwnck3 libxml2 libxslt pkgconfig file
+                  webkitgtk libsoup libsecret gnome_desktop libnotify libtool
+                  sqlite isocodes nss itstool p11_kit nspr icu gnome3.yelp_tools
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common
+                  gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf
+                  gnome3.glib_networking ];
+
+  NIX_CFLAGS_COMPILE = "-I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Epiphany;
+    description = "WebKit based web browser for GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix b/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix
new file mode 100644
index 000000000000..09ea2baf197d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/epiphany/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "epiphany-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/epiphany/3.22/epiphany-3.22.0.tar.xz;
+    sha256 = "a645d17c10a1c266d4647306ea3e5496d3ca575d2ed8152947ed77e9eb623a27";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evince/default.nix b/pkgs/desktops/gnome-3/3.22/core/evince/default.nix
new file mode 100644
index 000000000000..7629e5b56550
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evince/default.nix
@@ -0,0 +1,63 @@
+{ fetchurl, stdenv, pkgconfig, intltool, perl, perlXMLParser, libxml2
+, glib, gtk3, pango, atk, gdk_pixbuf, shared_mime_info, itstool, gnome3
+, poppler, ghostscriptX, djvulibre, libspectre, libsecret , wrapGAppsHook
+, librsvg, gobjectIntrospection
+, recentListSize ? null # 5 is not enough, allow passing a different number
+, supportXPS ? false    # Open XML Paper Specification via libgxps
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    intltool perl perlXMLParser libxml2
+    glib gtk3 pango atk gdk_pixbuf gobjectIntrospection
+    itstool gnome3.adwaita-icon-theme
+    gnome3.libgnome_keyring gnome3.gsettings_desktop_schemas
+    poppler ghostscriptX djvulibre libspectre
+    libsecret librsvg gnome3.adwaita-icon-theme gnome3.dconf
+  ] ++ stdenv.lib.optional supportXPS gnome3.libgxps;
+
+  configureFlags = [
+    "--disable-nautilus" # Do not use nautilus
+    "--enable-introspection"
+    (if supportXPS then "--enable-xps" else "--disable-xps")
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  preConfigure = with stdenv.lib;
+    optionalString doCheck ''
+      for file in test/*.py; do
+        echo "patching $file"
+        sed '1s,/usr,${python},' -i "$file"
+      done
+    '' + optionalString (recentListSize != null) ''
+      sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' shell/ev-open-recent-action.c
+      sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' shell/ev-window.c
+    '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared_mime_info}/share")
+  '';
+
+  doCheck = false; # would need pythonPackages.dogTail, which is missing
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/projects/evince/;
+    description = "GNOME's document viewer";
+
+    longDescription = ''
+      Evince is a document viewer for multiple document formats.  It
+      currently supports PDF, PostScript, DjVu, TIFF and DVI.  The goal
+      of Evince is to replace the multiple document viewers that exist
+      on the GNOME Desktop with a single simple application.
+    '';
+
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vcunat ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evince/src.nix b/pkgs/desktops/gnome-3/3.22/core/evince/src.nix
new file mode 100644
index 000000000000..36572a58e17e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evince/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "evince-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/evince/3.22/evince-3.22.0.tar.xz;
+    sha256 = "22ebabf890057e8b43020ffdebdbb57d6a586beba031838f0f0c8a596c479d46";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix
new file mode 100644
index 000000000000..b67795ea59c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/default.nix
@@ -0,0 +1,32 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, python
+, intltool, libsoup, libxml2, libsecret, icu, sqlite
+, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true, vala_0_32 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3;
+    [ pkgconfig glib python intltool libsoup libxml2 gtk gnome_online_accounts
+      gcr p11_kit libgweather libgdata gperf makeWrapper icu sqlite gsettings_desktop_schemas ]
+    ++ stdenv.lib.optional valaSupport vala_0_32;
+
+  propagatedBuildInputs = [ libsecret nss nspr libical db ];
+
+  # uoa irrelevant for now
+  configureFlags = [ "--disable-uoa" "--disable-google-auth" ]
+                   ++ stdenv.lib.optional valaSupport "--enable-vala-bindings";
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    for f in "$out/libexec/"*; do
+      wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix
new file mode 100644
index 000000000000..84817846f726
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/evolution-data-server/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "evolution-data-server-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/evolution-data-server/3.22/evolution-data-server-3.22.0.tar.xz;
+    sha256 = "8653a9a28980e661e8b91ba335dae04a0553e12611ad155bc48fb3fb3c98653d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/folks/default.nix b/pkgs/desktops/gnome-3/3.22/core/folks/default.nix
new file mode 100644
index 000000000000..171ad0774500
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/folks/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, pkgconfig, glib, gnome3, nspr, intltool
+, vala_0_32, sqlite, libxml2, dbus_glib, libsoup, nss, dbus_libs
+, telepathy_glib, evolution_data_server, libsecret, db }:
+
+# TODO: enable more folks backends
+
+let
+  majorVersion = "0.11";
+in
+stdenv.mkDerivation rec {
+  name = "folks-${majorVersion}.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/folks/${majorVersion}/${name}.tar.xz";
+    sha256 = "2a2828a7c87fd39e5786f8f2cf0ebe47576a74974f1355c478a6dc747d7bcb64";
+  };
+
+  propagatedBuildInputs = [ glib gnome3.libgee sqlite ];
+  # dbus_daemon needed for tests
+  buildInputs = [ dbus_glib telepathy_glib evolution_data_server dbus_libs
+                  vala_0_32 libsecret libxml2 libsoup nspr nss intltool db ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  configureFlags = "--disable-fatal-warnings";
+
+  NIX_CFLAGS_COMPILE = ["-I${nss.dev}/include/nss"
+                        "-I${dbus_glib.dev}/include/dbus-1.0" "-I${dbus_libs.dev}/include/dbus-1.0"];
+
+  enableParallelBuilding = true;
+
+  postBuild = "rm -rf $out/share/gtk-doc";
+
+  meta = {
+    description = "Folks";
+
+    homepage = https://wiki.gnome.org/Projects/Folks;
+
+    license = stdenv.lib.licenses.lgpl2Plus;
+
+    maintainers = gnome3.maintainers;
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix b/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix
new file mode 100644
index 000000000000..a4cb3e8c1464
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gconf/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, dbus_glib, gnome3 ? null, glib, libxml2
+, intltool, polkit, orbit, withGtk ? false }:
+
+assert withGtk -> (gnome3 != null);
+
+stdenv.mkDerivation rec {
+
+  versionMajor = "3.2";
+  versionMinor = "6";
+  moduleName   = "GConf";
+
+  origName = "${moduleName}-${versionMajor}.${versionMinor}";
+
+  name = "gconf-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${origName}.tar.xz";
+    sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr";
+  };
+
+  buildInputs = [ libxml2 polkit orbit ] ++ stdenv.lib.optional withGtk gnome3.gtk;
+  propagatedBuildInputs = [ glib dbus_glib  ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  # ToDo: ldap reported as not found but afterwards reported as supported
+
+  meta = with stdenv.lib; {
+    homepage = http://projects.gnome.org/gconf/;
+    description = "A system for storing application preferences";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix b/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix
new file mode 100644
index 000000000000..55eebf77be59
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gcr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib
+, libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk
+, gobjectIntrospection, makeWrapper, libxslt, vala_0_32, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig intltool gnupg glib gobjectIntrospection libxslt
+    libgcrypt libtasn1 dbus_glib gtk pango gdk_pixbuf atk makeWrapper vala_0_32
+  ];
+
+  propagatedBuildInputs = [ p11_kit ];
+
+  #doCheck = true;
+
+  #enableParallelBuilding = true; issues on hydra
+
+  preFixup = ''
+    wrapProgram "$out/bin/gcr-viewer" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix b/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix
new file mode 100644
index 000000000000..d166f033266c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gcr/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gcr-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gcr/3.20/gcr-3.20.0.tar.xz;
+    sha256 = "90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix
new file mode 100644
index 000000000000..51b67afb01fd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus
+, intltool, accountsservice, libX11, gnome3, systemd, gnome_session
+, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "gdm-${gnome3.version}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gdm/${gnome3.version}/${name}.tar.xz";
+    sha256 = "0mhv3q8z208qvhz00zrxlqn7w9gi5vy6w8dpjh5s2ka28l3yhbn3";
+  };
+
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X"
+    substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session'
+    substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.tools}/bin/dbus-launch'
+    substituteInPlace data/gdm.conf-custom.in --replace '#WaylandEnable=false' 'WaylandEnable=false'
+    sed 's/#Enable=true/Enable=true/' -i data/gdm.conf-custom.in
+ '';
+
+  configureFlags = [ "--localstatedir=/var" "--with-systemd=yes" "--without-plymouth"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+                     "--with-initial-vt=10" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool ];
+
+  #enableParallelBuilding = true; # problems compiling
+
+  # Disable Access Control because our X does not support FamilyServerInterpreted yet
+  patches = [ ./xserver_path.patch ./sessions_dir.patch ./disable_x_access_control.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GDM;
+    description = "A program that manages graphical display servers and handles graphical user logins";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch
new file mode 100644
index 000000000000..7691a9e86f0f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/disable_x_access_control.patch
@@ -0,0 +1,15 @@
+--- gdm-3.16.0/daemon/gdm-display.c.orig	2015-04-08 13:53:14.370274369 +0200
++++ gdm-3.16.0/daemon/gdm-display.c	2015-04-08 13:53:36.287520435 +0200
+@@ -1706,9 +1706,10 @@
+ 
+                 gdm_error_trap_push ();
+ 
+-                for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
++                /*for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+                         XAddHost (self->priv->x11_display, &host_entries[i]);
+-                }
++                }*/
++                XDisableAccessControl(self->priv->x11_display);
+ 
+                 XSync (self->priv->x11_display, False);
+                 if (gdm_error_trap_pop ()) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch
new file mode 100644
index 000000000000..b8fbad4d731d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/sessions_dir.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
+index f759d2d..d154716 100644
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -373,9 +373,12 @@ get_system_session_dirs (void)
+ #ifdef ENABLE_WAYLAND_SUPPORT
+                 DATADIR "/wayland-sessions/",
+ #endif
++                NULL,
+                 NULL
+         };
+ 
++        search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL;
++
+         return search_dirs;
+ }
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch
new file mode 100644
index 000000000000..b451d129391a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/3.16-wip/xserver_path.patch
@@ -0,0 +1,83 @@
+--- a/daemon/gdm-server.c	2014-07-30 23:00:17.786841724 +0200
++++ b/daemon/gdm-server.c	2014-07-30 23:02:10.491239180 +0200
+@@ -322,7 +322,11 @@
+ fallback:
+ #endif
+ 
+-        server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++            server->priv->command = g_strdup (g_getenv("GDM_X_SERVER"));
++        } else {
++            server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        }
+ }
+ 
+ static gboolean
+--- gdm-3.16.0/daemon/gdm-x-session.c.orig	2015-04-15 18:44:16.875743928 +0200
++++ gdm-3.16.0/daemon/gdm-x-session.c	2015-04-16 13:34:02.335708638 +0200
+@@ -207,6 +207,8 @@
+         char     *display_fd_string = NULL;
+         char     *vt_string = NULL;
+         char     *display_number;
++        int nixos_argc = 0;
++        char **nixos_argv = NULL;
+         gsize     display_number_size;
+ 
+         auth_file = prepare_auth_file ();
+@@ -236,7 +238,15 @@
+ 
+         display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
+ 
+-        g_ptr_array_add (arguments, X_SERVER);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++                int i = 0;
++                g_shell_parse_argv(g_getenv("GDM_X_SERVER"), &nixos_argc, &nixos_argv, NULL);
++                for (i = 0; i < nixos_argc; i++) {
++                        g_ptr_array_add (arguments, nixos_argv[i]);
++                }
++        } else {
++                g_ptr_array_add (arguments, X_SERVER);
++        }
+ 
+         if (vt_string != NULL) {
+                 g_ptr_array_add (arguments, vt_string);
+@@ -259,12 +269,12 @@
+         g_ptr_array_add (arguments, "-noreset");
+         g_ptr_array_add (arguments, "-keeptty");
+ 
+-        g_ptr_array_add (arguments, "-verbose");
++        /*g_ptr_array_add (arguments, "-verbose");
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "7");
+         } else {
+                 g_ptr_array_add (arguments, "3");
+-        }
++        }*/
+ 
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "-core");
+@@ -275,6 +285,9 @@
+                                                    (const char * const *) arguments->pdata,
+                                                    &error);
+         g_free (display_fd_string);
++        if (nixos_argv) {
++                 g_strfreev (nixos_argv);
++        }
+         g_clear_object (&launcher);
+         g_ptr_array_free (arguments, TRUE);
+ 
+--- gdm-3.16.0/daemon/gdm-session.c.orig	2015-04-16 14:19:01.392802683 +0200
++++ gdm-3.16.0/daemon/gdm-session.c	2015-04-16 14:20:36.012296764 +0200
+@@ -2359,6 +2359,12 @@
+         gchar *desktop_names;
+         const char *locale;
+ 
++        if (g_getenv ("GDM_X_SERVER") != NULL) {
++                gdm_session_set_environment_variable (self,
++                                                      "GDM_X_SERVER",
++                                                      g_getenv ("GDM_X_SERVER"));
++        }
++
+         gdm_session_set_environment_variable (self,
+                                               "GDMSESSION",
+                                               get_session_name (self));
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix
new file mode 100644
index 000000000000..7ba3c3734f84
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus
+, intltool, accountsservice, libX11, gnome3, systemd, autoreconfHook
+, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection, plymouth }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Only needed to make it build
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
+  '';
+
+  configureFlags = [ "--sysconfdir=/etc"
+                     "--localstatedir=/var"
+                     "--with-plymouth=yes"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool autoreconfHook
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool plymouth ];
+
+  enableParallelBuilding = true;
+
+  # Disable Access Control because our X does not support FamilyServerInterpreted yet
+  patches = [ #./xserver_path.patch # gdm now uses wayland
+              ./sessions_dir.patch
+              ./gdm-x-session_extra_args.patch
+              ./gdm-session-worker_xserver-path.patch
+             # ./disable_x_access_control.patch ./no-dbus-launch.patch
+             # ./libsystemd.patch
+             ];
+
+  installFlags = [ "sysconfdir=$(out)/etc" "dbusconfdir=$(out)/etc/dbus-1/system.d" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GDM;
+    description = "A program that manages graphical display servers and handles graphical user logins";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch
new file mode 100644
index 000000000000..e100e013b786
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/disable_x_access_control.patch
@@ -0,0 +1,13 @@
+--- gdm-3.14.2/daemon/gdm-slave.c.orig	2015-04-16 15:05:27.844353079 +0200
++++ gdm-3.14.2/daemon/gdm-slave.c	2015-04-16 15:05:40.240417915 +0200
+@@ -369,8 +369,9 @@
+                 gdm_error_trap_push ();
+ 
+                 for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+-                        XAddHost (slave->priv->server_display, &host_entries[i]);
++                        //XAddHost (slave->priv->server_display, &host_entries[i]);
+                 }
++                XDisableAccessControl(slave->priv->server_display);
+ 
+                 XSync (slave->priv->server_display, False);
+                 if (gdm_error_trap_pop ()) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch
new file mode 100644
index 000000000000..d020752fef3a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-session-worker_xserver-path.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-session-worker.c.orig b/daemon/gdm-session-worker.c
+index 7bbda49..592691d 100644
+--- a/daemon/gdm-session-worker.c.orig
++++ b/daemon/gdm-session-worker.c
+@@ -1557,6 +1557,12 @@ gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
+                 goto out;
+         }
+ 
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("forwarding GDM_X_SERVER_EXTRA_ARGS= %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                gdm_session_worker_set_environment_variable (worker, "GDM_X_SERVER_EXTRA_ARGS",
++                                                             g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++        }
++
+         gdm_session_worker_update_environment_from_passwd_info (worker,
+                                                                 uid,
+                                                                 gid,
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch
new file mode 100644
index 000000000000..66071aa4af80
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_extra_args.patch
@@ -0,0 +1,38 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..1f4b7f1 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -211,6 +211,7 @@ spawn_x_server (State        *state,
+         char     *vt_string = NULL;
+         char     *display_number;
+         gsize     display_number_size;
++        gchar   **xserver_extra_args = NULL;
+ 
+         auth_file = prepare_auth_file ();
+ 
+@@ -285,6 +286,17 @@ spawn_x_server (State        *state,
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "-core");
+         }
++
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1);
++                for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) {
++                        if (strlen(*extra_arg) < 1) continue;
++			g_debug ("adding: %s", *extra_arg);
++                        g_ptr_array_add (arguments, *extra_arg);
++                }
++        }
++
+         g_ptr_array_add (arguments, NULL);
+ 
+         subprocess = g_subprocess_launcher_spawnv (launcher,
+@@ -332,6 +344,7 @@ spawn_x_server (State        *state,
+ 
+         is_running = TRUE;
+ out:
++	g_strfreev(xserver_extra_args);
+         g_clear_pointer (&auth_file, g_free);
+         g_clear_object (&data_stream);
+         g_clear_object (&subprocess);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch
new file mode 100644
index 000000000000..84081f4786c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/gdm-x-session_path.patch
@@ -0,0 +1,19 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..86f0d47 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -240,7 +240,13 @@ spawn_x_server (State        *state,
+ 
+         display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
+ 
+-        g_ptr_array_add (arguments, X_SERVER);
++        if (g_getenv ("GDM_X_SERVER") != NULL) {
++                g_debug ("using GDM_X_SERVER: %s", g_getenv("GDM_X_SERVER"));
++		g_ptr_array_add (arguments, g_getenv("GDM_X_SERVER"));
++        } else {
++                g_debug ("GDM_X_SERVER not set, using default: %s", X_SERVER);
++                g_ptr_array_add (arguments, X_SERVER);
++        }
+ 
+         if (vt_string != NULL) {
+                 g_ptr_array_add (arguments, vt_string);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch
new file mode 100644
index 000000000000..4556f418cc81
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/libsystemd.patch
@@ -0,0 +1,21 @@
+https://github.com/GNOME/gdm/commit/eee5bf72c9bb1c1d62eb0e7102088ae3b9a188cd
+--- a/configure.ac	2016-05-27 11:10:44.589740789 +0200
++++ b/configure.ac	2016-05-27 11:11:00.146427723 +0200
+@@ -888,7 +888,7 @@
+ dnl ---------------------------------------------------------------------------
+ 
+ PKG_CHECK_MODULES(SYSTEMD,
+-                  [libsystemd-login >= 186 libsystemd-daemon],
++                  [libsystemd],
+                   [have_systemd=yes], [have_systemd=no])
+ 
+ if test "x$with_systemd" = "xauto" ; then
+@@ -912,7 +912,7 @@
+ AC_SUBST(SYSTEMD_LIBS)
+ 
+ PKG_CHECK_MODULES(JOURNALD,
+-                  [libsystemd-journal],
++                  [libsystemd],
+                   [have_journald=yes], [have_journald=no])
+ 
+ if test "x$enable_systemd_journal" = "xauto" ; then
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch
new file mode 100644
index 000000000000..c87554078c7c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/no-dbus-launch.patch
@@ -0,0 +1,20 @@
+--- a/daemon/gdm-launch-environment.c	2015-06-22 15:11:07.277474398 +0000
++++ b/daemon/gdm-launch-environment.c	2015-06-22 15:12:31.301157665 +0000
+@@ -48,8 +48,6 @@
+ #include "gdm-session-enum-types.h"
+ #include "gdm-launch-environment.h"
+ 
+-#define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch --exit-with-session"
+-
+ extern char **environ;
+ 
+ #define GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentPrivate))
+@@ -512,7 +510,7 @@
+                 gdm_session_select_program (launch_environment->priv->session, launch_environment->priv->command);
+         } else {
+                 /* wrap it in dbus-launch */
+-                char *command = g_strdup_printf ("%s %s", DBUS_LAUNCH_COMMAND, launch_environment->priv->command);
++                char *command = g_strdup (launch_environment->priv->command);
+ 
+                 gdm_session_select_program (launch_environment->priv->session, command);
+                 g_free (command);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch
new file mode 100644
index 000000000000..9714a68600af
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/sessions_dir.patch
@@ -0,0 +1,21 @@
+diff --git a/daemon/gdm-session.c.orig b/daemon/gdm-session.c
+index b839fea..053d4ac 100644
+--- a/daemon/gdm-session.c.orig
++++ b/daemon/gdm-session.c
+@@ -344,12 +344,16 @@ get_system_session_dirs (GdmSession *self)
+ #ifdef ENABLE_WAYLAND_SUPPORT
+                 DATADIR "/wayland-sessions/",
+ #endif
++                "/var/empty",
+                 "/etc/X11/sessions/",
+                 DMCONFDIR "/Sessions/",
+                 DATADIR "/gdm/BuiltInSessions/",
+                 DATADIR "/xsessions/",
+                 NULL
+         };
++        if (getenv("GDM_SESSIONS_DIR") != NULL) {
++                search_dirs[1] = getenv("GDM_SESSIONS_DIR");
++        };
+ 
+ #ifdef ENABLE_WAYLAND_SUPPORT
+         if (self->priv->ignore_wayland) {
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix b/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix
new file mode 100644
index 000000000000..795be7f4cfe0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gdm-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gdm/3.22/gdm-3.22.0.tar.xz;
+    sha256 = "b9180d07c6a4a3fb0e8df6bcb4f333008cb3071f0ef81e02f081ff8a144f62d4";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch b/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch
new file mode 100644
index 000000000000..3f2ec808cd65
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gdm/xserver_path.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-server.c.orig b/daemon/gdm-server.c
+index 6357d34..5bef5c8 100644
+--- a/daemon/gdm-server.c.orig
++++ b/daemon/gdm-server.c
+@@ -264,7 +264,11 @@ gdm_server_init_command (GdmServer *server)
+         return;
+ 
+ fallback:
+-        server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        if (g_getenv("GDM_X_SERVER") != NULL) {
++            server->priv->command = g_strdup (g_getenv("GDM_X_SERVER"));
++        } else {
++            server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++        }
+ 
+ }
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix
new file mode 100644
index 000000000000..4d75bdc49963
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/default.nix
@@ -0,0 +1,14 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, libsoup, json_glib }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig glib libsoup json_glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix
new file mode 100644
index 000000000000..135e05e90e99
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/geocode-glib/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "geocode-glib-3.20.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/geocode-glib/3.20/geocode-glib-3.20.1.tar.xz;
+    sha256 = "669fc832cabf8cc2f0fc4194a8fa464cdb9c03ebf9aca5353d7cf935ba8637a2";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
new file mode 100644
index 000000000000..ac5572decb8c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
@@ -0,0 +1,20 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, gtk3, gobjectIntrospection
+, spidermonkey_24, pango, readline, glib, libxml2, dbus }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ libxml2 gobjectIntrospection pkgconfig gtk3 glib pango readline dbus ];
+
+  propagatedBuildInputs = [ spidermonkey_24 ];
+
+  postInstall = ''
+    sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la
+  '';
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
new file mode 100644
index 000000000000..1f4ef08f9b12
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
@@ -0,0 +1,11 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  name = "gjs-${major}.0";
+  major = "1.46";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gjs/${major}/${name}.tar.xz";
+    sha256 = "2283591fa70785443793e1d7db66071b36052d707075f229baeb468d8dd25ad4";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix
new file mode 100644
index 000000000000..32d6d6e7535a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/default.nix
@@ -0,0 +1,12 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix
new file mode 100644
index 000000000000..2b20cae9cdaf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-backgrounds/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-backgrounds-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-backgrounds/3.22/gnome-backgrounds-3.22.0.tar.xz;
+    sha256 = "6c83e01647375d5c409312d7215d038d705a3f214179227ed37d3158afdd001f";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix
new file mode 100644
index 000000000000..7fae0b5c67f4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, gnome3, pkgconfig, gtk3, intltool, glib
+, udev, itstool, libxml2, makeWrapper, libnotify, libcanberra_gtk3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig intltool glib gtk3 udev libxml2 gnome3.defaultIconTheme
+                  makeWrapper gnome3.gsettings_desktop_schemas itstool
+                  libnotify libcanberra_gtk3 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/bluetooth-sendto" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en;
+    description = "Application that let you manage Bluetooth in the GNOME destkop";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix
new file mode 100644
index 000000000000..474d4722b4ab
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-bluetooth/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-bluetooth-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-bluetooth/3.20/gnome-bluetooth-3.20.0.tar.xz;
+    sha256 = "93b3ca16b348a168d044b3f777049b7dba2a9292c4adb2751a771e3bc5e4eb53";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix
new file mode 100644
index 000000000000..e1b81339e91e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libxml2
+, bash, gtk3, glib, wrapGAppsHook
+, itstool, gnome3, librsvg, gdk_pixbuf, mpfr, gmp, libsoup }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ bash gtk3 glib intltool itstool
+                  libxml2 gnome3.gtksourceview mpfr gmp
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas gnome3.dconf libsoup ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
+    description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix
new file mode 100644
index 000000000000..891ce5c58f6e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-calculator/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-calculator-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-calculator/3.22/gnome-calculator-3.22.0.tar.xz;
+    sha256 = "fa0f192fc0cad43a8520d4015780ce008d9fc6201bd2dd6dc06365ba45458728";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix
new file mode 100644
index 000000000000..f9261e183ef1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-common/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, which, gnome3, autoconf, automake }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  patches = [(fetchurl {
+    name = "gnome-common-patch";
+    url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935";
+    sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl";
+  })];
+
+  propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome_common tends to require which
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix
new file mode 100644
index 000000000000..8ffe7e20e1a9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-common/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-common-3.18.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz;
+    sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix
new file mode 100644
index 000000000000..8097cf32ba6e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, intltool, fetchurl, evolution_data_server, db
+, pkgconfig, gtk3, glib, libsecret
+, libchamplain, clutter_gtk, geocode_glib
+, bash, makeWrapper, itstool, folks, libnotify, libxml2
+, gnome3, librsvg, gdk_pixbuf, file, telepathy_glib, nspr, nss
+, libsoup, vala_0_32, dbus_glib, automake115x, autoconf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard evolution_data_server ];
+
+  # force build from vala
+  preBuild = ''
+   touch src/*.vala
+  '';
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool evolution_data_server
+                  gnome3.gsettings_desktop_schemas makeWrapper file libnotify
+                  folks gnome3.gnome_desktop telepathy_glib libsecret dbus_glib
+                  libxml2 libsoup gnome3.gnome_online_accounts nspr nss
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  libchamplain clutter_gtk geocode_glib
+                  vala_0_32 automake115x autoconf db ];
+
+  preFixup = ''
+    for f in "$out/bin/gnome-contacts" "$out/libexec/gnome-contacts-search-provider"; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  patches = [ ./gio_unix.patch ];
+
+  patchFlags = "-p0";
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Contacts;
+    description = "Contacts is GNOME's integrated address book";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch
new file mode 100644
index 000000000000..f1b3d3c94ac2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/gio_unix.patch
@@ -0,0 +1,10 @@
+--- configure.ac.orig	2015-04-09 18:45:50.581232289 +0200
++++ configure.ac	2015-04-09 18:45:59.744280137 +0200
+@@ -54,6 +54,7 @@
+ 	     champlain-0.12
+ 	     clutter-gtk-1.0
+ 	     geocode-glib-1.0 >= 3.15.3
++	     gio-unix-2.0
+ 	     "
+ PKG_CHECK_MODULES(CONTACTS, [$pkg_modules])
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix
new file mode 100644
index 000000000000..4409747169ba
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-contacts/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-contacts-3.22.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-contacts/3.22/gnome-contacts-3.22.1.tar.xz;
+    sha256 = "e45297fb6f379a978605f7e183201be70dff2912f55072a363bdb1f67d9fe87b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix
new file mode 100644
index 000000000000..78fc82ebaed0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/default.nix
@@ -0,0 +1,56 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, ibus, intltool, upower, makeWrapper
+, libcanberra_gtk2, libcanberra_gtk3, accountsservice, libpwquality, libpulseaudio
+, gdk_pixbuf, librsvg, libxkbfile, libnotify, libgudev
+, libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk
+, cracklib, python, libkrb5, networkmanagerapplet, networkmanager
+, libwacom, samba, shared_mime_info, tzdata, icu, libtool, udev
+, docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter_gtk
+, fontconfig, sound-theme-freedesktop, grilo }:
+
+# http://ftp.gnome.org/pub/GNOME/teams/releng/3.10.2/gnome-suites-core-3.10.2.modules
+# TODO: bluetooth, wacom, printers
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs =
+    [ gnome3.gnome_themes_standard gnome3.libgnomekbd ];
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=752596
+  enableParallelBuilding = false;
+
+  buildInputs = with gnome3;
+    [ pkgconfig intltool ibus gtk glib upower libcanberra_gtk2 gsettings_desktop_schemas
+      libxml2 gnome_desktop gnome_settings_daemon polkit libxslt libgtop gnome-menus
+      gnome_online_accounts libsoup colord libpulseaudio fontconfig colord-gtk libpwquality
+      accountsservice libkrb5 networkmanagerapplet libwacom samba libnotify libxkbfile
+      shared_mime_info icu libtool docbook_xsl docbook_xsl_ns gnome3.grilo
+      gdk_pixbuf gnome3.defaultIconTheme librsvg clutter clutter_gtk
+      gnome3.vino udev libcanberra_gtk3 libgudev
+      networkmanager modemmanager makeWrapper gnome3.gnome-bluetooth grilo ];
+
+  preBuild = ''
+    substituteInPlace panels/datetime/tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab"
+
+    # hack to make test-endianess happy
+    mkdir -p $out/share/locale
+    substituteInPlace panels/datetime/test-endianess.c --replace "/usr/share/locale/" "$out/share/locale/"
+  '';
+
+  preFixup = with gnome3; ''
+    wrapProgram $out/bin/gnome-control-center \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:${sound-theme-freedesktop}/share:$out/share:$out/share/gnome-control-center:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    for i in $out/share/applications/*; do
+      substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Utilities to configure the GNOME desktop";
+    license = licenses.gpl2Plus;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix
new file mode 100644
index 000000000000..bbe7f5a009d2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-control-center/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-control-center-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-control-center/3.22/gnome-control-center-3.22.0.tar.xz;
+    sha256 = "d264ae919aeeb27987dcdd5af5577fad0590e1f184f506b563c89f356aab5052";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix
new file mode 100644
index 000000000000..7265f09731fd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, python, libxml2Python, libxslt, which, libX11, gnome3, gtk3, glib
+, intltool, gnome_doc_utils, libxkbfile, xkeyboard_config, isocodes, itstool, wayland
+, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # this should probably be setuphook for glib
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig python libxml2Python libxslt which libX11
+                  xkeyboard_config isocodes itstool wayland
+                  gtk3 glib intltool gnome_doc_utils libxkbfile
+                  gobjectIntrospection ];
+
+  propagatedBuildInputs = [ gnome3.gsettings_desktop_schemas ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix
new file mode 100644
index 000000000000..8efa20f01dc4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-desktop/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-desktop-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-desktop/3.22/gnome-desktop-3.22.0.tar.xz;
+    sha256 = "cff36ccd8d0a62177a4c1513ec70d13ead3b84fdc208ba54199cf7616f05644d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix
new file mode 100644
index 000000000000..c94c178558da
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, libxml2
+, gnome3, librsvg, gdk_pixbuf, file }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 file
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-dictionary" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Dictionary;
+    description = "Dictionary is the GNOME application to look up definitions";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix
new file mode 100644
index 000000000000..249cb314c2aa
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-dictionary/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-dictionary-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz;
+    sha256 = "efb36377d46eff9291d3b8fec37baab2355f9dc8bc7edb791b6a625574716121";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix
new file mode 100644
index 000000000000..c329d68674a4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread
+, bash, gtk3, glib, makeWrapper, cracklib, libnotify
+, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python
+, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool
+                  libxslt libtool libsecret libpwquality cracklib
+                  libnotify libdvdread libcanberra_gtk3 docbook_xsl
+                  gdk_pixbuf gnome3.defaultIconTheme
+                  librsvg udisks2 gnome3.gnome_settings_daemon
+                  gnome3.gsettings_desktop_schemas makeWrapper libxml2 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-disks" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://en.wikipedia.org/wiki/GNOME_Disks;
+    description = "A udisks graphical front-end";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix
new file mode 100644
index 000000000000..c0a0798cd27e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-disk-utility/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-disk-utility-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-disk-utility/3.22/gnome-disk-utility-3.22.0.tar.xz;
+    sha256 = "757d4ff438e63ac337a8681c9ef184a36143b39494381b609cdf889128d7fb22";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix
new file mode 100644
index 000000000000..d0ec2307a852
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool
+, gnome3, librsvg, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gnome_desktop
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-font-viewer" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Program that can preview fonts and create thumbnails for fonts";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix
new file mode 100644
index 000000000000..ee87655bba7d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-font-viewer/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-font-viewer-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-font-viewer/3.22/gnome-font-viewer-3.22.0.tar.xz;
+    sha256 = "bd27cbc523016711508d7913878f32e262893cfcc7e10795171dbf8e35af9be0";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix
new file mode 100644
index 000000000000..3ea108808f50
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib, libxslt
+, intltool, pango, gcr, gdk_pixbuf, atk, p11_kit, makeWrapper
+, docbook_xsl_ns, docbook_xsl, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = with gnome3; [
+    dbus libgcrypt pam python gtk3 gconf libgnome_keyring
+    pango gcr gdk_pixbuf atk p11_kit makeWrapper
+  ];
+
+  propagatedBuildInputs = [ glib libtasn1 libxslt ];
+
+  nativeBuildInputs = [ pkgconfig intltool docbook_xsl_ns docbook_xsl ];
+
+  configureFlags = [
+    "--with-pkcs11-config=$$out/etc/pkcs11/" # installation directories
+    "--with-pkcs11-modules=$$out/lib/pkcs11/"
+  ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-keyring" \
+      --prefix XDG_DATA_DIRS : "${glib.out}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+    wrapProgram "$out/bin/gnome-keyring-daemon" \
+      --prefix XDG_DATA_DIRS : "${glib.out}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix
new file mode 100644
index 000000000000..88179fff3c7e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-keyring/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-keyring-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-keyring/3.20/gnome-keyring-3.20.0.tar.xz;
+    sha256 = "bc17cecd748a0e46e302171d11c3ae3d76bba5258c441fabec3786f418e7ec99";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix
new file mode 100644
index 000000000000..90209634fbf1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-menus/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, intltool, pkgconfig, glib, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-menus-${version}";
+  version = "3.10.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-menus/3.10/${name}.tar.xz";
+    sha256 = "0wcacs1vk3pld8wvrwq7fdrm11i56nrajkrp6j1da6jc4yx0m5a6";
+  };
+
+  makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";
+
+  buildInputs = [ intltool pkgconfig glib gobjectIntrospection ];
+
+  meta = {
+    homepage = "http://www.gnome.org";
+    description = "Gnome menu specification";
+
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix
new file mode 100644
index 000000000000..85c15042614b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
+, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
+, telepathy_glib, intltool, dbus_libs, icu
+, libsoup, docbook_xsl_ns, docbook_xsl, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper
+                  libsecret dbus_glib telepathy_glib intltool icu libsoup
+                  docbook_xsl_ns docbook_xsl gnome3.defaultIconTheme ];
+
+  preFixup = ''
+    for f in "$out/libexec/"*; do
+      wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix
new file mode 100644
index 000000000000..3c1c426d2641
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-accounts/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-online-accounts-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-online-accounts/3.22/gnome-online-accounts-3.22.0.tar.xz;
+    sha256 = "aacce93a71bf5e687a45ae0d00f31ea0625ddd8143235d6d8c64c4ec21bbfa33";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix
new file mode 100644
index 000000000000..90fc3a8737ae
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2
+, libsoup, json_glib, gmp, openssl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig glib gnome3.libgdata libxml2 libsoup gmp openssl
+                  gnome3.grilo gnome3.libzapojit gnome3.grilo-plugins
+                  gnome3.gnome_online_accounts makeWrapper gnome3.libmediaart
+                  gnome3.tracker gnome3.gfbgraph json_glib gnome3.rest ];
+
+  enableParallelBuilding = true;
+
+  preFixup = ''
+    for f in $out/libexec/*; do
+      wrapProgram "$f" \
+        --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-${gnome3.grilo-plugins.major}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners;
+    description = "A set of crawlers that go through your online content and index them locally in Tracker";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix
new file mode 100644
index 000000000000..2bafae9967e2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-online-miners/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-online-miners-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-online-miners/3.22/gnome-online-miners-3.22.0.tar.xz;
+    sha256 = "bf51666866527b236d980fa3a0d036581a85987c59d604566ccb3ad685dd8bb8";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix
new file mode 100644
index 000000000000..29ebe8b0ca64
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, intltool, fetchurl, pkgconfig, libcanberra_gtk3
+, bash, gtk3, glib, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-screenshot" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://en.wikipedia.org/wiki/GNOME_Screenshot;
+    description = "Utility used in the GNOME desktop environment for taking screenshots";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix
new file mode 100644
index 000000000000..3668417d280b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-screenshot/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-screenshot-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-screenshot/3.22/gnome-screenshot-3.22.0.tar.xz;
+    sha256 = "8a05f14b3c7c6cb42f9848ad0332034c7fe5c34a69742910203588fd60b00230";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix
new file mode 100644
index 000000000000..2f4aefe69a8e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-session/default.nix
@@ -0,0 +1,34 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, glib, dbus_glib, json_glib, upower
+, libxslt, intltool, makeWrapper, systemd, xorg }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = "--enable-systemd";
+
+  buildInputs = with gnome3;
+    [ pkgconfig glib gnome_desktop gtk dbus_glib json_glib libxslt
+      gnome3.gnome_settings_daemon xorg.xtrans gnome3.defaultIconTheme
+      gsettings_desktop_schemas upower intltool gconf makeWrapper systemd ];
+
+  # FIXME: glib binaries shouldn't be in .dev!
+  preFixup = ''
+    for desktopFile in $(grep -rl "Exec=gnome-session" $out/share)
+    do
+      echo "Patching gnome-session path in: $desktopFile"
+      sed -i "s,^Exec=gnome-session,Exec=$out/bin/gnome-session --debug," $desktopFile
+    done
+    wrapProgram "$out/bin/gnome-session" \
+      --prefix PATH : "${glib.dev}/bin" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
+      --suffix XDG_DATA_DIRS : "${gnome3.gnome_shell}/share" \
+      --suffix XDG_CONFIG_DIRS : "${gnome3.gnome_settings_daemon}/etc/xdg"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix
new file mode 100644
index 000000000000..29f1ad93abb0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-session/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-session-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-session/3.22/gnome-session-3.22.0.tar.xz;
+    sha256 = "ec5c5e133c8ff1c044802eb887f4911183c45ca2d9de4ce29c6f10768ddc8e42";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix
new file mode 100644
index 000000000000..00999353c2fb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/default.nix
@@ -0,0 +1,32 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, glib, libnotify, lcms2, libXtst
+, libxkbfile, libpulseaudio, libcanberra_gtk3, upower, colord, libgweather, polkit
+, geoclue2, librsvg, xf86_input_wacom, udev, libgudev, libwacom, libxslt, libtool, networkmanager
+, docbook_xsl, docbook_xsl_ns, makeWrapper, ibus, xkeyboard_config }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # fatal error: gio/gunixfdlist.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  buildInputs = with gnome3;
+    [ intltool pkgconfig ibus gtk glib gsettings_desktop_schemas networkmanager
+      libnotify gnome_desktop lcms2 libXtst libxkbfile libpulseaudio
+      libcanberra_gtk3 upower colord libgweather xkeyboard_config
+      polkit geocode_glib geoclue2 librsvg xf86_input_wacom udev libgudev libwacom libxslt
+      libtool docbook_xsl docbook_xsl_ns makeWrapper gnome_themes_standard ];
+
+  # FIXME: glib binaries shouldn't be in .dev!
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-settings-daemon-localeexec" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix PATH : "${glib.dev}/bin" \
+      --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix
new file mode 100644
index 000000000000..1457aab1d013
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-settings-daemon/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-settings-daemon-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-settings-daemon/3.22/gnome-settings-daemon-3.22.0.tar.xz;
+    sha256 = "430e42c4f2cc4cb72b669a44c744343f1592ec00d26d2168745a878afe73f82b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix
new file mode 100644
index 000000000000..e9eae87f14e3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, intltool, fetchurl, libgtop, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, gnome3, file }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig gtk3 glib libgtop intltool itstool
+                  makeWrapper file ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions;
+    description = "Modify and extend GNOME Shell functionality and behavior";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix
new file mode 100644
index 000000000000..e17d02a011f0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell-extensions/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-shell-extensions-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-shell-extensions/3.22/gnome-shell-extensions-3.22.0.tar.xz;
+    sha256 = "317b35f6f1299d5162e693d39b21031f5fe875083c4020217db3ec056e245fc5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix
new file mode 100644
index 000000000000..dccdb8a5a5f8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/default.nix
@@ -0,0 +1,65 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret
+, python3Packages, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at_spi2_core
+, libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip
+, sqlite, libgweather, libcanberra_gtk3
+, libpulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper
+, accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }:
+
+# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Needed to find /etc/NetworkManager/VPN
+  configureFlags = [ "--sysconfdir=/etc" ];
+
+  buildInputs = with gnome3;
+    [ gsettings_desktop_schemas gnome_keyring gnome-menus glib gcr json_glib accountsservice
+      libcroco intltool libsecret pkgconfig libsoup polkit libcanberra_gtk2 gdk_pixbuf librsvg
+      clutter networkmanager libstartup_notification telepathy_glib docbook_xsl docbook_xsl_ns
+      libXtst p11_kit networkmanagerapplet gjs mutter libpulseaudio caribou evolution_data_server
+      libical libtool nss gtk gstreamer makeWrapper gdm
+      libcanberra_gtk3 gnome_control_center
+      defaultIconTheme sqlite gnome3.gnome-bluetooth
+      libgweather # not declared at build time, but typelib is needed at runtime
+      gnome3.gnome-clocks # schemas needed
+      at_spi2_core upower ibus gnome_desktop telepathy_logger gnome3.gnome_settings_daemon ];
+
+  propagatedBuildInputs = [ python3Packages.pygobject3 python3Packages.python gobjectIntrospection ];
+
+  installFlags = [ "keysdir=$(out)/share/gnome-control-center/keybindings" ];
+
+  preBuild = ''
+    patchShebangs src/data-to-c.pl
+    substituteInPlace data/Makefile --replace " install-keysDATA" ""
+  '';
+
+  preFixup = with gnome3; ''
+    wrapProgram "$out/bin/gnome-shell" \
+      --prefix PATH : "${unzip}/bin" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS" \
+      --suffix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+
+    wrapProgram "$out/bin/gnome-shell-extension-tool" \
+      --prefix PYTHONPATH : "${python3Packages.pygobject3}/${python3Packages.python.sitePackages}:$PYTHONPATH"
+
+    wrapProgram "$out/libexec/gnome-shell-calendar-server" \
+      --prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+
+    echo "${unzip}/bin" > $out/${passthru.mozillaPlugin}/extra-bin-path
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix
new file mode 100644
index 000000000000..b835eea019cf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-shell/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-shell-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-shell/3.22/gnome-shell-3.22.0.tar.xz;
+    sha256 = "d8d22cc19e28641f2eac47e812065c209e4866b6e5f9d636647a0a8c96e5dca9";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix
new file mode 100644
index 000000000000..a6a196625b45
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-software/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit
+, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3
+, json_glib, libsecret }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup
+                  gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
+                  gtkspell3 json_glib libsecret
+                  polkit attr acl libyaml ];
+  propagatedBuildInputs = [ isocodes ];
+
+  postInstall = ''
+    mkdir -p $out/share/xml/
+    ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "GNOME Software lets you install and update applications and system extensions.";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix
new file mode 100644
index 000000000000..a05e6bd09e57
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-software/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-software-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-software/3.22/gnome-software-3.22.0.tar.xz;
+    sha256 = "22e30c84851b0768bd46dbb90de6d3308acdc2973d3ca4ee52a19cdb5a0182ba";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix
new file mode 100644
index 000000000000..50ee229cfa49
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-log/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, intltool, fetchurl, pkgconfig
+, bash, gtk3, glib, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-system-log-3.9.90";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-system-log/3.9/${name}.tar.xz";
+    sha256 = "9eeb51982d347aa7b33703031e2c1d8084201374665425cd62199649b29a5411";
+  };
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool
+                  gnome3.gsettings_desktop_schemas makeWrapper libxml2 ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-system-log" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gtk3.out}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-system-log/3.9/;
+    description = "Graphical, menu-driven viewer that you can use to view and monitor your system logs";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix
new file mode 100644
index 000000000000..bdbdefecf229
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtkmm3, libxml2
+, bash, gtk3, glib, makeWrapper
+, itstool, gnome3, librsvg, gdk_pixbuf, libgtop }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libxml2
+                  gtkmm3 libgtop makeWrapper
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  gnome3.gsettings_desktop_schemas ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gnome-system-monitor" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-system-monitor/3.12/;
+    description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix
new file mode 100644
index 000000000000..e8e9ba375010
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-system-monitor/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-system-monitor-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-system-monitor/3.22/gnome-system-monitor-3.22.0.tar.xz;
+    sha256 = "4339d36c2f7b702652ee03424a241f855992c583bb437d7083c61d8dcfe3fff8";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix
new file mode 100644
index 000000000000..073a791ac3c8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, libuuid, vala_0_32
+, desktop_file_utils, itstool, wrapGAppsHook, appdata-tools }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ gnome3.gtk gnome3.gsettings_desktop_schemas gnome3.vte appdata-tools
+                  gnome3.dconf itstool gnome3.nautilus vala_0_32 ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libuuid libxml2
+                        desktop_file_utils wrapGAppsHook ];
+
+  # Silly ./configure, it looks for dbus file from gnome-shell in the
+  # installation tree of the package it is configuring.
+  postPatch = ''
+    substituteInPlace configure --replace '$(eval echo $(eval echo $(eval echo ''${dbusinterfacedir})))/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome_shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml"
+    substituteInPlace src/Makefile.in --replace '$(dbusinterfacedir)/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome_shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml"
+  '';
+
+  # FIXME: enable for gnome3
+  configureFlags = [ "--disable-migration" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "The GNOME Terminal Emulator";
+    homepage = https://wiki.gnome.org/Apps/Terminal/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix
new file mode 100644
index 000000000000..5d8088d78d34
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-terminal/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-terminal-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-terminal/3.22/gnome-terminal-3.22.0.tar.xz;
+    sha256 = "97e6b1b4128ac133d8917b3940c71ddf9b89d189c5ac8402b1060126733993ed";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix
new file mode 100644
index 000000000000..5cc3385ad841
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2
+, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf
+                  gnome3.defaultIconTheme ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix
new file mode 100644
index 000000000000..a5ccd23b9fc8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-themes-standard/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-themes-standard-3.22.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-themes-standard/3.22/gnome-themes-standard-3.22.1.tar.xz;
+    sha256 = "90f6f4e79eaa42e424fa35144cdbcb5db93db56e73200ac045742ba320febb54";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix
new file mode 100644
index 000000000000..4f02673e036f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gnome3.yelp itstool libxml2 intltool ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://help.gnome.org/users/gnome-help/${gnome3.version}";
+    description = "User and system administration help for the GNOME desktop";
+    maintainers = gnome3.maintainers;
+    license = licenses.cc-by-30;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix
new file mode 100644
index 000000000000..e7e67e0b4fb3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-docs/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-user-docs-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-user-docs/3.22/gnome-user-docs-3.22.0.tar.xz;
+    sha256 = "7467825a1c56ae2522fe9e36622a84b8887c731bb5f24cecfbf49acc66f6e3fc";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix
new file mode 100644
index 000000000000..f8b40e42d025
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, intltool, fetchurl, apacheHttpd_2_2, nautilus
+, pkgconfig, gtk3, glib, libxml2, gnused, systemd
+, bash, makeWrapper, itstool, libnotify, libtool, mod_dnssd
+, gnome3, librsvg, gdk_pixbuf, file, libcanberra_gtk3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  preConfigure = ''
+    sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' -i data/dav_user_2.2.conf
+  '';
+
+  configureFlags = [ "--with-httpd=${apacheHttpd_2_2.out}/bin/httpd"
+                     "--with-modules-path=${apacheHttpd_2_2.dev}/modules"
+                     "--with-systemduserunitdir=$(out)/etc/systemd/user"
+                     "--disable-bluetooth"
+                     "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool
+                  makeWrapper file gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  nautilus libnotify libcanberra_gtk3 systemd ];
+
+  postInstall = ''
+    mkdir -p $out/share/gsettings-schemas/$name
+    mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name
+    ${glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/$name/glib-2.0/schemas
+  '';
+
+  preFixup = ''
+    wrapProgram "$out/libexec/gnome-user-share-webdav" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://help.gnome.org/users/gnome-user-share/3.8;
+    description = "Service that exports the contents of the Public folder in your home directory on the local network";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix
new file mode 100644
index 000000000000..2d06f9e7a7cf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gnome-user-share/src.nix
@@ -0,0 +1,12 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  major = "3.18";
+  minor = "3";
+  name = "gnome-user-share-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-user-share/${major}/${name}.tar.xz";
+    sha256 = "3092fa7ad137531e35484195dde4ecbbc75a8a3d9b8209aef4c852717cf4bbf1";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix
new file mode 100644
index 000000000000..4b8fc90adad8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo-plugins/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, sqlite
+, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp_av
+, gmime, json_glib, avahi, tracker, itstool }:
+
+stdenv.mkDerivation rec {
+  major = "0.3";
+  minor = "3";
+  name = "grilo-plugins-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo-plugins/${major}/${name}.tar.xz";
+    sha256 = "fe66e887847fef9c361bcb7226047c43b2bc22b172aaf22afd5534947cc85b9c";
+  };
+
+  installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-${major}" ];
+
+  buildInputs = [ pkgconfig gnome3.grilo libxml2 gupnp gssdp gnome3.libgdata
+                  lua5 liboauth gupnp_av sqlite gnome3.gnome_online_accounts
+                  gnome3.totem-pl-parser gnome3.rest gmime json_glib
+                  avahi gnome3.libmediaart tracker intltool itstool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
+    description = "A collection of plugins for the Grilo framework";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix
new file mode 100644
index 000000000000..0deac26c2597
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib
+, libxml2, gnome3, gobjectIntrospection, libsoup, python3Packages }:
+
+stdenv.mkDerivation rec {
+  major = "0.3"; # if you change this, also change ./setup-hook.sh
+  minor = "2";
+  name = "grilo-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/grilo/${major}/${name}.tar.xz";
+    sha256 = "f26f684a5d76aea8dbce136750bc67d2170b36575f109292fbb78ae99ec87f5b";
+  };
+
+  setupHook = ./setup-hook.sh;
+
+  configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ];
+
+  preConfigure = ''
+    for f in src/Makefile.in libs/pls/Makefile.in libs/net/Makefile.in; do
+       substituteInPlace $f --replace @INTROSPECTION_GIRDIR@ "$out/share/gir-1.0/"
+       substituteInPlace $f --replace @INTROSPECTION_TYPELIBDIR@ "$out/lib/girepository-1.0"
+    done
+  '';
+
+  buildInputs = [ pkgconfig file intltool glib libxml2 libsoup
+                  gnome3.totem-pl-parser ];
+
+  propagatedBuildInputs = [ python3Packages.pygobject3 gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
+    description = "Framework that provides access to various sources of multimedia content, using a pluggable system";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh b/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh
new file mode 100644
index 000000000000..3291e38addb8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/grilo/setup-hook.sh
@@ -0,0 +1,7 @@
+make_grilo_find_plugins() {
+    if [ -d "$1"/lib/grilo-0.3 ]; then
+        addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.3"
+    fi
+}
+
+envHooks+=(make_grilo_find_plugins)
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix
new file mode 100644
index 000000000000..5123cadbdafd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, intltool, glib, gobjectIntrospection
+  # just for passthru
+, gnome3, gtk3, gsettings_desktop_schemas }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  postPatch = ''
+    for file in "background" "screensaver"; do
+      substituteInPlace "schemas/org.gnome.desktop.$file.gschema.xml.in" \
+        --replace "@datadir@" "${gnome3.gnome-backgrounds}/share/"
+    done
+  '';
+
+  buildInputs = [ glib gobjectIntrospection ];
+
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix
new file mode 100644
index 000000000000..50a54eab7eb5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsettings-desktop-schemas/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gsettings-desktop-schemas-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gsettings-desktop-schemas/3.22/gsettings-desktop-schemas-3.22.0.tar.xz;
+    sha256 = "0f06c7ba34c3a99e4d58b10889496133c9aaad6698ea2d8405d481c7f1a7eae1";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix b/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix
new file mode 100644
index 000000000000..95785d9ed4d2
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gsound/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, libcanberra_gtk2, gobjectIntrospection, libtool, gnome3 }:
+
+let
+  majVer = "1.0";
+in stdenv.mkDerivation rec {
+  name = "gsound-${majVer}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gsound/${majVer}/${name}.tar.xz";
+    sha256 = "ea0dd94429c0645f2f98824274ef04543fe459dd83a5449a68910acc3ba67f29";
+  };
+
+  buildInputs = [ pkgconfig glib libcanberra_gtk2 gobjectIntrospection libtool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GSound;
+    description = "Small library for playing system sounds";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix
new file mode 100644
index 000000000000..aac1739a6e99
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk3, pango
+, libxml2Python, perl, intltool, gettext, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedBuildInputs = [ gtk3 ];
+
+  buildInputs = [ pkgconfig atk cairo glib pango
+                  libxml2Python perl intltool gettext ];
+
+  preBuild = ''
+    substituteInPlace gtksourceview/gtksourceview-utils.c --replace "@NIX_SHARE_PATH@" "$out/share"
+  '';
+
+  patches = [ ./nix_share_path.patch ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch
new file mode 100644
index 000000000000..c87350167c25
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/nix_share_path.patch
@@ -0,0 +1,11 @@
+--- a/gtksourceview/gtksourceview-utils.c	2014-07-13 16:13:57.418687726 +0200
++++ b/gtksourceview/gtksourceview-utils.c	2014-07-13 16:14:20.550847767 +0200
+@@ -68,6 +68,8 @@
+ 							 basename,
+ 							 NULL));
+ 
++        g_ptr_array_add (dirs, g_build_filename ("@NIX_SHARE_PATH@", SOURCEVIEW_DIR, basename, NULL));
++
+ 	g_ptr_array_add (dirs, NULL);
+ 
+ 	return (gchar**) g_ptr_array_free (dirs, FALSE);
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix
new file mode 100644
index 000000000000..6e010227fc3b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceview/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gtksourceview-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gtksourceview/3.22/gtksourceview-3.22.0.tar.xz;
+    sha256 = "70657f48732427984dce6cc812bdd3f2b701c0a49e0a0a08889705b3dadcf8e5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix
new file mode 100644
index 000000000000..d0453ba8ebbf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, pkgconfig, gtkmm, glibmm, gtksourceview }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig glibmm gtkmm gtksourceview ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    homepage = "https://developer.gnome.org/gtksourceviewmm/";
+    description = "C++ wrapper for gtksourceview";
+    license = licenses.lgpl2;
+    maintainers = [ maintainers.juliendehos ];
+  };
+}
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix
new file mode 100644
index 000000000000..21618c45e051
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gtksourceviewmm/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gtksourceviewmm-3.21.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gtksourceviewmm/3.21/gtksourceviewmm-3.21.2.tar.xz;
+    sha256 = "d21296d8624a1046841bfec082021b7b966df0b62e19ee300828519bc54dd9c6";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix
new file mode 100644
index 000000000000..05aff866606f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gucharmap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, intltool, fetchurl, pkgconfig, gtk3
+, glib, desktop_file_utils, bash, appdata-tools
+, makeWrapper, gnome3, file, itstool, libxml2 }:
+
+# TODO: icons and theme still does not work
+# use packaged gnome3.adwaita-icon-theme
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+
+  buildInputs = [ pkgconfig gtk3 intltool itstool glib appdata-tools
+                  gnome3.yelp_tools libxml2 file desktop_file_utils
+                  gnome3.gsettings_desktop_schemas makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/gucharmap" \
+      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Gucharmap;
+    description = "GNOME Character Map, based on the Unicode Character Database";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix b/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix
new file mode 100644
index 000000000000..69c0dd600251
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/gucharmap/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gucharmap-3.18.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gucharmap/3.18/gucharmap-3.18.2.tar.xz;
+    sha256 = "80141d3e892c3c4812c1a8fad8f89978559ef19e933843267e6e9a5524c09ec9";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix
new file mode 100644
index 000000000000..a4c46ef85d4c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libcroco/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, glib }:
+
+stdenv.mkDerivation rec {
+  name = "libcroco-0.6.11";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz";
+    sha256 = "0mm0wldbi40am5qn0nv7psisbg01k42rwzjxl3gv11l5jj554aqk";
+  };
+
+  outputs = [ "out" "dev" ];
+  outputBin = "dev";
+
+  configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic";
+
+  buildInputs = [ pkgconfig libxml2 glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix
new file mode 100644
index 000000000000..08f05bcaedc1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgdata/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, intltool, libxml2, glib, json_glib
+, gobjectIntrospection, liboauth, gnome3, p11_kit, openssl, uhttpmock }:
+
+let
+  majorVersion = "0.17";
+in
+stdenv.mkDerivation rec {
+  name = "libgdata-${majorVersion}.6";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgdata/${majorVersion}/${name}.tar.xz";
+    sha256 = "8b6a3ff1db23bd9e5ebbcc958b29b769a898f892eed4798222d562ba69df30b0";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.libsoup.dev}/include/libsoup-gnome-2.4/ -I${gnome3.gcr}/include/gcr-3 -I${gnome3.gcr}/include/gck-1";
+
+  buildInputs = with gnome3;
+    [ pkgconfig libsoup intltool libxml2 glib gobjectIntrospection
+      liboauth gcr gnome_online_accounts p11_kit openssl uhttpmock ];
+
+  propagatedBuildInputs = [ json_glib ];
+
+  meta = with stdenv.lib; {
+    description = "GData API library";
+    maintainers = with maintainers; [ raskin lethalman ];
+    platforms = platforms.linux;
+    license = licenses.lgpl21Plus;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix
new file mode 100644
index 000000000000..7b49af3c50ff
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgee/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, autoconf, vala_0_32, pkgconfig, glib, gobjectIntrospection, gnome3 }:
+let
+  ver_maj = "0.18";
+  ver_min = "0";
+in
+stdenv.mkDerivation rec {
+  name = "libgee-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgee/${ver_maj}/${name}.tar.xz";
+    sha256 = "16a34js81w9m2bw4qd8csm4pcgr3zq5z87867j4b8wfh6zwrxnaa";
+  };
+
+  doCheck = true;
+
+  patches = [ ./fix_introspection_paths.patch ];
+
+  buildInputs = [ autoconf vala_0_32 pkgconfig glib gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    description = "Utility library providing GObject-based interfaces and classes for commonly used data structures";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch b/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch
new file mode 100644
index 000000000000..67003f451645
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgee/fix_introspection_paths.patch
@@ -0,0 +1,13 @@
+--- fix_introspection_paths.patch/configure	2014-01-07 17:43:53.521339338 +0000
++++ fix_introspection_paths.patch/configure-fix	2014-01-07 17:45:11.068635069 +0000
+@@ -12085,8 +12085,8 @@
+        INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+        INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+        INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+-       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+-       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
++       INTROSPECTION_GIRDIR="${datadir}/gir-1.0"
++       INTROSPECTION_TYPELIBDIR="${libdir}/girepository-1.0"
+        INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+        INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+        INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix
new file mode 100644
index 000000000000..47cb96de6c34
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgepub/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, autoconf, pkgconfig, glib, gobjectIntrospection, gnome3
+, webkitgtk, libsoup, libxml2, libarchive }:
+stdenv.mkDerivation rec {
+  name = "libgepub-${version}";
+  version = "0.4";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgepub/${version}/${name}.tar.xz";
+    sha256 = "5666a1c4d186d205bd2d91b71d4c1cd5426025569114a765dd913a564f149ff4";
+  };
+
+  doCheck = true;
+
+  buildInputs = [ autoconf pkgconfig glib gobjectIntrospection webkitgtk libsoup
+    libxml2 libarchive ];
+
+  meta = with stdenv.lib; {
+    description = "GObject based library for handling and rendering epub documents";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
new file mode 100644
index 000000000000..c6c9323c010a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  name = "libgnome-keyring-3.12.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgnome-keyring/3.12/${name}.tar.xz";
+    sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783";
+  };
+
+  propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = {
+    description = "Framework for managing passwords and other secrets";
+    homepage = http://live.gnome.org/GnomeKeyring;
+    license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ];
+    inherit (glib.meta) platforms maintainers;
+
+    longDescription = ''
+      gnome-keyring is a program that keeps password and other secrets for
+      users. The library libgnome-keyring is used by applications to integrate
+      with the gnome-keyring system.
+    '';
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix
new file mode 100644
index 000000000000..2bcbefc8dbf9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig file intltool glib gtk3 libxklavier makeWrapper ];
+
+  preFixup = ''
+    wrapProgram $out/bin/gkbd-keyboard-display \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Keyboard management library";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix
new file mode 100644
index 000000000000..02fa27169871
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnomekbd/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "libgnomekbd-3.22.0.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/libgnomekbd/3.22/libgnomekbd-3.22.0.1.tar.xz;
+    sha256 = "4efdb6b8ec92f04caced710b5edb285fb27715059ed6ca5e100b6933999a93de";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix
new file mode 100644
index 000000000000..79ede15df8f0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgweather/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf
+, pango, gdk_pixbuf, atk, tzdata, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";
+
+  configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" ];
+  propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk gnome3.geocode_glib ];
+  nativeBuildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix b/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix
new file mode 100644
index 000000000000..946573519465
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgweather/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "libgweather-3.20.3";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/libgweather/3.20/libgweather-3.20.3.tar.xz;
+    sha256 = "fb6bc5b64ef5db3dc40a9798f072b83ebcafe7ff5af472aaee70600619b56c0b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix
new file mode 100644
index 000000000000..b39e1f6fa56c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libgxps/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, glib, cairo, libarchive, freetype, libjpeg, libtiff
+, openssl, bzip2, acl, attr, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  name = "libgxps-0.2.2";
+
+  src = fetchurl {
+    url = "http://ftp.acc.umu.se/pub/GNOME/core/3.10/3.10.2/sources/${name}.tar.xz";
+    sha256 = "1gi0b0x0354jyqc48vspk2hg2q1403cf2p9ibj847nzhkdrh9l9r";
+  };
+
+  buildInputs = [ pkgconfig glib cairo freetype libjpeg libtiff acl openssl bzip2 attr libxml2 ];
+  propagatedBuildInputs = [ libarchive ];
+
+  configureFlags = "--without-liblcms2";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix b/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix
new file mode 100644
index 000000000000..1ba143539d40
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libpeas/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, glib, gtk3, gobjectIntrospection, python3Packages, ncurses
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = [ "--enable-python3" ];
+
+  buildInputs =  [ intltool pkgconfig glib gtk3 gnome3.defaultIconTheme ncurses python3Packages.python python3Packages.pygobject3 gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    description = "A GObject-based plugins engine";
+    homepage = "http://ftp.acc.umu.se/pub/GNOME/sources/libpeas/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix b/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix
new file mode 100644
index 000000000000..cd440858946e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libpeas/src.nix
@@ -0,0 +1,13 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  major = "1.18";
+  minor = "0";
+  version = "${major}.${minor}";
+  name = "libpeas-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libpeas/${major}/${name}.tar.xz";
+    sha256 = "09jy2rwwgp0xx7cnypxl56m7zzxnj3j4v58xqjxjasf3chn88jdz";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix b/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix
new file mode 100644
index 000000000000..5a8117528b68
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/libzapojit/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, pkgconfig, glib, intltool, json_glib, rest, libsoup, gtk, gnome_online_accounts }:
+
+stdenv.mkDerivation rec {
+  name = "libzapojit-0.0.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libzapojit/0.0/${name}.tar.xz";
+    sha256 = "0zn3s7ryjc3k1abj4k55dr2na844l451nrg9s6cvnnhh569zj99x";
+  };
+
+  buildInputs = [ pkgconfig glib intltool json_glib rest libsoup gtk gnome_online_accounts ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix b/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix
new file mode 100644
index 000000000000..9fad1873fbd6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo
+, pango, cogl, clutter, libstartup_notification, libcanberra_gtk2, zenity, libcanberra_gtk3
+, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon, libudev, libinput
+, libgudev, xwayland }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # fatal error: gio/gunixfdlist.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  configureFlags = "--with-x --disable-static --enable-shape --enable-sm --enable-startup-notification --enable-xsync --enable-verbose-mode --with-libcanberra --with-xwayland-path=${xwayland}/bin/Xwayland";
+
+  buildInputs = with gnome3;
+    [ pkgconfig intltool glib gobjectIntrospection gtk gsettings_desktop_schemas upower
+      gnome_desktop cairo pango cogl clutter zenity libstartup_notification libcanberra_gtk2
+      gnome3.geocode_glib libudev libinput libgudev
+      libcanberra_gtk3 zenity libtool makeWrapper xkeyboard_config libxkbfile libxkbcommon ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/mutter" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  patches = [
+  #./x86.patch ./math.patch
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch b/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch
new file mode 100644
index 000000000000..dbdfd93f5e1d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/math.patch
@@ -0,0 +1,10 @@
+--- mutter-3.18.0/src/backends/meta-cursor-renderer.c.orig	2015-09-23 13:54:31.297523343 +0200
++++ mutter-3.18.0/src/backends/meta-cursor-renderer.c	2015-09-23 13:54:43.728271766 +0200
+@@ -31,6 +31,7 @@
+ 
+ #include <cogl/cogl.h>
+ #include <clutter/clutter.h>
++#include <math.h>
+ 
+ #include "meta-stage.h"
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix b/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix
new file mode 100644
index 000000000000..02e9b6e0d84c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "mutter-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/mutter/3.22/mutter-3.22.0.tar.xz;
+    sha256 = "a5acdde788f5d137ec6dfe218a214c1f6cfb7e2e851fbcebe0b2d67b4c96e5f3";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch b/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch
new file mode 100644
index 000000000000..a997b27540ee
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/mutter/x86.patch
@@ -0,0 +1,33 @@
+--- a/src/core/window.c	2015-05-26 10:52:41.382834963 +0200
++++ b/src/core/window.c	2015-05-26 10:53:03.039948034 +0200
+@@ -3499,7 +3499,7 @@
+ 
+ static MetaMonitorInfo *
+ find_monitor_by_winsys_id (MetaWindow *window,
+-                           guint       winsys_id)
++                           gint       winsys_id)
+ {
+   int i;
+ 
+@@ -3618,7 +3618,7 @@
+    */
+ 
+   gboolean did_placement;
+-  guint old_output_winsys_id;
++  gint old_output_winsys_id;
+   MetaRectangle unconstrained_rect;
+   MetaRectangle constrained_rect;
+   MetaMoveResizeResultFlags result = 0;
+--- a/src/core/startup-notification.c	2016-06-06 12:13:27.100251933 +0200
++++ b/src/core/startup-notification.c	2016-06-06 12:13:42.554956773 +0200
+@@ -418,7 +418,7 @@
+   elapsed = ctod->now - timestamp;
+ 
+   meta_topic (META_DEBUG_STARTUP,
+-              "Sequence used %ld ms vs. %d max: %s\n",
++              "Sequence used %" G_GINT64_FORMAT " ms vs. %d max: %s\n",
+               elapsed, STARTUP_TIMEOUT,
+               meta_startup_notification_sequence_get_id (sequence));
+ 
+[?25l[?25h[?1049h[?1h=[?25h[?25l~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              ~                                                                                              [?25h[?25lType  :quit<Enter>  to exit Vim[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h

+[?1l>[?1049l
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix b/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix
new file mode 100644
index 000000000000..d508f1483598
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, dbus_glib, shared_mime_info, libexif
+, gtk, gnome3, libunique, intltool, gobjectIntrospection, gnome-autoar, glib
+, libnotify, wrapGAppsHook, exempi, librsvg, tracker, libselinux }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ libxml2 dbus_glib shared_mime_info libexif gtk libunique intltool exempi librsvg
+                  gnome3.gnome_desktop gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas gnome3.dconf libnotify tracker libselinux ];
+
+  propagatedBuildInputs = [ gnome-autoar ];
+
+  # fatal error: gio/gunixinputstream.h: No such file or directory
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+#  hardeningDisable = [ "format" ];
+  enableParallelBuilding = true;
+
+  patches = [ ./extension_dir.patch ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch b/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch
new file mode 100644
index 000000000000..e1313999675d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/extension_dir.patch
@@ -0,0 +1,24 @@
+diff --git a/src/nautilus-module.c b/src/nautilus-module.c
+index 6273a76..4adcc8a 100644
+--- a/src/nautilus-module.c
++++ b/src/nautilus-module.c
+@@ -242,11 +242,17 @@ void
+ nautilus_module_setup (void)
+ {
+     static gboolean initialized = FALSE;
++    const gchar* extensiondir = NULL;
+ 
+     if (!initialized)
+     {
+         initialized = TRUE;
+ 
+-        load_module_dir (NAUTILUS_EXTENSIONDIR);
++        extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR");
++        if (extensiondir == NULL) {
++            extensiondir = NAUTILUS_EXTENSIONDIR;
++        }
++
++        load_module_dir (extensiondir);
+ 
+         eel_debug_call_at_shutdown (free_module_objects);
+     }
diff --git a/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix b/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix
new file mode 100644
index 000000000000..e0c7f3034f97
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/nautilus/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "nautilus-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/nautilus/3.22/nautilus-3.22.0.tar.xz;
+    sha256 = "7671d9cf9df0321f5ad03abce03ab35ab6d643e1b3392a84f3c1d7c23ce29816";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/rest/default.nix b/pkgs/desktops/gnome-3/3.22/core/rest/default.nix
new file mode 100644
index 000000000000..d467cad93b4e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/rest/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "rest-${version}";
+  major = "0.8";
+  version = "${major}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/rest/${major}/${name}.tar.xz";
+    sha256 = "e7b89b200c1417073aef739e8a27ff2ab578056c27796ec74f5886a5e0dff647";
+  };
+
+  buildInputs = [ pkgconfig glib libsoup gobjectIntrospection];
+
+  configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt";
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix b/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix
new file mode 100644
index 000000000000..fb010756f290
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/sushi/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gobjectIntrospection, glib
+, clutter_gtk, clutter-gst, gnome3, gtksourceview, libmusicbrainz
+, webkitgtk, libmusicbrainz5, icu, makeWrapper, gst_all_1
+, gdk_pixbuf, librsvg, gtk3, harfbuzz }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ];
+
+  buildInputs = [ pkgconfig file intltool gobjectIntrospection glib gtk3
+                  clutter_gtk clutter-gst gnome3.gjs gtksourceview gdk_pixbuf
+                  librsvg gnome3.defaultIconTheme libmusicbrainz5 webkitgtk
+                  gnome3.evince icu makeWrapper harfbuzz ];
+
+  enableParallelBuilding = true;
+
+  postConfigure = ''
+    substituteInPlace src/libsushi/sushi-font-widget.h \
+        --replace "<hb-ft.h>" "<harfbuzz/hb-ft.h>"
+    substituteInPlace src/libsushi/sushi-font-widget.c \
+        --replace "<hb-glib.h>" "<harfbuzz/hb-glib.h>"
+  '';
+
+  preFixup = ''
+    wrapProgram $out/libexec/sushi-start \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://en.wikipedia.org/wiki/Sushi_(software)";
+    description = "A quick previewer for Nautilus";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix b/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix
new file mode 100644
index 000000000000..e1fc1011b569
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/sushi/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "sushi-3.21.91";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/sushi/3.21/sushi-3.21.91.tar.xz;
+    sha256 = "db71c9ec3dd2dde6aed03b469253ce7d9f30c60ff50c2a8dc9f7776b70d15d55";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix
new file mode 100644
index 000000000000..63f36004bcd6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem-pl-parser/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "totem-pl-parser-3.10.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/totem-pl-parser/3.10/${name}.tar.xz";
+    sha256 = "38be09bddc46ddecd2b5ed7c82144ef52aafe879a5ec3d8b192b4b64ba995469";
+  };
+
+  buildInputs = [ pkgconfig file intltool gmime libxml2 libsoup ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Videos;
+    description = "Simple GObject-based library to parse and save a host of playlist formats";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem/default.nix b/pkgs/desktops/gnome-3/3.22/core/totem/default.nix
new file mode 100644
index 000000000000..6e62a2d522f6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, intltool, fetchurl, gst_all_1
+, clutter_gtk, clutter-gst, python3Packages, shared_mime_info
+, pkgconfig, gtk3, glib, gobjectIntrospection
+, bash, wrapGAppsHook, itstool, libxml2, dbus_glib
+, gnome3, librsvg, gdk_pixbuf, file, tracker, nautilus }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0";
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 gnome3.grilo
+                  clutter_gtk clutter-gst gnome3.totem-pl-parser gnome3.grilo-plugins
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base
+                  gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly gst_all_1.gst-libav
+                  gnome3.libpeas shared_mime_info dbus_glib
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg gnome3.gnome_desktop
+                  gnome3.gsettings_desktop_schemas wrapGAppsHook file tracker nautilus ];
+
+  propagatedBuildInputs = [ gobjectIntrospection python3Packages.pylint python3Packages.pygobject2 ];
+
+  configureFlags = [ "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ];
+
+  GI_TYPELIB_PATH = "$out/lib/girepository-1.0";
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Videos;
+    description = "Movie player for the GNOME desktop based on GStreamer";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/totem/src.nix b/pkgs/desktops/gnome-3/3.22/core/totem/src.nix
new file mode 100644
index 000000000000..11e20f665b7e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/totem/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "totem-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/totem/3.22/totem-3.22.0.tar.xz;
+    sha256 = "026a5b5b1674bdb941bc28e1ee95ecc168627e0fc323b6ec8d73407d21964fea";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix b/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix
new file mode 100644
index 000000000000..72ebd543e902
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/tracker/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, intltool, fetchurl, libxml2, upower
+, pkgconfig, gtk3, glib
+, bash, makeWrapper, itstool, vala_0_32, sqlite, libxslt
+, gnome3, librsvg, gdk_pixbuf, file, libnotify
+, evolution_data_server, gst_all_1, poppler
+, icu, taglib, libjpeg, libtiff, giflib, libcue
+, libvorbis, flac, exempi, networkmanager
+, libpng, libexif, libgsf, libuuid, bzip2 }:
+
+stdenv.mkDerivation rec {
+
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0 -I${poppler.dev}/include/poppler";
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ vala_0_32 pkgconfig gtk3 glib intltool itstool libxml2
+                  bzip2 gnome3.totem-pl-parser libxslt
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg sqlite
+                  upower libnotify evolution_data_server gnome3.libgee
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base flac
+                  poppler icu taglib libjpeg libtiff giflib libvorbis
+                  exempi networkmanager libpng libexif libgsf libuuid ];
+
+  preConfigure = ''
+    substituteInPlace src/libtracker-sparql/Makefile.in --replace "--shared-library=libtracker-sparql" "--shared-library=$out/lib/libtracker-sparql"
+  '';
+
+  preFixup = ''
+    for f in $out/bin/* $out/libexec/*; do
+      wrapProgram $f \
+        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/Tracker;
+    description = "Desktop-neutral user information store, search tool and indexer";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/tracker/src.nix b/pkgs/desktops/gnome-3/3.22/core/tracker/src.nix
new file mode 100644
index 000000000000..6889f6ee09ea
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/tracker/src.nix
@@ -0,0 +1,11 @@
+fetchurl: rec {
+  major = "1.10";
+  minor = "0";
+  name = "tracker-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/tracker/${major}/${name}.tar.xz";
+    sha256 = "df95b4a1e7de442f66d1097b725dd3cdd739862f491453fc7d7b1f88181a12fb";
+  };
+
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vino/default.nix b/pkgs/desktops/gnome-3/3.22/core/vino/default.nix
new file mode 100644
index 000000000000..524813957563
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vino/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, lib, makeWrapper
+, pkgconfig, gnome3, gtk3, glib, intltool, libXtst, libnotify, libsoup
+, telepathySupport ? false, dbus_glib ? null, telepathy_glib ? null
+, libsecret ? null, gnutls ? null, libgcrypt ? null, avahi ? null
+, zlib ? null, libjpeg ? null
+, libXdamage ? null, libXfixes ? null, libXext ? null
+, gnomeKeyringSupport ? false, libgnome_keyring3 ? null
+, networkmanager ? null }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [
+    makeWrapper
+    pkgconfig gnome3.defaultIconTheme gtk3 glib intltool libXtst libnotify libsoup
+  ] ++ optionals telepathySupport [ dbus_glib telepathy_glib ]
+    ++ optional gnomeKeyringSupport libgnome_keyring3
+    ++ filter (p: p != null) [
+      libsecret gnutls libgcrypt avahi zlib libjpeg
+      libXdamage libXfixes libXext networkmanager
+    ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/vino-server" \
+      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Projects/Vino;
+    description = "GNOME desktop sharing server";
+    maintainers = with maintainers; [ lethalman domenkozar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vino/src.nix b/pkgs/desktops/gnome-3/3.22/core/vino/src.nix
new file mode 100644
index 000000000000..8cf55272da97
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vino/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "vino-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/vino/3.22/vino-3.22.0.tar.xz;
+    sha256 = "2911c779b6a2c46e5bc8e5a0c94c2a4d5bd4a1ee7e35f2818702cb13d9d23bab";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix b/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix
new file mode 100644
index 000000000000..cbb52c9aaa12
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/2.90.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  versionMajor = "0.36";
+  versionMinor = "3";
+  moduleName   = "vte";
+
+  name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+    sha256 = "54e5b07be3c0f7b158302f54ee79d4de1cb002f4259b6642b79b1e0e314a959c";
+  };
+
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses ];
+
+  configureFlags = [ "--enable-introspection" ];
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses.out}/lib -lncurses"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/;
+    description = "A library implementing a terminal emulator widget for GTK+";
+    longDescription = ''
+      VTE is a library (libvte) implementing a terminal emulator widget for
+      GTK+, and a minimal sample application (vte) using that.  Vte is
+      mainly used in gnome-terminal, but can also be used to embed a
+      console/terminal in games, editors, IDEs, etc. VTE supports Unicode and
+      character set conversion, as well as emulating any terminal known to
+      the system's terminfo database.
+    '';
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ astsmtl antono lethalman ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/default.nix b/pkgs/desktops/gnome-3/3.22/core/vte/default.nix
new file mode 100644
index 000000000000..50aef658713a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, intltool, pkgconfig
+, gnome3, ncurses, gobjectIntrospection, vala_0_32, libxml2, gnutls
+, fetchFromGitHub, autoconf, automake, libtool, gtk_doc, gperf, pcre2
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib
+                  gnome3.gtk3 ncurses vala_0_32 libxml2 ];
+
+  propagatedBuildInputs = [ gnutls pcre2 ];
+
+  preConfigure = "patchShebangs .";
+
+  configureFlags = [ "--enable-introspection" ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnome.org/;
+    description = "A library implementing a terminal emulator widget for GTK+";
+    longDescription = ''
+      VTE is a library (libvte) implementing a terminal emulator widget for
+      GTK+, and a minimal sample application (vte) using that.  Vte is
+      mainly used in gnome-terminal, but can also be used to embed a
+      console/terminal in games, editors, IDEs, etc. VTE supports Unicode and
+      character set conversion, as well as emulating any terminal known to
+      the system's terminfo database.
+    '';
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ astsmtl antono lethalman ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/pkgs/desktops/gnome-3/3.22/core/vte/src.nix b/pkgs/desktops/gnome-3/3.22/core/vte/src.nix
new file mode 100644
index 000000000000..d80749a2566a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/vte/src.nix
@@ -0,0 +1,11 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  name = "vte-${major}.0";
+  major = "0.46";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/vte/${major}/${name}.tar.xz";
+    sha256 = "5f7122e7860eb2470d310fc63df91d3ee32bab233729c2dc181a0cbc9b3249d7";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix
new file mode 100644
index 000000000000..9111802eb6a8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ libxml2 libxslt itstool gnome3.yelp_xsl pkgconfig ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp/Tools;
+    description = "Small programs that help you create, edit, manage, and publish your Mallard or DocBook documentation";
+    maintainers = with maintainers; [ domenkozar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix
new file mode 100644
index 000000000000..f03c6d1bc311
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-tools/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-tools-3.18.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp-tools/3.18/yelp-tools-3.18.0.tar.xz;
+    sha256 = "c6c1d65f802397267cdc47aafd5398c4b60766e0a7ad2190426af6c0d0716932";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix
new file mode 100644
index 000000000000..0a3976f35a15
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, intltool, fetchurl, pkgconfig, bash
+, itstool, libxml2, libxslt, gnome3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  buildInputs = [ pkgconfig intltool itstool libxml2 libxslt ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp;
+    description = "Yelp's universal stylesheets for Mallard and DocBook";
+    maintainers = gnome3.maintainers;
+    license = [licenses.gpl2 licenses.lgpl2];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix
new file mode 100644
index 000000000000..de5d68d1fab1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp-xsl/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-xsl-3.20.1";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp-xsl/3.20/yelp-xsl-3.20.1.tar.xz;
+    sha256 = "dc61849e5dca473573d32e28c6c4e3cf9c1b6afe241f8c26e29539c415f97ba0";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix b/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix
new file mode 100644
index 000000000000..4ee79bbc3dc5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib
+, file, librsvg, gnome3, gdk_pixbuf, sqlite, groff
+, bash, makeWrapper, itstool, libxml2, libxslt, icu, gst_all_1
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
+
+  buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool sqlite
+                  libxml2 libxslt icu file makeWrapper gnome3.yelp_xsl
+                  librsvg gdk_pixbuf gnome3.defaultIconTheme groff
+                  gnome3.gsettings_desktop_schemas wrapGAppsHook
+                  gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Yelp;
+    description = "The help viewer in Gnome";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix b/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix
new file mode 100644
index 000000000000..7f38bab736fd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/yelp/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "yelp-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/yelp/3.22/yelp-3.22.0.tar.xz;
+    sha256 = "8616b77c239aaa731312609f192c9b2c71d54b2cae42ff23efa23b5b3188778e";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix b/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix
new file mode 100644
index 000000000000..8f525945a6af
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/zenity/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, itstool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  preBuild = ''
+    mkdir -p $out/include
+  '';
+
+  buildInputs = [ gnome3.gtk libxml2 libxslt libX11 itstool ];
+
+  nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix b/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix
new file mode 100644
index 000000000000..75476b43b958
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/core/zenity/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "zenity-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/zenity/3.22/zenity-3.22.0.tar.xz;
+    sha256 = "1ecdfa1071d383b373b8135954b3ec38d402d671dcd528e69d144aff36a0e466";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/default.nix b/pkgs/desktops/gnome-3/3.22/default.nix
new file mode 100644
index 000000000000..3b76ac80fdb0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/default.nix
@@ -0,0 +1,398 @@
+{ pkgs }:
+
+let
+
+  pkgsFun = overrides:
+    let
+      self = self_ // overrides;
+      self_ = with self; {
+
+  overridePackages = f:
+    let newself = pkgsFun (f newself self);
+    in newself;
+
+  callPackage = pkgs.newScope self;
+
+  version = "3.22";
+  maintainers = with pkgs.lib.maintainers; [ lethalman jgeerds DamienCassou ];
+
+  corePackages = with gnome3; [
+    pkgs.desktop_file_utils pkgs.ibus
+    pkgs.shared_mime_info # for update-mime-database
+    glib # for gsettings
+    gtk3 # for gtk-update-icon-cache
+    glib_networking gvfs dconf gnome-backgrounds gnome_control_center
+    gnome-menus gnome_settings_daemon gnome_shell
+    gnome_themes_standard defaultIconTheme gnome-shell-extensions
+    pkgs.hicolor_icon_theme
+  ];
+
+  optionalPackages = with gnome3; [ baobab eog epiphany evince
+    gucharmap nautilus totem vino yelp gnome-bluetooth
+    gnome-calculator gnome-contacts gnome-font-viewer gnome-screenshot
+    gnome-system-log gnome-system-monitor
+    gnome_terminal gnome-user-docs bijiben evolution file-roller gedit
+    gnome-clocks gnome-music gnome-tweak-tool gnome-photos
+    nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
+    gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool
+    gnome-getting-started-docs gnome-packagekit gnome-software
+  ];
+
+  gamesPackages = with gnome3; [ swell-foop lightsoff iagno
+    tali quadrapassel gnome-sudoku aisleriot five-or-more
+    four-in-a-row gnome-chess gnome-klotski gnome-mahjongg
+    gnome-mines gnome-nibbles gnome-robots gnome-tetravex
+    hitori gnome-taquin
+  ];
+
+  inherit (pkgs) glib gtk2 webkitgtk214x gtk3 gtkmm3 libcanberra_gtk2
+    clutter clutter-gst clutter_gtk cogl gtkvnc;
+  inherit (pkgs.gnome2) ORBit2;
+  libsoup = pkgs.libsoup.override { gnomeSupport = true; };
+  libchamplain = pkgs.libchamplain.override { libsoup = libsoup; };
+  orbit = ORBit2;
+  gnome3 = self // { recurseForDerivations = false; };
+  gtk = gtk3;
+  gtkmm = gtkmm3;
+  vala = pkgs.vala_0_32;
+  gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; };
+  webkitgtk = webkitgtk214x;
+
+# Simplify the nixos module and gnome packages
+  defaultIconTheme = adwaita-icon-theme;
+
+# ISO installer
+# installerIso = callPackage ./installer.nix {};
+
+#### 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 { };
+  dconf-editor = callPackage ./core/dconf-editor { };
+
+  # 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-software = callPackage ./core/gnome-software { };
+
+  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 { };
+
+  gtksourceviewmm = callPackage ./core/gtksourceviewmm { };
+
+  gucharmap = callPackage ./core/gucharmap { };
+
+  gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; };
+
+  eog = callPackage ./core/eog { };
+
+  libcroco = callPackage ./core/libcroco {};
+
+  libgee = callPackage ./core/libgee { };
+
+  libgepub = callPackage ./core/libgepub { };
+
+  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 { };
+
+  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_290 = callPackage ./core/vte/2.90.nix { };
+
+  vino = callPackage ./core/vino { };
+
+  yelp = callPackage ./core/yelp { };
+
+  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/)
+
+  accerciser = callPackage ./apps/accerciser { };
+
+  bijiben = callPackage ./apps/bijiben {
+    # https://bugzilla.gnome.org/show_bug.cgi?id=728293
+    webkitgtk = pkgs.webkitgtk24x;
+  };
+
+  cheese = callPackage ./apps/cheese { };
+
+  evolution = callPackage ./apps/evolution { };
+
+  file-roller = callPackage ./apps/file-roller { };
+
+  gedit = callPackage ./apps/gedit { };
+
+  glade = callPackage ./apps/glade { };
+
+  gnome-boxes = callPackage ./apps/gnome-boxes { };
+
+  gnome-calendar = callPackage ./apps/gnome-calendar { };
+
+  gnome-characters = callPackage ./apps/gnome-characters { };
+
+  gnome-clocks = callPackage ./apps/gnome-clocks { };
+
+  gnome-documents = callPackage ./apps/gnome-documents { };
+
+  gnome-getting-started-docs = callPackage ./apps/gnome-getting-started-docs { };
+
+  gnome-logs = callPackage ./apps/gnome-logs { };
+
+  gnome-maps = callPackage ./apps/gnome-maps { };
+
+  gnome-music = callPackage ./apps/gnome-music { };
+
+  gnome-nettool = callPackage ./apps/gnome-nettool { };
+
+  gnome-photos = callPackage ./apps/gnome-photos {
+    gegl = gegl_0_3;
+  };
+
+  gnome-weather = callPackage ./apps/gnome-weather { };
+
+  nautilus-sendto = callPackage ./apps/nautilus-sendto { };
+
+  polari = callPackage ./apps/polari { };
+
+  # scrollkeeper replacement
+  rarian = callPackage ./desktop/rarian { };
+
+  seahorse = callPackage ./apps/seahorse { };
+
+  vinagre = callPackage ./apps/vinagre { };
+
+#### Dev http://ftp.gnome.org/pub/GNOME/devtools/
+
+  anjuta = callPackage ./devtools/anjuta { };
+
+  devhelp = callPackage ./devtools/devhelp { };
+
+  gdl = callPackage ./devtools/gdl { };
+
+  gnome-devel-docs = callPackage ./devtools/gnome-devel-docs { };
+
+  nemiver = callPackage ./devtools/nemiver { };
+
+#### Games
+
+  aisleriot = callPackage ./games/aisleriot { };
+
+  five-or-more = callPackage ./games/five-or-more { };
+
+  four-in-a-row = callPackage ./games/four-in-a-row { };
+
+  gnome-chess = callPackage ./games/gnome-chess { };
+
+  gnome-klotski = callPackage ./games/gnome-klotski { };
+
+  gnome-mahjongg = callPackage ./games/gnome-mahjongg { };
+
+  gnome-mines = callPackage ./games/gnome-mines { };
+
+  gnome-nibbles = callPackage ./games/gnome-nibbles { };
+
+  gnome-robots = callPackage ./games/gnome-robots { };
+
+  gnome-sudoku = callPackage ./games/gnome-sudoku { };
+
+  gnome-taquin = callPackage ./games/gnome-taquin { };
+
+  gnome-tetravex = callPackage ./games/gnome-tetravex { };
+
+  hitori = callPackage ./games/hitori { };
+
+  iagno = callPackage ./games/iagno { };
+
+  lightsoff = callPackage ./games/lightsoff { };
+
+  swell-foop = callPackage ./games/swell-foop { };
+
+  tali = callPackage ./games/tali { };
+
+  quadrapassel = callPackage ./games/quadrapassel { };
+
+#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/
+
+  california = callPackage ./misc/california { };
+
+  geary = callPackage ./misc/geary {
+    # https://bugzilla.gnome.org/show_bug.cgi?id=728002
+    webkitgtk = pkgs.webkitgtk24x;
+  };
+
+  gfbgraph = callPackage ./misc/gfbgraph { };
+
+  gitg = callPackage ./misc/gitg { };
+
+  gspell = callPackage ./misc/gspell { };
+
+  libgames-support = callPackage ./misc/libgames-support { };
+
+  libgda = callPackage ./misc/libgda { };
+
+  libgit2-glib = callPackage ./misc/libgit2-glib { };
+
+  libmediaart = callPackage ./misc/libmediaart { };
+
+  gexiv2 = callPackage ./misc/gexiv2 { };
+
+  gnome-tweak-tool = callPackage ./misc/gnome-tweak-tool { };
+
+  gpaste = callPackage ./misc/gpaste { };
+
+  pidgin-im-gnome-shell-extension = callPackage ./misc/pidgin { };
+
+  gtkhtml = callPackage ./misc/gtkhtml { };
+
+  pomodoro = callPackage ./misc/pomodoro { };
+
+  gnome-autoar = callPackage ./misc/gnome-autoar { };
+
+  gnome-video-effects = callPackage ./misc/gnome-video-effects { };
+
+  gnome-packagekit = callPackage ./misc/gnome-packagekit { };
+
+    };
+  in self; # pkgsFun
+
+in pkgsFun {}
diff --git a/pkgs/desktops/gnome-3/3.22/desktop/rarian/default.nix b/pkgs/desktops/gnome-3/3.22/desktop/rarian/default.nix
new file mode 100644
index 000000000000..a1b38b21869a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/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.22/devtools/anjuta/default.nix b/pkgs/desktops/gnome-3/3.22/devtools/anjuta/default.nix
new file mode 100644
index 000000000000..3cb62fef6c2f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/anjuta/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, flex, bison, libxml2, intltool,
+  itstool, python, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ pkgconfig flex bison gtk3 libxml2 gnome3.gjs gnome3.gdl
+    gnome3.libgda gnome3.gtksourceview intltool itstool python makeWrapper
+    gnome3.gsettings_desktop_schemas
+  ];
+
+  preFixup = ''
+    wrapProgram $out/bin/anjuta \
+      --prefix XDG_DATA_DIRS : \
+        "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  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.22/devtools/anjuta/src.nix b/pkgs/desktops/gnome-3/3.22/devtools/anjuta/src.nix
new file mode 100644
index 000000000000..bbb7696d91c9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/anjuta/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "anjuta-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/anjuta/3.22/anjuta-3.22.0.tar.xz;
+    sha256 = "4face1c063a5a6687a6cfc6f1f700ba15f13664633c05caa2fbf50317608dd03";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/devhelp/default.nix b/pkgs/desktops/gnome-3/3.22/devtools/devhelp/default.nix
new file mode 100644
index 000000000000..1cfae754cfec
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/devhelp/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, webkitgtk, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook webkitgtk intltool gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://live.gnome.org/devhelp;
+    description = "API documentation browser for GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/devhelp/src.nix b/pkgs/desktops/gnome-3/3.22/devtools/devhelp/src.nix
new file mode 100644
index 000000000000..02747b9153cb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/devhelp/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "devhelp-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/devhelp/3.22/devhelp-3.22.0.tar.xz;
+    sha256 = "59cae02e12d238cc5fc3f049d779895ba89701426d9173f5b534d4ab90c5ffb0";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/gdl/default.nix b/pkgs/desktops/gnome-3/3.22/devtools/gdl/default.nix
new file mode 100644
index 000000000000..156d91b3eae7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/gdl/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk3, gnome3, intltool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig libxml2 gtk3 intltool ];
+
+  meta = with stdenv.lib; {
+    description = "Gnome docking library";
+    homepage = https://developer.gnome.org/gdl/;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/gdl/src.nix b/pkgs/desktops/gnome-3/3.22/devtools/gdl/src.nix
new file mode 100644
index 000000000000..c8b65884e082
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/gdl/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gdl-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gdl/3.22/gdl-3.22.0.tar.xz;
+    sha256 = "cc5b360e1392292186924f0f9a8efc0f4db7e6e56dc7042037466b5cc839660c";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/default.nix b/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/default.nix
new file mode 100644
index 000000000000..50960f41a312
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ intltool itstool libxml2 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/GNOME/gnome-devel-docs;
+    description = "Developer documentation for GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.fdl12;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/src.nix b/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/src.nix
new file mode 100644
index 000000000000..7f39aabda022
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/gnome-devel-docs/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-devel-docs-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-devel-docs/3.22/gnome-devel-docs-3.22.0.tar.xz;
+    sha256 = "e0778c62670b1c19d45191ac5503568cbd09500e9e30015b48c19e95959e6d85";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/nemiver/bool_slot.patch b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/bool_slot.patch
new file mode 100644
index 000000000000..83423122110c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/bool_slot.patch
@@ -0,0 +1,13 @@
+--- a/src/dbgengine/nmv-dbg-common.h	2014-07-09 10:36:05.000000000 +0200
++++ b/src/dbgengine/nmv-dbg-common.h	2016-08-04 22:40:28.447842746 +0200
+@@ -171,7 +171,9 @@
+ 
+     bool has_slot () const
+     {
+-        return m_slot;
++        //return m_slot;
++        // https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822502
++        return static_cast<bool> (m_slot);
+     }
+ 
+     template<class T>
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/nemiver/default.nix b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/default.nix
new file mode 100644
index 000000000000..e61643fd9db8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, libxml2, intltool, itstool, gdb,
+  boost, sqlite, gconf, libgtop, glibmm, gtkmm, vte, gtksourceview,
+  gtksourceviewmm, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ gtk3 libxml2 intltool itstool gdb boost sqlite gconf libgtop
+    glibmm gtkmm vte gtksourceview gtksourceviewmm ];
+
+  patches = [ ./bool_slot.patch ./safe_ptr.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Nemiver";
+    description = "Easy to use standalone C/C++ debugger";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.juliendehos ];
+  };
+}
+
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/nemiver/safe_ptr.patch b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/safe_ptr.patch
new file mode 100644
index 000000000000..e3413b224977
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/safe_ptr.patch
@@ -0,0 +1,10 @@
+--- a/src/confmgr/nmv-gconf-mgr.cc	2014-07-08 10:24:06.000000000 +0200
++++ b/src/confmgr/nmv-gconf-mgr.cc	2016-08-04 23:50:08.143060464 +0200
+@@ -32,6 +32,7 @@
+ NEMIVER_BEGIN_NAMESPACE (nemiver)
+ 
+ using nemiver::common::GCharSafePtr;
++using nemiver::common::GErrorSafePtr;
+ 
+ class GConfMgr : public IConfMgr {
+     GConfMgr (const GConfMgr &);
diff --git a/pkgs/desktops/gnome-3/3.22/devtools/nemiver/src.nix b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/src.nix
new file mode 100644
index 000000000000..2fcf639fe1b4
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/devtools/nemiver/src.nix
@@ -0,0 +1,11 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "nemiver-0.9.6";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/nemiver/0.9/nemiver-0.9.6.tar.xz;
+    sha256 = "85ab8cf6c4f83262f441cb0952a6147d075c3c53d0687389a3555e946b694ef2";
+  };
+}
+
diff --git a/pkgs/desktops/gnome-3/3.22/games/aisleriot/default.nix b/pkgs/desktops/gnome-3/3.22/games/aisleriot/default.nix
new file mode 100644
index 000000000000..e149a0b31264
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/aisleriot/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, gtk3
+, wrapGAppsHook, gconf, librsvg, libxml2, desktop_file_utils
+, guile, libcanberra_gtk3 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = [ "--with-card-theme-formats=svg" ];
+
+  buildInputs = [ pkgconfig intltool itstool gtk3 wrapGAppsHook gconf
+                  librsvg libxml2 desktop_file_utils guile libcanberra_gtk3 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Aisleriot;
+    description = "A collection of patience games written in guile scheme";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/aisleriot/src.nix b/pkgs/desktops/gnome-3/3.22/games/aisleriot/src.nix
new file mode 100644
index 000000000000..fbe6505b9a06
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/aisleriot/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "aisleriot-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/aisleriot/3.22/aisleriot-3.22.0.tar.xz;
+    sha256 = "e7b603df0a482bdd0ab8083efc096a24a46aea1b36cc8608846e568b7a353eb7";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/five-or-more/default.nix b/pkgs/desktops/gnome-3/3.22/games/five-or-more/default.nix
new file mode 100644
index 000000000000..50a7d2906a77
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/five-or-more/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, intltool, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2
+    gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Five_or_more;
+    description = "Remove colored balls from the board by forming lines";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/five-or-more/src.nix b/pkgs/desktops/gnome-3/3.22/games/five-or-more/src.nix
new file mode 100644
index 000000000000..597db69a5dcf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/five-or-more/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "five-or-more-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/five-or-more/3.22/five-or-more-3.22.0.tar.xz;
+    sha256 = "33c0ba7723144aea496112fa85a1d7e5a2a8ecaa32f4373471470d7c3078da94";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/default.nix b/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/default.nix
new file mode 100644
index 000000000000..68228750cd87
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, intltool, itstool, libcanberra_gtk3, librsvg, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool libcanberra_gtk3 librsvg
+    libxml2 gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Four-in-a-row;
+    description = "Make lines of the same color to win";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/src.nix b/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/src.nix
new file mode 100644
index 000000000000..e0e11bc2124c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/four-in-a-row/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "four-in-a-row-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/four-in-a-row/3.22/four-in-a-row-3.22.0.tar.xz;
+    sha256 = "c2e26630f7b4e81cff087314edc0f39cd645dfbf4b31f826232bd8e9d57a7ff7";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-chess/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-chess/default.nix
new file mode 100644
index 000000000000..a96dae3c12cb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-chess/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, intltool, itstool, librsvg, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libxml2
+    gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Chess;
+    description = "Play the classic two-player boardgame of chess";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-chess/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-chess/src.nix
new file mode 100644
index 000000000000..1cced81517d7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-chess/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-chess-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-chess/3.22/gnome-chess-3.22.0.tar.xz;
+    sha256 = "838040c120af08aaa8ef1a6a284e2de296b998b37e49adb9436a12b6a428154a";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/default.nix
new file mode 100644
index 000000000000..dc2289daff82
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, libxml2, intltool, itstool, libgee, libgames-support }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libxml2 libgee libgames-support
+    gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Klotski;
+    description = "Slide blocks to solve the puzzle";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/src.nix
new file mode 100644
index 000000000000..447bc1eff130
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-klotski/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-klotski-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-klotski/3.22/gnome-klotski-3.22.0.tar.xz;
+    sha256 = "25e35369d1b5d2f9e6b92d44568d21df631b5b23dd7b12ca226a04f58cb54700";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/default.nix
new file mode 100644
index 000000000000..43db32e88577
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, intltool, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2
+    gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Mahjongg;
+    description = "Disassemble a pile of tiles by removing matching pairs";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/src.nix
new file mode 100644
index 000000000000..c021136ee304
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-mahjongg/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-mahjongg-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-mahjongg/3.22/gnome-mahjongg-3.22.0.tar.xz;
+    sha256 = "f5972a14fa4ad04153bd6e68475b85cd79c6b44f6cac1fe1edb64dbad4135218";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-mines/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-mines/default.nix
new file mode 100644
index 000000000000..0b670ec9f65b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-mines/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, intltool, itstool, libxml2, libgames-support, libgee }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2
+    gnome3.defaultIconTheme libgames-support libgee
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Mines;
+    description = "Clear hidden mines from a minefield";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-mines/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-mines/src.nix
new file mode 100644
index 000000000000..67db003d99a0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-mines/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-mines-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-mines/3.22/gnome-mines-3.22.0.tar.xz;
+    sha256 = "ee6df05b36fdff0376371887c1375e63d9e90655146a9a787db3c3aa2b74908a";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/default.nix
new file mode 100644
index 000000000000..cf2282188782
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, libcanberra_gtk3, clutter_gtk, intltool, itstool
+, libxml2, libgee, libgames-support }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2
+    librsvg libcanberra_gtk3 clutter_gtk gnome3.defaultIconTheme
+    libgee libgames-support
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Nibbles;
+    description = "Guide a worm around a maze";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/src.nix
new file mode 100644
index 000000000000..e2948db9e4c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-nibbles/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-nibbles-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-nibbles/3.22/gnome-nibbles-3.22.0.tar.xz;
+    sha256 = "9cbc0aa458af0a4c00fd1bd528c4c3fecaea713390e2cbee796b0a6930e0cb49";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-robots/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-robots/default.nix
new file mode 100644
index 000000000000..9eafb166eee8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-robots/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, libcanberra_gtk3, intltool, itstool, libxml2, libgames-support
+, libgee}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libcanberra_gtk3
+    libxml2 gnome3.defaultIconTheme libgames-support libgee
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Robots;
+    description = "Avoid the robots and make them crash into each other";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-robots/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-robots/src.nix
new file mode 100644
index 000000000000..17fabe2de26b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-robots/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-robots-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-robots/3.22/gnome-robots-3.22.0.tar.xz;
+    sha256 = "ddb02f9d04c970354d1836813f8c0d9ffc3ff509091d2580384e2275663e6f73";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/default.nix
new file mode 100644
index 000000000000..c8ba82c7246d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gtk3, gnome3, wrapGAppsHook
+, json_glib, qqwing, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig intltool wrapGAppsHook gtk3 gnome3.libgee
+                  json_glib qqwing itstool libxml2 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Sudoku;
+    description = "Test your logic skills in this number grid puzzle";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/src.nix
new file mode 100644
index 000000000000..085cf2ffb203
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-sudoku/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-sudoku-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-sudoku/3.22/gnome-sudoku-3.22.0.tar.xz;
+    sha256 = "0f39a7afb864c6cffa1991cc5fda958e0eb03329eebe21ca2d965588cf5fa0d5";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/default.nix
new file mode 100644
index 000000000000..78eaa23e63bd
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, librsvg, libcanberra_gtk3, intltool, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook librsvg libcanberra_gtk3
+    intltool itstool libxml2 gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Taquin;
+    description = "Move tiles so that they reach their places";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/src.nix
new file mode 100644
index 000000000000..6828e56a911f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-taquin/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-taquin-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-taquin/3.22/gnome-taquin-3.22.0.tar.xz;
+    sha256 = "780af247856b91095a9a2e1a6b425e4e3a78520659e2157eddb421377e8ce982";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/default.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/default.nix
new file mode 100644
index 000000000000..d6feab93dba1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, libxml2, intltool, itstool }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2 gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Tetravex;
+    description = "Complete the puzzle by matching numbered tiles";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/src.nix b/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/src.nix
new file mode 100644
index 000000000000..e79b18263b99
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/gnome-tetravex/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-tetravex-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-tetravex/3.22/gnome-tetravex-3.22.0.tar.xz;
+    sha256 = "0a6d7ff5ffcd6c05454a919d46a2e389d6b5f87bc80e82c52c2f20d9d914e18d";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/hitori/default.nix b/pkgs/desktops/gnome-3/3.22/games/hitori/default.nix
new file mode 100644
index 000000000000..bd6be7d43c58
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/hitori/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
+, libxml2, intltool, itstool }:
+
+stdenv.mkDerivation rec {
+  name = "hitori-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/hitori/${gnome3.version}/${name}.tar.xz";
+    sha256 = "07pm3xl05jgb8x151k1j2ap57dmfvk2nkz9dmqnn5iywfigsysd1";
+  };
+
+  buildInputs = [
+    pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2
+    gnome3.defaultIconTheme
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Hitori;
+    description = "GTK+ application to generate and let you play games of Hitori";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/hitori/src.nix b/pkgs/desktops/gnome-3/3.22/games/hitori/src.nix
new file mode 100644
index 000000000000..47989cf2eae5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/hitori/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "hitori-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/hitori/3.22/hitori-3.22.0.tar.xz;
+    sha256 = "f70521c9a7a7c3e16b3951b64780eb0c5bce1bb1bb29de4482be06fb5e41adaa";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/iagno/default.nix b/pkgs/desktops/gnome-3/3.22/games/iagno/default.nix
new file mode 100644
index 000000000000..1b6f08d1fd65
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/iagno/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook
+, intltool, itstool, libcanberra_gtk3, libxml2, dconf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  dconf libxml2 libcanberra_gtk3 wrapGAppsHook itstool intltool ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Iagno;
+    description = "Computer version of the game Reversi, more popularly called Othello";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/iagno/src.nix b/pkgs/desktops/gnome-3/3.22/games/iagno/src.nix
new file mode 100644
index 000000000000..6c20a8f7844a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/iagno/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "iagno-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/iagno/3.22/iagno-3.22.0.tar.xz;
+    sha256 = "e7070c55f1f74cd9345388ee120f0e6cc47392868c2601664c26a0fa2672fe13";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/lightsoff/default.nix b/pkgs/desktops/gnome-3/3.22/games/lightsoff/default.nix
new file mode 100644
index 000000000000..8ec54b489721
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/lightsoff/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook
+, intltool, itstool, clutter, clutter_gtk, libxml2, dconf }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg dconf
+                  libxml2 clutter clutter_gtk wrapGAppsHook itstool intltool ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Lightsoff;
+    description = "Puzzle game, where the objective is to turn off all of the tiles on the board";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/lightsoff/src.nix b/pkgs/desktops/gnome-3/3.22/games/lightsoff/src.nix
new file mode 100644
index 000000000000..c79aa1582a1a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/lightsoff/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "lightsoff-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/lightsoff/3.22/lightsoff-3.22.0.tar.xz;
+    sha256 = "0458e0ff99a10a99573db4d3e1ea5abde186056d8e32cf1f0bd76e25ff2c4fca";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/quadrapassel/default.nix b/pkgs/desktops/gnome-3/3.22/games/quadrapassel/default.nix
new file mode 100644
index 000000000000..f319608764d6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/quadrapassel/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf
+, librsvg, libcanberra_gtk3
+, intltool, itstool, libxml2, clutter, clutter_gtk, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  libcanberra_gtk3 itstool intltool clutter
+                  libxml2 clutter_gtk wrapGAppsHook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Quadrapassel;
+    description = "Classic falling-block game, Tetris";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/quadrapassel/src.nix b/pkgs/desktops/gnome-3/3.22/games/quadrapassel/src.nix
new file mode 100644
index 000000000000..57bdb4771ddf
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/quadrapassel/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "quadrapassel-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/quadrapassel/3.22/quadrapassel-3.22.0.tar.xz;
+    sha256 = "0ed44ef73c8811cbdfc3b44c8fd80eb6e2998d102d59ac324e4748f5d9dddb55";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/swell-foop/default.nix b/pkgs/desktops/gnome-3/3.22/games/swell-foop/default.nix
new file mode 100644
index 000000000000..3d3e424d0da8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/swell-foop/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, dconf
+, clutter, clutter_gtk, intltool, itstool, libxml2, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  dconf wrapGAppsHook itstool intltool clutter clutter_gtk libxml2 ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://wiki.gnome.org/Apps/Swell%20Foop";
+    description = "Puzzle game, previously known as Same GNOME";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/swell-foop/src.nix b/pkgs/desktops/gnome-3/3.22/games/swell-foop/src.nix
new file mode 100644
index 000000000000..e0644e539fb7
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/swell-foop/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "swell-foop-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/swell-foop/3.22/swell-foop-3.22.0.tar.xz;
+    sha256 = "e7bb6f4c7932a17c3f48e5b7df66f4e3953642e8126389531592a79fdf71e0a4";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/tali/default.nix b/pkgs/desktops/gnome-3/3.22/games/tali/default.nix
new file mode 100644
index 000000000000..c2b1f5857124
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/tali/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf
+, librsvg, intltool, itstool, libxml2, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  libxml2 itstool intltool wrapGAppsHook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Tali;
+    description = "Sort of poker with dice and less money";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/games/tali/src.nix b/pkgs/desktops/gnome-3/3.22/games/tali/src.nix
new file mode 100644
index 000000000000..108144cc3eef
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/games/tali/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "tali-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/tali/3.22/tali-3.22.0.tar.xz;
+    sha256 = "5ba17794d6fb06b794daaffa62a6aaa372b7de8886ce5ec596c37e62bb71728b";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/installer.nix b/pkgs/desktops/gnome-3/3.22/installer.nix
new file mode 100644
index 000000000000..4999e1f3343c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/installer.nix
@@ -0,0 +1,15 @@
+{ isoBaseName ? "nixos-graphical-gnome", system ? builtins.currentSystem
+, extraModules ? [] }:
+
+let
+
+  module = ../../../../nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix;
+
+  config = (import ../../../../nixos/lib/eval-config.nix {
+    inherit system;
+    modules = [ module { isoImage.isoBaseName = isoBaseName; } ] ++ extraModules;
+  }).config;
+
+in
+  config.system.build.isoImage
+
diff --git a/pkgs/desktops/gnome-3/3.22/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch b/pkgs/desktops/gnome-3/3.22/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch
new file mode 100644
index 000000000000..c229cc96094f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch
@@ -0,0 +1,39 @@
+diff --git a/configure.ac b/configure.ac
+index 8a94642..1ca6426 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -27,7 +27,7 @@ AC_SUBST(LDFLAGS)
+ GLIB_REQUIRED=2.38.0
+ GTK_REQUIRED=3.12.2
+ GEE_REQUIRED=0.10.5
+-ECAL_REQUIRED=3.8.5
++ECAL_REQUIRED=3.13.90
+ LIBSOUP_REQUIRED=2.44
+ GDATA_REQUIRED=0.14.0
+ GOA_REQUIRED=3.8.3
+diff --git a/src/backing/eds/backing-eds-calendar-source.vala b/src/backing/eds/backing-eds-calendar-source.vala
+index ee6a572..5009b5d 100644
+--- a/src/backing/eds/backing-eds-calendar-source.vala
++++ b/src/backing/eds/backing-eds-calendar-source.vala
+@@ -256,7 +256,7 @@ internal class EdsCalendarSource : CalendarSource {
+
+     // Invoked by EdsStore prior to making it available outside of unit
+     internal async void open_async(Cancellable? cancellable) throws Error {
+-        client = (E.CalClient) yield E.CalClient.connect(eds_source, E.CalClientSourceType.EVENTS,
++        client = (E.CalClient) yield E.CalClient.connect(eds_source, E.CalClientSourceType.EVENTS, 1,
+             cancellable);
+
+         client.bind_property("readonly", this, PROP_READONLY, BindingFlags.SYNC_CREATE);
+diff --git a/vapi/libecal-1.2.vapi b/vapi/libecal-1.2.vapi
+index 6ead3ec..46fd711 100644
+--- a/vapi/libecal-1.2.vapi
++++ b/vapi/libecal-1.2.vapi
+@@ -23,7 +23,7 @@ namespace E {
+		public bool check_save_schedules ();
+		public static bool check_timezones (iCal.icalcomponent comp, GLib.List comps, GLib.Callback tzlookup, void* ecalclient, GLib.Cancellable cancellable) throws GLib.Error;
+		[CCode (finish_name = "e_cal_client_connect_finish")]
+-		public static async unowned E.Client connect (E.Source source, E.CalClientSourceType source_type, GLib.Cancellable cancellable) throws GLib.Error;
++		public static async unowned E.Client connect (E.Source source, E.CalClientSourceType source_type, uint32 wait_for_connected_seconds, GLib.Cancellable cancellable) throws GLib.Error;
+		public static unowned E.Client connect_sync (E.Source source, E.CalClientSourceType source_type, GLib.Cancellable cancellable) throws GLib.Error;
+		[CCode (finish_name = "e_cal_client_create_object_finish")]
+		public async void create_object (iCal.icalcomponent icalcomp, GLib.Cancellable? cancellable, out string out_uid) throws GLib.Error;
diff --git a/pkgs/desktops/gnome-3/3.22/misc/california/default.nix b/pkgs/desktops/gnome-3/3.22/misc/california/default.nix
new file mode 100644
index 000000000000..ca0450dc7f94
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/california/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala_0_32, makeWrapper
+, gnome3, glib, libsoup, libgdata, sqlite, itstool, xdg_utils }:
+
+let
+  majorVersion = "0.4";
+in
+stdenv.mkDerivation rec {
+  name = "california-${majorVersion}.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/california/${majorVersion}/${name}.tar.xz";
+    sha256 = "1dky2kllv469k8966ilnf4xrr7z35pq8mdvs7kwziy59cdikapxj";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ makeWrapper intltool pkgconfig vala_0_32 glib gtk3 gnome3.libgee
+    libsoup libgdata gnome3.gnome_online_accounts gnome3.evolution_data_server
+    sqlite itstool xdg_utils gnome3.gsettings_desktop_schemas ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/california" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.defaultIconTheme}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH:${gnome3.gsettings_desktop_schemas}/share"
+  '';
+
+  enableParallelBuilding = true;
+
+  # Apply fedoras patch to build with evolution-data-server >3.13
+  patches = [ ./0002-Build-with-evolution-data-server-3.13.90.patch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/California;
+    description = "Calendar application for GNOME 3";
+    maintainers = with maintainers; [ pSub ];
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/geary/default.nix b/pkgs/desktops/gnome-3/3.22/misc/geary/default.nix
new file mode 100644
index 000000000000..9eb7e78d8d45
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/geary/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala_0_32
+, makeWrapper, gdk_pixbuf, cmake, desktop_file_utils
+, libnotify, libcanberra_gtk3, libsecret, gmime
+, libpthreadstubs, sqlite
+, gnome3, librsvg, gnome_doc_utils, webkitgtk }:
+
+let
+  majorVersion = "0.11";
+in
+stdenv.mkDerivation rec {
+  name = "geary-${majorVersion}.2";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/geary/${majorVersion}/${name}.tar.xz";
+    sha256 = "0ca6kdprhm8w990n6wgpvn0vzsdrnv9vjdm448pa8winspn217jw";
+  };
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  buildInputs = [ intltool pkgconfig gtk3 makeWrapper cmake desktop_file_utils gnome_doc_utils
+                  vala_0_32 webkitgtk libnotify libcanberra_gtk3 gnome3.libgee libsecret gmime sqlite
+                  libpthreadstubs gnome3.gsettings_desktop_schemas gnome3.gcr
+                  gdk_pixbuf librsvg gnome3.defaultIconTheme ];
+
+  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;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Geary;
+    description = "Mail client for GNOME 3";
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gexiv2/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gexiv2/default.nix
new file mode 100644
index 000000000000..7cea9cd8d150
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gexiv2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4, gnome3 }:
+
+let
+  majorVersion = "0.10";
+in
+stdenv.mkDerivation rec {
+  name = "gexiv2-${version}";
+  version = "${majorVersion}.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gexiv2/${majorVersion}/${name}.tar.xz";
+    sha256 = "390cfb966197fa9f3f32200bc578d7c7f3560358c235e6419657206a362d3988";
+  };
+
+  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 = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gfbgraph/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gfbgraph/default.nix
new file mode 100644
index 000000000000..46fa9bc39e5a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gfbgraph/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, intltool, fetchurl, pkgconfig, glib
+, gnome3, libsoup, json_glib }:
+
+stdenv.mkDerivation rec {
+  name = "gfbgraph-0.2.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gfbgraph/0.2/${name}.tar.xz";
+    sha256 = "1dp0v8ia35fxs9yhnqpxj3ir5lh018jlbiwifjfn8ayy7h47j4fs";
+  };
+
+  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 = gnome3.maintainers;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gitg/default.nix
new file mode 100644
index 000000000000..8d9ee143ac2b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gitg/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, fetchgit, vala_0_32, intltool, libgit2, pkgconfig, gtk3, glib
+, json_glib, webkitgtk, wrapGAppsHook, libpeas, bash, gobjectIntrospection
+, gnome3, gtkspell3, shared_mime_info, libgee, libgit2-glib, librsvg, libsecret
+, dconf}:
+
+
+# TODO: icons and theme still does not work
+# use packaged gnome3.adwaita-icon-theme
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  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_0_32 intltool libgit2 pkgconfig gtk3 glib json_glib webkitgtk libgee libpeas
+                  libgit2-glib gtkspell3 gnome3.gsettings_desktop_schemas gnome3.gtksourceview
+                  librsvg libsecret dconf
+                  gobjectIntrospection gnome3.adwaita-icon-theme ];
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=758240
+  preBuild = ''make -j$NIX_BUILD_CORES Gitg-1.0.gir'';
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/Gitg;
+    description = "GNOME GUI client to view git repositories";
+    maintainers = with maintainers; [ domenkozar ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gitg/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gitg/src.nix
new file mode 100644
index 000000000000..bc9e517aceb8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gitg/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gitg-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gitg/3.22/gitg-3.22.0.tar.xz;
+    sha256 = "ba6895f85c18748294075980a5e03e0936ad4e84534dbb0d8f9e29aa874ddeaf";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/default.nix
new file mode 100644
index 000000000000..3a35a87ceafc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, gnome3
+, gtk3, glib, gobjectIntrospection, libarchive
+}:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk3 glib ];
+  propagatedBuildInputs = [ libarchive gobjectIntrospection ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.lgpl21;
+    description = "Library to integrate compressed files management with GNOME";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/src.nix
new file mode 100644
index 000000000000..c9f10fa8cd7f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-autoar/src.nix
@@ -0,0 +1,12 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  pname = "gnome-autoar";
+  version = "0.1";
+  name = "${pname}-${version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${version}/${name}.tar.xz";
+    sha256 = "f65cb810b562dc038ced739fbf59739fd5df1a8e848636e21f363ded9f349ac9";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/default.nix
new file mode 100644
index 000000000000..ee3dd60e59ad
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit
+, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ libxslt gnome3.gtk packagekit fontconfig
+                  libcanberra_gtk3 libnotify dbus_glib dbus_libs ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "Tools for installing software on the GNOME desktop using PackageKit";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/src.nix
new file mode 100644
index 000000000000..8937b7dd1a79
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-packagekit/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-packagekit-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-packagekit/3.22/gnome-packagekit-3.22.0.tar.xz;
+    sha256 = "0b28d4928f9767a512723b49656266aaa2a7909d880e5e4238c0e3436ac4908c";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
new file mode 100644
index 000000000000..7a16d2c24e56
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
@@ -0,0 +1,120 @@
+From bdbbe312e6520ce70e91319162e85367a69ce044 Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sat, 1 Aug 2015 21:01:11 +0200
+Subject: [PATCH 1/3] Search for themes and icons in system data dirs
+
+---
+ gtweak/tweaks/tweak_group_interface.py | 17 ++++-------------
+ gtweak/tweaks/tweak_group_keymouse.py  |  7 ++-----
+ gtweak/utils.py                        | 17 +++++++++++++++++
+ 3 files changed, 23 insertions(+), 18 deletions(-)
+
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_interface.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+@@ -26,7 +26,7 @@ from gi.repository import Gtk
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file
++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
+ from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.gshellwrapper import GnomeShellFactory
+ from gtweak.gsettings import GSettingsSetting
+@@ -50,10 +50,7 @@ class GtkThemeSwitcher(GSettingsComboTwe
+         if gtk_ver % 2: # Want even number
+             gtk_ver += 1
+ 
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
+-                 os.path.join(GLib.get_user_data_dir(), "themes"),
+-                 os.path.join(os.path.expanduser("~"), ".themes"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.exists(os.path.join(d, "gtk-2.0")) and \
+                         (os.path.exists(os.path.join(d, "gtk-3.0")) or \
+                          os.path.exists(os.path.join(d, "gtk-3.{}".format(gtk_ver)))))
+@@ -69,10 +66,7 @@ class IconThemeSwitcher(GSettingsComboTw
+             **options)
+ 
+     def _get_valid_icon_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
+-                 os.path.join(GLib.get_user_data_dir(), "icons"),
+-                 os.path.join(os.path.expanduser("~"), ".icons"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+ 			os.path.exists(os.path.join(d, "index.theme")))
+         return valid
+@@ -87,10 +81,7 @@ class CursorThemeSwitcher(GSettingsCombo
+             **options)
+ 
+     def _get_valid_cursor_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
+-                 os.path.join(GLib.get_user_data_dir(), "icons"),
+-                 os.path.join(os.path.expanduser("~"), ".icons"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+                         os.path.exists(os.path.join(d, "cursors")))
+         return valid
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_keymouse.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+@@ -20,7 +20,7 @@ import os.path
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default
++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
+ from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
+ 
+ class PrimaryPasteTweak(GetterSetterSwitchTweak):
+@@ -48,10 +48,7 @@ class KeyThemeSwitcher(GSettingsComboTwe
+             **options)
+ 
+     def _get_valid_key_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
+-                 os.path.join(GLib.get_user_data_dir(), "themes"),
+-                 os.path.join(os.path.expanduser("~"), ".themes"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
+                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
+         return valid
+Index: gnome-tweak-tool-3.20.1/gtweak/utils.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/utils.py
++++ gnome-tweak-tool-3.20.1/gtweak/utils.py
+@@ -21,6 +21,7 @@ import tempfile
+ import shutil
+ import subprocess
+ import glob
++import itertools
+ 
+ import gtweak
+ from gtweak.gsettings import GSettingsSetting
+@@ -116,6 +117,22 @@ def execute_subprocess(cmd_then_args, bl
+         stdout, stderr = p.communicate()
+         return stdout, stderr, p.returncode
+ 
++def get_resource_dirs(resource):
++    """Returns a list of all known resource dirs for a given resource.
++
++    :param str resource:
++        Name of the resource (e.g. "themes")
++    :return:
++        A list of resource dirs
++    """
++    dirs = [os.path.join(dir, resource)
++            for dir in itertools.chain(GLib.get_system_data_dirs(),
++                                       (gtweak.DATA_DIR,
++                                        GLib.get_user_data_dir()))]
++    dirs += [os.path.join(os.path.expanduser("~"), ".{}".format(resource))]
++
++    return [dir for dir in dirs if os.path.isdir(dir)]
++
+ @singleton
+ class AutostartManager:
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
new file mode 100644
index 000000000000..5ddc13949cba
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
@@ -0,0 +1,100 @@
+From 22b948c39b32fb45066c4f5a9f99082094fea3d1 Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sat, 1 Aug 2015 21:26:57 +0200
+Subject: [PATCH 2/3] Don't show multiple entries for a single theme
+
+---
+ gtweak/tweaks/tweak_group_interface.py |  8 ++++----
+ gtweak/tweaks/tweak_group_keymouse.py  |  4 ++--
+ gtweak/utils.py                        | 16 ++++++++++++++++
+ 3 files changed, 22 insertions(+), 6 deletions(-)
+
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_interface.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+@@ -26,7 +26,7 @@ from gi.repository import Gtk
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs, get_unique_resources
+ from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.gshellwrapper import GnomeShellFactory
+ from gtweak.gsettings import GSettingsSetting
+@@ -54,7 +54,7 @@ class GtkThemeSwitcher(GSettingsComboTwe
+                     os.path.exists(os.path.join(d, "gtk-2.0")) and \
+                         (os.path.exists(os.path.join(d, "gtk-3.0")) or \
+                          os.path.exists(os.path.join(d, "gtk-3.{}".format(gtk_ver)))))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class IconThemeSwitcher(GSettingsComboTweak):
+     def __init__(self, **options):
+@@ -69,7 +69,7 @@ class IconThemeSwitcher(GSettingsComboTw
+         valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+ 			os.path.exists(os.path.join(d, "index.theme")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class CursorThemeSwitcher(GSettingsComboTweak):
+     def __init__(self, **options):
+@@ -84,7 +84,7 @@ class CursorThemeSwitcher(GSettingsCombo
+         valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+                         os.path.exists(os.path.join(d, "cursors")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class ShellThemeTweak(Gtk.Box, Tweak):
+ 
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_keymouse.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+@@ -20,7 +20,7 @@ import os.path
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs, get_unique_resources
+ from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
+ 
+ class PrimaryPasteTweak(GetterSetterSwitchTweak):
+@@ -51,7 +51,7 @@ class KeyThemeSwitcher(GSettingsComboTwe
+         valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
+                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ TWEAK_GROUPS = [
+     ListBoxTweakGroup(_("Keyboard and Mouse"),
+Index: gnome-tweak-tool-3.20.1/gtweak/utils.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/utils.py
++++ gnome-tweak-tool-3.20.1/gtweak/utils.py
+@@ -133,6 +133,22 @@ def get_resource_dirs(resource):
+ 
+     return [dir for dir in dirs if os.path.isdir(dir)]
+ 
++def get_unique_resources(dirs):
++    """Filter out duplicated resources.
++
++    :param list dirs:
++        List of resource dirs (e.g. /usr/share/themes/Adwaita)
++    :return:
++        List of dirs without duplicated resources
++    """
++    unique_dirs = {}
++    for dir in dirs:
++        basename = os.path.basename(dir)
++        if basename not in unique_dirs:
++            unique_dirs[basename] = dir
++
++    return unique_dirs
++
+ @singleton
+ class AutostartManager:
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
new file mode 100644
index 000000000000..b25b2d6dc4aa
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
@@ -0,0 +1,29 @@
+From cdafa01dc90da486d0114b423e3e467f7b083d1b Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sun, 2 Aug 2015 12:01:20 +0200
+Subject: [PATCH 3/3] Create config dir if it doesn't exist
+
+Otherwise gnome-tweak-tool can't enable the dark theme and fails
+without a clear error message.
+---
+ gtweak/gtksettings.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gtweak/gtksettings.py b/gtweak/gtksettings.py
+index bcec9f1..f39991b 100644
+--- a/gtweak/gtksettings.py
++++ b/gtweak/gtksettings.py
+@@ -35,6 +35,10 @@ class GtkSettingsManager:
+     def _get_keyfile(self):
+         keyfile = None
+         try:
++            config_dir = os.path.dirname(self._path)
++            if not os.path.isdir(config_dir):
++                os.makedirs(config_dir)
++
+             keyfile = GLib.KeyFile()
+             keyfile.load_from_file(self._path, 0)
+         except MemoryError:
+-- 
+2.7.0
+
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix
new file mode 100644
index 000000000000..e6c4b8c82027
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, intltool, fetchurl, atk
+, pkgconfig, gtk3, glib, libsoup
+, bash, makeWrapper, itstool, libxml2, python2Packages
+, gnome3, librsvg, gdk_pixbuf, file, libnotify, gobjectIntrospection, wrapGAppsHook }:
+
+let
+  python = python2Packages.python.withPackages ( ps: with ps; [ pygobject3 ] );
+in stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  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.defaultIconTheme librsvg
+                  libnotify gnome3.gnome_shell
+                  libsoup gnome3.gnome_settings_daemon gnome3.nautilus
+                  gnome3.gnome_desktop wrapGAppsHook ];
+
+  propagatedBuildInputs = [ python gobjectIntrospection ];
+
+  PYTHONPATH = "$out/${python.python.sitePackages}";
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  patches = [
+    ./find_gsettings.patch
+    ./0001-Search-for-themes-and-icons-in-system-data-dirs.patch
+    ./0002-Don-t-show-multiple-entries-for-a-single-theme.patch
+    ./0003-Create-config-dir-if-it-doesn-t-exist.patch
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool;
+    description = "A tool to customize advanced GNOME 3 options";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch
new file mode 100644
index 000000000000..3e68c04cb3ab
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/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.22/misc/gnome-tweak-tool/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix
new file mode 100644
index 000000000000..88f3b3069f19
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-tweak-tool-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-tweak-tool/3.22/gnome-tweak-tool-3.22.0.tar.xz;
+    sha256 = "3d6ae11e13f6169ee543e573135e1e5697cf92ab8d86570c6f952021ae093abb";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-video-effects/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-video-effects/default.nix
new file mode 100644
index 000000000000..c0bd2fed3f2d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-video-effects/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-video-effects-${version}";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-video-effects/0.4/${name}.tar.xz";
+    sha256 = "0jl4iny2dqpcgi3sgxzpgnbw0752i8ay3rscp2cgdjlp79ql5gil";
+  };
+
+  buildInputs = [ pkgconfig intltool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GnomeVideoEffects;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gpaste/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gpaste/default.nix
new file mode 100644
index 000000000000..99766ad898e1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gpaste/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, intltool, autoreconfHook, pkgconfig, vala_0_32, glib
+, pango, gtk3, gnome3, dbus, clutter, appstream-glib, makeWrapper, systemd, gobjectIntrospection }:
+
+stdenv.mkDerivation rec {
+  version = "3.20.4";
+  name = "gpaste-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/Keruspe/GPaste/archive/v${version}.tar.gz";
+    sha256 = "08h1igdgapz7px12r7mrfcxmz68g9ijg73w69j75spg0yc6f4xax";
+  };
+
+  buildInputs = [ intltool autoreconfHook pkgconfig vala_0_32 glib
+                  gtk3 gnome3.gnome_control_center dbus
+                  clutter pango appstream-glib makeWrapper systemd gobjectIntrospection ];
+
+  preConfigure = "intltoolize -f";
+
+  configureFlags = [ "--with-controlcenterdir=$(out)/gnome-control-center/keybindings"
+                     "--with-dbusservicesdir=$(out)/share/dbus-1/services"
+                     "--with-systemduserunitdir=$(out)/etc/systemd/user" ];
+
+  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 = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix
new file mode 100644
index 000000000000..fbb95efb27ac
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix
@@ -0,0 +1,11 @@
+{ stdenv, fetchurl, pkgconfig, glib, gtk3, enchant, isocodes }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig glib gtk3 enchant isocodes ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix
new file mode 100644
index 000000000000..248e39151524
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix
@@ -0,0 +1,10 @@
+fetchurl: rec {
+  major = "1.0";
+  minor = "3";
+  name = "gspell-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gspell/${major}/${name}.tar.xz";
+    sha256 = "1m8v4rqaxjsblccc3nnirkbkzgqm90vfpzp3x08lkqriqvk0anfr";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/default.nix
new file mode 100644
index 000000000000..89703b61932b
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, intltool
+, gnome3, enchant, isocodes }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ pkgconfig gtk3 intltool gnome3.adwaita-icon-theme
+                  gnome3.gsettings_desktop_schemas ];
+
+  propagatedBuildInputs = [ enchant isocodes ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/src.nix
new file mode 100644
index 000000000000..21876ec9c399
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gtkhtml/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gtkhtml-4.10.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gtkhtml/4.10/gtkhtml-4.10.0.tar.xz;
+    sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/libgames-support/default.nix b/pkgs/desktops/gnome-3/3.22/misc/libgames-support/default.nix
new file mode 100644
index 000000000000..06937c74c65a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libgames-support/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, gtk3, libgee, intltool }:
+
+let
+  major = "1";
+  minor = "0";
+in stdenv.mkDerivation rec {
+  version = "${major}.${minor}";
+  name = "libgames-support-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgames-support/${version}/${name}.tar.xz";
+    sha256 = "02qn009m1i07nh8wnyrrjf7kbbapk814ap5pvin5ka5sj996cyqq";
+  };
+
+  buildInputs = [ pkgconfig glib gtk3 libgee intltool ];
+
+  meta = with stdenv.lib; {
+    description = "Small library intended for internal use by GNOME Games, but it may be used by others";
+    homepage = https://github.com/GNOME/libgames-support;
+    license = licenses.gpl3;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/libgda/default.nix b/pkgs/desktops/gnome-3/3.22/misc/libgda/default.nix
new file mode 100644
index 000000000000..2e5b0a4af840
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libgda/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3, openssl }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  configureFlags = [
+    "--enable-gi-system-install=no"
+  ];
+
+  enableParallelBuilding = true;
+
+  hardeningDisable = [ "format" ];
+
+  buildInputs = [ pkgconfig intltool itstool libxml2 gtk3 openssl ];
+
+  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.22/misc/libgda/src.nix b/pkgs/desktops/gnome-3/3.22/misc/libgda/src.nix
new file mode 100644
index 000000000000..8812ccc8ccd9
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libgda/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "libgda-5.2.4";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/libgda/5.2/libgda-5.2.4.tar.xz;
+    sha256 = "2cee38dd583ccbaa5bdf6c01ca5f88cc08758b9b144938a51a478eb2684b765e";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/default.nix
new file mode 100644
index 000000000000..6915ede4ad51
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/default.nix
@@ -0,0 +1,13 @@
+{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala_0_32, libssh2
+, gtk_doc, gobjectIntrospection, libgit2, glib }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  buildInputs = [ gnome3.gnome_common libtool pkgconfig vala_0_32 libssh2
+                  gtk_doc gobjectIntrospection libgit2 glib ];
+
+  meta = with stdenv.lib; {
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/src.nix b/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/src.nix
new file mode 100644
index 000000000000..6922a7aee1bc
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libgit2-glib/src.nix
@@ -0,0 +1,12 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: rec {
+  major = "0.24";
+  minor = "4";
+  name = "libgit2-glib-${major}.${minor}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/libgit2-glib/${major}/${name}.tar.xz";
+    sha256 = "0802qskm64l5ic8rvfjxg27chj502irhw1xkabrl4015dxsiy89s";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/libmediaart/default.nix b/pkgs/desktops/gnome-3/3.22/misc/libmediaart/default.nix
new file mode 100644
index 000000000000..b86480125730
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/libmediaart/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, gobjectIntrospection, gnome3 }:
+
+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 = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/pidgin/default.nix b/pkgs/desktops/gnome-3/3.22/misc/pidgin/default.nix
new file mode 100644
index 000000000000..e3f6bca10a4d
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/pidgin/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, glib }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.1";
+  basename = "pidgin-im-gnome-shell-extension";
+  name = "${basename}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "muffinmad";
+    repo = "${basename}";
+    rev = "v${version}";
+    sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr";
+  };
+
+  buildInputs = [ glib ];
+
+  configurePhase = "";
+  buildPhase = "";
+  installPhase = ''
+    share_dir="$prefix/share"
+    extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad"
+    mkdir -p "$extensions_dir"
+    mv *.js metadata.json dbus.xml gnome-shell-extension-pidgin.pot "$extensions_dir"
+
+    schemas_dir="$share_dir/gsettings-schemas/${name}/glib-2.0/schemas"
+    mkdir -p "$schemas_dir"
+    mv schemas/* "$schemas_dir" # fix Emacs syntax highlighting: */
+    ${glib.dev}/bin/glib-compile-schemas "$schemas_dir"
+
+    locale_dir="$share_dir/locale"
+    mkdir -p "$locale_dir"
+    mv locale/* $locale_dir # fix Emacs syntax highlighting: */
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/muffinmad/pidgin-im-gnome-shell-extension;
+    description = "Make Pidgin IM conversations appear in the Gnome Shell message tray";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ DamienCassou ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/pomodoro/default.nix b/pkgs/desktops/gnome-3/3.22/misc/pomodoro/default.nix
new file mode 100644
index 000000000000..1c7f712b12c5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/pomodoro/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, which, automake113x, intltool, pkgconfig, libtool, makeWrapper,
+  dbus_glib, libcanberra_gtk2, gst_all_1, vala_0_32, gnome3, gtk3, gst_plugins_base,
+  glib, gobjectIntrospection, telepathy_glib
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.11.2";
+  name = "gnome-shell-pomodoro-${version}";
+
+  src = fetchFromGitHub {
+      owner = "codito";
+      repo = "gnome-pomodoro";
+      rev = "${version}";
+      sha256 = "0x656drq8vnvdj1x6ghnglgpa0z8yd2yj9dh5iqprwjv0z3qkw4l";
+  };
+
+  configureScript = ''./autogen.sh'';
+
+  buildInputs = [
+    which automake113x intltool glib gobjectIntrospection pkgconfig libtool
+    makeWrapper dbus_glib libcanberra_gtk2 vala_0_32 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 gtk3 telepathy_glib
+    gnome3.defaultIconTheme
+  ];
+
+  preBuild = ''
+    sed -i 's|\$(INTROSPECTION_GIRDIR)|${gnome3.gnome_desktop}/share/gir-1.0|' \
+      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 = "A time management utility for GNOME based on the pomodoro technique";
+    longDescription = ''
+      This GNOME utility helps to manage time according to Pomodoro Technique.
+      It intends to improve productivity and focus by taking short breaks.
+    '';
+    maintainers = with maintainers; [ DamienCassou jgeerds ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/arduino/ino/default.nix b/pkgs/development/arduino/ino/default.nix
index aeb0c5bf8ac7..c96edcbeeb67 100644
--- a/pkgs/development/arduino/ino/default.nix
+++ b/pkgs/development/arduino/ino/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, pythonPackages, picocom
+{ stdenv, fetchurl, python2Packages, picocom
 , avrdude, arduino-core, avrgcclibc }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "ino-0.3.6";
   namePrefix = "";
 
@@ -11,9 +11,15 @@ pythonPackages.buildPythonApplication rec {
   };
 
   # TODO: add avrgcclibc, it must be rebuild with C++ support
-  propagatedBuildInputs =
-    [ arduino-core avrdude picocom pythonPackages.configobj
-      pythonPackages.jinja2 pythonPackages.pyserial pythonPackages.six ];
+  propagatedBuildInputs = with python2Packages; [
+    arduino-core
+    avrdude
+    picocom
+    configobj
+    jinja2
+    pyserial
+    six
+  ];
 
   patchPhase = ''
     echo "Patching Arduino distribution path"
diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix
index 4ddf580fae5d..f51e3af25ee8 100644
--- a/pkgs/development/compilers/edk2/default.nix
+++ b/pkgs/development/compilers/edk2/default.nix
@@ -1,6 +1,7 @@
-{ stdenv, fetchgit, libuuid, pythonFull, iasl }:
+{ stdenv, fetchgit, libuuid, python2, iasl }:
 
 let
+  pythonEnv = python2.withPackages(ps: [ps.tkinter]);
 
 targetArch = if stdenv.isi686 then
   "IA32"
@@ -18,7 +19,7 @@ edk2 = stdenv.mkDerivation {
     sha256 = "0s9ywb8w7xzlnmm4kwzykxkrdaw53b7pky121cc9wjkllzqwyxrb";
   };
 
-  buildInputs = [ libuuid pythonFull ];
+  buildInputs = [ libuuid pythonEnv];
 
   makeFlags = "-C BaseTools";
 
@@ -40,7 +41,7 @@ edk2 = stdenv.mkDerivation {
 
   passthru = {
     setup = projectDscPath: attrs: {
-      buildInputs = [ pythonFull ] ++
+      buildInputs = [ pythonEnv ] ++
         stdenv.lib.optionals (attrs ? buildInputs) attrs.buildInputs;
 
       configurePhase = ''
diff --git a/pkgs/development/compilers/llvm/3.7/default.nix b/pkgs/development/compilers/llvm/3.7/default.nix
index d7864d11d7bf..3df20086f79b 100644
--- a/pkgs/development/compilers/llvm/3.7/default.nix
+++ b/pkgs/development/compilers/llvm/3.7/default.nix
@@ -1,4 +1,4 @@
-{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC }:
+{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun }:
 let
   callPackage = newScope (self // { inherit stdenv isl version fetch; });
 
@@ -24,8 +24,19 @@ let
 
     clang = wrapCC self.clang-unwrapped;
 
+    libcxxClang = ccWrapperFun {
+      cc = self.clang-unwrapped;
+      isClang = true;
+      inherit (self) stdenv;
+      /* FIXME is this right? */
+      inherit (stdenv.cc) libc nativeTools nativeLibc;
+      extraPackages = [ self.libcxx self.libcxxabi ];
+    };
+
     stdenv = overrideCC stdenv self.clang;
 
+    libcxxStdenv = overrideCC stdenv self.libcxxClang;
+
     lldb = callPackage ./lldb.nix {};
 
     libcxx = callPackage ./libc++ {};
diff --git a/pkgs/development/compilers/llvm/3.7/lldb.nix b/pkgs/development/compilers/llvm/3.7/lldb.nix
index acd4892201a1..434fdc7650ff 100644
--- a/pkgs/development/compilers/llvm/3.7/lldb.nix
+++ b/pkgs/development/compilers/llvm/3.7/lldb.nix
@@ -8,7 +8,7 @@
 , libedit
 , llvm
 , clang-unwrapped
-, python
+, python2
 , version
 }:
 
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
       scripts/Python/build-swig-Python.sh
   '';
 
-  buildInputs = [ cmake python which swig ncurses zlib libedit ];
+  buildInputs = [ cmake python2 which swig ncurses zlib libedit ];
 
   preConfigure = ''
     export CXXFLAGS="-pthread"
diff --git a/pkgs/development/compilers/llvm/3.7/llvm.nix b/pkgs/development/compilers/llvm/3.7/llvm.nix
index ae9ba62a04ce..c674b959c787 100644
--- a/pkgs/development/compilers/llvm/3.7/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.7/llvm.nix
@@ -3,7 +3,7 @@
 , perl
 , groff
 , cmake
-, python
+, python2
 , libffi
 , binutils
 , libxml2
@@ -30,7 +30,7 @@ in stdenv.mkDerivation rec {
     mv compiler-rt-* $sourceRoot/projects/compiler-rt
   '';
 
-  buildInputs = [ perl groff cmake libxml2 python libffi ]
+  buildInputs = [ perl groff cmake libxml2 python2 libffi ]
     ++ stdenv.lib.optional stdenv.isDarwin libcxxabi;
 
   propagatedBuildInputs = [ ncurses zlib ];
diff --git a/pkgs/development/compilers/llvm/3.8/default.nix b/pkgs/development/compilers/llvm/3.8/default.nix
index df1a775ef968..04cd9f791e62 100644
--- a/pkgs/development/compilers/llvm/3.8/default.nix
+++ b/pkgs/development/compilers/llvm/3.8/default.nix
@@ -1,4 +1,4 @@
-{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC }:
+{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun }:
 let
   callPackage = newScope (self // { inherit stdenv isl version fetch; });
 
@@ -24,8 +24,19 @@ let
 
     clang = wrapCC self.clang-unwrapped;
 
+    libcxxClang = ccWrapperFun {
+      cc = self.clang-unwrapped;
+      isClang = true;
+      inherit (self) stdenv;
+      /* FIXME is this right? */
+      inherit (stdenv.cc) libc nativeTools nativeLibc;
+      extraPackages = [ self.libcxx self.libcxxabi ];
+    };
+
     stdenv = overrideCC stdenv self.clang;
 
+    libcxxStdenv = overrideCC stdenv self.libcxxClang;
+
     lldb = callPackage ./lldb.nix {};
 
     libcxx = callPackage ./libc++ {};
diff --git a/pkgs/development/compilers/llvm/3.9/default.nix b/pkgs/development/compilers/llvm/3.9/default.nix
index 17351ae87366..49fdad931b69 100644
--- a/pkgs/development/compilers/llvm/3.9/default.nix
+++ b/pkgs/development/compilers/llvm/3.9/default.nix
@@ -1,4 +1,4 @@
-{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC, darwin }:
+{ newScope, stdenv, isl, fetchurl, overrideCC, wrapCC, darwin, ccWrapperFun }:
 let
   callPackage = newScope (self // { inherit stdenv isl version fetch; });
 
@@ -24,8 +24,19 @@ let
 
     clang = wrapCC self.clang-unwrapped;
 
+    libcxxClang = ccWrapperFun {
+      cc = self.clang-unwrapped;
+      isClang = true;
+      inherit (self) stdenv;
+      /* FIXME is this right? */
+      inherit (stdenv.cc) libc nativeTools nativeLibc;
+      extraPackages = [ self.libcxx self.libcxxabi ];
+    };
+
     stdenv = overrideCC stdenv self.clang;
 
+    libcxxStdenv = overrideCC stdenv self.libcxxClang;
+
     lldb = callPackage ./lldb.nix {};
 
     libcxx = callPackage ./libc++ {};
diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix
index 78cf644e5c9f..d0933b9a1950 100644
--- a/pkgs/development/compilers/openjdk/8.nix
+++ b/pkgs/development/compilers/openjdk/8.nix
@@ -22,41 +22,41 @@ let
       throw "openjdk requires i686-linux or x86_64 linux";
 
   update = "122";
-  build = "03";
+  build = "04";
   baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u";
   repover = "jdk8u${update}-b${build}";
   paxflags = if stdenv.isi686 then "msp" else "m";
   jdk8 = fetchurl {
              url = "${baseurl}/archive/${repover}.tar.gz";
-             sha256 = "0s3igii73s9jpq8prpvfhymiadr7vi15cllkxjrks7khx0brcs6m";
+             sha256 = "1zqqy5gzrx7f438j5pjdavj41plb04p6b1ikspksrgnhs5wrrr02";
           };
   langtools = fetchurl {
              url = "${baseurl}/langtools/archive/${repover}.tar.gz";
-             sha256 = "1x9g3z10mskcv08sdgd1vcm1mf4668ww2s4ivx9spf2vdalk9a4x";
+             sha256 = "0hhsm23mxvjxmf0jxlhm57s203k88s8xbmk71l8zlnjsz88ni4gx";
           };
   hotspot = fetchurl {
              url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
-             sha256 = "1zz0k4grqw57mgcrximq7g7h3c149s1x9b6xcwvvl2f6qn791pn9";
+             sha256 = "1r4a52brsg1xd2dc2b8lzd4w4yvcjdmj9a6avjihx1hpgcs4xzd1";
           };
   corba = fetchurl {
              url = "${baseurl}/corba/archive/${repover}.tar.gz";
-             sha256 = "1xi2yi6wplzfnx213w8zpc78rbclig13m7zl2mgz61ay2l2v8znh";
+             sha256 = "0ixa6kdqkiq83817qdymiy772449iva11rh3pr68qpfnmbx1zzil";
           };
   jdk = fetchurl {
              url = "${baseurl}/jdk/archive/${repover}.tar.gz";
-             sha256 = "01r9cwm68dc34qigl3jn0bifmbgf8jgmddr0wi54sn126pn48c2j";
+             sha256 = "1kw4h3j93cvnlzh0vhj4xxdm90bk7hfg6kpqk09x0a12whh2ww3h";
           };
   jaxws = fetchurl {
              url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
-             sha256 = "043zwvnq9zjnb06xfcbi3rd15ji80z79cdar7hdx0d8ifgd75wsb";
+             sha256 = "0wrj3jyv3922m3pxfg0i9c3ap71b0rass7swvhi996c029rd12r7";
           };
   jaxp = fetchurl {
              url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
-             sha256 = "1ydbwpa4v28npdgla7aiwsfk3k4ylj86vz482zq3j7h30i6w9h4v";
+             sha256 = "0b743mygzdavdd59l98b3l6a03dihs4ipd1xlpkacy778wzpr59d";
           };
   nashorn = fetchurl {
              url = "${baseurl}/nashorn/archive/${repover}.tar.gz";
-             sha256 = "01bpbfwh1ilqn5ls7krmkklsmvl2zhzkqwag49jypiqa0w3vvaih";
+             sha256 = "10wkshhzj15wvx7i53dbkwi85f4fbbxi26zphr5b6daf3ib0hind";
           };
   openjdk8 = stdenv.mkDerivation {
     name = "openjdk-8u${update}b${build}";
diff --git a/pkgs/development/interpreters/clisp/default.nix b/pkgs/development/interpreters/clisp/default.nix
index c3d289d2a8d4..1a05f19bd82f 100644
--- a/pkgs/development/interpreters/clisp/default.nix
+++ b/pkgs/development/interpreters/clisp/default.nix
@@ -5,18 +5,18 @@
 # - full: contains base plus modules in withModules
 { stdenv, fetchurl, libsigsegv, gettext, ncurses, readline, libX11
 , libXau, libXt, pcre, zlib, libXpm, xproto, libXext, xextproto
-, libffi, libffcall, coreutils
+, libffi
+, libffcall
+, coreutils
 # build options
 , threadSupport ? (stdenv.isi686 || stdenv.isx86_64)
 , x11Support ? (stdenv.isi686 || stdenv.isx86_64)
 , dllSupport ? true
 , withModules ? [
-    "bindings/glibc"
     "pcre"
     "rawsock"
-    "wildcard"
-    "zlib"
   ]
+  ++ stdenv.lib.optionals stdenv.isLinux [ "bindings/glibc" "zlib" "wildcard" ]
   ++ stdenv.lib.optional x11Support "clx/new-clx"
 }:
 
@@ -33,15 +33,17 @@ stdenv.mkDerivation rec {
   };
 
   inherit libsigsegv gettext coreutils;
-  
+
+  ffcallAvailable = stdenv.isLinux && (libffcall != null);
+
   buildInputs = [libsigsegv]
   ++ stdenv.lib.optional (gettext != null) gettext
   ++ stdenv.lib.optional (ncurses != null) ncurses
   ++ stdenv.lib.optional (pcre != null) pcre
   ++ stdenv.lib.optional (zlib != null) zlib
   ++ stdenv.lib.optional (readline != null) readline
-  ++ stdenv.lib.optional (libffi != null) libffi
-  ++ stdenv.lib.optional (libffcall != null) libffcall
+  ++ stdenv.lib.optional (ffcallAvailable && (libffi != null)) libffi
+  ++ stdenv.lib.optional ffcallAvailable libffcall
   ++ stdenv.lib.optionals x11Support [
     libX11 libXau libXt libXpm xproto libXext xextproto
   ];
@@ -64,8 +66,10 @@ stdenv.mkDerivation rec {
   configureFlags = "builddir"
   + stdenv.lib.optionalString (!dllSupport) " --without-dynamic-modules"
   + stdenv.lib.optionalString (readline != null) " --with-readline"
-  + stdenv.lib.optionalString (libffi != null) " --with-dynamic-ffi"
-  + stdenv.lib.optionalString (libffcall != null) " --with-ffcall"
+  # --with-dynamic-ffi can only exist with --with-ffcall - foreign.d does not compile otherwise
+  + stdenv.lib.optionalString (ffcallAvailable && (libffi != null)) " --with-dynamic-ffi"
+  + stdenv.lib.optionalString ffcallAvailable " --with-ffcall"
+  + stdenv.lib.optionalString (!ffcallAvailable) " --without-ffcall"
   + stdenv.lib.concatMapStrings (x: " --with-module=" + x) withModules
   + stdenv.lib.optionalString threadSupport " --with-threads=POSIX_THREADS";
 
@@ -88,6 +92,6 @@ stdenv.mkDerivation rec {
     description = "ANSI Common Lisp Implementation";
     homepage = http://clisp.cons.org;
     maintainers = with stdenv.lib.maintainers; [raskin tohl];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.unix;
   };
 }
diff --git a/pkgs/development/interpreters/pyrex/0.9.5.nix b/pkgs/development/interpreters/pyrex/0.9.5.nix
index 3f6a3c1bfcb2..b67ad3db2ef5 100644
--- a/pkgs/development/interpreters/pyrex/0.9.5.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.5.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
 let version = "0.9.5.1.1"; in
 
-pythonPackages.buildPythonPackage rec {
+python2Packages.buildPythonPackage rec {
   name = "pyrex-${version}";
 
   src = fetchurl {
diff --git a/pkgs/development/interpreters/pyrex/0.9.6.nix b/pkgs/development/interpreters/pyrex/0.9.6.nix
index 44e014322ff4..7a0ac5a1e229 100644
--- a/pkgs/development/interpreters/pyrex/0.9.6.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.6.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
 let version = "0.9.6.4"; in
 
-pythonPackages.buildPythonPackage rec {
+python2Packages.buildPythonPackage rec {
   name = "pyrex-${version}";
 
   src = fetchurl {
diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix
index 493f1cfb5311..a6eeee25be96 100644
--- a/pkgs/development/interpreters/python/cpython/2.7/default.nix
+++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix
@@ -1,18 +1,23 @@
-{ stdenv, fetchurl, fetchpatch, self, callPackage, python27Packages
-, bzip2, openssl, gettext, coreutils
-
-, includeModules ? false
-
-, db, gdbm, ncurses, sqlite, readline
-
-, tcl ? null, tk ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? !stdenv.isCygwin
-, zlib ? null, zlibSupport ? true
-, expat, libffi
-
-, CF, configd
+{ stdenv, fetchurl
+, bzip2
+, gdbm
+, fetchpatch
+, ncurses
+, openssl
+, readline
+, sqlite
+, tcl ? null, tk ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? false
+, zlib
+, callPackage
+, self
+, python27Packages
+, gettext
+, db
+, expat
+, libffi
+, CF, configd, coreutils
 }:
 
-assert zlibSupport -> zlib != null;
 assert x11Support -> tcl != null
                   && tk != null
                   && xlibsWrapper != null
@@ -27,12 +32,14 @@ let
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
+  sitePackages = "lib/${libPrefix}/site-packages";
 
   src = fetchurl {
     url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
     sha256 = "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp";
   };
 
+  hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false);
   patches =
     [ # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
       ./search-path.patch
@@ -76,6 +83,15 @@ let
       ./2.7.3-dylib.patch
       ./2.7.3-getpath-exe-extension.patch
       ./2.7.3-no-libm.patch
+    ] ++ optionals hasDistutilsCxxPatch [
+
+      # Patch from http://bugs.python.org/issue1222585 adapted to work with
+      # `patch -p1' and with a last hunk removed
+      # Upstream distutils is calling C compiler to compile C++ code, which
+      # only works for GCC and Apple Clang. This makes distutils to call C++
+      # compiler when needed.
+      ./python-2.7-distutils-C++.patch
+
     ];
 
   preConfigure = ''
@@ -111,16 +127,11 @@ let
 
   buildInputs =
     optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++
-    [ bzip2 openssl ]
+    [ bzip2 openssl zlib ]
     ++ optionals stdenv.isCygwin [ expat libffi ]
-    ++ optionals includeModules (
-        [ db gdbm ncurses sqlite readline
-        ] ++ optionals x11Support [ tcl tk xlibsWrapper libX11 ]
-    )
-    ++ optional zlibSupport zlib
-    ++ optional stdenv.isDarwin CF;
-
-  propagatedBuildInputs = optional stdenv.isDarwin configd;
+    ++ [ db gdbm ncurses sqlite readline ]
+    ++ optionals x11Support [ tcl tk xlibsWrapper libX11 ]
+    ++ optionals stdenv.isDarwin [ CF configd ];
 
   mkPaths = paths: {
     C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
@@ -129,11 +140,12 @@ let
 
   # Build the basic Python interpreter without modules that have
   # external dependencies.
-  python = stdenv.mkDerivation {
+
+in stdenv.mkDerivation {
     name = "python-${version}";
     pythonVersion = majorVersion;
 
-    inherit majorVersion version src patches buildInputs propagatedBuildInputs
+    inherit majorVersion version src patches buildInputs
             preConfigure configureFlags;
 
     LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
@@ -165,20 +177,16 @@ let
         # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
         echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
 
-        ${optionalString includeModules "$out/bin/python ./setup.py build_ext"}
-
         rm "$out"/lib/python*/plat-*/regen # refers to glibc.dev
       '';
 
     passthru = rec {
-      inherit libPrefix;
-      inherit zlibSupport;
-      isPy2 = true;
-      isPy27 = true;
+      inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch;
+      executable = libPrefix;
       buildEnv = callPackage ../../wrapper.nix { python = self; };
       withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; };
-      executable = libPrefix;
-      sitePackages = "lib/${libPrefix}/site-packages";
+      isPy2 = true;
+      isPy27 = true;
       interpreter = "${self}/bin/${executable}";
     };
 
@@ -200,99 +208,4 @@ let
       platforms = stdenv.lib.platforms.all;
       maintainers = with stdenv.lib.maintainers; [ chaoflow domenkozar ];
     };
-  };
-
-
-  # This function builds a Python module included in the main Python
-  # distribution in a separate derivation.
-  buildInternalPythonModule =
-    { moduleName
-    , internalName ? "_" + moduleName
-    , deps
-    }:
-    if includeModules then null else stdenv.mkDerivation rec {
-      name = "python-${moduleName}-${python.version}";
-
-      inherit src patches preConfigure postConfigure configureFlags;
-
-      buildInputs = [ python ] ++ deps;
-
-      # We need to set this for python.buildEnv
-      pythonPath = [];
-
-      inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
-
-      # non-python gdbm has a libintl dependency on i686-cygwin, not on x86_64-cygwin
-      buildPhase = (if (stdenv.system == "i686-cygwin" && moduleName == "gdbm") then ''
-          sed -i setup.py -e "s:libraries = \['gdbm'\]:libraries = ['gdbm', 'intl']:"
-      '' else '''') + ''
-          substituteInPlace setup.py --replace 'self.extensions = extensions' \
-            'self.extensions = [ext for ext in self.extensions if ext.name in ["${internalName}"]]'
-
-          python ./setup.py build_ext
-          [ -z "$(find build -name '*_failed.so' -print)" ]
-        '';
-
-      installPhase =
-        ''
-          dest=$out/lib/${python.libPrefix}/site-packages
-          mkdir -p $dest
-          cp -p $(find . -name "*.${if stdenv.isCygwin then "dll" else "so"}") $dest/
-        '';
-    };
-
-
-  # The Python modules included in the main Python distribution, built
-  # as separate derivations.
-  modules = {
-
-    bsddb = buildInternalPythonModule {
-      moduleName = "bsddb";
-      deps = [ db ];
-    };
-
-    curses = buildInternalPythonModule {
-      moduleName = "curses";
-      deps = [ ncurses ];
-    };
-
-    curses_panel = buildInternalPythonModule {
-      moduleName = "curses_panel";
-      deps = [ ncurses modules.curses ];
-    };
-
-    crypt = buildInternalPythonModule {
-      moduleName = "crypt";
-      internalName = "crypt";
-      deps = optional (stdenv ? glibc) stdenv.glibc;
-    };
-
-    gdbm = buildInternalPythonModule {
-      moduleName = "gdbm";
-      internalName = "gdbm";
-      deps = [ gdbm ] ++ stdenv.lib.optional stdenv.isCygwin gettext;
-    };
-
-    sqlite3 = buildInternalPythonModule {
-      moduleName = "sqlite3";
-      deps = [ sqlite ];
-    };
-
-  } // optionalAttrs x11Support {
-
-    tkinter = if stdenv.isCygwin then null else (buildInternalPythonModule {
-      moduleName = "tkinter";
-      deps = [ tcl tk xlibsWrapper libX11 ];
-    });
-
-  } // {
-
-    readline = buildInternalPythonModule {
-      moduleName = "readline";
-      internalName = "readline";
-      deps = [ readline ];
-    };
-
-  };
-
-in python // { inherit modules; }
+  }
diff --git a/pkgs/development/interpreters/python/cpython/2.7/python-2.7-distutils-C++.patch b/pkgs/development/interpreters/python/cpython/2.7/python-2.7-distutils-C++.patch
new file mode 100644
index 000000000000..90c21d5e60ca
--- /dev/null
+++ b/pkgs/development/interpreters/python/cpython/2.7/python-2.7-distutils-C++.patch
@@ -0,0 +1,260 @@
+--- a/Lib/distutils/cygwinccompiler.py
++++ b/Lib/distutils/cygwinccompiler.py
+@@ -117,8 +117,10 @@
+         # dllwrap 2.10.90 is buggy
+         if self.ld_version >= "2.10.90":
+             self.linker_dll = "gcc"
++            self.linker_dll_cxx = "g++"
+         else:
+             self.linker_dll = "dllwrap"
++            self.linker_dll_cxx = "dllwrap"
+ 
+         # ld_version >= "2.13" support -shared so use it instead of
+         # -mdll -static
+@@ -132,9 +134,13 @@
+         self.set_executables(compiler='gcc -mcygwin -O -Wall',
+                              compiler_so='gcc -mcygwin -mdll -O -Wall',
+                              compiler_cxx='g++ -mcygwin -O -Wall',
++                             compiler_so_cxx='g++ -mcygwin -mdll -O -Wall',
+                              linker_exe='gcc -mcygwin',
+                              linker_so=('%s -mcygwin %s' %
+-                                        (self.linker_dll, shared_option)))
++                                        (self.linker_dll, shared_option)),
++                             linker_exe_cxx='g++ -mcygwin',
++                             linker_so_cxx=('%s -mcygwin %s' %
++                                            (self.linker_dll_cxx, shared_option)))
+ 
+         # cygwin and mingw32 need different sets of libraries
+         if self.gcc_version == "2.91.57":
+@@ -160,8 +166,12 @@
+                 raise CompileError, msg
+         else: # for other files use the C-compiler
+             try:
+-                self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+-                           extra_postargs)
++                if self.detect_language(src) == 'c++':
++                    self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++                               extra_postargs)
++                else:
++                    self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++                               extra_postargs)
+             except DistutilsExecError, msg:
+                 raise CompileError, msg
+ 
+@@ -327,9 +337,14 @@
+         self.set_executables(compiler='gcc%s -O -Wall' % no_cygwin,
+                              compiler_so='gcc%s -mdll -O -Wall' % no_cygwin,
+                              compiler_cxx='g++%s -O -Wall' % no_cygwin,
++                             compiler_so_cxx='g++%s -mdll -O -Wall' % no_cygwin,
+                              linker_exe='gcc%s' % no_cygwin,
+                              linker_so='%s%s %s %s'
+                                     % (self.linker_dll, no_cygwin,
++                                       shared_option, entry_point),
++                             linker_exe_cxx='g++%s' % no_cygwin,
++                             linker_so_cxx='%s%s %s %s'
++                                    % (self.linker_dll_cxx, no_cygwin,
+                                        shared_option, entry_point))
+         # Maybe we should also append -mthreads, but then the finished
+         # dlls need another dll (mingwm10.dll see Mingw32 docs)
+--- a/Lib/distutils/emxccompiler.py
++++ b/Lib/distutils/emxccompiler.py
+@@ -65,8 +65,12 @@
+         # XXX optimization, warnings etc. should be customizable.
+         self.set_executables(compiler='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
+                              compiler_so='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
++                             compiler_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
++                             compiler_so_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall',
+                              linker_exe='gcc -Zomf -Zmt -Zcrtdll',
+-                             linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll')
++                             linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll',
++                             linker_exe_cxx='g++ -Zomf -Zmt -Zcrtdll',
++                             linker_so_cxx='g++ -Zomf -Zmt -Zcrtdll -Zdll')
+ 
+         # want the gcc library statically linked (so that we don't have
+         # to distribute a version dependent on the compiler we have)
+@@ -83,8 +87,12 @@
+                 raise CompileError, msg
+         else: # for other files use the C-compiler
+             try:
+-                self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+-                           extra_postargs)
++                if self.detect_language(src) == 'c++':
++                    self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++                               extra_postargs)
++                else:
++                    self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++                               extra_postargs)
+             except DistutilsExecError, msg:
+                 raise CompileError, msg
+ 
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -170,10 +170,12 @@
+                 _osx_support.customize_compiler(_config_vars)
+                 _config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True'
+ 
+-        (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
+-            get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
+-                            'CCSHARED', 'LDSHARED', 'SO', 'AR',
+-                            'ARFLAGS')
++        (cc, cxx, ccshared, ldshared, ldcxxshared, so_ext, ar, ar_flags) = \
++            get_config_vars('CC', 'CXX', 'CCSHARED', 'LDSHARED', 'LDCXXSHARED',
++                            'SO', 'AR', 'ARFLAGS')
++
++        cflags = ''
++        cxxflags = ''
+ 
+         if 'CC' in os.environ:
+             newcc = os.environ['CC']
+@@ -188,19 +190,27 @@
+             cxx = os.environ['CXX']
+         if 'LDSHARED' in os.environ:
+             ldshared = os.environ['LDSHARED']
++        if 'LDCXXSHARED' in os.environ:
++            ldcxxshared = os.environ['LDCXXSHARED']
+         if 'CPP' in os.environ:
+             cpp = os.environ['CPP']
+         else:
+             cpp = cc + " -E"           # not always
+         if 'LDFLAGS' in os.environ:
+             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS']
+         if 'CFLAGS' in os.environ:
+-            cflags = opt + ' ' + os.environ['CFLAGS']
++            cflags = os.environ['CFLAGS']
+             ldshared = ldshared + ' ' + os.environ['CFLAGS']
++        if 'CXXFLAGS' in os.environ:
++            cxxflags = os.environ['CXXFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS']
+         if 'CPPFLAGS' in os.environ:
+             cpp = cpp + ' ' + os.environ['CPPFLAGS']
+             cflags = cflags + ' ' + os.environ['CPPFLAGS']
++            cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS']
+             ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
++            ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS']
+         if 'AR' in os.environ:
+             ar = os.environ['AR']
+         if 'ARFLAGS' in os.environ:
+@@ -209,13 +219,17 @@
+             archiver = ar + ' ' + ar_flags
+ 
+         cc_cmd = cc + ' ' + cflags
++        cxx_cmd = cxx + ' ' + cxxflags
+         compiler.set_executables(
+             preprocessor=cpp,
+             compiler=cc_cmd,
+             compiler_so=cc_cmd + ' ' + ccshared,
+-            compiler_cxx=cxx,
++            compiler_cxx=cxx_cmd,
++            compiler_so_cxx=cxx_cmd + ' ' + ccshared,
+             linker_so=ldshared,
+             linker_exe=cc,
++            linker_so_cxx=ldcxxshared,
++            linker_exe_cxx=cxx,
+             archiver=archiver)
+ 
+         compiler.shared_lib_extension = so_ext
+--- a/Lib/distutils/unixccompiler.py
++++ b/Lib/distutils/unixccompiler.py
+@@ -55,14 +55,17 @@
+     # are pretty generic; they will probably have to be set by an outsider
+     # (eg. using information discovered by the sysconfig about building
+     # Python extensions).
+-    executables = {'preprocessor' : None,
+-                   'compiler'     : ["cc"],
+-                   'compiler_so'  : ["cc"],
+-                   'compiler_cxx' : ["cc"],
+-                   'linker_so'    : ["cc", "-shared"],
+-                   'linker_exe'   : ["cc"],
+-                   'archiver'     : ["ar", "-cr"],
+-                   'ranlib'       : None,
++    executables = {'preprocessor'    : None,
++                   'compiler'        : ["cc"],
++                   'compiler_so'     : ["cc"],
++                   'compiler_cxx'    : ["c++"],
++                   'compiler_so_cxx' : ["c++"],
++                   'linker_so'       : ["cc", "-shared"],
++                   'linker_exe'      : ["cc"],
++                   'linker_so_cxx'   : ["c++", "-shared"],
++                   'linker_exe_cxx'  : ["c++"],
++                   'archiver'        : ["ar", "-cr"],
++                   'ranlib'          : None,
+                   }
+ 
+     if sys.platform[:6] == "darwin":
+@@ -112,12 +115,19 @@
+ 
+     def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
+         compiler_so = self.compiler_so
++        compiler_so_cxx = self.compiler_so_cxx
+         if sys.platform == 'darwin':
+             compiler_so = _osx_support.compiler_fixup(compiler_so,
+                                                     cc_args + extra_postargs)
++            compiler_so_cxx = _osx_support.compiler_fixup(compiler_so_cxx,
++                                                    cc_args + extra_postargs)
+         try:
+-            self.spawn(compiler_so + cc_args + [src, '-o', obj] +
+-                       extra_postargs)
++            if self.detect_language(src) == 'c++':
++                self.spawn(compiler_so_cxx + cc_args + [src, '-o', obj] +
++                           extra_postargs)
++            else:
++                self.spawn(compiler_so + cc_args + [src, '-o', obj] +
++                           extra_postargs)
+         except DistutilsExecError, msg:
+             raise CompileError, msg
+ 
+@@ -174,23 +184,16 @@
+                 ld_args.extend(extra_postargs)
+             self.mkpath(os.path.dirname(output_filename))
+             try:
+-                if target_desc == CCompiler.EXECUTABLE:
+-                    linker = self.linker_exe[:]
++                if target_lang == "c++":
++                    if target_desc == CCompiler.EXECUTABLE:
++                        linker = self.linker_exe_cxx[:]
++                    else:
++                        linker = self.linker_so_cxx[:]
+                 else:
+-                    linker = self.linker_so[:]
+-                if target_lang == "c++" and self.compiler_cxx:
+-                    # skip over environment variable settings if /usr/bin/env
+-                    # is used to set up the linker's environment.
+-                    # This is needed on OSX. Note: this assumes that the
+-                    # normal and C++ compiler have the same environment
+-                    # settings.
+-                    i = 0
+-                    if os.path.basename(linker[0]) == "env":
+-                        i = 1
+-                        while '=' in linker[i]:
+-                            i = i + 1
+-
+-                    linker[i] = self.compiler_cxx[i]
++                    if target_desc == CCompiler.EXECUTABLE:
++                        linker = self.linker_exe[:]
++                    else:
++                        linker = self.linker_so[:]
+ 
+                 if sys.platform == 'darwin':
+                     linker = _osx_support.compiler_fixup(linker, ld_args)
+--- a/Lib/_osx_support.py
++++ b/Lib/_osx_support.py
+@@ -14,13 +14,13 @@
+ # configuration variables that may contain universal build flags,
+ # like "-arch" or "-isdkroot", that may need customization for
+ # the user environment
+-_UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS', 'BASECFLAGS',
+-                            'BLDSHARED', 'LDSHARED', 'CC', 'CXX',
+-                            'PY_CFLAGS', 'PY_LDFLAGS', 'PY_CPPFLAGS',
+-                            'PY_CORE_CFLAGS')
++_UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'CXXFLAGS', 'LDFLAGS', 'CPPFLAGS',
++                          'BASECFLAGS', 'BLDSHARED', 'LDSHARED', 'LDCXXSHARED',
++                          'CC', 'CXX', 'PY_CFLAGS', 'PY_LDFLAGS',
++                          'PY_CPPFLAGS', 'PY_CORE_CFLAGS')
+ 
+ # configuration variables that may contain compiler calls
+-_COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'CC', 'CXX')
++_COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'LDCXXSHARED', 'CC', 'CXX')
+ 
+ # prefix added to original configuration variable names
+ _INITPRE = '_OSX_SUPPORT_INITIAL_'
\ No newline at end of file
diff --git a/pkgs/development/interpreters/python/cpython/3.3/default.nix b/pkgs/development/interpreters/python/cpython/3.3/default.nix
index 3be1209b636e..b25e2ffd0cb1 100644
--- a/pkgs/development/interpreters/python/cpython/3.3/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.3/default.nix
@@ -1,21 +1,23 @@
 { stdenv, fetchurl
 , bzip2
-, db
 , gdbm
-, libX11, xproto
 , lzma
 , ncurses
 , openssl
 , readline
 , sqlite
-, tcl, tk
+, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
 , python33Packages
+, CF, configd
 }:
 
-assert readline != null -> ncurses != null;
+assert x11Support -> tcl != null
+                  && tk != null
+                  && xproto != null
+                  && libX11 != null;
 
 with stdenv.lib;
 
@@ -26,13 +28,14 @@ let
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
+  sitePackages = "lib/${libPrefix}/site-packages";
 
   buildInputs = filter (p: p != null) [
-    zlib bzip2 lzma gdbm sqlite db readline ncurses openssl tcl tk libX11 xproto
-  ];
+    zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
+    ++ optionals x11Support [ tcl tk libX11 xproto ]
+    ++ optionals stdenv.isDarwin [ CF configd ];
 
-in
-stdenv.mkDerivation {
+in stdenv.mkDerivation {
   name = "python3-${version}";
   pythonVersion = majorVersion;
   inherit majorVersion version;
@@ -77,23 +80,36 @@ stdenv.mkDerivation {
 
     # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
     echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
+
+    # Use Python3 as default python
+    ln -s "$out/bin/idle3" "$out/bin/idle"
+    ln -s "$out/bin/pip3" "$out/bin/pip"
+    ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
+    ln -s "$out/bin/python3" "$out/bin/python"
+    ln -s "$out/bin/python3-config" "$out/bin/python-config"
+    ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
+  '';
+
+  postFixup = ''
+    # Get rid of retained dependencies on -dev packages, and remove
+    # some $TMPDIR references to improve binary reproducibility.
+    for i in $out/lib/python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
+      sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
+    done
+
+    # FIXME: should regenerate this.
+    rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython*
+
   '';
 
   passthru = rec {
-    inherit libPrefix;
-    zlibSupport = zlib != null;
-    sqliteSupport = sqlite != null;
-    dbSupport = db != null;
-    readlineSupport = readline != null;
-    opensslSupport = openssl != null;
-    tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
+    inherit libPrefix sitePackages x11Support;
     executable = "${libPrefix}m";
     buildEnv = callPackage ../../wrapper.nix { python = self; };
     withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; };
     isPy3 = true;
     isPy33 = true;
     is_py3k = true;  # deprecated
-    sitePackages = "lib/${libPrefix}/site-packages";
     interpreter = "${self}/bin/${executable}";
   };
 
diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix
index 78f5972e10fb..43edce8a44c2 100644
--- a/pkgs/development/interpreters/python/cpython/3.4/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix
@@ -1,23 +1,23 @@
 { stdenv, fetchurl
 , bzip2
-, db
 , gdbm
-, libX11, xproto
 , lzma
 , ncurses
 , openssl
 , readline
 , sqlite
-, tcl, tk
+, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
 , python34Packages
-
 , CF, configd
 }:
 
-assert readline != null -> ncurses != null;
+assert x11Support -> tcl != null
+                  && tk != null
+                  && xproto != null
+                  && libX11 != null;
 
 with stdenv.lib;
 
@@ -28,25 +28,14 @@ let
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
+  sitePackages = "lib/${libPrefix}/site-packages";
 
   buildInputs = filter (p: p != null) [
-    zlib
-    bzip2
-    lzma
-    gdbm
-    sqlite
-    db
-    readline
-    ncurses
-    openssl
-    tcl
-    tk
-    libX11
-    xproto
-  ] ++ optionals stdenv.isDarwin [ CF configd ];
-
-in
-stdenv.mkDerivation {
+    zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
+    ++ optionals x11Support [ tcl tk libX11 xproto ]
+    ++ optionals stdenv.isDarwin [ CF configd ];
+
+in stdenv.mkDerivation {
   name = "python3-${version}";
   pythonVersion = majorVersion;
   inherit majorVersion version;
@@ -100,23 +89,36 @@ stdenv.mkDerivation {
 
     # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
     echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
+
+    # Use Python3 as default python
+    ln -s "$out/bin/idle3" "$out/bin/idle"
+    ln -s "$out/bin/pip3" "$out/bin/pip"
+    ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
+    ln -s "$out/bin/python3" "$out/bin/python"
+    ln -s "$out/bin/python3-config" "$out/bin/python-config"
+    ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
+  '';
+
+  postFixup = ''
+    # Get rid of retained dependencies on -dev packages, and remove
+    # some $TMPDIR references to improve binary reproducibility.
+    for i in $out/lib/python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
+      sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
+    done
+
+    # FIXME: should regenerate this.
+    rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython*
+
   '';
 
   passthru = rec {
-    inherit libPrefix;
-    zlibSupport = zlib != null;
-    sqliteSupport = sqlite != null;
-    dbSupport = db != null;
-    readlineSupport = readline != null;
-    opensslSupport = openssl != null;
-    tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
+    inherit libPrefix sitePackages x11Support;
     executable = "${libPrefix}m";
     buildEnv = callPackage ../../wrapper.nix { python = self; };
     withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; };
     isPy3 = true;
     isPy34 = true;
     is_py3k = true;  # deprecated
-    sitePackages = "lib/${libPrefix}/site-packages";
     interpreter = "${self}/bin/${executable}";
   };
 
diff --git a/pkgs/development/interpreters/python/cpython/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix
index 84488e7e05c3..dd2cce707efe 100644
--- a/pkgs/development/interpreters/python/cpython/3.5/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix
@@ -1,22 +1,23 @@
 { stdenv, fetchurl
 , bzip2
 , gdbm
-, libX11, xproto
 , lzma
 , ncurses
 , openssl
 , readline
 , sqlite
-, tcl, tk
+, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
 , python35Packages
-
 , CF, configd
 }:
 
-assert readline != null -> ncurses != null;
+assert x11Support -> tcl != null
+                  && tk != null
+                  && xproto != null
+                  && libX11 != null;
 
 with stdenv.lib;
 
@@ -27,23 +28,14 @@ let
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
+  sitePackages = "lib/${libPrefix}/site-packages";
 
   buildInputs = filter (p: p != null) [
-    zlib
-    bzip2
-    lzma
-    gdbm
-    sqlite
-    readline
-    ncurses
-    openssl
-    tcl
-    tk
-    libX11
-    xproto
-  ] ++ optionals stdenv.isDarwin [ CF configd ];
-in
-stdenv.mkDerivation {
+    zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
+    ++ optionals x11Support [ tcl tk libX11 xproto ]
+    ++ optionals stdenv.isDarwin [ CF configd ];
+
+in stdenv.mkDerivation {
   name = "python3-${version}";
   pythonVersion = majorVersion;
   inherit majorVersion version;
@@ -97,12 +89,20 @@ stdenv.mkDerivation {
 
     # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
     echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
+
+    # Use Python3 as default python
+    ln -s "$out/bin/idle3" "$out/bin/idle"
+    ln -s "$out/bin/pip3" "$out/bin/pip"
+    ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
+    ln -s "$out/bin/python3" "$out/bin/python"
+    ln -s "$out/bin/python3-config" "$out/bin/python-config"
+    ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
   '';
 
   postFixup = ''
     # Get rid of retained dependencies on -dev packages, and remove
     # some $TMPDIR references to improve binary reproducibility.
-    for i in $out/lib//python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
+    for i in $out/lib/python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
       sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
     done
 
@@ -111,20 +111,12 @@ stdenv.mkDerivation {
   '';
 
   passthru = rec {
-    inherit libPrefix;
-    zlibSupport = zlib != null;
-    sqliteSupport = sqlite != null;
-    dbSupport = false;
-    readlineSupport = readline != null;
-    opensslSupport = openssl != null;
-    tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
+    inherit libPrefix sitePackages x11Support;
     executable = "${libPrefix}m";
     buildEnv = callPackage ../../wrapper.nix { python = self; };
     withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; };
     isPy3 = true;
     isPy35 = true;
-    is_py3k = true;  # deprecated
-    sitePackages = "lib/${libPrefix}/site-packages";
     interpreter = "${self}/bin/${executable}";
   };
 
diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix
index 1d2ee98bb857..d5960ccde99f 100644
--- a/pkgs/development/interpreters/python/cpython/3.6/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix
@@ -1,25 +1,24 @@
 { stdenv, fetchurl
 , glibc
 , bzip2
-, db
 , gdbm
-, libX11, xproto
 , lzma
 , ncurses
 , openssl
 , readline
 , sqlite
-, tcl, tk
+, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
 , python36Packages
-
 , CF, configd
 }:
 
-assert readline != null -> ncurses != null;
-
+assert x11Support -> tcl != null
+                  && tk != null
+                  && xproto != null
+                  && libX11 != null;
 with stdenv.lib;
 
 let
@@ -29,25 +28,14 @@ let
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
+  sitePackages = "lib/${libPrefix}/site-packages";
 
   buildInputs = filter (p: p != null) [
-    glibc
-    zlib
-    bzip2
-    lzma
-    gdbm
-    sqlite
-    db
-    readline
-    ncurses
-    openssl
-    tcl
-    tk
-    libX11
-    xproto
-  ] ++ optionals stdenv.isDarwin [ CF configd ];
-in
-stdenv.mkDerivation {
+    zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
+    ++ optionals x11Support [ tcl tk libX11 xproto ]
+    ++ optionals stdenv.isDarwin [ CF configd ];
+
+in stdenv.mkDerivation {
   name = "python3-${version}";
   pythonVersion = majorVersion;
   inherit majorVersion version;
@@ -101,23 +89,24 @@ stdenv.mkDerivation {
 
     # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
     echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
+
+    # Use Python3 as default python
+    ln -s "$out/bin/idle3" "$out/bin/idle"
+    ln -s "$out/bin/pip3" "$out/bin/pip"
+    ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
+    ln -s "$out/bin/python3" "$out/bin/python"
+    ln -s "$out/bin/python3-config" "$out/bin/python-config"
+    ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
   '';
 
   passthru = rec {
-    inherit libPrefix;
-    zlibSupport = zlib != null;
-    sqliteSupport = sqlite != null;
-    dbSupport = db != null;
-    readlineSupport = readline != null;
-    opensslSupport = openssl != null;
-    tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
+    inherit libPrefix sitePackages x11Support;
     executable = "${libPrefix}m";
     buildEnv = callPackage ../../wrapper.nix { python = self; };
     withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; };
     isPy3 = true;
     isPy35 = true;
     is_py3k = true;  # deprecated
-    sitePackages = "lib/${libPrefix}/site-packages";
     interpreter = "${self}/bin/${executable}";
   };
 
diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix
index 99af42cd7add..0f798c63e8fa 100644
--- a/pkgs/development/interpreters/python/mk-python-derivation.nix
+++ b/pkgs/development/interpreters/python/mk-python-derivation.nix
@@ -69,13 +69,13 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled"] // {
   doCheck = false;
   doInstallCheck = doCheck;
 
-  postFixup = attrs.postFixup or ''
+  postFixup = ''
     wrapPythonPrograms
   '' + lib.optionalString catchConflicts ''
     # check if we have two packages with the same name in closure and fail
     # this shouldn't happen, something went wrong with dependencies specs
     ${python.interpreter} ${./catch_conflicts.py}
-  '';
+  '' + attrs.postFixup or '''';
 
   passthru = {
     inherit python; # The python interpreter
diff --git a/pkgs/development/interpreters/python/pypy/2.7/default.nix b/pkgs/development/interpreters/python/pypy/2.7/default.nix
index 7e11ac89b167..bce6d19d58d3 100644
--- a/pkgs/development/interpreters/python/pypy/2.7/default.nix
+++ b/pkgs/development/interpreters/python/pypy/2.7/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, pkgconfig, libffi
-, sqlite, openssl, ncurses, pythonFull, expat, tcl, tk, xlibsWrapper, libX11
+, sqlite, openssl, ncurses, python, expat, tcl, tk, xlibsWrapper, libX11
 , makeWrapper, callPackage, self, pypyPackages, gdbm, db }:
 
 assert zlibSupport -> zlib != null;
@@ -34,7 +34,7 @@ let
       patch lib-python/2.7/test/test_pyexpat.py < '${expatch}'
     '';
 
-    buildInputs = [ bzip2 openssl pkgconfig pythonFull libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 makeWrapper gdbm db ]
+    buildInputs = [ bzip2 openssl pkgconfig python libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 makeWrapper gdbm db ]
       ++ stdenv.lib.optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc
       ++ stdenv.lib.optional zlibSupport zlib;
 
@@ -62,7 +62,7 @@ let
     '';
 
     buildPhase = ''
-      ${pythonFull.interpreter} rpython/bin/rpython --make-jobs="$NIX_BUILD_CORES" -Ojit --batch pypy/goal/targetpypystandalone.py --withmod-_minimal_curses --withmod-unicodedata --withmod-thread --withmod-bz2 --withmod-_multiprocessing
+      ${python.interpreter} rpython/bin/rpython --make-jobs="$NIX_BUILD_CORES" -Ojit --batch pypy/goal/targetpypystandalone.py --withmod-_minimal_curses --withmod-unicodedata --withmod-thread --withmod-bz2 --withmod-_multiprocessing
     '';
 
     setupHook = ./setup-hook.sh;
diff --git a/pkgs/development/interpreters/spidermonkey/185-1.0.0.nix b/pkgs/development/interpreters/spidermonkey/185-1.0.0.nix
index 8279a4cd0df8..582e7039d17c 100644
--- a/pkgs/development/interpreters/spidermonkey/185-1.0.0.nix
+++ b/pkgs/development/interpreters/spidermonkey/185-1.0.0.nix
@@ -1,4 +1,4 @@
-{ stdenv, autoconf213, fetchurl, pkgconfig, nspr, perl, python, zip }:
+{ stdenv, autoconf213, fetchurl, pkgconfig, nspr, perl, python2, zip }:
 
 stdenv.mkDerivation rec {
   version = "185-1.0.0";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ nspr ];
 
-  buildInputs = [ pkgconfig perl python zip ];
+  buildInputs = [ pkgconfig perl python2 zip ];
   nativeBuildInputs = if stdenv.isArm then [ autoconf213 ] else [];
 
   postUnpack = "sourceRoot=\${sourceRoot}/js/src";
diff --git a/pkgs/development/interpreters/spidermonkey/24.2.nix b/pkgs/development/interpreters/spidermonkey/24.2.nix
index d207fbd10704..279528e9e83c 100644
--- a/pkgs/development/interpreters/spidermonkey/24.2.nix
+++ b/pkgs/development/interpreters/spidermonkey/24.2.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, nspr, perl, python, zip, libffi, readline }:
+{ stdenv, fetchurl, pkgconfig, nspr, perl, python2, zip, libffi, readline }:
 
 stdenv.mkDerivation rec {
   version = "24.2.0";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ nspr ];
 
-  buildInputs = [ pkgconfig perl python zip libffi readline ];
+  buildInputs = [ pkgconfig perl python2 zip libffi readline ];
 
   postPatch = ''
     # Fixes an issue with version detection under perl 5.22.x
diff --git a/pkgs/development/interpreters/spidermonkey/31.5.nix b/pkgs/development/interpreters/spidermonkey/31.5.nix
index 2334e1b6b7f9..f52d526e3fa9 100644
--- a/pkgs/development/interpreters/spidermonkey/31.5.nix
+++ b/pkgs/development/interpreters/spidermonkey/31.5.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, perl, python, zip, libffi, readline }:
+{ stdenv, fetchurl, pkgconfig, perl, python2, zip, libffi, readline }:
 
 stdenv.mkDerivation rec {
   version = "31.5.0";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "1q8icql5hh1g3gzg5fp4rl9rfagyhm9gilfn3dgi7qn4i1mrfqsd";
   };
 
-  buildInputs = [ pkgconfig perl python zip libffi readline ];
+  buildInputs = [ pkgconfig perl python2 zip libffi readline ];
 
   postUnpack = "sourceRoot=\${sourceRoot}/js/src";
 
diff --git a/pkgs/development/libraries/Xaw3d/builder.sh b/pkgs/development/libraries/Xaw3d/builder.sh
deleted file mode 100644
index ff42e47ea56b..000000000000
--- a/pkgs/development/libraries/Xaw3d/builder.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-source $stdenv/setup
-
-configurePhase() {
-    cd lib/Xaw3d
-    (mkdir X11 && cd X11 && ln -fs .. Xaw3d)
-    xmkmf
-}
-
-buildPhase() {
-    make depend $makeFlags
-    make $makeFlags
-}
-
-installPhase() {
-    make install SHLIBDIR=$out/lib USRLIBDIR=$out/lib INCDIR=$out/include
-    cd $out/include/X11 && ln -s Xaw3d Xaw
-
-    mkdir -p "$out/nix-support"
-    echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs"
-}
-
-makeFlags="CDEBUGFLAGS=" # !!! awful hack
-
-genericBuild
diff --git a/pkgs/development/libraries/Xaw3d/config.patch b/pkgs/development/libraries/Xaw3d/config.patch
deleted file mode 100644
index 4062f313368f..000000000000
--- a/pkgs/development/libraries/Xaw3d/config.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -rc xc-orig/lib/Xaw3d/Imakefile xc/lib/Xaw3d/Imakefile
-*** xc-orig/lib/Xaw3d/Imakefile	2003-03-08 15:55:18.000000000 +0100
---- xc/lib/Xaw3d/Imakefile	2005-11-11 20:12:24.000000000 +0100
-***************
-*** 9,15 ****
-  XCOMM For grayed stipple shadows, define GRAY_BLKWHT_STIPPLES:
-  #define GRAY_BLKWHT_STIPPLES
-  XCOMM For scrollbars with arrows, define ARROW_SCROLLBARS:
-! #undef ARROW_SCROLLBARS
-  
-  #define DoNormalLib NormalLibXaw
-  #define DoSharedLib SharedLibXaw
---- 9,15 ----
-  XCOMM For grayed stipple shadows, define GRAY_BLKWHT_STIPPLES:
-  #define GRAY_BLKWHT_STIPPLES
-  XCOMM For scrollbars with arrows, define ARROW_SCROLLBARS:
-! #define ARROW_SCROLLBARS
-  
-  #define DoNormalLib NormalLibXaw
-  #define DoSharedLib SharedLibXaw
-***************
-*** 22,28 ****
-  #define IncSubSubdir Xaw3d
-  
-  XCOMM When building outside an X11 source tree:
-! XCOMM EXTRA_INCLUDES = -I.
-  
-  #ifdef SharedXawReqs
-  REQUIREDLIBS = SharedXawReqs
---- 22,28 ----
-  #define IncSubSubdir Xaw3d
-  
-  XCOMM When building outside an X11 source tree:
-! EXTRA_INCLUDES = -I.
-  
-  #ifdef SharedXawReqs
-  REQUIREDLIBS = SharedXawReqs
-diff -rc xc-orig/lib/Xaw3d/laylex.l xc/lib/Xaw3d/laylex.l
-*** xc-orig/lib/Xaw3d/laylex.l	1996-10-15 16:41:26.000000000 +0200
---- xc/lib/Xaw3d/laylex.l	2005-11-11 20:03:50.000000000 +0100
-***************
-*** 26,31 ****
---- 26,33 ----
-  #ifdef __STDC__
-  static int count ();
-  #endif
-+ 
-+ static int LayYY_prev_more_offset = 0;
-  %}
-  %%
-  vertical		return VERTICAL;
diff --git a/pkgs/development/libraries/Xaw3d/default.nix b/pkgs/development/libraries/Xaw3d/default.nix
index ca225b3381b2..50399f62d0a5 100644
--- a/pkgs/development/libraries/Xaw3d/default.nix
+++ b/pkgs/development/libraries/Xaw3d/default.nix
@@ -1,14 +1,14 @@
-{stdenv, fetchurl, xlibsWrapper, imake, gccmakedep, libXmu, libXpm, libXp, bison, flex}:
+{stdenv, fetchurl, xlibsWrapper, imake, gccmakedep, libXmu, libXpm, libXp, bison, flex, pkgconfig}:
 
 stdenv.mkDerivation {
-  name = "Xaw3d-1.5E";
-  builder = ./builder.sh;
+  name = "Xaw3d-1.6.2";
   src = fetchurl {
-    url = http://freshmeat.net/redir/xaw3d/11835/url_tgz/Xaw3d-1.5E.tar.gz;
-    md5 = "29ecfdcd6bcf47f62ecfd672d31269a1";
+    urls = [ 
+      ftp://ftp.x.org/pub/xorg/individual/lib/libXaw3d-1.6.tar.bz2
+      ];
+    sha256 = "099kx6ni5vkgr3kf40glif8m6r1m1hq6hxqlqrblaj1w5cphh8hi";
   };
-  patches = [./config.patch ./laylex.patch];
-  buildInputs = [imake gccmakedep libXpm libXp bison flex];
+  buildInputs = [imake gccmakedep libXpm libXp bison flex pkgconfig];
   propagatedBuildInputs = [xlibsWrapper libXmu];
 
   meta = {
diff --git a/pkgs/development/libraries/Xaw3d/laylex.patch b/pkgs/development/libraries/Xaw3d/laylex.patch
deleted file mode 100644
index 911ea800ec6f..000000000000
--- a/pkgs/development/libraries/Xaw3d/laylex.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -rc xc-orig/lib/Xaw3d/laylex.l xc/lib/Xaw3d/laylex.l
-*** xc-orig/lib/Xaw3d/laylex.l	2006-08-07 12:12:54.000000000 +0200
---- xc/lib/Xaw3d/laylex.l	2006-08-07 12:14:49.000000000 +0200
-***************
-*** 27,33 ****
-  static int count ();
-  #endif
-  
-- static int LayYY_prev_more_offset = 0;
-  %}
-  %%
-  vertical		return VERTICAL;
---- 27,32 ----
diff --git a/pkgs/development/libraries/arb/default.nix b/pkgs/development/libraries/arb/default.nix
new file mode 100644
index 000000000000..c4b37ddb78fd
--- /dev/null
+++ b/pkgs/development/libraries/arb/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchFromGitHub, mpir, gmp, mpfr, flint}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "arb";
+  version = "2.8.1";
+  src = fetchFromGitHub {
+    owner = "fredrik-johansson";
+    repo = "${pname}";
+    rev = "${version}";
+    sha256 = "15phk71ci9rr32aqznpkd2b993wjahsgliilkg4mnxsr86nwdf6x";
+  };
+  buildInputs = [mpir gmp mpfr flint];
+  configureFlags = "--with-gmp=${gmp} --with-mpir=${mpir} --with-mpfr=${mpfr} --with-flint=${flint}";
+  meta = {
+    inherit version;
+    description = ''A library for arbitrary-precision interval arithmetic'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/arb/git.nix b/pkgs/development/libraries/arb/git.nix
new file mode 100644
index 000000000000..87b884fece10
--- /dev/null
+++ b/pkgs/development/libraries/arb/git.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchFromGitHub, mpir, gmp, mpfr, flint}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "arb";
+  version = "2.9.0pre20161013";
+  src = fetchFromGitHub {
+    owner = "fredrik-johansson";
+    repo = "${pname}";
+    rev = "10bc615ce5999caf4723444b2b1219b74781d8a4";
+    sha256 = "1xb40x3hv9nh76aizhskj5gdhalgn7r95a7zji2nn4ih3lmh40hl";
+  };
+  buildInputs = [mpir gmp mpfr flint];
+  configureFlags = "--with-gmp=${gmp} --with-mpir=${mpir} --with-mpfr=${mpfr} --with-flint=${flint}";
+  meta = {
+    inherit version;
+    description = ''A library for arbitrary-precision interval arithmetic'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/at-spi2-atk/default.nix b/pkgs/development/libraries/at-spi2-atk/default.nix
index b8f86f1fa22c..a6f2b1371e56 100644
--- a/pkgs/development/libraries/at-spi2-atk/default.nix
+++ b/pkgs/development/libraries/at-spi2-atk/default.nix
@@ -2,14 +2,14 @@
 , intltool, dbus_glib, at_spi2_core, libSM }:
 
 stdenv.mkDerivation rec {
-  versionMajor = "2.20";
-  versionMinor = "1";
+  versionMajor = "2.22";
+  versionMinor = "0";
   moduleName   = "at-spi2-atk";
   name = "${moduleName}-${versionMajor}.${versionMinor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
-    sha256 = "2358a794e918e8f47ce0c7370eee8fc8a6207ff1afe976ec9ff547a03277bf8e";
+    sha256 = "e8bdedbeb873eb229eb08c88e11d07713ec25ae175251648ad1a9da6c21113c1";
   };
 
   buildInputs = [ python pkgconfig popt atk libX11 libICE xorg.libXtst libXi
diff --git a/pkgs/development/libraries/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix
index 52459f853747..3562969f6c95 100644
--- a/pkgs/development/libraries/at-spi2-core/default.nix
+++ b/pkgs/development/libraries/at-spi2-core/default.nix
@@ -2,14 +2,14 @@
 , libX11, xextproto, libSM, libICE, libXtst, libXi, gobjectIntrospection }:
 
 stdenv.mkDerivation rec {
-  versionMajor = "2.20";
-  versionMinor = "2";
+  versionMajor = "2.22";
+  versionMinor = "0";
   moduleName   = "at-spi2-core";
   name = "${moduleName}-${versionMajor}.${versionMinor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
-    sha256 = "88a4de9d43139f13cca531b47b901bc1b56e0ab06ba899126644abd4ac16a143";
+    sha256 = "415ea3af21318308798e098be8b3a17b2f0cf2fe16cecde5ad840cf4e0f2c80a";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/aubio/default.nix b/pkgs/development/libraries/aubio/default.nix
index 472a2ad98078..1d315d28aeef 100644
--- a/pkgs/development/libraries/aubio/default.nix
+++ b/pkgs/development/libraries/aubio/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, alsaLib, fftw, libjack2, libsamplerate
-, libsndfile, pkgconfig, python
+, libsndfile, pkgconfig, python2
 }:
 
 stdenv.mkDerivation rec {
@@ -11,14 +11,14 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    alsaLib fftw libjack2 libsamplerate libsndfile pkgconfig python
+    alsaLib fftw libjack2 libsamplerate libsndfile pkgconfig python2
   ];
 
-  configurePhase = "python waf configure --prefix=$out";
+  configurePhase = "${python2.interpreter} waf configure --prefix=$out";
 
-  buildPhase = "python waf";
+  buildPhase = "${python2.interpreter} waf";
 
-  installPhase = "python waf install";
+  installPhase = "${python2.interpreter} waf install";
 
   meta = with stdenv.lib; { 
     description = "Library for audio labelling";
diff --git a/pkgs/development/libraries/avro-c++/default.nix b/pkgs/development/libraries/avro-c++/default.nix
index 1214a8c974cf..eaf7b135eb5b 100644
--- a/pkgs/development/libraries/avro-c++/default.nix
+++ b/pkgs/development/libraries/avro-c++/default.nix
@@ -1,5 +1,4 @@
-{ stdenv, fetchurl, cmake, boost, pythonPackages
-}:
+{ stdenv, fetchurl, cmake, boost, python2}:
 
 let version = "1.8.1"; in
 
@@ -13,8 +12,8 @@ stdenv.mkDerivation {
 
   buildInputs = [
     cmake
+    python2
     boost
-    pythonPackages.python
   ];
 
   preConfigure = ''
diff --git a/pkgs/development/libraries/cddlib/default.nix b/pkgs/development/libraries/cddlib/default.nix
new file mode 100644
index 000000000000..550a660b9667
--- /dev/null
+++ b/pkgs/development/libraries/cddlib/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, gmp}:
+stdenv.mkDerivation rec {
+  name = "cddlib-${version}";
+  fileVersion = "094h";
+  version = "0.94h";
+  src = fetchurl {
+    urls = [
+      "http://archive.ubuntu.com/ubuntu/pool/universe/c/cddlib/cddlib_${fileVersion}.orig.tar.gz"
+      "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-${fileVersion}.tar.gz"
+    ];
+    name = "";
+    sha256 = "1dasasscwfg793q8fwzgwf64xwj7w62yfvszpr8x8g38jka08vgy";
+  };
+  buildInputs = [gmp];
+  meta = {
+    inherit version;
+    description = ''An implementation of the Double Description Method for generating all vertices of a convex polyhedron'';
+    license = stdenv.lib.licenses.gpl2Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/index.html";
+  };
+}
diff --git a/pkgs/development/libraries/cogl/default.nix b/pkgs/development/libraries/cogl/default.nix
index 88bb67077490..1ac34f7608bc 100644
--- a/pkgs/development/libraries/cogl/default.nix
+++ b/pkgs/development/libraries/cogl/default.nix
@@ -1,17 +1,17 @@
 { stdenv, fetchurl, pkgconfig, mesa_noglu, glib, gdk_pixbuf, xorg, libintlOrEmpty
-, pangoSupport ? true, pango, cairo, gobjectIntrospection
+, pangoSupport ? true, pango, cairo, gobjectIntrospection, wayland
 , gstreamerSupport ? true, gst_all_1 }:
 
 let
   ver_maj = "1.22";
-  ver_min = "0";
+  ver_min = "2";
 in
 stdenv.mkDerivation rec {
   name = "cogl-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/cogl/${ver_maj}/${name}.tar.xz";
-    sha256 = "689dfb5d14fc1106e9d2ded0f7930dcf7265d0bc84fa846b4f03941633eeaa91";
+    sha256 = "03f0ha3qk7ca0nnkkcr1garrm1n1vvfqhkz9lwjm592fnv6ii9rr";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -19,11 +19,13 @@ stdenv.mkDerivation rec {
   configureFlags = [
     "--enable-introspection"
     "--enable-kms-egl-platform"
+    "--enable-wayland-egl-platform"
+    "--enable-wayland-egl-server"
   ] ++ stdenv.lib.optional gstreamerSupport "--enable-cogl-gst"
     ++ stdenv.lib.optionals (!stdenv.isDarwin) [ "--enable-gles1" "--enable-gles2" ];
 
   propagatedBuildInputs = with xorg; [
-      glib gdk_pixbuf gobjectIntrospection
+      glib gdk_pixbuf gobjectIntrospection wayland
       mesa_noglu libXrandr libXfixes libXcomposite libXdamage
     ]
     ++ libintlOrEmpty
diff --git a/pkgs/development/libraries/eclib/default.nix b/pkgs/development/libraries/eclib/default.nix
new file mode 100644
index 000000000000..3651b9e7660e
--- /dev/null
+++ b/pkgs/development/libraries/eclib/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchFromGitHub, autoconf, automake, libtool, gettext, autoreconfHook
+, pari, ntl, gmp}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "eclib";
+  version = "20160720";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchFromGitHub {
+    owner = "JohnCremona";
+    repo = "${pname}";
+    rev = "${version}";
+    sha256 = "0qrcd5c8cqhw9f14my6k6013w8li5vdigrjvchkr19n2l8g75j0h";
+  };
+  buildInputs = [pari ntl gmp];
+  nativeBuildInputs = [autoconf automake libtool gettext autoreconfHook];
+  meta = {
+    inherit version;
+    description = ''Elliptic curve tools'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/fflas-ffpack/1.nix b/pkgs/development/libraries/fflas-ffpack/1.nix
new file mode 100644
index 000000000000..1222aef12f86
--- /dev/null
+++ b/pkgs/development/libraries/fflas-ffpack/1.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl, autoreconfHook, givaro_3_7, pkgconfig, openblas, gmpxx}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "fflas-ffpack";
+  version = "1.6.0";
+  src = fetchurl {
+    url = "http://linalg.org/fflas-ffpack-${version}.tar.gz";
+    sha256 = "02fr675278c65hfiy1chb903j4ix9i8yni1xc2g5nmsjcaf9vra9";
+  };
+  buildInputs = [autoreconfHook givaro_3_7 openblas gmpxx];
+  nativeBuildInputs = [pkgconfig];
+  configureFlags = "--with-blas=-lopenblas --with-gmp=${gmpxx.dev} --with-givaro=${givaro_3_7}";
+  meta = {
+    inherit version;
+    description = ''Finite Field Linear Algebra Subroutines'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://linbox-team.github.io/fflas-ffpack/";
+  };
+}
diff --git a/pkgs/development/libraries/fflas-ffpack/default.nix b/pkgs/development/libraries/fflas-ffpack/default.nix
new file mode 100644
index 000000000000..7d0cb339a43a
--- /dev/null
+++ b/pkgs/development/libraries/fflas-ffpack/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchFromGitHub, autoreconfHook, givaro, pkgconfig, openblas, liblapack}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "fflas-ffpack";
+  version = "2.2.2";
+  src = fetchFromGitHub {
+    owner = "linbox-team";
+    repo = "${pname}";
+    rev = "v${version}";
+    sha256 = "0k1f4pb7azrm6ajncvg7vni7ixfmn6fssd5ld4xddbi6jqbsf9rd";
+  };
+  buildInputs = [autoreconfHook givaro (liblapack.override {shared = true;}) openblas];
+  nativeBuildInputs = [pkgconfig];
+  configureFlags = "--with-blas-libs=-lopenblas --with-lapack-libs=-llapack";
+  meta = {
+    inherit version;
+    description = ''Finite Field Linear Algebra Subroutines'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://linbox-team.github.io/fflas-ffpack/";
+  };
+}
diff --git a/pkgs/development/libraries/flint/default.nix b/pkgs/development/libraries/flint/default.nix
new file mode 100644
index 000000000000..be158684b5b8
--- /dev/null
+++ b/pkgs/development/libraries/flint/default.nix
@@ -0,0 +1,22 @@
+{stdenv, fetchurl, gmp, mpir, mpfr, openblas, ntl}:
+stdenv.mkDerivation rec {
+  name = "flint-${version}";
+  version = "2.5.2";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "http://www.flintlib.org/flint-${version}.tar.gz";
+    sha256 = "11syazv1a8rrnac3wj3hnyhhflpqcmq02q8pqk2m6g2k6h0gxwfb";
+  };
+  buildInputs = [gmp mpir mpfr openblas ntl];
+  configureFlags = "--with-gmp=${gmp} --with-mpir=${mpir} --with-mpfr=${mpfr} --with-blas=${openblas} --with-ntl=${ntl}";
+  meta = {
+    inherit version;
+    description = ''Fast Library for Number Theory'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://www.flintlib.org/";
+    downloadPage = "http://www.flintlib.org/downloads.html";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/development/libraries/fplll/20160331.nix b/pkgs/development/libraries/fplll/20160331.nix
new file mode 100644
index 000000000000..952ecb0eadeb
--- /dev/null
+++ b/pkgs/development/libraries/fplll/20160331.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchFromGitHub, autoconf, automake, libtool, gettext, autoreconfHook
+, gmp, mpfr
+}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "fplll";
+  version = "20160331";
+  src = fetchFromGitHub {
+    owner = "${pname}";
+    repo = "${pname}";
+    rev = "11dea26c2f9396ffb7a7191aa371343f1f74c5c3";
+    sha256 = "1clxch9hbr30w6s84m2mprxv58adhg5qw6sa2p3jr1cy4r7r59ib";
+  };
+  nativeBuildInputs = [autoconf automake libtool gettext autoreconfHook];
+  buildInputs = [gmp mpfr];
+  meta = {
+    inherit version;
+    description = ''Lattice algorithms using floating-point arithmetic'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/fplll/default.nix b/pkgs/development/libraries/fplll/default.nix
new file mode 100644
index 000000000000..b377061fe97e
--- /dev/null
+++ b/pkgs/development/libraries/fplll/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchFromGitHub, autoconf, automake, libtool, gettext, autoreconfHook
+, gmp, mpfr
+}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "fplll";
+  version = "5.0.2";
+  src = fetchFromGitHub {
+    owner = "${pname}";
+    repo = "${pname}";
+    rev = "${version}";
+    sha256 = "0rl98rx284giyhj3pf6iydn1a06jis8c8mnsc7kqs4rcmiw4bjpx";
+  };
+  nativeBuildInputs = [autoconf automake libtool gettext autoreconfHook];
+  buildInputs = [gmp mpfr];
+  meta = {
+    inherit version;
+    description = ''Lattice algorithms using floating-point arithmetic'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/gcab/default.nix b/pkgs/development/libraries/gcab/default.nix
index 5a8b1f2fcbc5..11308a93337e 100644
--- a/pkgs/development/libraries/gcab/default.nix
+++ b/pkgs/development/libraries/gcab/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl, intltool, gobjectIntrospection, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "gcab-0.6";
+  name = "gcab-${version}";
+  version = "0.7";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gcab/0.6/${name}.tar.xz";
-    sha256 = "a0443b904bfa7227b5155bfcdf9ea9256b6e26930b8febe1c41f972f6f1334bb";
+    url = "mirror://gnome/sources/gcab/${version}/${name}.tar.xz";
+    sha256 = "1vxdsiky3492zlyrym02sdwf09y19rl2z5h5iin7qm0wizw5wvm1";
   };
 
   buildInputs = [ intltool gobjectIntrospection pkgconfig ];
diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix
index d710c7357bc5..ce3e0f61972f 100644
--- a/pkgs/development/libraries/gdal/default.nix
+++ b/pkgs/development/libraries/gdal/default.nix
@@ -39,16 +39,9 @@ composableDerivation.composableDerivation {} (fixed: rec {
     (if netcdfSupport then "--with-netcdf=${netcdf}" else "")
   ];
 
-  # Prevent this:
-  #
-  #   Checking .pth file support in /nix/store/xkrmb8xnvqxzjwsdmasqmsdh1a5y2y99-gdal-1.11.2/lib/python2.7/site-packages/
-  #   /nix/store/pbi1lgank10fy0xpjckbdpgacqw34dsz-python-2.7.9/bin/python -E -c pass
-  #   TEST FAILED: /nix/store/xkrmb8xnvqxzjwsdmasqmsdh1a5y2y99-gdal-1.11.2/lib/python2.7/site-packages/ does NOT support .pth files
-  #   error: bad install directory or PYTHONPATH
   preBuild = ''
-    pythonInstallDir=$out/lib/${pythonPackages.python.libPrefix}/site-packages
-    mkdir -p $pythonInstallDir
-    export PYTHONPATH=''${PYTHONPATH:+''${PYTHONPATH}:}$pythonInstallDir
+    substituteInPlace swig/python/GNUmakefile \
+      --replace "ifeq (\$(STD_UNIX_LAYOUT),\"TRUE\")" "ifeq (1,1)"
   '';
 
   postInstall = ''
diff --git a/pkgs/development/libraries/gf2x/default.nix b/pkgs/development/libraries/gf2x/default.nix
new file mode 100644
index 000000000000..feba97f4da4c
--- /dev/null
+++ b/pkgs/development/libraries/gf2x/default.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+  name = "gf2x-${version}";
+  version = "1.1";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "http://gforge.inria.fr/frs/download.php/file/30873/gf2x-1.1.tar.gz";
+    sha256 = "17w4b39j9dvri5s278pxi8ha7mf47j87kq1lr802l4408rh02gqd";
+  };
+  buildInputs = [];
+  meta = {
+    inherit version;
+    description = ''Routines for fast arithmetic in GF(2)[x]'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/git2/default.nix b/pkgs/development/libraries/git2/default.nix
index 0a0c5858917f..c4487dca5977 100644
--- a/pkgs/development/libraries/git2/default.nix
+++ b/pkgs/development/libraries/git2/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, pkgconfig, cmake, zlib, python, libssh2, openssl, curl, http-parser, libiconv }:
 
 stdenv.mkDerivation (rec {
-  version = "0.24.1";
+  version = "0.24.2";
   name = "libgit2-${version}";
 
   src = fetchurl {
     name = "${name}.tar.gz";
     url = "https://github.com/libgit2/libgit2/tarball/v${version}";
-    sha256 = "0rw80480dx2f6a2wbb1bwixygg1iwq3r7vwhxdmkkf4lpxd35jhd";
+    sha256 = "0avijw83vfx64cn23vx2j1h14zmkx8silgjnq6q2qw2z3sh73hs1";
   };
 
   # TODO: `cargo` (rust's package manager) surfaced a serious bug in
diff --git a/pkgs/development/libraries/givaro/3.7.nix b/pkgs/development/libraries/givaro/3.7.nix
new file mode 100644
index 000000000000..9907ae24f2c9
--- /dev/null
+++ b/pkgs/development/libraries/givaro/3.7.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, automake, autoconf, libtool, autoreconfHook, gmpxx}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "givaro";
+  version = "3.7.2";
+  src = fetchurl {
+    url = "https://forge.imag.fr/frs/download.php/370/givaro-${version}.tar.gz";
+    sha256 = "0lf5cnbyr27fw7klc3zabkb1979dn67jmrjz6pa3jzw2ng74x9b3";
+  };
+  buildInputs = [autoconf automake libtool autoreconfHook gmpxx];
+  meta = {
+    inherit version;
+    description = ''A C++ library for arithmetic and algebraic computations'';
+    license = stdenv.lib.licenses.cecill-b;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/givaro/3.nix b/pkgs/development/libraries/givaro/3.nix
new file mode 100644
index 000000000000..bb0fd0e08982
--- /dev/null
+++ b/pkgs/development/libraries/givaro/3.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, automake, autoconf, libtool, autoreconfHook, gmpxx}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "givaro";
+  version = "3.8.0";
+  src = fetchurl {
+    url = "https://forge.imag.fr/frs/download.php/592/givaro-${version}.tar.gz";
+    sha256 = "1822ksv8653a84hvcz0vxl3nk8dqz7d41ys8rplq0zjjmvb2i5yq";
+  };
+  buildInputs = [autoconf automake libtool autoreconfHook gmpxx];
+  meta = {
+    inherit version;
+    description = ''A C++ library for arithmetic and algebraic computations'';
+    license = stdenv.lib.licenses.cecill-b;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/givaro/default.nix b/pkgs/development/libraries/givaro/default.nix
new file mode 100644
index 000000000000..d9a8624b2ea2
--- /dev/null
+++ b/pkgs/development/libraries/givaro/default.nix
@@ -0,0 +1,20 @@
+{stdenv, fetchFromGitHub, automake, autoconf, libtool, autoreconfHook, gmpxx}:
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "givaro";
+  version = "4.0.2";
+  src = fetchFromGitHub {
+    owner = "linbox-team";
+    repo = "${pname}";
+    rev = "v${version}";
+    sha256 = "04n1lyc823z3l1d7mnmqpc9z1pkn646szjchasbfkn74m7cb0qz7";
+  };
+  buildInputs = [autoconf automake libtool autoreconfHook gmpxx];
+  meta = {
+    inherit version;
+    description = ''A C++ library for arithmetic and algebraic computations'';
+    license = stdenv.lib.licenses.cecill-b;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/gnutls/3.3.nix b/pkgs/development/libraries/gnutls/3.3.nix
index 86262d4aef23..87b46dc26a07 100644
--- a/pkgs/development/libraries/gnutls/3.3.nix
+++ b/pkgs/development/libraries/gnutls/3.3.nix
@@ -1,10 +1,10 @@
 { callPackage, fetchurl, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "3.3.24";
+  version = "3.3.25";
 
   src = fetchurl {
     url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-${version}.tar.xz";
-    sha256 = "5b65fe2a91c8dfa32bedc78acffcb152e5426cd3349e2afc43cccc9bdaf18aa5";
+    sha256 = "0bhzkzpzwg3lhbhpas7m4rcj4mrnyq76zmic9z42wpa68d76r78q";
   };
 })
diff --git a/pkgs/development/libraries/gnutls/3.4.nix b/pkgs/development/libraries/gnutls/3.4.nix
index 4ca991b9667a..fc3ac0ec421a 100644
--- a/pkgs/development/libraries/gnutls/3.4.nix
+++ b/pkgs/development/libraries/gnutls/3.4.nix
@@ -1,10 +1,10 @@
 { callPackage, fetchurl, autoreconfHook, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "3.4.15";
+  version = "3.4.16";
 
   src = fetchurl {
     url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.4/gnutls-${version}.tar.xz";
-    sha256 = "161lbs0ijkkc94xx6yz87q36a055hl6d5hdwyz5s1wpm0lwh2apb";
+    sha256 = "09rrjaflgp5p0hi5gqljklz1xpalnvj8bawvjj6baw8768dvp6nr";
   };
 })
diff --git a/pkgs/development/libraries/gnutls/3.5.nix b/pkgs/development/libraries/gnutls/3.5.nix
index b85859f0e624..602df9f44a35 100644
--- a/pkgs/development/libraries/gnutls/3.5.nix
+++ b/pkgs/development/libraries/gnutls/3.5.nix
@@ -1,10 +1,10 @@
 { callPackage, fetchurl, autoreconfHook, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "3.5.4";
+  version = "3.5.5";
 
   src = fetchurl {
     url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-${version}.tar.xz";
-    sha256 = "1sx8p7v452s9m854r2c5pvcd1k15a3caiv5h35fhrxz0691h2f2f";
+    sha256 = "0ag5q3dfxzv0dmqy7q0a8y74yc3m5yzvjrp324l6vqafh3klz6c6";
   };
 })
diff --git a/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix b/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix
index 2d588e5d231c..d78b50a7821a 100644
--- a/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix
+++ b/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix
@@ -1,8 +1,8 @@
-{ fetchurl, stdenv, pkgconfig, pythonPackages, gstreamer, gst_plugins_base
+{ fetchurl, stdenv, pkgconfig, python2Packages, gstreamer, gst_plugins_base
 }:
 
 let
-  inherit (pythonPackages) python pygobject2;
+  inherit (python2Packages) python pygobject2;
 in stdenv.mkDerivation rec {
   name = "gst-python-0.10.22";
 
diff --git a/pkgs/development/libraries/gtkmm/3.x.nix b/pkgs/development/libraries/gtkmm/3.x.nix
index 37b1f816923e..8b2383f33cce 100644
--- a/pkgs/development/libraries/gtkmm/3.x.nix
+++ b/pkgs/development/libraries/gtkmm/3.x.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, gtk3, glibmm, cairomm, pangomm, atkmm, epoxy }:
 
 let
-  ver_maj = "3.20";
+  ver_maj = "3.22";
   ver_min = "0";
 in
 stdenv.mkDerivation rec {
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/gtkmm/${ver_maj}/${name}.tar.xz";
-    sha256 = "12h2kd22iayvjfhmgjccm33igrbvqdj7hym31fsa1y0dhwzmf8gh";
+    sha256 = "05da4d4b628fb20c8384630ddf478a3b5562952b2d6181fe28d58f6cbc0514f5";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/http-parser/default.nix b/pkgs/development/libraries/http-parser/default.nix
index df3f68b12493..980dd1f18a28 100644
--- a/pkgs/development/libraries/http-parser/default.nix
+++ b/pkgs/development/libraries/http-parser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gyp, utillinux, python, fixDarwinDylibNames }:
+{ stdenv, fetchurl, python2Packages, utillinux, fixDarwinDylibNames }:
 
 let
   version = "2.7.0";
@@ -17,9 +17,9 @@ in stdenv.mkDerivation {
   buildFlags = [ "BUILDTYPE=Release" ];
 
   buildInputs =
-    [ gyp ]
+    [ python2Packages.gyp ]
     ++ stdenv.lib.optional stdenv.isLinux utillinux
-    ++ stdenv.lib.optionals stdenv.isDarwin [ python fixDarwinDylibNames ];
+    ++ stdenv.lib.optionals stdenv.isDarwin [ python2Packages.python fixDarwinDylibNames ];
 
   doCheck = !stdenv.isDarwin;
 
diff --git a/pkgs/development/libraries/iml/default.nix b/pkgs/development/libraries/iml/default.nix
new file mode 100644
index 000000000000..2ae8aad5ffc4
--- /dev/null
+++ b/pkgs/development/libraries/iml/default.nix
@@ -0,0 +1,20 @@
+{stdenv, fetchurl, gmp, atlas}:
+stdenv.mkDerivation rec {
+  name = "iml-${version}";
+  version = "1.0.5";
+  src = fetchurl {
+    url = "http://www.cs.uwaterloo.ca/~astorjoh/iml-${version}.tar.bz2";
+    sha256 = "0akwhhz9b40bz6lrfxpamp7r7wkk48p455qbn04mfnl9a1l6db8x";
+  };
+  buildInputs = [gmp atlas];
+  configureFlags = "--with-gmp-include=${gmp.dev}/include --with-gmp-lib=${gmp}/lib";
+  meta = {
+    inherit version;
+    description = ''Algorithms for computing exact solutions to dense systems of linear equations over the integers'';
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "https://cs.uwaterloo.ca/~astorjoh/iml.html";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/development/libraries/kerberos/heimdal.nix b/pkgs/development/libraries/kerberos/heimdal.nix
index 3740cf18b1ea..f791f3a8d6e0 100644
--- a/pkgs/development/libraries/kerberos/heimdal.nix
+++ b/pkgs/development/libraries/kerberos/heimdal.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, python, perl, yacc, flex
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, python2, perl, yacc, flex
 , texinfo, perlPackages
 , openldap, libcap_ng, sqlite, openssl, db, libedit, pam
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     sha256 = "1r60i4v6y5lpll0l2qpn0ycp6q6f1xjg7k1csi547zls8k96yk9s";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig python perl yacc flex ]
+  nativeBuildInputs = [ autoreconfHook pkgconfig python2 perl yacc flex ]
     ++ (with perlPackages; [ JSON ])
     ++ optional (!libOnly) texinfo;
   buildInputs = optionals (!stdenv.isFreeBSD) [ libcap_ng db ]
diff --git a/pkgs/development/libraries/keybinder/default.nix b/pkgs/development/libraries/keybinder/default.nix
index 63ab7144c473..838affca77a3 100644
--- a/pkgs/development/libraries/keybinder/default.nix
+++ b/pkgs/development/libraries/keybinder/default.nix
@@ -1,9 +1,9 @@
 { stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, gnome3
-, gtk_doc, gtk2, pythonPackages, lua, libX11, libXext, libXrender, gobjectIntrospection
+, gtk_doc, gtk2, python2Packages, lua, libX11, libXext, libXrender, gobjectIntrospection
 }:
 
 let
-  inherit (pythonPackages) python pygobject3 pygtk;
+  inherit (python2Packages) python pygobject3 pygtk;
 in stdenv.mkDerivation rec {
   name = "keybinder-${version}";
   version = "0.3.0";
diff --git a/pkgs/development/libraries/libdwarf/default.nix b/pkgs/development/libraries/libdwarf/default.nix
index 9989990e35da..a064769ec843 100644
--- a/pkgs/development/libraries/libdwarf/default.nix
+++ b/pkgs/development/libraries/libdwarf/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, libelf }:
 
 stdenv.mkDerivation rec {
-  name = "libdwarf-20161001";
+  name = "libdwarf-20161021";
 
   src = fetchurl {
     url = "http://www.prevanders.net/${name}.tar.gz";
-    sha512 = "2c522ae0b6e2afffd09e2e79562987fd819b197c9bce4900b6a4fd176b5ff229e88c6b755cfbae7831e7160ddeb3bfe2afbf39d756d7e75ec31ace0668554048";
+    sha512 = "733523fd5c58f878d65949c1812b2f46b40c4cc3177bc780c703ec71f83675d4b84e81bc1bcca42adf69b5e122562e4ce8e9a8743af29cc6fafe78ed9f8213fd";
   };
 
   configureFlags = " --enable-shared --disable-nonshared";
diff --git a/pkgs/development/libraries/libgap/default.nix b/pkgs/development/libraries/libgap/default.nix
new file mode 100644
index 000000000000..9e0510debd02
--- /dev/null
+++ b/pkgs/development/libraries/libgap/default.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, gmp}:
+stdenv.mkDerivation rec {
+  name = "libgap-${version}";
+  version = "4.8.3";
+  # or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
+  src = fetchurl {
+    url = "http://mirrors.mit.edu/sage/spkg/upstream/libgap/libgap-${version}.tar.gz";
+    sha256 = "0ng4wlw7bj63spf4vkdp43v3ja1fp782lxzdsyf51x26z21idrsq";
+  };
+  buildInputs = [gmp];
+  meta = {
+    inherit version;
+    description = ''A library-packaged fork of the GAP kernel'';
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libgtop/default.nix b/pkgs/development/libraries/libgtop/default.nix
index ac5b4dec07ba..ee4f9401bbb7 100644
--- a/pkgs/development/libraries/libgtop/default.nix
+++ b/pkgs/development/libraries/libgtop/default.nix
@@ -1,10 +1,12 @@
 { stdenv, fetchurl, glib, pkgconfig, perl, intltool, gobjectIntrospection }:
-stdenv.mkDerivation {
-  name = "libgtop-2.32.0";
+stdenv.mkDerivation rec {
+  name = "libgtop-${version}";
+  major = "2.34";
+  version = "${major}.1";
 
   src = fetchurl {
-    url = mirror://gnome/sources/libgtop/2.32/libgtop-2.32.0.tar.xz;
-    sha256 = "13hpml2vfm23816qggr5fvxj75ndb1dq4rgmi7ik6azj69ij8hw4";
+    url = "mirror://gnome/sources/libgtop/${major}/${name}.tar.xz";
+    sha256 = "c89978a76662b18d392edbe0d1b794f5a9a399a5ccf22a02d5b9e28b5ed609e2";
   };
 
   propagatedBuildInputs = [ glib ];
diff --git a/pkgs/development/libraries/libhttpseverywhere/default.nix b/pkgs/development/libraries/libhttpseverywhere/default.nix
index 10ef8232ed80..ea30f3e2de64 100644
--- a/pkgs/development/libraries/libhttpseverywhere/default.nix
+++ b/pkgs/development/libraries/libhttpseverywhere/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "libhttpseverywhere-${version}";
-  version = "0.2.0";
+  version = "0.2.3";
 
   src = fetchFromGitHub {
     owner = "grindhold";
     repo  = "libhttpseverywhere";
     rev = "${version}";
-    sha256 = "06yljz7xxh9v48awgmzma6avrnzs2kqh1ydd2hx4b1x2vgf8nfbb";
+    sha256 = "0ggg1kw5yjakqqpnmjcbcpnq5m4lhc76javh8waqv2klr5mxd2a7";
   };
 
   nativeBuildInputs = [ gnome3.vala valadoc  gobjectIntrospection meson ninja pkgconfig ];
diff --git a/pkgs/development/libraries/libmusicbrainz/5.x.nix b/pkgs/development/libraries/libmusicbrainz/5.x.nix
index 7cdb8fb46910..5ec8f80f7e02 100644
--- a/pkgs/development/libraries/libmusicbrainz/5.x.nix
+++ b/pkgs/development/libraries/libmusicbrainz/5.x.nix
@@ -1,13 +1,16 @@
-{ stdenv, fetchurl, cmake, neon, libdiscid }:
+{ stdenv, fetchFromGitHub, cmake, neon, libdiscid, libxml2, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "libmusicbrainz-5.0.1";
+  version = "5.1.0";
+  name = "libmusicbrainz-${version}";
 
-  buildInputs = [ cmake neon libdiscid ];
+  buildInputs = [ cmake neon libdiscid libxml2 pkgconfig ];
 
-  src = fetchurl {
-    url = "https://github.com/downloads/metabrainz/libmusicbrainz/${name}.tar.gz";
-    md5 = "a0406b94c341c2b52ec0fe98f57cadf3";
+  src = fetchFromGitHub {
+    owner  = "metabrainz";
+    repo   = "libmusicbrainz";
+    sha256 = "0ah9kaf3g3iv1cps2vs1hs33nfbjfx1xscpjgxr1cg28p4ri6jhq";
+    rev    = "release-${version}";
   };
 
   dontUseCmakeBuildDir=true;
diff --git a/pkgs/development/libraries/libpqxx/default.nix b/pkgs/development/libraries/libpqxx/default.nix
index 5b02cfec7e32..e8a80497de36 100644
--- a/pkgs/development/libraries/libpqxx/default.nix
+++ b/pkgs/development/libraries/libpqxx/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, postgresql, python }:
+{ lib, stdenv, fetchurl, postgresql, python2 }:
 
 stdenv.mkDerivation rec {
   name = "libpqxx-4.0.1";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "0f6wxspp6rx12fkasanb0z2g2gc8dhcfwnxagx8wwqbpg6ifsz09";
   };
 
-  buildInputs = [ postgresql python ];
+  buildInputs = [ postgresql python2 ];
 
   preConfigure = ''
     patchShebangs .
diff --git a/pkgs/development/libraries/libpst/default.nix b/pkgs/development/libraries/libpst/default.nix
index a67395182e1d..0a7eb618b184 100644
--- a/pkgs/development/libraries/libpst/default.nix
+++ b/pkgs/development/libraries/libpst/default.nix
@@ -1,16 +1,17 @@
-{ stdenv, fetchurl, autoreconfHook, boost, python, libgsf,
+{ stdenv, fetchurl, autoreconfHook, boost, python2, libgsf,
   pkgconfig, bzip2, xmlto, gettext, imagemagick, doxygen }:
 
 stdenv.mkDerivation rec {
-  name = "libpst-0-6-63";
+  name = "libpst-0.6.68";
 
   src = fetchurl {
-      url = http://www.five-ten-sg.com/libpst/packages/libpst-0.6.63.tar.gz;
-      sha256 = "0qih919zk40japs4mpiaw5vyr2bvwz60sjf23gixd5vvzc32cljz";
+      url = "http://www.five-ten-sg.com/libpst/packages/${name}.tar.gz";
+      sha256 = "06mcaga36i65n1ifr5pw6ghcb1cjfqwrmm1xmaw1sckqf2iqx2by";
     };
 
-  buildInputs = [ autoreconfHook boost python libgsf pkgconfig bzip2
-		  xmlto gettext imagemagick doxygen ];
+  buildInputs = [ autoreconfHook boost python2 libgsf pkgconfig bzip2
+    xmlto gettext imagemagick doxygen
+  ];
 
   doCheck = true;
 
diff --git a/pkgs/development/libraries/libsoup/default.nix b/pkgs/development/libraries/libsoup/default.nix
index 1489ab627742..030d800f4a5b 100644
--- a/pkgs/development/libraries/libsoup/default.nix
+++ b/pkgs/development/libraries/libsoup/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, glib, libxml2, pkgconfig
-, gnomeSupport ? true, libgnome_keyring, sqlite, glib_networking, gobjectIntrospection
+, gnomeSupport ? true, libgnome_keyring3, sqlite, glib_networking, gobjectIntrospection
 , valaSupport ? true, vala_0_32
 , libintlOrEmpty
 , intltool, python }:
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
     ++ stdenv.lib.optionals valaSupport [ vala_0_32 ];
   nativeBuildInputs = [ pkgconfig ];
   propagatedBuildInputs = [ glib libxml2 gobjectIntrospection ]
-    ++ stdenv.lib.optionals gnomeSupport [ libgnome_keyring ];
+    ++ stdenv.lib.optionals gnomeSupport [ libgnome_keyring3 ];
   passthru.propagatedUserEnvPackages = [ glib_networking.out ];
 
   # glib_networking is a runtime dependency, not a compile-time dependency
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index ab3654cb626b..577006f90149 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -1,7 +1,9 @@
-{ stdenv, lib, fetchurl, zlib, xz, python, findXMLCatalogs, libiconv, fetchpatch
+{ stdenv, lib, fetchurl, zlib, xz, python2, findXMLCatalogs, libiconv, fetchpatch
 , supportPython ? (! stdenv ? cross) }:
 
-stdenv.mkDerivation rec {
+let
+  python = python2;
+in stdenv.mkDerivation rec {
   name = "libxml2-${version}";
   version = "2.9.4";
 
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index 4e464907c6b4..dd9302db9524 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -2,7 +2,7 @@
 , pkgconfig, intltool, autoreconfHook, substituteAll
 , file, expat, libdrm, xorg, wayland, systemd
 , llvmPackages, libffi, libomxil-bellagio, libva
-, libelf, libvdpau, python
+, libelf, libvdpau, python2
 , grsecEnabled ? false
 , enableTextureFloats ? false # Texture floats are patented, see docs/patents.txt
 }:
@@ -113,7 +113,7 @@ stdenv.mkDerivation {
     libX11 libXext libxcb libXt libXfixes libxshmfence
     libffi wayland libvdpau libelf libXvMC
     libomxil-bellagio libva libpthreadstubs
-    (python.withPackages (ps: [ ps.Mako ]))
+    (python2.withPackages (ps: [ ps.Mako ]))
   ] ++ optional stdenv.isLinux systemd;
 
 
diff --git a/pkgs/development/libraries/mpfi/default.nix b/pkgs/development/libraries/mpfi/default.nix
new file mode 100644
index 000000000000..c88c8da63784
--- /dev/null
+++ b/pkgs/development/libraries/mpfi/default.nix
@@ -0,0 +1,17 @@
+{stdenv, fetchurl, mpfr}:
+stdenv.mkDerivation rec {
+  name = "mpfi-${version}";
+  version = "1.5.1";
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/file/30129/mpfi-${version}.tar.bz2";
+    sha256 = "0vk9jfcfiqda0zksg1ffy36pdznpng9b4nl7pfzpz9hps4v6bk1z";
+  };
+  buildInputs = [mpfr];
+  meta = {
+    inherit version;
+    description = ''A multiple precision interval arithmetic library based on MPFR'';
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/mpir/\ b/pkgs/development/libraries/mpir/\
new file mode 100644
index 000000000000..b7872ece6aed
--- /dev/null
+++ b/pkgs/development/libraries/mpir/\
@@ -0,0 +1,20 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+  name = "mpir-${version}";
+  version = "1";
+  inherit buildInputs;
+  src = fetchurl {
+    url = "http://mpir.org/mpir-${version}.tar.bz2";
+    sha256 = "0000000000000000000000000000000000000000000000000000000000000000";
+  };
+  meta = {
+    inherit version;
+    description = ''A highly optimised library for bignum arithmetic forked from GMP'';
+    license = stdenv.lib.licenses. ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "http://mpir.org/downloads.html";
+    homepage = "http://mpir.org/";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/development/libraries/mpir/default.nix b/pkgs/development/libraries/mpir/default.nix
new file mode 100644
index 000000000000..c3a254c6bdc1
--- /dev/null
+++ b/pkgs/development/libraries/mpir/default.nix
@@ -0,0 +1,20 @@
+{stdenv, fetchurl, m4}:
+stdenv.mkDerivation rec {
+  name = "mpir-${version}";
+  version = "2.7.2";
+  buildInputs = [m4];
+  src = fetchurl {
+    url = "http://mpir.org/mpir-${version}.tar.bz2";
+    sha256 = "1v25dx7cah2vxwzgq78hpzqkryrfxhwx3mcj3jjq3xxljlsw7m57";
+  };
+  meta = {
+    inherit version;
+    description = ''A highly optimised library for bignum arithmetic forked from GMP'';
+    license = stdenv.lib.licenses.lgpl3Plus;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "http://mpir.org/downloads.html";
+    homepage = "http://mpir.org/";
+    updateWalker = true;
+  };
+}
diff --git a/pkgs/development/libraries/openslp/default.nix b/pkgs/development/libraries/openslp/default.nix
index a77296b4895c..80a77e72275f 100644
--- a/pkgs/development/libraries/openslp/default.nix
+++ b/pkgs/development/libraries/openslp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, fetchpatch }:
 
 stdenv.mkDerivation {
   name = "openslp-2.0.0";
@@ -8,6 +8,19 @@ stdenv.mkDerivation {
     sha256 = "16splwmqp0400w56297fkipaq9vlbhv7hapap8z09gp5m2i3fhwj";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "openslp-2.0.0-null-pointer-deref.patch";
+      url = "https://svnweb.mageia.org/packages/cauldron/openslp/current/SOURCES/openslp-2.0.0-null-pointer-deref.patch?revision=1019712&view=co";
+      sha256 = "186f3rj3z2lf5h1lpbhqk0szj2a9far1p3mjqg6422f29yjfnz6a";
+    })
+    (fetchpatch {
+      name = "openslp-2.0.0-CVE-2016-7567.patch";
+      url = "https://svnweb.mageia.org/packages/cauldron/openslp/current/SOURCES/openslp-2.0.0-CVE-2016-7567.patch?revision=1057233&view=co";
+      sha256 = "1zrgql91vjjl2v7brlibc8jqndnjz9fclqbdn0b6fklkpwznprny";
+    })
+  ];
+
   meta = with stdenv.lib; {
     homepage = "http://openslp.org/";
     description = "An open-source implementation of the IETF Service Location Protocol";
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
index 138faf86506f..04d06b0fcd44 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
@@ -8,7 +8,7 @@
 , zlib, libjpeg, libpng, libtiff, sqlite, icu
 
 , coreutils, bison, flex, gdb, gperf, lndir
-, patchelf, perl, pkgconfig, python
+, patchelf, perl, pkgconfig, python2
 
 # optional dependencies
 , cups ? null
@@ -213,7 +213,7 @@ stdenv.mkDerivation {
     # FIXME: move to the main list on rebuild.
     ++ [gnome_vfs.out libgnomeui.out gtk2 GConf];
 
-  nativeBuildInputs = [ lndir patchelf perl pkgconfig python ];
+  nativeBuildInputs = [ lndir patchelf perl pkgconfig python2 ];
 
   # freetype-2.5.4 changed signedness of some struct fields
   NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
diff --git a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
index 328d8aee72bd..9b6a6c46176c 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/default.nix
@@ -1,8 +1,8 @@
-{ qtSubmodule, lib, copyPathsToStore, python, qtbase, qtsvg, qtxmlpatterns }:
+{ qtSubmodule, lib, copyPathsToStore, python2, qtbase, qtsvg, qtxmlpatterns }:
 
 qtSubmodule {
   name = "qtdeclarative";
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   qtInputs = [ qtbase qtsvg qtxmlpatterns ];
-  nativeBuildInputs = [ python ];
+  nativeBuildInputs = [ python2 ];
 }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix b/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
index 3a2d026842a3..35568c1eb2f3 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtwebkit/default.nix
@@ -1,7 +1,7 @@
 { qtSubmodule, stdenv, qtdeclarative, qtlocation, qtsensors
 , fontconfig, gdk_pixbuf, gtk2, libwebp, libxml2, libxslt
 , sqlite, systemd, glib, gst_all_1
-, bison2, flex, gdb, gperf, perl, pkgconfig, python, ruby
+, bison2, flex, gdb, gperf, perl, pkgconfig, python2, ruby
 , substituteAll
 , flashplayerFix ? false
 }:
@@ -13,7 +13,7 @@ qtSubmodule {
   qtInputs = [ qtdeclarative qtlocation qtsensors ];
   buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite glib gst_all_1.gstreamer gst_all_1.gst-plugins-base ];
   nativeBuildInputs = [
-    bison2 flex gdb gperf perl pkgconfig python ruby
+    bison2 flex gdb gperf perl pkgconfig python2 ruby
   ];
   patches =
     let dlopen-webkit-nsplugin = substituteAll {
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
index 25e94c44ad2c..bb245548d5b9 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/default.nix
@@ -8,7 +8,7 @@
 , zlib, libjpeg, libpng, libtiff, sqlite, icu
 
 , coreutils, bison, flex, gdb, gperf, lndir
-, patchelf, perl, pkgconfig, python
+, patchelf, perl, pkgconfig, python2
 
 # optional dependencies
 , cups ? null
@@ -186,7 +186,7 @@ stdenv.mkDerivation {
     ++ lib.optional (mysql != null) mysql.lib
     ++ lib.optional (postgresql != null) postgresql;
 
-  nativeBuildInputs = [ lndir patchelf perl pkgconfig python ];
+  nativeBuildInputs = [ lndir patchelf perl pkgconfig python2 ];
 
   # freetype-2.5.4 changed signedness of some struct fields
   NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
diff --git a/pkgs/development/libraries/qt-5/5.6/qtdeclarative/default.nix b/pkgs/development/libraries/qt-5/5.6/qtdeclarative/default.nix
index 328d8aee72bd..9b6a6c46176c 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtdeclarative/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qtdeclarative/default.nix
@@ -1,8 +1,8 @@
-{ qtSubmodule, lib, copyPathsToStore, python, qtbase, qtsvg, qtxmlpatterns }:
+{ qtSubmodule, lib, copyPathsToStore, python2, qtbase, qtsvg, qtxmlpatterns }:
 
 qtSubmodule {
   name = "qtdeclarative";
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   qtInputs = [ qtbase qtsvg qtxmlpatterns ];
-  nativeBuildInputs = [ python ];
+  nativeBuildInputs = [ python2 ];
 }
diff --git a/pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix b/pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix
index 683bb031e95e..915a6bcae8a8 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qtwebkit/default.nix
@@ -1,7 +1,7 @@
 { qtSubmodule, stdenv, qtdeclarative, qtlocation, qtsensors
 , fontconfig, gdk_pixbuf, gtk2, libwebp, libxml2, libxslt
 , sqlite, systemd, glib, gst_all_1
-, bison2, flex, gdb, gperf, perl, pkgconfig, python, ruby
+, bison2, flex, gdb, gperf, perl, pkgconfig, python2, ruby
 , substituteAll
 , flashplayerFix ? false
 }:
@@ -13,7 +13,7 @@ qtSubmodule {
   qtInputs = [ qtdeclarative qtlocation qtsensors ];
   buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite glib gst_all_1.gstreamer gst_all_1.gst-plugins-base ];
   nativeBuildInputs = [
-    bison2 flex gdb gperf perl pkgconfig python ruby
+    bison2 flex gdb gperf perl pkgconfig python2 ruby
   ];
   patches =
     let dlopen-webkit-nsplugin = substituteAll {
diff --git a/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
index 81d0e446f2a8..16cc09f9c038 100644
--- a/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.7/qtbase/default.nix
@@ -2,7 +2,7 @@
   stdenv, lib, copyPathsToStore,
   src, version,
 
-  coreutils, bison, flex, gdb, gperf, lndir, patchelf, perl, pkgconfig, python,
+  coreutils, bison, flex, gdb, gperf, lndir, patchelf, perl, pkgconfig, python2,
   ruby,
 
   dbus, fontconfig, freetype, glib, gtk3, harfbuzz, icu, libX11, libXcomposite,
@@ -189,7 +189,7 @@ stdenv.mkDerivation {
     ++ lib.optional (postgresql != null) postgresql;
 
   nativeBuildInputs =
-    [ bison flex gperf lndir patchelf perl pkgconfig python ];
+    [ bison flex gperf lndir patchelf perl pkgconfig python2 ];
 
   # freetype-2.5.4 changed signedness of some struct fields
   NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
diff --git a/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix
index 328d8aee72bd..9b6a6c46176c 100644
--- a/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix
+++ b/pkgs/development/libraries/qt-5/5.7/qtdeclarative/default.nix
@@ -1,8 +1,8 @@
-{ qtSubmodule, lib, copyPathsToStore, python, qtbase, qtsvg, qtxmlpatterns }:
+{ qtSubmodule, lib, copyPathsToStore, python2, qtbase, qtsvg, qtxmlpatterns }:
 
 qtSubmodule {
   name = "qtdeclarative";
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   qtInputs = [ qtbase qtsvg qtxmlpatterns ];
-  nativeBuildInputs = [ python ];
+  nativeBuildInputs = [ python2 ];
 }
diff --git a/pkgs/development/libraries/qt-5/5.7/qtwebkit/default.nix b/pkgs/development/libraries/qt-5/5.7/qtwebkit/default.nix
index 683bb031e95e..915a6bcae8a8 100644
--- a/pkgs/development/libraries/qt-5/5.7/qtwebkit/default.nix
+++ b/pkgs/development/libraries/qt-5/5.7/qtwebkit/default.nix
@@ -1,7 +1,7 @@
 { qtSubmodule, stdenv, qtdeclarative, qtlocation, qtsensors
 , fontconfig, gdk_pixbuf, gtk2, libwebp, libxml2, libxslt
 , sqlite, systemd, glib, gst_all_1
-, bison2, flex, gdb, gperf, perl, pkgconfig, python, ruby
+, bison2, flex, gdb, gperf, perl, pkgconfig, python2, ruby
 , substituteAll
 , flashplayerFix ? false
 }:
@@ -13,7 +13,7 @@ qtSubmodule {
   qtInputs = [ qtdeclarative qtlocation qtsensors ];
   buildInputs = [ fontconfig libwebp libxml2 libxslt sqlite glib gst_all_1.gstreamer gst_all_1.gst-plugins-base ];
   nativeBuildInputs = [
-    bison2 flex gdb gperf perl pkgconfig python ruby
+    bison2 flex gdb gperf perl pkgconfig python2 ruby
   ];
   patches =
     let dlopen-webkit-nsplugin = substituteAll {
diff --git a/pkgs/development/libraries/science/math/liblapack/3.5.0.nix b/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
index 1d05e6bb2a36..3c91bf373293 100644
--- a/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
+++ b/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
@@ -3,7 +3,7 @@
   fetchurl,
   gfortran,
   cmake,
-  python,
+  python2,
   atlas ? null,
   shared ? false
 }:
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ atlasMaybeShared ];
   buildInputs = [ gfortran cmake ];
-  nativeBuildInputs = [ python ];
+  nativeBuildInputs = [ python2 ];
 
   cmakeFlags = [
     "-DUSE_OPTIMIZED_BLAS=ON"
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
   doCheck = ! shared;
 
   checkPhase = "
-    sed -i 's,^#!.*,#!${python}/bin/python,' lapack_testing.py
+    sed -i 's,^#!.*,#!${python2.interpreter},' lapack_testing.py
     ctest
   ";
 
diff --git a/pkgs/development/libraries/science/math/liblapack/default.nix b/pkgs/development/libraries/science/math/liblapack/default.nix
index 80b66c5ab167..eea59164ffba 100644
--- a/pkgs/development/libraries/science/math/liblapack/default.nix
+++ b/pkgs/development/libraries/science/math/liblapack/default.nix
@@ -3,7 +3,7 @@
   fetchurl,
   gfortran,
   cmake,
-  python,
+  python2,
   atlas ? null,
   shared ? false
 }:
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ atlasMaybeShared ];
   buildInputs = [ gfortran cmake ];
-  nativeBuildInputs = [ python ];
+  nativeBuildInputs = [ python2 ];
 
   cmakeFlags = [
     "-DUSE_OPTIMIZED_BLAS=ON"
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
   doCheck = ! shared;
 
   checkPhase = "
-    sed -i 's,^#!.*,#!${python}/bin/python,' lapack_testing.py
+    sed -i 's,^#!.*,#!${python2.interpreter},' lapack_testing.py
     ctest
   ";
 
diff --git a/pkgs/development/libraries/tachyon/default.nix b/pkgs/development/libraries/tachyon/default.nix
new file mode 100644
index 000000000000..838c30777fb1
--- /dev/null
+++ b/pkgs/development/libraries/tachyon/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl}:
+stdenv.mkDerivation rec {
+  name = "tachyon-${version}";
+  version = "0.98.9";
+  src = fetchurl {
+    url = "http://jedi.ks.uiuc.edu/~johns/tachyon/files/${version}/${name}.tar.gz";
+    sha256 = "1ms0xr4ibrzz291ibm265lyjrdjrmhfrx0a70hwykhsdxn6jk8y6";
+  };
+  buildInputs = [];
+  preBuild = "cd unix";
+  arch = if stdenv.system == "x86_64-linux" then "linux-64-thr" else
+         if stdenv.system == "i686-linux"   then "linux-thr"    else
+         throw "Don't know what arch to select for tachyon build";
+  makeFlags = "${arch}";
+  installPhase = ''
+    cd ../compile/${arch}
+    mkdir -p "$out"/{bin,lib,include,share/doc/tachyon,share/tachyon}
+    cp tachyon "$out"/bin
+    cp libtachyon.* "$out/lib"
+    cd ../..
+    cp Changes Copyright README "$out/share/doc/tachyon"
+    cp -r scenes "$out/share/tachyon/scenes"
+  '';
+  meta = {
+    inherit version;
+    description = ''A Parallel / Multiprocessor Ray Tracing System'';
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = "http://jedi.ks.uiuc.edu/~johns/tachyon/";
+  };
+}
diff --git a/pkgs/development/libraries/telepathy/glib/default.nix b/pkgs/development/libraries/telepathy/glib/default.nix
index e9c9260d8d8a..69f6f6d89712 100644
--- a/pkgs/development/libraries/telepathy/glib/default.nix
+++ b/pkgs/development/libraries/telepathy/glib/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, dbus_glib, glib, python, pkgconfig, libxslt
-, gobjectIntrospection, valaSupport ? true, vala_0_23 }:
+, gobjectIntrospection, valaSupport ? true, vala_0_23, glibcLocales }:
 
 stdenv.mkDerivation rec {
   name = "telepathy-glib-0.24.1";
@@ -10,10 +10,10 @@ stdenv.mkDerivation rec {
   };
 
   configureFlags = stdenv.lib.optional valaSupport "--enable-vala-bindings";
-
+  LC_ALL = "en_US.UTF-8";
   propagatedBuildInputs = [dbus_glib glib python gobjectIntrospection];
 
-  buildInputs = [pkgconfig libxslt] ++ stdenv.lib.optional valaSupport vala_0_23;
+  buildInputs = [pkgconfig libxslt glibcLocales ] ++ stdenv.lib.optional valaSupport vala_0_23;
 
   preConfigure = ''
     substituteInPlace telepathy-glib/telepathy-glib.pc.in --replace Requires.private Requires
diff --git a/pkgs/development/libraries/telepathy/qt/default.nix b/pkgs/development/libraries/telepathy/qt/default.nix
index 6c2713c1ebe6..93d69d5a8d99 100644
--- a/pkgs/development/libraries/telepathy/qt/default.nix
+++ b/pkgs/development/libraries/telepathy/qt/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, cmake, qtbase, pkgconfig, pythonPackages, dbus_glib, dbus_daemon
+{ stdenv, fetchurl, cmake, qtbase, pkgconfig, python2Packages, dbus_glib, dbus_daemon
 , telepathy_farstream, telepathy_glib, fetchpatch }:
 
 let
-  inherit (pythonPackages) python dbus-python;
+  inherit (python2Packages) python dbus-python;
 in stdenv.mkDerivation rec {
   name = "telepathy-qt-0.9.6.1";
 
diff --git a/pkgs/development/libraries/vaapi-intel/default.nix b/pkgs/development/libraries/vaapi-intel/default.nix
index 922aed61ed6d..e3a7124720b0 100644
--- a/pkgs/development/libraries/vaapi-intel/default.nix
+++ b/pkgs/development/libraries/vaapi-intel/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gnum4, pkgconfig, python
+{ stdenv, fetchurl, gnum4, pkgconfig, python2
 , intel-gpu-tools, libdrm, libva, libX11, mesa_noglu, wayland
 }:
 
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     "--enable-wayland"
   ];
 
-  nativeBuildInputs = [ gnum4 pkgconfig python ];
+  nativeBuildInputs = [ gnum4 pkgconfig python2 ];
 
   buildInputs = [ intel-gpu-tools libdrm libva libX11 mesa_noglu wayland ];
 
diff --git a/pkgs/development/libraries/vigra/default.nix b/pkgs/development/libraries/vigra/default.nix
index 1dc35db43f95..c122928eddde 100644
--- a/pkgs/development/libraries/vigra/default.nix
+++ b/pkgs/development/libraries/vigra/default.nix
@@ -1,7 +1,10 @@
 { stdenv, fetchurl, boost, cmake, doxygen, fftw, fftwSinglePrec, hdf5, ilmbase
-, libjpeg, libpng, libtiff, numpy, openexr, python }:
+, libjpeg, libpng, libtiff, openexr, python2Packages }:
 
-stdenv.mkDerivation rec {
+let
+  inherit (python2Packages) python numpy;
+  # Might want to use `python2.withPackages(ps: [ps.numpy]);` here...
+in stdenv.mkDerivation rec {
   name = "vigra-${version}";
   version = "1.10.0";
 
diff --git a/pkgs/development/libraries/webkitgtk/2.12.nix b/pkgs/development/libraries/webkitgtk/2.12.nix
index 38d8b7ac75a7..04ab4d967737 100644
--- a/pkgs/development/libraries/webkitgtk/2.12.nix
+++ b/pkgs/development/libraries/webkitgtk/2.12.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, python, ruby, bison, gperf, cmake
+{ stdenv, fetchurl, perl, python2, ruby, bison, gperf, cmake
 , pkgconfig, gettext, gobjectIntrospection, libnotify
 , gtk2, gtk3, wayland, libwebp, enchant, xlibs, libxkbcommon, epoxy, at_spi2_core
 , libxml2, libsoup, libsecret, libxslt, harfbuzz, libpthreadstubs
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_COMPILE = "-I${gst-plugins-base.dev}/include/gstreamer-1.0";
 
   nativeBuildInputs = [
-    cmake perl python ruby bison gperf sqlite
+    cmake perl python2 ruby bison gperf sqlite
     pkgconfig gettext gobjectIntrospection
   ];
 
diff --git a/pkgs/development/libraries/zziplib/default.nix b/pkgs/development/libraries/zziplib/default.nix
index 1e474e722ffa..20070d8f717e 100644
--- a/pkgs/development/libraries/zziplib/default.nix
+++ b/pkgs/development/libraries/zziplib/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, perl, python, zip, xmlto, zlib }:
+{ fetchurl, stdenv, perl, python2, zip, xmlto, zlib }:
 
 stdenv.mkDerivation rec {
   name = "zziplib-0.13.58";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sed -i -e s,--export-dynamic,, configure
   '';
 
-  buildInputs = [ perl python zip xmlto zlib ];
+  buildInputs = [ perl python2 zip xmlto zlib ];
 
   doCheck = true;
 
@@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
     homepage = http://zziplib.sourceforge.net/;
 
     maintainers = [ ];
-    platforms = python.meta.platforms;
+    platforms = python2.meta.platforms;
   };
 }
diff --git a/pkgs/development/python-modules/cython_test.patch b/pkgs/development/python-modules/cython_test.patch
new file mode 100644
index 000000000000..5b1cece3aa50
--- /dev/null
+++ b/pkgs/development/python-modules/cython_test.patch
@@ -0,0 +1,15 @@
+diff --git a/tests/run/numpy_math.pyx b/tests/run/numpy_math.pyx
+index eafd23a..4a15522 100644
+--- a/tests/run/numpy_math.pyx
++++ b/tests/run/numpy_math.pyx
+@@ -37,8 +37,8 @@ def test_fp_classif():
+     assert not npmath.isnan(d_zero)
+     assert not npmath.isnan(f_zero)
+ 
+-    assert npmath.isinf(npmath.INFINITY) == 1
+-    assert npmath.isinf(-npmath.INFINITY) == -1
++    assert npmath.isinf(npmath.INFINITY) != 0
++    assert npmath.isinf(-npmath.INFINITY) != 0
+     assert npmath.isnan(npmath.NAN)
+ 
+     assert npmath.signbit(npmath.copysign(1., -1.))
diff --git a/pkgs/development/python-modules/matplotlib/default.nix b/pkgs/development/python-modules/matplotlib/default.nix
index 5ba813deba60..a9dced9b6c4a 100644
--- a/pkgs/development/python-modules/matplotlib/default.nix
+++ b/pkgs/development/python-modules/matplotlib/default.nix
@@ -40,7 +40,7 @@ buildPythonPackage rec {
     ]
     ++ stdenv.lib.optional enableGtk2 pygtk
     ++ stdenv.lib.optionals enableGtk3 [ cairo pycairo gtk3 gobjectIntrospection pygobject3 ]
-    ++ stdenv.lib.optionals enableTk [ tcl tk tkinter libX11 ];
+    ++ stdenv.lib.optionals enableTk [ python.tkinter tcl tk tkinter libX11 ];
 
   patches =
     [ ./basedirlist.patch ] ++
diff --git a/pkgs/development/python-modules/numpy-distutils-C++.patch b/pkgs/development/python-modules/numpy-distutils-C++.patch
new file mode 100644
index 000000000000..4b2d5c640e64
--- /dev/null
+++ b/pkgs/development/python-modules/numpy-distutils-C++.patch
@@ -0,0 +1,23 @@
+diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
+index a92ccd3..9630e91 100644
+--- a/numpy/distutils/unixccompiler.py
++++ b/numpy/distutils/unixccompiler.py
+@@ -43,10 +43,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
+         if opt not in llink_s:
+             self.linker_so = llink_s.split() + opt.split()
+ 
+-    display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
+     try:
+-        self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+-                   extra_postargs, display = display)
++        if self.detect_language(src) == 'c++':
++            display = '%s: %s' % (os.path.basename(self.compiler_so_cxx[0]), src)
++            self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++                       extra_postargs, display = display)
++        else:
++            display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
++            self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++                       extra_postargs, display = display)
+     except DistutilsExecError:
+         msg = str(get_exception())
+         raise CompileError(msg)
diff --git a/pkgs/development/python-modules/numpy.nix b/pkgs/development/python-modules/numpy.nix
index 141c8b14fa6d..14504d925438 100644
--- a/pkgs/development/python-modules/numpy.nix
+++ b/pkgs/development/python-modules/numpy.nix
@@ -1,4 +1,4 @@
-{lib, python, buildPythonPackage, isPyPy, gfortran, nose, blas}:
+{lib, python, buildPythonPackage, isPy27, isPyPy, gfortran, nose, blas}:
 
 args:
 
@@ -12,6 +12,12 @@ in buildPythonPackage (args // rec {
   buildInputs = args.buildInputs or [ gfortran nose ];
   propagatedBuildInputs = args.propagatedBuildInputs or [ passthru.blas ];
 
+  patches = lib.optionals (python.hasDistutilsCxxPatch or false) [
+    # See cpython 2.7 patches.
+    # numpy.distutils is used by cython during it's check phase
+    ./numpy-distutils-C++.patch
+  ];
+
   preConfigure = ''
     sed -i 's/-faltivec//' numpy/distutils/system_info.py
   '';
diff --git a/pkgs/development/python-modules/pycairo/default.nix b/pkgs/development/python-modules/pycairo/default.nix
index fb95a9fa4683..23e06ff4cb4e 100644
--- a/pkgs/development/python-modules/pycairo/default.nix
+++ b/pkgs/development/python-modules/pycairo/default.nix
@@ -1,9 +1,9 @@
-{ lib, fetchurl, fetchpatch, python, mkPythonDerivation, pkgconfig, cairo, xlibsWrapper, isPyPy, isPy35 }:
+{ lib, fetchurl, fetchpatch, python, mkPythonDerivation, pkgconfig, cairo, xlibsWrapper, isPyPy, isPy35, isPy3k }:
 
 if (isPyPy) then throw "pycairo not supported for interpreter ${python.executable}" else mkPythonDerivation rec {
   version = "1.10.0";
   name = "${python.libPrefix}-pycairo-${version}";
-  src = if python.is_py3k or false
+  src = if isPy3k
     then fetchurl {
       url = "http://cairographics.org/releases/pycairo-${version}.tar.bz2";
       sha256 = "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s";
diff --git a/pkgs/development/python-modules/pygobject/3.nix b/pkgs/development/python-modules/pygobject/3.nix
index 797d89fd4822..dfddd7dddbdb 100644
--- a/pkgs/development/python-modules/pygobject/3.nix
+++ b/pkgs/development/python-modules/pygobject/3.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, mkPythonDerivation, python, pkgconfig, glib, gobjectIntrospection, pycairo, cairo, which, ncurses}:
 
 mkPythonDerivation rec {
-  major = "3.20";
+  major = "3.22";
   minor = "0";
   name = "pygobject-${major}.${minor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/pygobject/${major}/${name}.tar.xz";
-    sha256 = "0ikzh3l7g1gjh8jj8vg6mdvrb25svp63gxcam4m0i404yh0lgari";
+    sha256 = "08b29cfb08efc80f7a8630a2734dec65a99c1b59f1e5771c671d2e4ed8a5cbe7";
   };
 
   buildInputs = [ pkgconfig glib gobjectIntrospection ]
diff --git a/pkgs/development/python-modules/wxPython/3.0.nix b/pkgs/development/python-modules/wxPython/3.0.nix
index 5f224428fce4..8dc99955af31 100644
--- a/pkgs/development/python-modules/wxPython/3.0.nix
+++ b/pkgs/development/python-modules/wxPython/3.0.nix
@@ -1,16 +1,18 @@
 { fetchurl
 , lib
-, pythonPackages
 , openglSupport ? true
 , libX11
 , wxGTK
 , pkgconfig
+, buildPythonPackage
+, pyopengl
+, isPy3k
+, isPyPy
+, python
 }:
 
 assert wxGTK.unicode;
 
-with pythonPackages;
-
 buildPythonPackage rec {
   name = "wxPython-${version}";
   version = "3.0.2.0";
diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix
index a9b16f0db2c5..742c9e497575 100644
--- a/pkgs/development/ruby-modules/gem-config/default.nix
+++ b/pkgs/development/ruby-modules/gem-config/default.nix
@@ -141,6 +141,13 @@ in
     buildInputs = [ imagemagick pkgconfig which ];
   };
 
+  ruby-terminfo = attrs: {
+    buildInputs = [ ncurses ];
+    buildFlags = [
+      "--with-cflags=-I${ncurses.dev}/include"
+      "--with-ldflags=-L${ncurses.out}/lib"
+    ];
+  };
   rugged = attrs: {
     buildInputs = [ cmake pkgconfig openssl libssh2 zlib ];
   };
diff --git a/pkgs/development/tools/analysis/valgrind/default.nix b/pkgs/development/tools/analysis/valgrind/default.nix
index 0e0e44183f6b..2ecb5eaa1329 100644
--- a/pkgs/development/tools/analysis/valgrind/default.nix
+++ b/pkgs/development/tools/analysis/valgrind/default.nix
@@ -1,30 +1,20 @@
 { stdenv, fetchurl, fetchpatch, perl, gdb }:
 
 stdenv.mkDerivation rec {
-  name = "valgrind-3.11.0";
+  name = "valgrind-3.12.0";
 
   src = fetchurl {
     url = "http://valgrind.org/downloads/${name}.tar.bz2";
-    sha256 = "0hiv871b9bk689mv42mkhp76za78l5773glszfkdbpf1m1qn4fbc";
+    sha256 = "18bnrw9b1d55wi1wnl68n25achsp9w48n51n1xw4fwjjnaal7jk7";
   };
 
-  patches =
-    [ (fetchpatch {
-        name = "glibc-2.21.patch";
-        url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk"
-          + "/valgrind-3.9.0-glibc-2.21.patch?h=packages/valgrind&id=41e87313b69";
-        sha256 = "14sgsvjjalbcqpcayyv5cndc9hfm5bigkp684b6cr6virksmlk19";
-      })
-    ];
-
-  outputs = [ "out" "doc" ];
+  outputs = [ "out" "dev" "man" "doc" ];
 
   hardeningDisable = [ "stackprotector" ];
 
   # Perl is needed for `cg_annotate'.
   # GDB is needed to provide a sane default for `--db-command'.
-  nativeBuildInputs = [ perl ];
-  buildInputs = stdenv.lib.optional (!stdenv.isDarwin) gdb;
+  buildInputs = [ perl ] ++ stdenv.lib.optional (!stdenv.isDarwin) gdb;
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/tools/build-managers/scons/default.nix b/pkgs/development/tools/build-managers/scons/default.nix
index 19dbdb76a360..550a59a887e4 100644
--- a/pkgs/development/tools/build-managers/scons/default.nix
+++ b/pkgs/development/tools/build-managers/scons/default.nix
@@ -1,29 +1,17 @@
-{stdenv, fetchurl, python, makeWrapper}:
+{stdenv, fetchurl, python2Packages}:
 
 let
   name = "scons";
   version = "2.5.0";
-in
-
-stdenv.mkDerivation {
+in python2Packages.buildPythonApplication {
   name = "${name}-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/scons/${name}-${version}.tar.gz";
     sha256 = "1sdcj8iapfzmlq7098yas40qwl6khsiwydbxv33sw81wy93nnagb";
   };
-
-  buildInputs = [python makeWrapper];
-
-  preConfigure = ''
-    for i in "script/"*; do
-     substituteInPlace $i --replace "/usr/bin/env python" "${python}/bin/python"
-    done
-  '';
-  buildPhase = "python setup.py install --prefix=$out --install-data=$out/share --install-lib=$(toPythonPath $out) --symlink-scons -O1";
-  installPhase = "for n in $out/bin/*-${version}; do wrapProgram $n --suffix PYTHONPATH ':' \"$(toPythonPath $out)\"; done";
-
-  pythonPath = [];
+  # No tests
+  doCheck = false;
 
   meta = {
     homepage = "http://scons.org/";
diff --git a/pkgs/development/tools/cdecl/default.nix b/pkgs/development/tools/cdecl/default.nix
index 9e9fcfcc19d5..c5bccf6ddae6 100644
--- a/pkgs/development/tools/cdecl/default.nix
+++ b/pkgs/development/tools/cdecl/default.nix
@@ -3,8 +3,8 @@
 stdenv.mkDerivation {
   name = "cdecl-2.5";
   src = fetchurl {
-    url = "http://cdecl.org/files/cdecl-blocks-2.5.tar.gz";
-    md5 = "c1927e146975b1c7524cbaf07a7c10f8";
+    url = "http://www.cdecl.org/files/cdecl-blocks-2.5.tar.gz";
+    sha256 = "1b7k0ra30hh8mg8fqv0f0yzkaac6lfg6n376drgbpxg4wwml1rly";
   };
 
   patches = [ ./cdecl-2.5-lex.patch ];
diff --git a/pkgs/development/tools/devpi-client/default.nix b/pkgs/development/tools/devpi-client/default.nix
index 1e848e5d611c..f724b65dd823 100644
--- a/pkgs/development/tools/devpi-client/default.nix
+++ b/pkgs/development/tools/devpi-client/default.nix
@@ -1,17 +1,20 @@
-{ stdenv, fetchurl, pythonPackages, python} :
+{ stdenv, fetchurl, pythonPackages, glibcLocales} :
 
 pythonPackages.buildPythonApplication rec {
   name = "devpi-client-${version}";
-  version = "2.3.2";
+  version = "2.7.0";
 
   src = fetchurl {
-    url = "mirror://pypi/d/devpi-client/devpi-client-${version}.tar.gz";
-    md5= "bfc8cd768f983fd0585c347bca00c8bb";
+    url = "mirror://pypi/d/devpi-client/${name}.tar.gz";
+    sha256 = "0z7vaf0a66n82mz0vx122pbynjvkhp2mjf9lskgyv09y3bxzzpj3";
   };
 
-  buildInputs = [ pythonPackages.tox pythonPackages.check-manifest pythonPackages.pkginfo ];
+  doCheck = false;
 
-  propagatedBuildInputs = [ pythonPackages.py pythonPackages.devpi-common ];
+  LC_ALL = "en_US.UTF-8";
+  buildInputs = with pythonPackages; [ glibcLocales tox check-manifest pkginfo ];
+
+  propagatedBuildInputs = with pythonPackages; [ py devpi-common ];
 
   meta = {
     homepage = http://doc.devpi.net;
diff --git a/pkgs/development/tools/documentation/gnome-doc-utils/default.nix b/pkgs/development/tools/documentation/gnome-doc-utils/default.nix
index b653c705478d..18933426db0a 100644
--- a/pkgs/development/tools/documentation/gnome-doc-utils/default.nix
+++ b/pkgs/development/tools/documentation/gnome-doc-utils/default.nix
@@ -1,7 +1,7 @@
-{stdenv, fetchurl, python, pkgconfig, libxml2Python, libxslt, intltool
-, makeWrapper, pythonPackages }:
+{stdenv, fetchurl, pkgconfig, libxml2Python, libxslt, intltool
+, makeWrapper, python2Packages }:
 
-stdenv.mkDerivation {
+python2Packages.mkPythonDerivation {
   name = "gnome-doc-utils-0.20.10";
 
   src = fetchurl {
@@ -10,9 +10,6 @@ stdenv.mkDerivation {
   };
 
   configureFlags = "--disable-scrollkeeper";
-  buildInputs = [ python libxml2Python libxslt ];
-  pythonPath = [ libxml2Python ];
-  postInstall = "wrapPythonPrograms";
-
-  nativeBuildInputs = [ pkgconfig intltool pythonPackages.wrapPython ];
+  buildInputs = [ libxslt pkgconfig intltool ];
+  propagatedBuildInputs = [ libxml2Python ];
 }
diff --git a/pkgs/development/tools/misc/itstool/default.nix b/pkgs/development/tools/misc/itstool/default.nix
index fa8002d4f6c7..8c2686d9a229 100644
--- a/pkgs/development/tools/misc/itstool/default.nix
+++ b/pkgs/development/tools/misc/itstool/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, python, libxml2Python }:
+{ stdenv, fetchurl, python2, libxml2Python }:
+# We need the same Python as is used to build libxml2Python
 
 stdenv.mkDerivation rec {
   name = "itstool-2.0.2";
@@ -8,12 +9,12 @@ stdenv.mkDerivation rec {
     sha256 = "bf909fb59b11a646681a8534d5700fec99be83bb2c57badf8c1844512227033a";
   };
 
-  buildInputs = [ python libxml2Python ];
+  buildInputs = [ python2 libxml2Python ];
 
   patchPhase =
     ''
       sed -e '/import libxml2/i import sys\
-      sys.path.append("${libxml2Python}/lib/${python.libPrefix}/site-packages")' \
+      sys.path.append("${libxml2Python}/lib/${python2.libPrefix}/site-packages")' \
       -i itstool.in
     '';
 
diff --git a/pkgs/development/tools/misc/saleae-logic/default.nix b/pkgs/development/tools/misc/saleae-logic/default.nix
index 50e35928bba4..86be86cb6d63 100644
--- a/pkgs/development/tools/misc/saleae-logic/default.nix
+++ b/pkgs/development/tools/misc/saleae-logic/default.nix
@@ -25,7 +25,7 @@ assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
 
 stdenv.mkDerivation rec {
   pname = "saleae-logic";
-  version = "1.2.9";
+  version = "1.2.10";
   name = "${pname}-${version}";
 
   src =
@@ -33,13 +33,13 @@ stdenv.mkDerivation rec {
       fetchurl {
         name = "saleae-logic-${version}-32bit.zip";
         url = "http://downloads.saleae.com/logic/${version}/Logic%20${version}%20(32-bit).zip";
-        sha256 = "0000004xgv8v8l12shimhhn54nn0dldbxz1gpbx92ysd8q8x1q79";
+        sha256 = "1dyrj07cgj2fvwi1sk97vady9ri8f8n7mxy9zyzmw9isngs7bmll";
       }
     else if stdenv.system == "x86_64-linux" then
       fetchurl {
         name = "saleae-logic-${version}-64bit.zip";
         url = "http://downloads.saleae.com/logic/${version}/Logic%20${version}%20(64-bit).zip";
-        sha256 = "1d4hmp756ysfk5i1ys4mlkd1czbdw0zqznkzx08pyqk93zc7b16s";
+        sha256 = "1skx2pfnic7pyss7c69qb7kg2xvflpxf112xkf9awk516dw1w4h7";
       }
     else
       abort "Saleae Logic software requires i686-linux or x86_64-linux";
diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix
index 6cf73fd22b64..7c92df30311f 100644
--- a/pkgs/development/web/nodejs/nodejs.nix
+++ b/pkgs/development/web/nodejs/nodejs.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, python, zlib, libuv, v8, utillinux, http-parser
+{ stdenv, fetchurl, openssl, python2, zlib, libuv, v8, utillinux, http-parser
 , pkgconfig, runCommand, which, libtool
 , version
 , sha256 ? null
@@ -48,7 +48,7 @@ in stdenv.mkDerivation {
   patches = patches ++ stdenv.lib.optionals stdenv.isDarwin [ ./no-xcode.patch ];
 
   buildInputs = extraBuildInputs
-    ++ [ python which zlib libuv openssl ]
+    ++ [ python2 which zlib libuv openssl ]
     ++ optionals stdenv.isLinux [ utillinux http-parser ]
     ++ optionals stdenv.isDarwin [ pkgconfig libtool ];
   setupHook = ./setup-hook.sh;
diff --git a/pkgs/development/web/nodejs/v0_10.nix b/pkgs/development/web/nodejs/v0_10.nix
index 9845aa3bf8c8..cdb73e19232a 100644
--- a/pkgs/development/web/nodejs/v0_10.nix
+++ b/pkgs/development/web/nodejs/v0_10.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, openssl, python, zlib, v8, utillinux, http-parser, c-ares
+{ stdenv, lib, fetchurl, openssl, python2, zlib, v8, utillinux, http-parser, c-ares
 , pkgconfig, runCommand, which, libtool
 
 # apple frameworks
@@ -50,7 +50,7 @@ in stdenv.mkDerivation {
     (cd tools/gyp; patch -Np1 -i ${../../python-modules/gyp/no-darwin-cflags.patch})
   '';
 
-  buildInputs = [ python which ]
+  buildInputs = [ python2 which ]
     ++ (optional stdenv.isLinux utillinux)
     ++ optionals stdenv.isDarwin [ pkgconfig openssl libtool CoreServices ApplicationServices Foundation ];
   propagatedBuildInputs = optionals stdenv.isDarwin [ Carbon ];
diff --git a/pkgs/development/web/nodejs/v4.nix b/pkgs/development/web/nodejs/v4.nix
index 04605c4dea3f..f0a505a683a8 100644
--- a/pkgs/development/web/nodejs/v4.nix
+++ b/pkgs/development/web/nodejs/v4.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, python, zlib, libuv, v8, utillinux, http-parser
+{ stdenv, fetchurl, openssl, python2, zlib, libuv, v8, utillinux, http-parser
 , pkgconfig, runCommand, which, libtool
 , callPackage
 }@args:
diff --git a/pkgs/development/web/nodejs/v5.nix b/pkgs/development/web/nodejs/v5.nix
new file mode 100644
index 000000000000..7cd406abd2cd
--- /dev/null
+++ b/pkgs/development/web/nodejs/v5.nix
@@ -0,0 +1,12 @@
+{ stdenv, fetchurl, openssl, python2, zlib, libuv, v8, utillinux, http-parser
+, pkgconfig, runCommand, which, libtool
+, callPackage
+}@args:
+
+import ./nodejs.nix (args // rec {
+  version = "5.12.0";
+  src = fetchurl {
+    url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.xz";
+    sha256 = "4f926373f11f2a25156eee1804ec012eb912c42e5d34fc2909889da22efdadfe";
+  };
+})
diff --git a/pkgs/development/web/nodejs/v6.nix b/pkgs/development/web/nodejs/v6.nix
index ac54f0f8d492..a2213546ec4b 100644
--- a/pkgs/development/web/nodejs/v6.nix
+++ b/pkgs/development/web/nodejs/v6.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, python, zlib, libuv, v8, utillinux, http-parser
+{ stdenv, fetchurl, openssl, python2, zlib, libuv, v8, utillinux, http-parser
 , pkgconfig, runCommand, which, libtool, fetchpatch
 , callPackage
 , darwin ? null
diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix
index cb20bb516c9b..17d80f2e298a 100644
--- a/pkgs/games/anki/default.nix
+++ b/pkgs/games/anki/default.nix
@@ -1,13 +1,15 @@
 { stdenv, lib, fetchurl, substituteAll, lame, mplayer
-, libpulseaudio, python, pyqt4, qt4, wrapPython
-, pysqlite, sqlalchemy, pyaudio, beautifulsoup, httplib2, matplotlib
+, libpulseaudio
 # This little flag adds a huge number of dependencies, but we assume that
 # everyone wants Anki to draw plots with statistics by default.
 , plotsSupport ? true
+, python2Packages
 }:
 
 let
     version = "2.0.36";
+    inherit (python2Packages) python wrapPython sqlalchemy pyaudio beautifulsoup httplib2 matplotlib pyqt4;
+    qt4 = pyqt4.qt;
 in
 stdenv.mkDerivation rec {
     name = "anki-${version}";
@@ -19,7 +21,7 @@ stdenv.mkDerivation rec {
       sha256 = "070p0jmx6cy7kp9bfcgpgkzpyqkcj81wy8gmacns03n5rlq8487v";
     };
 
-    pythonPath = [ pyqt4 pysqlite sqlalchemy pyaudio beautifulsoup httplib2 ]
+    pythonPath = [ pyqt4 sqlalchemy pyaudio beautifulsoup httplib2 ]
               ++ lib.optional plotsSupport matplotlib;
 
     buildInputs = [ python wrapPython lame mplayer libpulseaudio ];
diff --git a/pkgs/games/mnemosyne/default.nix b/pkgs/games/mnemosyne/default.nix
index 0d419c08b006..c1bde5fcbc36 100644
--- a/pkgs/games/mnemosyne/default.nix
+++ b/pkgs/games/mnemosyne/default.nix
@@ -14,7 +14,6 @@ in pythonPackages.buildPythonApplication rec {
     pyqt4
     matplotlib
     cherrypy
-    sqlite3
     webob
   ];
   preConfigure = ''
diff --git a/pkgs/games/privateer/default.nix b/pkgs/games/privateer/default.nix
index ca1721e8ed59..e3116ae6e9da 100644
--- a/pkgs/games/privateer/default.nix
+++ b/pkgs/games/privateer/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchsvn, boost, cmake, ffmpeg, freeglut, glib,
   gtk2, libjpeg, libpng, libpthreadstubs, libvorbis, libXau, libXdmcp,
-  libXmu, mesa, openal, pixman, pkgconfig, python27Full, SDL }:
+  libXmu, mesa, openal, pixman, pkgconfig, python27, SDL }:
 
 stdenv.mkDerivation {
   name = "privateer-1.03";
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   buildInputs =
     [ boost cmake ffmpeg freeglut glib gtk2 libjpeg libpng
       libpthreadstubs libvorbis libXau libXdmcp libXmu mesa openal
-      pixman pkgconfig python27Full SDL ];
+      pixman pkgconfig python27 SDL ];
 
   patches = [ ./0001-fix-VSFile-constructor.patch ];
 
diff --git a/pkgs/misc/jackaudio/default.nix b/pkgs/misc/jackaudio/default.nix
index 06389c01ce0c..a4e4e408fec5 100644
--- a/pkgs/misc/jackaudio/default.nix
+++ b/pkgs/misc/jackaudio/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, pythonPackages, makeWrapper
+{ stdenv, fetchFromGitHub, pkgconfig, python2Packages, makeWrapper
 , bash, libsamplerate, libsndfile, readline, gcc
 
 # Optional Dependencies
@@ -11,7 +11,7 @@
 
 with stdenv.lib;
 let
-  inherit (pythonPackages) python dbus-python;
+  inherit (python2Packages) python dbus-python;
   shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
 
   libOnly = prefix == "lib";
diff --git a/pkgs/misc/jackaudio/git.nix b/pkgs/misc/jackaudio/git.nix
index 7deeaadbb10c..ac50b4c3d394 100644
--- a/pkgs/misc/jackaudio/git.nix
+++ b/pkgs/misc/jackaudio/git.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, pythonPackages, makeWrapper
+{ stdenv, fetchFromGitHub, pkgconfig, python2Packages, makeWrapper
 , bash, libsamplerate, libsndfile, readline
 
 # Optional Dependencies
@@ -11,7 +11,7 @@
 
 with stdenv.lib;
 let
-  inherit (pythonPackages) python dbus-python;
+  inherit (python2Packages) python dbus-python;
   shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
 
   libOnly = prefix == "lib";
diff --git a/pkgs/misc/lilypond/default.nix b/pkgs/misc/lilypond/default.nix
index 731dc263a022..15481d74598f 100644
--- a/pkgs/misc/lilypond/default.nix
+++ b/pkgs/misc/lilypond/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, ghostscript, texinfo, imagemagick, texi2html, guile
-, python, gettext, flex, perl, bison, pkgconfig, dblatex
+, python2, gettext, flex, perl, bison, pkgconfig, dblatex
 , fontconfig, freetype, pango, fontforge, help2man, zip, netpbm, groff
 , fetchsvn, makeWrapper, t1utils
 , texlive, tex ? texlive.combine {
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec{
 
   buildInputs =
     [ ghostscript texinfo imagemagick texi2html guile dblatex tex zip netpbm
-      python gettext flex perl bison pkgconfig fontconfig freetype pango
+      python2 gettext flex perl bison pkgconfig fontconfig freetype pango
       fontforge help2man groff makeWrapper t1utils
     ];
 
diff --git a/pkgs/misc/solfege/default.nix b/pkgs/misc/solfege/default.nix
index 8e9083d99229..114e18dc93f8 100644
--- a/pkgs/misc/solfege/default.nix
+++ b/pkgs/misc/solfege/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, pythonPackages, gettext, texinfo
-, ghostscript, pysqlite, librsvg, gdk_pixbuf, txt2man, timidity, mpg123
+, ghostscript, librsvg, gdk_pixbuf, txt2man, timidity, mpg123
 , alsaUtils, vorbis-tools, csound, lilypond
 , makeWrapper
 }:
@@ -15,7 +15,7 @@ in stdenv.mkDerivation rec {
   };
 
   buildInputs = [ pkgconfig python pygtk gettext texinfo
-    ghostscript pysqlite librsvg gdk_pixbuf txt2man makeWrapper
+    ghostscript librsvg gdk_pixbuf txt2man makeWrapper
   ];
 
   preBuild = ''
diff --git a/pkgs/misc/themes/zuki/default.nix b/pkgs/misc/themes/zuki/default.nix
index 73bc677854a1..6da6d24902ed 100644
--- a/pkgs/misc/themes/zuki/default.nix
+++ b/pkgs/misc/themes/zuki/default.nix
@@ -4,20 +4,20 @@ stdenv.mkDerivation rec {
   name = "zuki-themes-${version}";
   version = "${gnome3.version}.${date}";
   date = {
-    "3.18" = "2016-06-21";
     "3.20" = "2016-07-01";
+    "3.22" = "2016-10-20";
   }."${gnome3.version}";
 
   src = fetchFromGitHub {
     owner = "lassekongo83";
     repo = "zuki-themes";
     rev = {
-      "3.18" = "5c83a847ad8fab0fe0b82ed2a7db429655ac9c10";
       "3.20" = "dda1726ac7b556df2ef9696e530f8c2eaa0aed37";
+      "3.22" = "a48f0f12f81c49b480f82369ae45cfa49d78b143";
     }."${gnome3.version}";
     sha256 = {
-      "3.18" = "1x9zrx5dqq8kivhqj5kjwhy4vwr899pri6jvwxbff5hibvyc7ipy";
       "3.20" = "0p7db8a2ni494vwp3b7av7d214fnynf6gr976qma6h9x4ck3phiz";
+      "3.22" = "05sa5ighq01krbgfd4lddxvbhfqk5x5kgw6jnxwvx9rmmff713s1";
     }."${gnome3.version}";
   };
 
diff --git a/pkgs/os-specific/darwin/apple-source-releases/default.nix b/pkgs/os-specific/darwin/apple-source-releases/default.nix
index 2ebb8868a2ea..8625ac72c104 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/default.nix
@@ -22,6 +22,7 @@ let
       ppp           = "809.50.2";
       libclosure    = "65";
       Libinfo       = "477.50.4";
+      Libsystem     = "1226.10.1";
       removefile    = "41";
       libresolv     = "60";
 
@@ -204,7 +205,7 @@ let
     Libnotify       = applePackage "Libnotify"         "osx-10.11.6"     "14rhhfzb75r9jf3kyj8fzd01n09n7km1fsdj3dzl3lkkp1sir78m" {};
     libpthread      = applePackage "libpthread"        "osx-10.11.6"     "1kbw738cmr9pa7pz1igmajs307clfq7gv2vm1sqdzhcnnjxbl28w" {};
     libresolv       = applePackage "libresolv"         "osx-10.11.6"     "09flfdi3dlzq0yap32sxidacpc4nn4va7z12a6viip21ix2xb2gf" {};
-    Libsystem       = applePackage "Libsystem"         "osx-10.9.5"      "1yfj2qdrf9vrzs7p9m4wlb7zzxcrim1gw43x4lvz4qydpp5kg2rh" {};
+    Libsystem       = applePackage "Libsystem"         "osx-10.11.6"     "1nfkmbqml587v2s1d1y2s2v8nmr577jvk51y6vqrfvsrhdhc2w94" {};
     libutil         = applePackage "libutil"           "osx-10.11.6"     "1gmgmcyqdyc684ih7dimdmxdljnq7mzjy5iqbf589wc0pa8h5abm" {};
     libunwind       = applePackage "libunwind"         "osx-10.11.6"     "16nhx2pahh9d62mvszc88q226q5lwjankij276fxwrm8wb50zzlx" {};
     mDNSResponder   = applePackage "mDNSResponder"     "osx-10.11.6"     "069incq28a78yh1bnr17h9cd5if5mwqpq8ahnkyxxx25fkaxgzcf" {};
diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix
index af713bf61dd4..2f13277d70c7 100644
--- a/pkgs/os-specific/darwin/cctools/port.nix
+++ b/pkgs/os-specific/darwin/cctools/port.nix
@@ -22,6 +22,9 @@ let
 
     patches = [
       ./ld-rpath-nonfinal.patch ./ld-ignore-rpath-link.patch
+    ] ++ stdenv.lib.optionals stdenv.isDarwin [
+      # See https://github.com/tpoechtrager/cctools-port/issues/24. Remove when that's fixed.
+      ./undo-unknown-triple.patch
     ];
 
     enableParallelBuilding = true;
diff --git a/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch b/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch
new file mode 100644
index 000000000000..7df9bdd16dab
--- /dev/null
+++ b/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch
@@ -0,0 +1,17 @@
+diff --git a/cctools/as/driver.c b/cctools/as/driver.c
+index b06d085..c03397a 100644
+--- a/cctools/as/driver.c
++++ b/cctools/as/driver.c
+@@ -363,12 +363,6 @@ char **envp)
+ 	    /* Add -c or clang will run ld(1). */
+ 	    new_argv[j] = "-c";
+ 	    j++;
+-	    /* cctools-port start */
+-	    new_argv[j] = "-target";
+-	    j++;
+-	    new_argv[j] = "unknown-apple-darwin";
+-	    j++;
+-	    /* cctools-port end */
+ 	    new_argv[j] = NULL;
+ 	    if(execute(new_argv, verbose))
+ 		exit(0);
diff --git a/pkgs/os-specific/linux/apparmor/default.nix b/pkgs/os-specific/linux/apparmor/default.nix
index f58a7557ce35..b576ca71d580 100644
--- a/pkgs/os-specific/linux/apparmor/default.nix
+++ b/pkgs/os-specific/linux/apparmor/default.nix
@@ -82,7 +82,6 @@ let
     buildInputs = [
       perl
       pythonPackages.python
-      pythonPackages.readline
       libapparmor
       libapparmor.python
     ];
diff --git a/pkgs/os-specific/linux/crda/default.nix b/pkgs/os-specific/linux/crda/default.nix
index d28ae6f50989..ac6117cd599f 100644
--- a/pkgs/os-specific/linux/crda/default.nix
+++ b/pkgs/os-specific/linux/crda/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libgcrypt, libnl, pkgconfig, pythonPackages, wireless-regdb }:
+{ stdenv, fetchurl, libgcrypt, libnl, pkgconfig, python2Packages, wireless-regdb }:
 
 stdenv.mkDerivation rec {
   name = "crda-${version}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libgcrypt libnl ];
   nativeBuildInputs = [
-    pkgconfig pythonPackages.m2crypto pythonPackages.python
+    pkgconfig python2Packages.m2crypto python2Packages.python
   ];
 
   postPatch = ''
diff --git a/pkgs/os-specific/linux/iotop/default.nix b/pkgs/os-specific/linux/iotop/default.nix
index 505468d849a6..a19b3d4ec16c 100644
--- a/pkgs/os-specific/linux/iotop/default.nix
+++ b/pkgs/os-specific/linux/iotop/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "iotop-0.6";
 
   src = fetchurl {
@@ -8,8 +8,6 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0nzprs6zqax0cwq8h7hnszdl3d2m4c2d4vjfxfxbnjfs9sia5pis";
   };
 
-  propagatedBuildInputs = [ pythonPackages.curses ];
-
   doCheck = false;
 
   meta = {
diff --git a/pkgs/os-specific/linux/kernel/linux-4.1.nix b/pkgs/os-specific/linux/kernel/linux-4.1.nix
index 43b69196b8c8..67d8d267b546 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.1.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.1.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.1.33";
+  version = "4.1.35";
   extraMeta.branch = "4.1";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "15ms5mvvf0wpmscv8l5irp4j7j3l6k61hcjx9ln41pz6si00zj3l";
+    sha256 = "0jn09hs91d5fi6615v9fnbpggyh1x192q6faggpbb90q110g0jjl";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/wireguard/default.nix b/pkgs/os-specific/linux/wireguard/default.nix
index a8556fdbe07f..14974f6d43fc 100644
--- a/pkgs/os-specific/linux/wireguard/default.nix
+++ b/pkgs/os-specific/linux/wireguard/default.nix
@@ -8,11 +8,11 @@ assert kernel != null -> !(kernel.features.grsecurity or false);
 let
   name = "wireguard-unstable-${version}";
 
-  version = "2016-10-01";
+  version = "2016-10-25";
 
   src = fetchurl {
-    url    = "https://git.zx2c4.com/WireGuard/snapshot/WireGuard-experimental-0.0.20161001.tar.xz";
-    sha256 = "1j1s276lgp17yrlc46bgsbpwp635cvvv6b3ap49aq5h7jixvnfmc";
+    url    = "https://git.zx2c4.com/WireGuard/snapshot/WireGuard-experimental-0.0.20161025.tar.xz";
+    sha256 = "09rhap3dzb8rcq1a1af9inf1qz7161yghafbgpbnd9dg016vhgs3";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/servers/apache-kafka/default.nix b/pkgs/servers/apache-kafka/default.nix
index 418286d81f64..b6f4fef0f050 100644
--- a/pkgs/servers/apache-kafka/default.nix
+++ b/pkgs/servers/apache-kafka/default.nix
@@ -11,9 +11,9 @@ let
               scalaVersion = "2.11";
               sha256 = "0ykcjv5dz9i5bws9my2d60pww1g9v2p2nqr67h0i2xrjm7az8a6v";
             };
-    "0.10" = { kafkaVersion = "0.10.0.1";
+    "0.10" = { kafkaVersion = "0.10.1.0";
                scalaVersion = "2.11";
-               sha256 = "0bdhzbhmm87a47162hyazcjmfibqg9r3ryzfjag7r0nxxmd64wrd";
+               sha256 = "144k6bqg8q8f3x3nk05hvaaad8xa32qjifg785i15j69cnp355bd";
              };
   };
 in
diff --git a/pkgs/servers/bird/default.nix b/pkgs/servers/bird/default.nix
index 3180238c618b..a03b81583c0e 100644
--- a/pkgs/servers/bird/default.nix
+++ b/pkgs/servers/bird/default.nix
@@ -2,11 +2,11 @@
 , enableIPv6 ? false }:
 
 stdenv.mkDerivation rec {
-  name = "bird-1.6.0";
+  name = "bird-1.6.2";
 
   src = fetchurl {
     url = "ftp://bird.network.cz/pub/bird/${name}.tar.gz";
-    sha256 = "04qf07cb04xdjnq0qxj6y8iqwyszk1vyark9gn5v6wxcvqvzwgfv";
+    sha256 = "1xlq78mgfyh9yvg9zld9mx75bxg9ajbn4cjjchnf0msh0ibzhlw8";
   };
 
   buildInputs = [ flex bison readline ];
diff --git a/pkgs/servers/corosync/default.nix b/pkgs/servers/corosync/default.nix
index 5e8f2fd0caae..d04a1d124faa 100644
--- a/pkgs/servers/corosync/default.nix
+++ b/pkgs/servers/corosync/default.nix
@@ -7,11 +7,11 @@
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
-  name = "corosync-2.3.4";
+  name = "corosync-2.4.1";
 
   src = fetchurl {
     url = "http://build.clusterlabs.org/corosync/releases/${name}.tar.gz";
-    sha256 = "1m276b060fjghr93hdzfag81whi5ph65dc2ka8ln1igm3kxr7bix";
+    sha256 = "0w8m97ih7a2g99pmjsckw4xwbgzv96xdgg62s2a4qbgnw4yl637y";
   };
 
   buildInputs = [
diff --git a/pkgs/servers/inginious/default.nix b/pkgs/servers/inginious/default.nix
index ba6a54fc973d..c85d96100c3c 100644
--- a/pkgs/servers/inginious/default.nix
+++ b/pkgs/servers/inginious/default.nix
@@ -1,7 +1,9 @@
-{ pkgs, lib, pythonPackages }:
+{ pkgs, lib, python2Packages }:
 with lib;
 
 let
+  pythonPackages = python2Packages;
+
   docker_1_7_2 = pythonPackages.docker.override rec {
     name = "docker-py-1.7.2";
 
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index 0367b0b8350b..bcd1793315c6 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -26,7 +26,7 @@ in pythonPackages.buildPythonApplication rec {
     blist canonicaljson daemonize dateutil frozendict pillow pybcrypt pyasn1
     pydenticon pymacaroons-pynacl pynacl pyopenssl pysaml2 pytz requests2
     service-identity signedjson systemd twisted ujson unpaddedbase64 pyyaml
-    matrix-angular-sdk bleach netaddr jinja2 psycopg2 python.modules.curses
+    matrix-angular-sdk bleach netaddr jinja2 psycopg2
     ldap3 psutil msgpack
   ];
 
diff --git a/pkgs/servers/nosql/influxdb/default.nix b/pkgs/servers/nosql/influxdb/default.nix
index 1614049bf22f..b2cc7afb8045 100644
--- a/pkgs/servers/nosql/influxdb/default.nix
+++ b/pkgs/servers/nosql/influxdb/default.nix
@@ -1,16 +1,21 @@
-{ lib, buildGoPackage, fetchFromGitHub, src, version }:
+{ lib, buildGoPackage, fetchFromGitHub, }:
 
 buildGoPackage rec {
   name = "influxdb-${version}";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "influxdata";
+    repo = "influxdb";
+    rev = "v${version}";
+    sha256 = "0z8y995gm2hpxny7l5nx5fjc5c26hfgvghwmzva8d1mrlnapcsyc";
+  };
 
   goPackagePath = "github.com/influxdata/influxdb";
 
   excludedPackages = "test";
-  
-  inherit src;
 
-  # Generated with the `gdm2nix.rb` script and the `Godeps` file from the
-  # influxdb repo root.
+  # Generated with the nix2go
   goDeps = ./. + builtins.toPath "/deps-${version}.nix";
 
   meta = with lib; {
diff --git a/pkgs/servers/nosql/influxdb/deps-0.13.0.json.nix b/pkgs/servers/nosql/influxdb/deps-0.13.0.json.nix
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/pkgs/servers/nosql/influxdb/deps-0.13.0.json.nix
+++ /dev/null
diff --git a/pkgs/servers/nosql/influxdb/deps-0.13.0.nix b/pkgs/servers/nosql/influxdb/deps-0.13.0.nix
deleted file mode 100644
index 1b8885a1a0fe..000000000000
--- a/pkgs/servers/nosql/influxdb/deps-0.13.0.nix
+++ /dev/null
@@ -1,200 +0,0 @@
-[
-{
-  goPackagePath = "collectd.org";
-  fetch = {
-    type = "git";
-    url = "https://github.com/collectd/go-collectd.git";
-    rev = "9fc824c70f713ea0f058a07b49a4c563ef2a3b98";
-    sha256 = "0kjal6bsjpnppfnlqbg7g56xwssaj2ani499yykyj817zq56hi0w";
-  };
-}
-{
-  goPackagePath = "github.com/BurntSushi/toml";
-  fetch = {
-    type = "git";
-    url = "https://github.com/BurntSushi/toml.git";
-    rev = "a4eecd407cf4129fc902ece859a0114e4cf1a7f4";
-    sha256 = "1l74zvd534k2fs73gmaq4mgl48p1i9559k1gwq4vakca727z5sgf";
-  };
-}
-{
-  goPackagePath = "github.com/armon/go-metrics";
-  fetch = {
-    type = "git";
-    url = "https://github.com/armon/go-metrics.git";
-    rev = "345426c77237ece5dab0e1605c3e4b35c3f54757";
-    sha256 = "13bp2ykqhnhzif7wzrwsg54c2b0czhgs9csbvzbvc93n72s59jh5";
-  };
-}
-{
-  goPackagePath = "github.com/bmizerany/pat";
-  fetch = {
-    type = "git";
-    url = "https://github.com/bmizerany/pat.git";
-    rev = "b8a35001b773c267eb260a691f4e5499a3531600";
-    sha256 = "11zxd45rvjm6cn3wzbi18wy9j4vr1r1hgg6gzlqnxffiizkycxmz";
-  };
-}
-{
-  goPackagePath = "github.com/boltdb/bolt";
-  fetch = {
-    type = "git";
-    url = "https://github.com/boltdb/bolt.git";
-    rev = "2f846c3551b76d7710f159be840d66c3d064abbe";
-    sha256 = "0cvpcgmzlrn87jqrflwf4pciz6i25ri1r83sq7v1z9zry1ah16r5";
-  };
-}
-{
-  goPackagePath = "github.com/davecgh/go-spew";
-  fetch = {
-    type = "git";
-    url = "https://github.com/davecgh/go-spew.git";
-    rev = "fc32781af5e85e548d3f1abaf0fa3dbe8a72495c";
-    sha256 = "1dwwd4va0qnyr256i7n8d4g24d7yyvwd0975y6v4dy06qpwir232";
-  };
-}
-{
-  goPackagePath = "github.com/dgryski/go-bits";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dgryski/go-bits.git";
-    rev = "86c69b3c986f9d40065df5bd8f765796549eef2e";
-    sha256 = "08i3p8lcisr88gmwvi8qdc8bgksxh5ydjspgfbi4aba9msybp78b";
-  };
-}
-{
-  goPackagePath = "github.com/dgryski/go-bitstream";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dgryski/go-bitstream.git";
-    rev = "27cd5973303fde7d914860be1ea4b927a6be0c92";
-    sha256 = "12ji4vcfy0cz12yq43cz0w1f1k4c1kg0vwpsk1iy47kc38kzdkc6";
-  };
-}
-{
-  goPackagePath = "github.com/gogo/protobuf";
-  fetch = {
-    type = "git";
-    url = "https://github.com/gogo/protobuf.git";
-    rev = "74b6e9deaff6ba6da1389ec97351d337f0d08b06";
-    sha256 = "0045fz4bx72rikm2ggx9j1h3yrq518299qwaizrgy5jvxzj1707b";
-  };
-}
-{
-  goPackagePath = "github.com/golang/snappy";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/snappy.git";
-    rev = "5979233c5d6225d4a8e438cdd0b411888449ddab";
-    sha256 = "0i0pvwc2a4xgsns6mr3xbc6p0sra34qsaagd7yf7v1as0z7ydl3s";
-  };
-}
-{
-  goPackagePath = "github.com/hashicorp/go-msgpack";
-  fetch = {
-    type = "git";
-    url = "https://github.com/hashicorp/go-msgpack.git";
-    rev = "fa3f63826f7c23912c15263591e65d54d080b458";
-    sha256 = "1f6rd6bm2dm2rk46x8cqrxh5nks1gpk6dvvsag7s5pdjgdxy951k";
-  };
-}
-{
-  goPackagePath = "github.com/hashicorp/raft";
-  fetch = {
-    type = "git";
-    url = "https://github.com/hashicorp/raft.git";
-    rev = "8fd9a2fdfd154f4b393aa24cff91e3c317efe839";
-    sha256 = "04k03x6r6h2xwxfvbzicfdblifdjn35agw9kwla6akw6l54ygy0f";
-  };
-}
-{
-  goPackagePath = "github.com/hashicorp/raft-boltdb";
-  fetch = {
-    type = "git";
-    url = "https://github.com/hashicorp/raft-boltdb.git";
-    rev = "d1e82c1ec3f15ee991f7cc7ffd5b67ff6f5bbaee";
-    sha256 = "0p609w6x0h6bapx4b0d91dxnp2kj7dv0534q4blyxp79shv2a8ia";
-  };
-}
-{
-  goPackagePath = "github.com/influxdata/usage-client";
-  fetch = {
-    type = "git";
-    url = "https://github.com/influxdata/usage-client.git";
-    rev = "475977e68d79883d9c8d67131c84e4241523f452";
-    sha256 = "0yhywablqqpd2x70rax1kf7yaw1jpvrc2gks8360cwisda57d3qy";
-  };
-}
-{
-  goPackagePath = "github.com/jwilder/encoding";
-  fetch = {
-    type = "git";
-    url = "https://github.com/jwilder/encoding.git";
-    rev = "b421ab402545ef5a119f4f827784c6551d9bfc37";
-    sha256 = "0sjz2cl8kpni0mh0y4269k417dj06gn2y0ppi25i3wh9p4j4i4fq";
-  };
-}
-{
-  goPackagePath = "github.com/kimor79/gollectd";
-  fetch = {
-    type = "git";
-    url = "https://github.com/kimor79/gollectd.git";
-    rev = "61d0deeb4ffcc167b2a1baa8efd72365692811bc";
-    sha256 = "0als2v4d5hlw0sqam670p3fi471ikgl3l81bp31mf3s3jssdxwfs";
-  };
-}
-{
-  goPackagePath = "github.com/paulbellamy/ratecounter";
-  fetch = {
-    type = "git";
-    url = "https://github.com/paulbellamy/ratecounter.git";
-    rev = "5a11f585a31379765c190c033b6ad39956584447";
-    sha256 = "137p62imi91zhkjcjigdd64n7f9z6djjpsxcyifgrcxs41jj9ra0";
-  };
-}
-{
-  goPackagePath = "github.com/peterh/liner";
-  fetch = {
-    type = "git";
-    url = "https://github.com/peterh/liner.git";
-    rev = "82a939e738b0ee23e84ec7a12d8e216f4d95c53f";
-    sha256 = "1187c1rqmh9k9ap5bz3p9hbjp3ad5hysykh58kgv5clah1jbkg04";
-  };
-}
-{
-  goPackagePath = "github.com/rakyll/statik";
-  fetch = {
-    type = "git";
-    url = "https://github.com/rakyll/statik.git";
-    rev = "274df120e9065bdd08eb1120e0375e3dc1ae8465";
-    sha256 = "0llk7bxmk66wdiy42h32vj1jfk8zg351xq21hwhrq7gkfljghffp";
-  };
-}
-{
-  goPackagePath = "golang.org/x/crypto";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/crypto.git";
-    rev = "1f22c0103821b9390939b6776727195525381532";
-    sha256 = "1acy12f396sr3lrnbcnym5q72qnlign5bagving41qijzjnc219m";
-  };
-}
-{
-  goPackagePath = "golang.org/x/tools";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/tools.git";
-    rev = "8b178a93c1f5b5c8f4e36cd6bd64e0d5bf0ee180";
-    sha256 = "0rqm56c4acrvyqsp53dkzr34pkz922x4rwknaslwlbkyc4gyg2c8";
-  };
-}
-{
-  goPackagePath = "gopkg.in/fatih/pool.v2";
-  fetch = {
-    type = "git";
-    url = "https://github.com/fatih/pool.git";
-    rev = "cba550ebf9bce999a02e963296d4bc7a486cb715";
-    sha256 = "1jlrakgnpvhi2ny87yrsj1gyrcncfzdhypa9i2mlvvzqlj4r0dn0";
-  };
-}
-]
diff --git a/pkgs/servers/nosql/influxdb/gdm2nix.rb b/pkgs/servers/nosql/influxdb/gdm2nix.rb
deleted file mode 100755
index 4feb78f54bbd..000000000000
--- a/pkgs/servers/nosql/influxdb/gdm2nix.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env ruby
-#
-#
-require "json"
-
-redirects = {
-  "collectd.org" => "github.com/collectd/go-collectd",
-  "git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.golang.git" => "github.com/eclipse/paho.mqtt.golang",
-  "golang.org/x/net" => "github.com/golang/net",
-  "golang.org/x/crypto" => "github.com/golang/crypto",
-  "golang.org/x/text" => "github.com/golang/text",
-  "golang.org/x/tools" => "github.com/golang/tools",
-  "gopkg.in/fatih/pool.v2" => "github.com/fatih/pool",
-}
-
-godeps = ARGV[0] || "Godeps"
-
-deps = File.read(godeps).lines.map do |line|
-  (name, rev) = line.split(" ")
-
-  host = redirects.fetch(name, name)
-
-  url = "https://#{host}.git"
-
-  xxx = JSON.load(`nix-prefetch-git #{url} #{rev}`)
-
-  {
-    goPackagePath: name,
-    fetch: {
-      type: "git",
-      url: url,
-      rev: rev,
-      sha256: xxx['sha256'],
-    }
-  }
-end
-
-#TODO: move to deps.nix in NIXON format
-File.write("deps.json", JSON.pretty_generate(deps))
diff --git a/pkgs/servers/nosql/influxdb/v0.nix b/pkgs/servers/nosql/influxdb/v0.nix
deleted file mode 100644
index fca5f8ba622a..000000000000
--- a/pkgs/servers/nosql/influxdb/v0.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub }@args:
-
-import ./default.nix (args // rec {
-  
-  version = "0.13.0";
-
-  src = fetchFromGitHub {
-    owner = "influxdata";
-    repo = "influxdb";
-    rev = "v${version}";
-    sha256 = "0f7af5jb1f65qnslhc7zccml1qvk6xx5naczqfsf4s1zc556fdi4";
-  };
-}) 
diff --git a/pkgs/servers/nosql/influxdb/v1.nix b/pkgs/servers/nosql/influxdb/v1.nix
deleted file mode 100644
index 57d62a596e3f..000000000000
--- a/pkgs/servers/nosql/influxdb/v1.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub }@args:
-
-import ./default.nix (args // rec {
-  
-  version = "1.0.2";
-
-  src = fetchFromGitHub {
-    owner = "influxdata";
-    repo = "influxdb";
-    rev = "v${version}";
-    sha256 = "0z8y995gm2hpxny7l5nx5fjc5c26hfgvghwmzva8d1mrlnapcsyc";
-  };
-}) 
diff --git a/pkgs/servers/sabnzbd/default.nix b/pkgs/servers/sabnzbd/default.nix
index 14f28c37696f..d41e1bce7f58 100644
--- a/pkgs/servers/sabnzbd/default.nix
+++ b/pkgs/servers/sabnzbd/default.nix
@@ -1,7 +1,7 @@
-{stdenv, fetchurl, python, par2cmdline, unzip, unrar, p7zip, makeWrapper}:
+{stdenv, fetchurl, python2, par2cmdline, unzip, unrar, p7zip, makeWrapper}:
 
 let
-  pythonEnv = python.withPackages(ps: with ps; [ pyopenssl python.modules.sqlite3 cheetah]);
+  pythonEnv = python2.withPackages(ps: with ps; [ pyopenssl cheetah]);
   path = stdenv.lib.makeBinPath [ par2cmdline unrar unzip p7zip ];
 in stdenv.mkDerivation rec {
   version = "1.1.0";
diff --git a/pkgs/shells/oh-my-zsh/default.nix b/pkgs/shells/oh-my-zsh/default.nix
index fe0e2d3c4b66..73a3367f9f7e 100644
--- a/pkgs/shells/oh-my-zsh/default.nix
+++ b/pkgs/shells/oh-my-zsh/default.nix
@@ -7,12 +7,12 @@
 
 stdenv.mkDerivation rec {
   name = "oh-my-zsh-${version}";
-  version = "2016-10-08";
+  version = "2016-10-25";
 
   src = fetchgit {
     url = "https://github.com/robbyrussell/oh-my-zsh";
-    rev = "cd37d19ddaf9cc5acbf443f93f88ca355f74090d";
-    sha256 = "1vqgxbd09jhysjhp0xq48673xxry0xcs8mq2wrx5zs7chhq1w2y3";
+    rev = "0ee89d965ecaa4f32cf2d1039e9d84a73eb206cf";
+    sha256 = "1c90yl9kc1a7690bry1jbs48vsdlkxvbnvzgarx5wj99fygb8w2f";
   };
 
   phases = "installPhase";
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index fc81d3fec8d1..1bc983d63129 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -29,7 +29,7 @@ in rec {
     export NIX_ENFORCE_NO_NATIVE="''${NIX_ENFORCE_NO_NATIVE-1}"
     export NIX_IGNORE_LD_THROUGH_GCC=1
     stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
-    export MACOSX_DEPLOYMENT_TARGET=10.7
+    export MACOSX_DEPLOYMENT_TARGET=10.10
     export SDKROOT=
     export CMAKE_OSX_ARCHITECTURES=x86_64
     # Workaround for https://openradar.appspot.com/22671534 on 10.11.
diff --git a/pkgs/tools/admin/cli53/default.nix b/pkgs/tools/admin/cli53/default.nix
index cfee6a8b94c8..bdb9fd2d4772 100644
--- a/pkgs/tools/admin/cli53/default.nix
+++ b/pkgs/tools/admin/cli53/default.nix
@@ -1,8 +1,7 @@
-{ lib, pythonPackages, fetchurl }:
+{ lib, python2Packages, fetchurl }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "cli53-${version}";
-  namePrefix = "";  # Suppress "python27-" name prefix
   version = "0.4.4";
 
   src = fetchurl {
@@ -10,7 +9,7 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "0s9jzigq6a16m2c3qklssx2lz16cf13g5zh80vh24kxazaxqzbig";
   };
 
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
     argparse
     boto
     dns
diff --git a/pkgs/tools/admin/salt/default.nix b/pkgs/tools/admin/salt/default.nix
index 0e927dfe1c7a..3386ed86a2a0 100644
--- a/pkgs/tools/admin/salt/default.nix
+++ b/pkgs/tools/admin/salt/default.nix
@@ -1,23 +1,21 @@
 {
-  stdenv, fetchurl, pythonPackages, openssl,
+  stdenv, fetchurl, python2Packages, openssl,
 
   # Many Salt modules require various Python modules to be installed,
   # passing them in this array enables Salt to find them.
   extraInputs ? []
 }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "salt-${version}";
   version = "2016.3.3";
 
-  disabled = pythonPackages.isPy3k;
-
   src = fetchurl {
     url = "mirror://pypi/s/salt/${name}.tar.gz";
     sha256 = "1djjglnh6203y8dirziz5w6zh2lgszxp8ivi86nb7fgijj2h61jr";
   };
 
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python2Packages; [
     futures
     jinja2
     markupsafe
diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix
index 05d8bd0990f5..c7b1d6950412 100644
--- a/pkgs/tools/audio/beets/default.nix
+++ b/pkgs/tools/audio/beets/default.nix
@@ -92,8 +92,6 @@ in pythonPackages.buildPythonApplication rec {
     pythonPackages.pathlib
     pythonPackages.pyyaml
     pythonPackages.unidecode
-    pythonPackages.python.modules.sqlite3
-    pythonPackages.python.modules.readline
   ] ++ optional enableAcoustid     pythonPackages.pyacoustid
     ++ optional (enableFetchart
               || enableEmbyupdate
diff --git a/pkgs/tools/audio/mpdris2/default.nix b/pkgs/tools/audio/mpdris2/default.nix
index beb69db85815..bbec851b25cc 100644
--- a/pkgs/tools/audio/mpdris2/default.nix
+++ b/pkgs/tools/audio/mpdris2/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, autoreconfHook, intltool
-, pythonPackages, pythonFull
+, pythonPackages
 }:
 
 stdenv.mkDerivation rec {
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ intltool autoreconfHook pythonPackages.wrapPython ];
-  propagatedBuildInputs = with pythonPackages; [ pythonFull  pygtk dbus-python ];
+  propagatedBuildInputs = with pythonPackages; [ python pygtk dbus-python ];
   pythonPath = with pythonPackages; [ mpd pygtk dbus-python notify ];
   postInstall = "wrapPythonPrograms";
 
diff --git a/pkgs/tools/backup/duplicity/default.nix b/pkgs/tools/backup/duplicity/default.nix
index 25bcc6e27ad0..3a955bdbfec4 100644
--- a/pkgs/tools/backup/duplicity/default.nix
+++ b/pkgs/tools/backup/duplicity/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, pythonPackages, librsync, ncftp, gnupg, rsync, makeWrapper
+{ stdenv, fetchurl, python2Packages, librsync, ncftp, gnupg, rsync, makeWrapper
 }:
 
 let
   version = "0.7.07.1";
-  inherit (pythonPackages) boto ecdsa lockfile paramiko pycrypto python setuptools;
+  inherit (python2Packages) boto ecdsa lockfile paramiko pycrypto python setuptools;
 in stdenv.mkDerivation {
   name = "duplicity-${version}";
 
diff --git a/pkgs/tools/filesystems/btrfs-progs/default.nix b/pkgs/tools/filesystems/btrfs-progs/default.nix
index a58f2b5504b5..525aa2fec28a 100644
--- a/pkgs/tools/filesystems/btrfs-progs/default.nix
+++ b/pkgs/tools/filesystems/btrfs-progs/default.nix
@@ -2,14 +2,14 @@
 , asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt
 }:
 
-let version = "4.6.1"; in
+let version = "4.8.2"; in
 
 stdenv.mkDerivation rec {
   name = "btrfs-progs-${version}";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz";
-    sha256 = "06c9l6m3w29dndk17jrlpgr01wykl10h34zva8zc2c571z6mrlaf";
+    sha256 = "0pswcfmdnfc586770h74abp67gn2xv8fd46vxlimnmn837sj7h41";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix
index 07bfec41f477..a5df46b6ba4c 100644
--- a/pkgs/tools/filesystems/ceph/generic.nix
+++ b/pkgs/tools/filesystems/ceph/generic.nix
@@ -1,6 +1,6 @@
 { stdenv, ensureNewerSourcesHook, autoconf, automake, makeWrapper, pkgconfig
 , libtool, which, git
-, boost, python, pythonPackages, libxml2, zlib
+, boost, python2Packages, libxml2, zlib
 
 # Optional Dependencies
 , snappy ? null, leveldb ? null, yasm ? null, fcgi ? null, expat ? null
@@ -30,6 +30,7 @@ assert cryptopp != null || (nss != null && nspr != null);
 with stdenv;
 with stdenv.lib;
 let
+  inherit (python2Packages) python;
   mkFlag = trueStr: falseStr: cond: name: val:
     if cond == null then null else
       "--${if cond != false then trueStr else falseStr}${name}"
@@ -99,8 +100,7 @@ let
   };
 
   wrapArgs = "--set PYTHONPATH \"$(toPythonPath $lib)\""
-    + " --prefix PYTHONPATH : \"$(toPythonPath ${python.modules.readline})\""
-    + " --prefix PYTHONPATH : \"$(toPythonPath ${pythonPackages.flask})\""
+    + " --prefix PYTHONPATH : \"$(toPythonPath ${python2Packages.flask})\""
     + " --set PATH \"$out/bin\"";
 in
 stdenv.mkDerivation {
@@ -117,12 +117,12 @@ stdenv.mkDerivation {
     (ensureNewerSourcesHook { year = "1980"; })
   ]
     ++ optionals (versionAtLeast version "9.0.2") [
-      pythonPackages.setuptools pythonPackages.argparse
+      python2Packages.setuptools python2Packages.argparse
     ];
   buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [
-    boost python libxml2 optYasm optLibatomic_ops optLibs3 malloc pythonPackages.flask zlib
+    boost python libxml2 optYasm optLibatomic_ops optLibs3 malloc python2Packages.flask zlib
   ] ++ optionals (versionAtLeast version "9.0.0") [
-    pythonPackages.sphinx # Used for docs
+    python2Packages.sphinx # Used for docs
   ] ++ optionals stdenv.isLinux [
     linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs
   ] ++ optionals hasServer [
diff --git a/pkgs/tools/filesystems/gitfs/default.nix b/pkgs/tools/filesystems/gitfs/default.nix
index 31c4ceccbc09..bb652c285809 100644
--- a/pkgs/tools/filesystems/gitfs/default.nix
+++ b/pkgs/tools/filesystems/gitfs/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ stdenv, fetchFromGitHub, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "gitfs-0.2.5";
 
   src = fetchFromGitHub {
@@ -15,7 +15,12 @@ pythonPackages.buildPythonApplication rec {
     echo > requirements.txt
   '';
 
-  propagatedBuildInputs = with pythonPackages; [ atomiclong fusepy pygit2 ];
+  buildInputs = with python2Packages; [ pytest pytestcov mock ];
+  propagatedBuildInputs = with python2Packages; [ atomiclong fusepy pygit2 ];
+
+  checkPhase = ''
+    py.test
+  '';
 
   meta = {
     description = "A FUSE filesystem that fully integrates with git";
@@ -29,4 +34,4 @@ pythonPackages.buildPythonApplication rec {
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.robbinch ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix
index e97f246e70b9..32c87667ee36 100644
--- a/pkgs/tools/filesystems/glusterfs/default.nix
+++ b/pkgs/tools/filesystems/glusterfs/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, fuse, bison, flex_2_5_35, openssl, python, ncurses, readline,
+{stdenv, fetchurl, fuse, bison, flex_2_5_35, openssl, python2, ncurses, readline,
  autoconf, automake, libtool, pkgconfig, zlib, libaio, libxml2, acl, sqlite
  , liburcu, attr
 }:
@@ -13,7 +13,7 @@ let
     sha256="0f715r6bf12b37s1l3259qzfbz8l2g3mdsnnh2lflagzazn6jnap";
   };
   buildInputs = [
-    fuse bison flex_2_5_35 openssl python ncurses readline
+    fuse bison flex_2_5_35 openssl python2 ncurses readline
     autoconf automake libtool pkgconfig zlib libaio libxml2
     acl sqlite liburcu attr
   ];
diff --git a/pkgs/tools/misc/fpp/default.nix b/pkgs/tools/misc/fpp/default.nix
index 5261035b35c5..2f43dd40f13e 100644
--- a/pkgs/tools/misc/fpp/default.nix
+++ b/pkgs/tools/misc/fpp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python27Full }:
+{ stdenv, fetchFromGitHub, python27 }:
 
 stdenv.mkDerivation rec {
   name = "fpp-${version}";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   postPatch = ''
-    substituteInPlace fpp --replace 'PYTHONCMD="python"' 'PYTHONCMD="${python27Full.interpreter}"'
+    substituteInPlace fpp --replace 'PYTHONCMD="python"' 'PYTHONCMD="${python27.interpreter}"'
   '';
 
   installPhase = ''
diff --git a/pkgs/tools/misc/kargo/default.nix b/pkgs/tools/misc/kargo/default.nix
new file mode 100644
index 000000000000..ddc030bcf8da
--- /dev/null
+++ b/pkgs/tools/misc/kargo/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "0.4.6";
+  name = "kargo-${version}";
+
+  src = fetchurl {
+    url = "mirror://pypi/k/kargo/${name}.tar.gz";
+    sha256 = "1sm721c3d4scpc1gj2j3qwssr6jjvw6aq3p7ipvhbd9ywmm9dd7b";
+  };
+
+  doCheck = false;
+
+  propagatedBuildInputs = with pythonPackages; [
+    ansible2
+    boto
+    cffi
+    cryptography
+    libcloud
+    markupsafe
+    netaddr
+    pyasn1
+    requests2
+    setuptools
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kubespray/kargo-cli;
+    description = "A tool helps to deploy a kubernetes cluster with Ansible.";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [
+      jgeerds
+    ];
+  };
+}
diff --git a/pkgs/tools/misc/openopc/default.nix b/pkgs/tools/misc/openopc/default.nix
index 2fce3807ca7e..9da59824e292 100644
--- a/pkgs/tools/misc/openopc/default.nix
+++ b/pkgs/tools/misc/openopc/default.nix
@@ -1,6 +1,8 @@
-{ stdenv, fetchurl, pythonFull }:
+{ stdenv, fetchurl, python }:
 
-stdenv.mkDerivation rec {
+let
+  pythonEnv = python.withPackages(ps: [ps.pyro3]);
+in stdenv.mkDerivation rec {
   name = "openopc-${version}";
   version = "1.2.0";
 
@@ -13,16 +15,16 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir -p "$out/bin"
     mkdir -p "$out/share/doc/openopc"
-    mkdir -p "$out/${pythonFull.python.sitePackages}"
+    mkdir -p "$out/${pythonEnv.python.sitePackages}"
     mkdir -p "$out/libexec/opc"
 
-    cp src/OpenOPC.py "$out/${pythonFull.python.sitePackages}"
+    cp src/OpenOPC.py "$out/${pythonEnv.python.sitePackages}"
     cp src/opc.py "$out/libexec/opc/"
 
     cat > "$out/bin/opc" << __EOF__
     #!${stdenv.shell}
-    export PYTHONPATH="$out/${pythonFull.python.sitePackages}"
-    exec ${pythonFull}/bin/${pythonFull.python.executable} "$out/libexec/opc/opc.py" "\$@"
+    export PYTHONPATH="$out/${pythonEnv.python.sitePackages}"
+    exec ${pythonEnv}/bin/${pythonEnv.python.executable} "$out/libexec/opc/opc.py" "\$@"
     __EOF__
     chmod a+x "$out/bin/opc"
 
diff --git a/pkgs/tools/misc/parted/default.nix b/pkgs/tools/misc/parted/default.nix
index ba179d7af91f..cfce018a2361 100644
--- a/pkgs/tools/misc/parted/default.nix
+++ b/pkgs/tools/misc/parted/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, devicemapper, libuuid, gettext, readline, perl, python
+{ stdenv, fetchurl, devicemapper, libuuid, gettext, readline, perl, python2
 , utillinux, check, enableStatic ? false, hurd ? null }:
 
 stdenv.mkDerivation rec {
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     ++ stdenv.lib.optional (gettext != null) gettext
     ++ stdenv.lib.optional (devicemapper != null) devicemapper
     ++ stdenv.lib.optional (hurd != null) hurd
-    ++ stdenv.lib.optionals doCheck [ check perl python ];
+    ++ stdenv.lib.optionals doCheck [ check perl python2 ];
 
   configureFlags =
        (if (readline != null)
diff --git a/pkgs/tools/misc/venus/default.nix b/pkgs/tools/misc/venus/default.nix
index 6fc4e436153f..9f2e4ce8eecb 100644
--- a/pkgs/tools/misc/venus/default.nix
+++ b/pkgs/tools/misc/venus/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
   checkPhase = "python runtests.py";
 
-  buildInputs = [ python python.modules.bsddb libxslt
+  buildInputs = [ python libxslt
     libxml2 pythonPackages.genshi pythonPackages.lxml makeWrapper ];
 
   installPhase = ''
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index 6b49a8120a48..005915080afe 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -14,11 +14,11 @@ with stdenv.lib;
 buildPythonApplication rec {
 
   name = "youtube-dl-${version}";
-  version = "2016.10.19";
+  version = "2016.10.25";
 
   src = fetchurl {
     url = "https://yt-dl.org/downloads/${version}/${name}.tar.gz";
-    sha256 = "ed8d4a247c4cfffe2a1171b4f9c20be19e84d96bcf3716f46988c8503b1b7713";
+    sha256 = "920048c6ff2f7f2c4b55c1ba4810e85f76efd814118e59b3568bdc2c38024697";
   };
 
   buildInputs = [ makeWrapper zip ] ++ optional generateManPage pandoc;
diff --git a/pkgs/tools/networking/getmail/default.nix b/pkgs/tools/networking/getmail/default.nix
index 9ffb9a311837..64bad55d88b2 100644
--- a/pkgs/tools/networking/getmail/default.nix
+++ b/pkgs/tools/networking/getmail/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   version = "4.51.0";
   name = "getmail-${version}";
   namePrefix = "";
diff --git a/pkgs/tools/networking/httpie/default.nix b/pkgs/tools/networking/httpie/default.nix
index 645b981de13f..a5c7353905b4 100644
--- a/pkgs/tools/networking/httpie/default.nix
+++ b/pkgs/tools/networking/httpie/default.nix
@@ -9,7 +9,7 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1cch5y0hr9qpfn9m4nw5796c2x7v3m1ni4psjm26ajsl8pw90jx6";
   };
 
-  propagatedBuildInputs = with pythonPackages; [ pygments requests2 curses ];
+  propagatedBuildInputs = with pythonPackages; [ pygments requests2 ];
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/httpstat/default.nix b/pkgs/tools/networking/httpstat/default.nix
index 854e3b3c4c0e..5a29657bd5b1 100644
--- a/pkgs/tools/networking/httpstat/default.nix
+++ b/pkgs/tools/networking/httpstat/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, curl, python, pythonPackages, ... }:
+{ stdenv, fetchFromGitHub, curl, pythonPackages, glibcLocales }:
 
-pythonPackages.buildPythonPackage rec {
+pythonPackages.buildPythonApplication rec {
     name = "${pname}-${version}";
     pname = "httpstat";
     version = "1.2.1";
@@ -10,17 +10,11 @@ pythonPackages.buildPythonPackage rec {
       rev = "${version}";
       sha256 = "1vriibcsq4j1hvm5yigbbmmv21dc40y5c9gvd31dg9qkaz26hml6";
     };
-    doCheck = false;
-    propagatedBuildInputs = [ ];
+    doCheck = false; # No tests
+    buildInputs = [ glibcLocales ];
     runtimeDeps = [ curl ];
 
-    installPhase = ''
-      mkdir -p $out/${python.sitePackages}/
-      cp httpstat.py $out/${python.sitePackages}/
-      mkdir -p $out/bin
-      ln -s $out/${python.sitePackages}/httpstat.py $out/bin/httpstat
-      chmod +x $out/bin/httpstat
-    '';
+    LC_ALL = "en_US.UTF-8";
 
     meta = {
       description = "curl statistics made simple";
diff --git a/pkgs/tools/networking/network-manager/strongswan.nix b/pkgs/tools/networking/network-manager/strongswan.nix
new file mode 100644
index 000000000000..9e0033cca90c
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/strongswan.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, procps
+, gnome3, libgnome_keyring, libsecret }:
+
+stdenv.mkDerivation rec {
+  name    = "${pname}-${version}";
+  pname   = "NetworkManager-strongswan";
+  version = "1.4.0";
+
+  src = fetchurl {
+    url    = "https://download.strongswan.org/NetworkManager/${name}.tar.bz2";
+    sha256 = "0qfnylg949lkyw1nmyggz2ipgmy154ic5q5ljjcwcgi14r90ys02";
+  };
+
+  postPatch = ''
+    sed -i "s,nm_plugindir=.*,nm_plugindir=$out/lib/NetworkManager," "configure"
+    sed -i "s,nm_libexecdir=.*,nm_libexecdir=$out/libexec," "configure"
+  '';
+
+  buildInputs = [ networkmanager libsecret ]
+      ++ (with gnome3; [ gtk libgnome_keyring networkmanagerapplet ]);
+
+  nativeBuildInputs = [ intltool pkgconfig ];
+
+  preConfigure = ''
+     substituteInPlace "configure" \
+       --replace "/sbin/sysctl" "${procps}/bin/sysctl"
+  '';
+
+  meta = {
+    description = "NetworkManager's strongswan plugin";
+    inherit (networkmanager.meta) platforms;
+  };
+}
+
diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix
index 564eea231841..93541bd06039 100644
--- a/pkgs/tools/networking/offlineimap/default.nix
+++ b/pkgs/tools/networking/offlineimap/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pythonPackages, sqlite3 }:
+{ stdenv, fetchFromGitHub, pythonPackages, }:
 
 pythonPackages.buildPythonApplication rec {
   version = "7.0.6";
@@ -14,7 +14,7 @@ pythonPackages.buildPythonApplication rec {
 
   doCheck = false;
 
-  propagatedBuildInputs = [ sqlite3 pythonPackages.six ];
+  propagatedBuildInputs = [ pythonPackages.six ];
 
   meta = {
     description = "Synchronize emails between two repositories, so that you can read the same mailbox from multiple computers";
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
index b01566bed075..6b88d2d2b7df 100644
--- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
+++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
@@ -34,7 +34,7 @@ pythonPackages.buildPythonApplication rec {
 
   # The `backup' command requires `sqlite3'.
   propagatedBuildInputs = with pythonPackages; [
-    twisted foolscap nevow simplejson zfec pycryptopp sqlite3 darcsver
+    twisted foolscap nevow simplejson zfec pycryptopp darcsver
     setuptoolsTrial setuptoolsDarcs pycrypto pyasn1 zope_interface
     service-identity
   ];
diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix
index d693b8db953a..2613fe7ab097 100644
--- a/pkgs/tools/networking/wicd/default.nix
+++ b/pkgs/tools/networking/wicd/default.nix
@@ -46,7 +46,7 @@ in stdenv.mkDerivation rec {
     sed -i "2iexport PATH=${python}/bin\$\{PATH:+:\}\$PATH" in/scripts=wicd-cli.in
     sed -i "3iexport PYTHONPATH=$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject2}):$(toPythonPath ${pycairo}):$(toPythonPath ${dbus-python})\$\{PYTHONPATH:+:\}\$PYTHONPATH" in/scripts=wicd-cli.in
     sed -i "2iexport PATH=${python}/bin\$\{PATH:+:\}\$PATH" in/scripts=wicd-curses.in
-    sed -i "3iexport PYTHONPATH=$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject2}):$(toPythonPath ${pycairo}):$(toPythonPath ${dbus-python}):$(toPythonPath ${pythonPackages.urwid}):$(toPythonPath ${pythonPackages.curses})\$\{PYTHONPATH:+:\}\$PYTHONPATH" in/scripts=wicd-curses.in
+    sed -i "3iexport PYTHONPATH=$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject2}):$(toPythonPath ${pycairo}):$(toPythonPath ${dbus-python}):$(toPythonPath ${pythonPackages.urwid})\$\{PYTHONPATH:+:\}\$PYTHONPATH" in/scripts=wicd-curses.in
     rm po/ast.po
   '';
 
diff --git a/pkgs/tools/package-management/koji/default.nix b/pkgs/tools/package-management/koji/default.nix
index 28a1f3d00b72..7d2022ee91bb 100644
--- a/pkgs/tools/package-management/koji/default.nix
+++ b/pkgs/tools/package-management/koji/default.nix
@@ -1,6 +1,8 @@
-{ stdenv, fetchurl, pythonPackages, python }:
+{ stdenv, fetchurl, python2 }:
 
-stdenv.mkDerivation rec {
+let
+  pythonEnv = python2.withPackages(ps : [ps.pycurl]);
+in stdenv.mkDerivation rec {
   name = "koji-1.8";
 
   src = fetchurl {
@@ -8,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "10dph209h4jgajb5jmbjhqy4z4hd22i7s2d93vm3ikdf01i8iwf1";
   };
 
-  propagatedBuildInputs = [ pythonPackages.pycurl python ];
+  propagatedBuildInputs = [ pythonEnv ];
 
   makeFlags = "DESTDIR=$(out)";
 
diff --git a/pkgs/tools/package-management/nixops/generic.nix b/pkgs/tools/package-management/nixops/generic.nix
index d31c90afebbe..9c4c2600fb40 100644
--- a/pkgs/tools/package-management/nixops/generic.nix
+++ b/pkgs/tools/package-management/nixops/generic.nix
@@ -14,7 +14,6 @@ python2Packages.buildPythonApplication {
   pythonPath = with python2Packages;
     [ prettytable
       boto
-      sqlite3
       hetzner
       libcloud
       azure-storage
diff --git a/pkgs/tools/security/ecryptfs/default.nix b/pkgs/tools/security/ecryptfs/default.nix
index 582b5ceae119..4981d8fa062a 100644
--- a/pkgs/tools/security/ecryptfs/default.nix
+++ b/pkgs/tools/security/ecryptfs/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, perl, utillinux, keyutils, nss, nspr, python, pam
+{ stdenv, fetchurl, pkgconfig, perl, utillinux, keyutils, nss, nspr, python2, pam
 , intltool, makeWrapper, coreutils, bash, gettext, cryptsetup, lvm2, rsync, which, lsof }:
 
 stdenv.mkDerivation rec {
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  buildInputs = [ pkgconfig perl nss nspr python pam intltool makeWrapper ];
+  buildInputs = [ pkgconfig perl nss nspr python2 pam intltool makeWrapper ];
   propagatedBuildInputs = [ coreutils gettext cryptsetup lvm2 rsync keyutils which ];
 
   postInstall = ''
diff --git a/pkgs/tools/security/ecryptfs/helper.nix b/pkgs/tools/security/ecryptfs/helper.nix
index 40e6771251ab..0d4b37a8efc0 100644
--- a/pkgs/tools/security/ecryptfs/helper.nix
+++ b/pkgs/tools/security/ecryptfs/helper.nix
@@ -1,7 +1,7 @@
 { stdenv
 , fetchurl
 , makeWrapper
-, python
+, python2
 }:
 
 stdenv.mkDerivation rec {
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir -p $out/bin $out/libexec
     cp $src $out/libexec/ecryptfs-helper.py
-    makeWrapper "${python.interpreter} $out/libexec/ecryptfs-helper.py" $out/bin/ecryptfs-helper
+    makeWrapper "${python2.interpreter} $out/libexec/ecryptfs-helper.py" $out/bin/ecryptfs-helper
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/security/fail2ban/default.nix b/pkgs/tools/security/fail2ban/default.nix
index 70dfb9e82c6b..695bfcce3a59 100644
--- a/pkgs/tools/security/fail2ban/default.nix
+++ b/pkgs/tools/security/fail2ban/default.nix
@@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication {
     sha256 = "1m8gqj35kwrn30rqwd488sgakaisz22xa5v9llvz6gwf4f7ps0a9";
   };
 
-  propagatedBuildInputs = [ python.modules.sqlite3 gamin ]
+  propagatedBuildInputs = [ gamin ]
     ++ (stdenv.lib.optional stdenv.isLinux pythonPackages.systemd);
 
   preConfigure = ''
diff --git a/pkgs/tools/security/gencfsm/default.nix b/pkgs/tools/security/gencfsm/default.nix
index 8441fbbb7613..871ba1d8b854 100644
--- a/pkgs/tools/security/gencfsm/default.nix
+++ b/pkgs/tools/security/gencfsm/default.nix
@@ -1,5 +1,7 @@
 { stdenv, fetchurl, autoconf, automake, intltool, libtool, pkgconfig, encfs
-, glib , gnome3, gtk3, libgnome_keyring, vala_0_23, wrapGAppsHook, xorg }:
+, glib , gnome3, gtk3, libgnome_keyring, vala_0_23, wrapGAppsHook, xorg
+, libgee_0_6
+}:
 
 stdenv.mkDerivation rec {
   version = "1.8.16";
@@ -11,7 +13,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ autoconf automake intltool libtool pkgconfig vala_0_23 glib encfs
-    gtk3 libgnome_keyring gnome3.libgee_1 xorg.libSM xorg.libICE
+    gtk3 libgnome_keyring libgee_0_6 xorg.libSM xorg.libICE
     wrapGAppsHook ];
 
   patches = [ ./makefile-mkdir.patch ];
@@ -30,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.spacefrogg ];
+    broken = true;
   };
 }
diff --git a/pkgs/tools/security/knockknock/default.nix b/pkgs/tools/security/knockknock/default.nix
index 5ff93ae6a033..ce7663b18cf9 100644
--- a/pkgs/tools/security/knockknock/default.nix
+++ b/pkgs/tools/security/knockknock/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, pythonPackages, hping }:
+{ stdenv, fetchFromGitHub, python2Packages, hping }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   rev  = "bf14bbff";
   name = "knockknock-r${rev}";
 
@@ -11,7 +11,10 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1chpfs3w2vkjrgay69pbdr116z1jldv53fi768a1i05fdqhy1px4";
   };
 
-  propagatedBuildInputs = [ pythonPackages.pycrypto ];
+  propagatedBuildInputs = [ python2Packages.pycrypto ];
+
+  # No tests
+  doCheck = false;
 
   patchPhase = ''
     sed -i '/build\//d' setup.py
diff --git a/pkgs/tools/security/tor/tor-arm.nix b/pkgs/tools/security/tor/tor-arm.nix
index 1857cfcbe22e..432b1cbfceee 100644
--- a/pkgs/tools/security/tor/tor-arm.nix
+++ b/pkgs/tools/security/tor/tor-arm.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
     cp -R src/TorCtl $out/libexec
 
     wrapProgram $out/bin/arm \
-      --prefix PYTHONPATH : "$(toPythonPath $out):$(toPythonPath ${pythonPackages.curses}):$out/libexec:$PYTHONPATH" \
+      --prefix PYTHONPATH : "$(toPythonPath $out):$out/libexec:$PYTHONPATH" \
       --set TERMINFO "${ncurses.out}/share/terminfo" \
       --set TERM "xterm"
   '';
diff --git a/pkgs/tools/text/grin/default.nix b/pkgs/tools/text/grin/default.nix
index 149af7baa2d7..7c1df7f8819c 100644
--- a/pkgs/tools/text/grin/default.nix
+++ b/pkgs/tools/text/grin/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, python2Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   name = "grin-1.2.1";
   namePrefix = "";
 
@@ -9,8 +9,8 @@ pythonPackages.buildPythonApplication rec {
     sha256 = "1swzwb17wibam8jszdv98h557hlx44pg6psv6rjz7i33qlxk0fdz";
   };
 
-  buildInputs = with pythonPackages; [ nose ];
-  propagatedBuildInputs = with pythonPackages; [ argparse ];
+  buildInputs = with python2Packages; [ nose ];
+  propagatedBuildInputs = with python2Packages; [ argparse ];
 
   meta = {
     homepage = https://pypi.python.org/pypi/grin;
diff --git a/pkgs/tools/text/ruby-zoom/Gemfile b/pkgs/tools/text/ruby-zoom/Gemfile
new file mode 100644
index 000000000000..4bb5d8c175d7
--- /dev/null
+++ b/pkgs/tools/text/ruby-zoom/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'ruby-zoom'
diff --git a/pkgs/tools/text/ruby-zoom/Gemfile.lock b/pkgs/tools/text/ruby-zoom/Gemfile.lock
new file mode 100644
index 000000000000..29d5fe1da5ba
--- /dev/null
+++ b/pkgs/tools/text/ruby-zoom/Gemfile.lock
@@ -0,0 +1,25 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    djinni (2.0.1)
+      fagin (~> 0.1, >= 0.1.2)
+      ruby-terminfo (~> 0.1, >= 0.1.1)
+    fagin (0.1.2)
+    hilighter (0.1.7)
+    json_config (0.1.2)
+    ruby-terminfo (0.1.1)
+    ruby-zoom (4.1.0)
+      djinni (~> 2.0, >= 2.0.1)
+      hilighter (~> 0.1, >= 0.1.3)
+      json_config (~> 0.1, >= 0.1.2)
+      scoobydoo (~> 0.1, >= 0.1.4)
+    scoobydoo (0.1.4)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  ruby-zoom
+
+BUNDLED WITH
+   1.13.1
diff --git a/pkgs/tools/text/ruby-zoom/default.nix b/pkgs/tools/text/ruby-zoom/default.nix
new file mode 100644
index 000000000000..eb3968a0db93
--- /dev/null
+++ b/pkgs/tools/text/ruby-zoom/default.nix
@@ -0,0 +1,18 @@
+{ lib, bundlerEnv, ruby, stdenv }:
+
+bundlerEnv {
+  pname = "ruby-zoom";
+
+  inherit ruby;
+  gemfile = ./Gemfile;
+  lockfile = ./Gemfile.lock;
+  gemset = ./gemset.nix;
+
+  meta = with lib; {
+    description = "Quickly open CLI search results in your favorite editor!";
+    homepage    = https://gitlab.com/mjwhitta/zoom;
+    license     = with licenses; gpl3;
+    maintainers = with stdenv.lib.maintainers; [ vmandela ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/text/ruby-zoom/gemset.nix b/pkgs/tools/text/ruby-zoom/gemset.nix
new file mode 100644
index 000000000000..7d3836a3c33a
--- /dev/null
+++ b/pkgs/tools/text/ruby-zoom/gemset.nix
@@ -0,0 +1,58 @@
+{
+  djinni = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wl4q4qs1nyla5n2b2ys6n3i35gvli8xb8mxz2xv0ik306cikqm6";
+      type = "gem";
+    };
+    version = "2.0.1";
+  };
+  fagin = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17d419vkfr26gdbad97fg2ikskhn82vs3bnxlzd27w6lwyf13qxk";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  hilighter = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a9a9clgd6kx63a82msjzi6abznfqivsgmds7qaqwb1dsl1nznbh";
+      type = "gem";
+    };
+    version = "0.1.7";
+  };
+  json_config = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16q3q0j9s8w93lzxa7rrvh5wqk11np7s2nmgmdlrh8gl3w76xcz6";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  ruby-terminfo = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  ruby-zoom = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "132pk0zp3rayvvbccfs5ksigg9zpflp9734b4r0jz5aimmv2qpvp";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  scoobydoo = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w83zgip3qvh20pgqgcp9yp0k35ypn7ny0d61xcv1ik0r3ab8ga0";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/typesetting/tex/dblatex/default.nix b/pkgs/tools/typesetting/tex/dblatex/default.nix
index ce65a587ddf2..7ffccde2c035 100644
--- a/pkgs/tools/typesetting/tex/dblatex/default.nix
+++ b/pkgs/tools/typesetting/tex/dblatex/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python, libxslt, texlive
+{ stdenv, fetchurl, python2, libxslt, texlive
 , enableAllFeatures ? false, imagemagick ? null, transfig ? null, inkscape ? null, fontconfig ? null, ghostscript ? null
 
 , tex ? texlive.combine { # satisfy all packages that ./configure mentions
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     sha256 = "0bkjgrn03dy5c7438s429wnv6z5ynxkr4pbhp2z49kynskgkzkjr";
   };
 
-  buildInputs = [ python libxslt tex ]
+  buildInputs = [ python2 libxslt tex ]
     ++ stdenv.lib.optionals enableAllFeatures [ imagemagick transfig ];
 
   # TODO: dblatex tries to execute texindy command, but nixpkgs doesn't have
@@ -58,7 +58,7 @@ stdenv.mkDerivation rec {
   dontBuild = true;
 
   installPhase = ''
-    python ./setup.py install --prefix="$out" --use-python-path --verbose
+    ${python2.interpreter} ./setup.py install --prefix="$out" --use-python-path --verbose
   '';
 
   passthru = { inherit tex; };
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index fe3c0b71b9bd..d41dbcfef0d6 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -1,6 +1,6 @@
 { stdenv, lib, fetchurl
 , texlive
-, zlib, bzip2, ncurses, libpng, flex, bison, libX11, libICE, xproto
+, zlib, bzip2, ncurses, libiconv, libpng, flex, bison, libX11, libICE, xproto
 , freetype, t1lib, gd, libXaw, icu, ghostscript, ed, libXt, libXpm, libXmu, libXext
 , xextproto, perl, libSM, ruby, expat, curl, libjpeg, python, fontconfig, pkgconfig
 , poppler, libpaper, graphite2, zziplib, harfbuzz, texinfo, potrace, gmp, mpfr
@@ -296,7 +296,7 @@ xindy = stdenv.mkDerivation {
     pkgconfig perl
     (texlive.combine { inherit (texlive) scheme-basic cyrillic ec; })
   ];
-  buildInputs = [ clisp ];
+  buildInputs = [ clisp libiconv ];
 
   configureFlags = [ "--with-clisp-runtime=system" "--disable-xindy-docs" ];
 
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 11cc0b4e631a..c328f74729e0 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -29,7 +29,6 @@ doNotDisplayTwice rec {
   btrfsProgs = btrfs-progs; # added 2016-01-03
   bundler_HEAD = bundler; # added 2015-11-15
   checkbashism = checkbashisms; # added 2016-08-16
-  cheetahTemplate = pythonPackages.cheetah; # 2015-06-15
   cifs_utils = cifs-utils; # added 2016-08
   clangAnalyzer = clang-analyzer;  # added 2015-02-20
   clawsMail = claws-mail; # added 2016-04-29
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5bab0bebbd56..048cbfb51817 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6,7 +6,6 @@
  * Hint: ### starts category names.
  */
 { system, bootStdenv, noSysDirs, config, crossSystem, platform, lib
-, pkgsWithOverrides
 , ... }:
 self: pkgs:
 
@@ -35,19 +34,6 @@ in
 
   newScope = extra: lib.callPackageWith (defaultScope // extra);
 
-  # Easily override this package set.
-  # Warning: this function is very expensive and must not be used
-  # from within the nixpkgs repository.
-  #
-  # Example:
-  #  pkgs.overridePackages (self: super: {
-  #    foo = super.foo.override { ... };
-  #  }
-  #
-  # The result is `pkgs' where all the derivations depending on `foo'
-  # will use the new version.
-  overridePackages = f: pkgsWithOverrides f;
-
   # Override system. This is useful to build i686 packages on x86_64-linux.
   forceSystem = system: kernel: (import ../..) {
     inherit system;
@@ -1485,7 +1471,7 @@ in
 
   ecryptfs = callPackage ../tools/security/ecryptfs { };
 
-  ecryptfs-helper = callPackage ../tools/security/ecryptfs/helper.nix { python = python2; };
+  ecryptfs-helper = callPackage ../tools/security/ecryptfs/helper.nix { };
 
   editres = callPackage ../tools/graphics/editres { };
 
@@ -2275,6 +2261,8 @@ in
 
   k2pdfopt = callPackage ../applications/misc/k2pdfopt { };
 
+  kargo = callPackage ../tools/misc/kargo { };
+
   kazam = callPackage ../applications/video/kazam { };
 
   kalibrate-rtl = callPackage ../tools/misc/kalibrate-rtl { };
@@ -2849,6 +2837,8 @@ in
 
   networkmanager_openconnect = callPackage ../tools/networking/network-manager/openconnect.nix { };
 
+  networkmanager_strongswan = callPackage ../tools/networking/network-manager/strongswan.nix { };
+
   networkmanagerapplet = newScope gnome2 ../tools/networking/network-manager-applet { };
 
   newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter { };
@@ -2965,9 +2955,7 @@ in
 
   odt2txt = callPackage ../tools/text/odt2txt { };
 
-  offlineimap = callPackage ../tools/networking/offlineimap {
-    inherit (pythonPackages) sqlite3;
-  };
+  offlineimap = callPackage ../tools/networking/offlineimap { };
 
   oh-my-zsh = callPackage ../shells/oh-my-zsh { };
 
@@ -2994,11 +2982,7 @@ in
 
   openobex = callPackage ../tools/bluetooth/openobex { };
 
-  openopc = callPackage ../tools/misc/openopc {
-    pythonFull = python27.buildEnv.override {
-      extraLibs = [ python27Packages.pyro3 ];
-    };
-  };
+  openopc = callPackage ../tools/misc/openopc { };
 
   openresolv = callPackage ../tools/networking/openresolv { };
 
@@ -4411,9 +4395,7 @@ in
 
   es = callPackage ../shells/es { };
 
-  fish = callPackage ../shells/fish {
-    python = python27Full;
-  };
+  fish = callPackage ../shells/fish { };
 
   fish-foreign-env = callPackage ../shells/fish-foreign-env { };
 
@@ -4518,7 +4500,7 @@ in
 
   #Use this instead of stdenv to build with clang
   clangStdenv = if stdenv.isDarwin then stdenv else lowPrio llvmPackages.stdenv;
-  libcxxStdenv = stdenvAdapters.overrideCC stdenv (clangWrapSelf llvmPackages.clang-unwrapped);
+  libcxxStdenv = lowPrio llvmPackages.libcxxStdenv;
 
   clean = callPackage ../development/compilers/clean { };
 
@@ -4797,16 +4779,19 @@ in
     version = "4.7-2013q3-20130916";
     releaseType = "update";
     sha256 = "1bd9bi9q80xn2rpy0rn1vvj70rh15kb7dmah0qs4q2rv78fqj40d";
+    ncurses = pkgsi686Linux.ncurses5;
   };
   gcc-arm-embedded-4_8 = callPackage_i686 ../development/compilers/gcc-arm-embedded {
     version = "4.8-2014q1-20140314";
     releaseType = "update";
     sha256 = "ce92859550819d4a3d1a6e2672ea64882b30afa2c08cf67fa8e1d93788c2c577";
+    ncurses = pkgsi686Linux.ncurses5;
   };
   gcc-arm-embedded-4_9 = callPackage_i686 ../development/compilers/gcc-arm-embedded {
     version = "4.9-2015q1-20150306";
     releaseType = "update";
     sha256 = "c5e0025b065750bbd76b5357b4fc8606d88afbac9ff55b8a82927b4b96178154";
+    ncurses = pkgsi686Linux.ncurses5;
   };
   gcc-arm-embedded-5 = pkgs.callPackage_i686 ../development/compilers/gcc-arm-embedded {
     dirName = "5.0";
@@ -4814,6 +4799,7 @@ in
     version = "5.4-2016q2-20160622";
     releaseType = "update";
     sha256 = "1r0rqbnw7rf94f5bsa3gi8bick4xb7qnp1dkvdjfbvqjvysvc44r";
+    ncurses = pkgsi686Linux.ncurses5;
   };
   gcc-arm-embedded = gcc-arm-embedded-5;
 
@@ -5245,7 +5231,9 @@ in
     inherit libc extraBuildCommands;
   };
 
-  wrapCC = wrapCCWith (callPackage ../build-support/cc-wrapper) stdenv.cc.libc "";
+  ccWrapperFun = callPackage ../build-support/cc-wrapper;
+
+  wrapCC = wrapCCWith ccWrapperFun stdenv.cc.libc "";
   # legacy version, used for gnat bootstrapping
   wrapGCC-old = baseGCC: callPackage ../build-support/gcc-wrapper-old {
     nativeTools = stdenv.cc.nativeTools or false;
@@ -5519,10 +5507,18 @@ in
   };
   purePackages = recurseIntoAttrs (callPackage ./pure-packages.nix {});
 
+  # Python interpreters. All standard library modules are included except for tkinter, which is
+  # available as `pythonPackages.tkinter` and can be used as any other Python package.
   python = python2;
   python2 = python27;
   python3 = python35;
 
+  # Python interpreter that is build with all modules, including tkinter.
+  # These are for compatibility and should not be used inside Nixpkgs.
+  pythonFull = python.override{x11Support=true;};
+  python2Full = python2.override{x11Support=true;};
+  python3Full = python3.override{x11Support=true;};
+
   # pythonPackages further below, but assigned here because they need to be in sync
   pythonPackages = python2Packages;
   python2Packages = python27Packages;
@@ -5538,6 +5534,7 @@ in
   };
   python33 = callPackage ../development/interpreters/python/cpython/3.3 {
     self = python33;
+    inherit (darwin) CF configd;
   };
   python34 = hiPrio (callPackage ../development/interpreters/python/cpython/3.4 {
     inherit (darwin) CF configd;
@@ -5556,17 +5553,7 @@ in
 
   pypy27 = callPackage ../development/interpreters/python/pypy/2.7 {
     self = pypy27;
-  };
-
-  pythonFull = python2Full;
-  python2Full = python27Full;
-  python26Full = python26.override {
-    includeModules = true;
-    self = python26Full;
-  };
-  python27Full = python27.override {
-    includeModules = true;
-    self = python27Full;
+    python = python27.override{x11Support=true;};
   };
 
   python2nix = callPackage ../tools/package-management/python2nix { };
@@ -5728,9 +5715,9 @@ in
 
   augeas = callPackage ../tools/system/augeas { };
 
-  ansible = pythonPackages.ansible;
+  ansible = python2Packages.ansible;
 
-  ansible2 = pythonPackages.ansible2;
+  ansible2 = python2Packages.ansible2;
 
   antlr = callPackage ../development/tools/parsing/antlr/2.7.7.nix { };
 
@@ -5820,9 +5807,15 @@ in
     wxGTK = wxGTK30;
   };
 
-  buildbot = callPackage ../development/tools/build-managers/buildbot { };
-  buildbot-worker = callPackage ../development/tools/build-managers/buildbot/worker.nix { };
-  buildbot-plugins = callPackage ../development/tools/build-managers/buildbot/plugins.nix { };
+  buildbot = callPackage ../development/tools/build-managers/buildbot {
+    pythonPackages = python2Packages;
+  };
+  buildbot-worker = callPackage ../development/tools/build-managers/buildbot/worker.nix {
+    pythonPackages = python2Packages;
+  };
+  buildbot-plugins = callPackage ../development/tools/build-managers/buildbot/plugins.nix {
+    pythonPackages = python2Packages;
+  };
   buildbot-ui = self.buildbot.override {
     plugins = with self.buildbot-plugins; [ www ];
   };
@@ -6517,6 +6510,9 @@ in
     #      apr with db58 on freebsd (nov 2015), for unknown reasons
   };
 
+  arb = callPackage ../development/libraries/arb {};
+  arb-git = callPackage ../development/libraries/arb/git.nix {};
+
   armadillo = callPackage ../development/libraries/armadillo {};
 
   assimp = callPackage ../development/libraries/assimp { };
@@ -6597,6 +6593,8 @@ in
 
   ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
 
+  cddlib = callPackage ../development/libraries/cddlib {};
+
   cdk = callPackage ../development/libraries/cdk {};
 
   cimg = callPackage  ../development/libraries/cimg { };
@@ -6770,6 +6768,8 @@ in
 
   dxflib = callPackage ../development/libraries/dxflib {};
 
+  eclib = callPackage ../development/libraries/eclib {};
+
   eigen = callPackage ../development/libraries/eigen {};
 
   eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};
@@ -6815,6 +6815,9 @@ in
 
   fcgi = callPackage ../development/libraries/fcgi { };
 
+  fflas-ffpack = callPackage ../development/libraries/fflas-ffpack {};
+  fflas-ffpack_1 = callPackage ../development/libraries/fflas-ffpack/1.nix {};
+
   ffmpeg_0_10 = callPackage ../development/libraries/ffmpeg/0.10.nix {
     inherit (darwin.apple_sdk.frameworks) Cocoa;
   };
@@ -6872,6 +6875,8 @@ in
 
   flann = callPackage ../development/libraries/flann { };
 
+  flint = callPackage ../development/libraries/flint { };
+
   flite = callPackage ../development/libraries/flite { };
 
   fltk13 = callPackage ../development/libraries/fltk { };
@@ -6881,6 +6886,9 @@ in
 
   fmod42416 = callPackage ../development/libraries/fmod/4.24.16.nix { };
 
+  fplll = callPackage ../development/libraries/fplll {};
+  fplll_20160331 = callPackage ../development/libraries/fplll/20160331.nix {};
+
   freeimage = callPackage ../development/libraries/freeimage { };
 
   freetts = callPackage ../development/libraries/freetts { };
@@ -6966,6 +6974,8 @@ in
 
   gettext = callPackage ../development/libraries/gettext { };
 
+  gf2x = callPackage ../development/libraries/gf2x {};
+
   gd = callPackage ../development/libraries/gd {
     libtiff = null;
     libXpm = null;
@@ -6983,6 +6993,10 @@ in
 
   gio-sharp = callPackage ../development/libraries/gio-sharp { };
 
+  givaro = callPackage ../development/libraries/givaro {};
+  givaro_3 = callPackage ../development/libraries/givaro/3.nix {};
+  givaro_3_7 = callPackage ../development/libraries/givaro/3.7.nix {};
+
   icon-lang = callPackage ../development/interpreters/icon-lang { };
 
   libgit2 = callPackage ../development/libraries/git2 (
@@ -7066,10 +7080,16 @@ in
 
   #GMP ex-satellite, so better keep it near gmp
   mpfr = callPackage ../development/libraries/mpfr/default.nix { };
+  
+  mpfi = callPackage ../development/libraries/mpfi { };
+
+  # A GMP fork
+  mpir = callPackage ../development/libraries/mpir {};
 
   gobjectIntrospection = callPackage ../development/libraries/gobject-introspection {
     nixStoreDir = config.nix.storeDir or builtins.storeDir;
     inherit (darwin) cctools;
+    python = python2;
   };
 
   goocanvas = callPackage ../development/libraries/goocanvas { };
@@ -7181,7 +7201,8 @@ in
 
   gtkmathview = callPackage ../development/libraries/gtkmathview { };
 
-  glib = callPackage ../development/libraries/glib { };
+  glib = callPackage ../development/libraries/glib {
+  };
   glib-tested = glib.override { # checked version separate to break cycles
     doCheck = true;
     libffi = libffi.override { doCheck = true; };
@@ -7255,7 +7276,7 @@ in
   gts = callPackage ../development/libraries/gts { };
 
   gvfs = callPackage ../development/libraries/gvfs {
-    gnome = self.gnome2;
+    gnome = self.gnome3;
   };
 
   gwenhywfar = callPackage ../development/libraries/aqbanking/gwenhywfar.nix { };
@@ -7305,7 +7326,7 @@ in
 
   htmlcxx = callPackage ../development/libraries/htmlcxx { };
 
-  http-parser = callPackage ../development/libraries/http-parser { inherit (pythonPackages) gyp; };
+  http-parser = callPackage ../development/libraries/http-parser { };
 
   hunspell = callPackage ../development/libraries/hunspell { };
 
@@ -7340,6 +7361,8 @@ in
 
   imv = callPackage ../applications/graphics/imv/default.nix { };
 
+  iml = callPackage ../development/libraries/iml { };
+
   imlib2 = callPackage ../development/libraries/imlib2 { };
 
   imlibsetroot = callPackage ../applications/graphics/imlibsetroot { libXinerama = xorg.libXinerama; } ;
@@ -7686,6 +7709,8 @@ in
 
   libgadu = callPackage ../development/libraries/libgadu { };
 
+  libgap = callPackage ../development/libraries/libgap { };
+
   libgdata = gnome3.libgdata;
 
   libgee_0_6 = callPackage ../development/libraries/libgee/0.6.nix { };
@@ -8308,7 +8333,8 @@ in
 
   libxmi = callPackage ../development/libraries/libxmi { };
 
-  libxml2 = callPackage ../development/libraries/libxml2 { };
+  libxml2 = callPackage ../development/libraries/libxml2 {
+  };
   libxml2Python = pkgs.buildEnv { # slightly hacky
     name = "libxml2+py-${self.libxml2.version}";
     paths = with libxml2; [ dev bin py ];
@@ -9193,6 +9219,8 @@ in
 
   t1lib = callPackage ../development/libraries/t1lib { };
 
+  tachyon = callPackage ../development/libraries/tachyon {};
+
   taglib = callPackage ../development/libraries/taglib { };
   taglib_1_9 = callPackage ../development/libraries/taglib/1.9.nix { };
 
@@ -9359,9 +9387,7 @@ in
 
   vid-stab = callPackage ../development/libraries/vid-stab { };
 
-  vigra = callPackage ../development/libraries/vigra {
-    inherit (pkgs.pythonPackages) numpy;
-  };
+  vigra = callPackage ../development/libraries/vigra { };
 
   vlock = callPackage ../misc/screensavers/vlock { };
 
@@ -10143,9 +10169,7 @@ in
 
   riak = callPackage ../servers/nosql/riak/2.1.1.nix { };
 
-  influxdb = callPackage ../servers/nosql/influxdb/v0.nix { };
-
-  influxdb10 = callPackage ../servers/nosql/influxdb/v1.nix { };
+  influxdb = callPackage ../servers/nosql/influxdb { };
 
   mysql55 = callPackage ../servers/sql/mysql/5.5.x.nix {
     inherit (darwin) cctools;
@@ -10326,6 +10350,8 @@ in
 
   seyren = callPackage ../servers/monitoring/seyren { };
 
+  ruby-zoom = callPackage ../tools/text/ruby-zoom { };
+
   sensu = callPackage ../servers/monitoring/sensu {
     ruby = ruby_2_1;
   };
@@ -10409,11 +10435,12 @@ in
     inherit clangStdenv fetchurl fetchgit fetchpatch stdenv pkgconfig intltool freetype fontconfig
       libxslt expat libpng zlib perl mesa_drivers spice_protocol libunwind
       dbus libuuid openssl gperf m4 libevdev tradcpp libinput mcpp makeWrapper autoreconfHook
-      autoconf automake libtool xmlto asciidoc flex bison python mtdev pixman
+      autoconf automake libtool xmlto asciidoc flex bison mtdev pixman
       cairo epoxy;
     inherit (darwin) apple_sdk cf-private libobjc;
     bootstrap_cmds = if stdenv.isDarwin then darwin.bootstrap_cmds else null;
     mesa = mesa_noglu;
+    python = python2; # Incompatible with Python 3x
     udev = if stdenv.isLinux then udev else null;
     libdrm = if stdenv.isLinux then libdrm else null;
     fglrxCompat = config.xorg.fglrxCompat or false; # `config` because we have no `xorg.override`
@@ -10597,11 +10624,7 @@ in
 
   drbd = callPackage ../os-specific/linux/drbd { };
 
-  dstat = callPackage ../os-specific/linux/dstat {
-    # pythonFull includes the "curses" standard library module, for pretty
-    # dstat color output
-    python = pythonFull;
-  };
+  dstat = callPackage ../os-specific/linux/dstat { };
 
   libossp_uuid = callPackage ../development/libraries/libossp-uuid { };
 
@@ -12775,11 +12798,12 @@ in
   gksu = callPackage ../applications/misc/gksu { };
 
   gnuradio = callPackage ../applications/misc/gnuradio {
-    inherit (pythonPackages) lxml matplotlib numpy python pyopengl pyqt4 scipy wxPython pygtk;
+    inherit (python2Packages) cheetah lxml matplotlib numpy python pyopengl pyqt4 scipy wxPython pygtk;
     fftw = fftwFloat;
   };
 
   gnuradio-with-packages = callPackage ../applications/misc/gnuradio/wrapper.nix {
+    inherit (python2Packages) python;
     extraPackages = [ gnuradio-nacl gnuradio-osmosdr gnuradio-gsm gnuradio-ais gnuradio-rds ];
   };
 
@@ -12857,9 +12881,9 @@ in
 
   inherit (callPackages ../applications/networking/browsers/firefox {
     inherit (gnome2) libIDL;
-    inherit (pythonPackages) pysqlite;
     libpng = libpng_apng;
     enableGTK3 = false;
+    python = python2;
   }) firefox-unwrapped firefox-esr-unwrapped;
 
   firefox = wrapFirefox firefox-unwrapped { };
@@ -14677,7 +14701,7 @@ in
   };
 
   termite = callPackage ../applications/misc/termite {
-    vte = gnome3.vte-select-text;
+    vte = gnome3_20.vte-select-text;
   };
 
   tesseract = callPackage ../applications/graphics/tesseract { };
@@ -15356,9 +15380,7 @@ in
 
   angband = callPackage ../games/angband { };
 
-  anki = callPackage ../games/anki {
-    inherit (pythonPackages) wrapPython pysqlite sqlalchemy pyaudio beautifulsoup httplib2 matplotlib pyqt4;
-  };
+  anki = callPackage ../games/anki { };
 
   armagetronad = callPackage ../games/armagetronad { };
 
@@ -15978,7 +16000,9 @@ in
 
   gnome3_20 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.20 { });
 
-  gnome3 = gnome3_20;
+  gnome3_22 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.22 { });
+
+  gnome3 = gnome3_22;
 
   hsetroot = callPackage ../tools/X11/hsetroot { };
 
@@ -15990,6 +16014,8 @@ in
     kdePackagesFor
       {
         libusb = libusb1;
+        python2Packages = python2Packages;
+        inherit (python2Packages) python;
         libcanberra = libcanberra_kde;
         boost = boost155;
         kdelibs = kde5.kdelibs;
@@ -16357,6 +16383,8 @@ in
 
   metis = callPackage ../development/libraries/science/math/metis {};
 
+  nauty = callPackage ../applications/science/math/nauty {};
+
   sage = callPackage ../applications/science/math/sage { };
 
   suitesparse_4_2 = callPackage ../development/libraries/science/math/suitesparse/4.2.nix { };
@@ -16365,6 +16393,8 @@ in
 
   superlu = callPackage ../development/libraries/science/math/superlu {};
 
+  symmetrica = callPackage ../applications/science/math/symmetrica {};
+
   ipopt = callPackage ../development/libraries/science/math/ipopt { openblas = openblasCompat; };
 
   gmsh = callPackage ../applications/science/math/gmsh { };
@@ -16518,6 +16548,8 @@ in
 
   gappa = callPackage ../applications/science/logic/gappa { };
 
+  gfan = callPackage ../applications/science/math/gfan {};
+
   ginac = callPackage ../applications/science/math/ginac { };
 
   glucose = callPackage ../applications/science/logic/glucose { };
@@ -16654,11 +16686,15 @@ in
 
   geogebra = callPackage ../applications/science/math/geogebra { };
 
-  maxima = callPackage ../applications/science/math/maxima { };
+  maxima = callPackage ../applications/science/math/maxima { ecl = null; };
+  maxima-ecl = callPackage ../applications/science/math/maxima { sbcl = null; };
 
   wxmaxima = callPackage ../applications/science/math/wxmaxima { wxGTK = wxGTK30; };
 
   pari = callPackage ../applications/science/math/pari {};
+  pari_alpha = callPackage ../applications/science/math/pari/alpha.nix {};
+
+  ratpoints = callPackage ../applications/science/math/ratpoints {};
 
   calc = callPackage ../applications/science/math/calc { };
 
@@ -16669,6 +16705,9 @@ in
   };
 
   singular = callPackage ../applications/science/math/singular {};
+  libsingular = callPackage ../applications/science/math/singular {
+    asLibsingular = true;
+  };
 
   scilab = callPackage ../applications/science/math/scilab {
     withXaw3d = false;
@@ -17012,9 +17051,7 @@ in
 
   nut = callPackage ../applications/misc/nut { };
 
-  solfege = callPackage ../misc/solfege {
-      pysqlite = pkgs.pythonPackages.sqlite3;
-  };
+  solfege = callPackage ../misc/solfege { };
 
   disnix = callPackage ../tools/package-management/disnix { };
 
@@ -17423,9 +17460,7 @@ in
 
   zimg = callPackage ../development/libraries/zimg { };
 
-  zk-shell = callPackage ../applications/misc/zk-shell {
-    inherit (pythonPackages) buildPythonApplication;
-  };
+  zk-shell = callPackage ../applications/misc/zk-shell { };
 
   zuki-themes = callPackage ../misc/themes/zuki { };
 
diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix
index 2eb7fb34b4d2..c54b23853c5d 100644
--- a/pkgs/top-level/default.nix
+++ b/pkgs/top-level/default.nix
@@ -61,6 +61,35 @@ let
     inherit system bootStdenv noSysDirs config crossSystem platform lib;
   };
 
+  stdenvAdapters = self: super:
+    let res = import ../stdenv/adapters.nix self; in res // {
+      stdenvAdapters = res;
+    };
+
+  trivialBuilders = self: super:
+    (import ../build-support/trivial-builders.nix {
+      inherit lib; inherit (self) stdenv stdenvNoCC; inherit (self.xorg) lndir;
+    });
+
+  stdenvDefault = self: super: (import ./stdenv.nix topLevelArguments) {} pkgs;
+
+  allPackages = self: super:
+    let res = import ./all-packages.nix topLevelArguments res self;
+    in res;
+
+  aliases = self: super: import ./aliases.nix super;
+
+  # stdenvOverrides is used to avoid circular dependencies for building
+  # the standard build environment. This mechanism uses the override
+  # mechanism to implement some staged compilation of the stdenv.
+  #
+  # We don't want stdenv overrides in the case of cross-building, or
+  # otherwise the basic overridden packages will not be built with the
+  # crossStdenv adapter.
+  stdenvOverrides = self: super:
+    lib.optionalAttrs (crossSystem == null && super.stdenv ? overrides)
+      (super.stdenv.overrides super);
+
   # Allow packages to be overridden globally via the `packageOverrides'
   # configuration option, which must be a function that takes `pkgs'
   # as an argument and returns a set of new or overridden packages.
@@ -68,54 +97,34 @@ let
   # (un-overridden) set of packages, allowing packageOverrides
   # attributes to refer to the original attributes (e.g. "foo =
   # ... pkgs.foo ...").
-  pkgs = pkgsWithOverrides (self: config.packageOverrides or (super: {}));
-
-  # Return the complete set of packages, after applying the overrides
-  # returned by the `overrider' function (see above).  Warning: this
-  # function is very expensive!
-  pkgsWithOverrides = overrider:
-    let
-      stdenvAdapters = self: super:
-        let res = import ../stdenv/adapters.nix self; in res // {
-          stdenvAdapters = res;
-        };
-
-      trivialBuilders = self: super:
-        (import ../build-support/trivial-builders.nix {
-          inherit lib; inherit (self) stdenv stdenvNoCC; inherit (self.xorg) lndir;
-        });
-
-      stdenvDefault = self: super: (import ./stdenv.nix topLevelArguments) {} pkgs;
-
-      allPackagesArgs = topLevelArguments // { inherit pkgsWithOverrides; };
-      allPackages = self: super:
-        let res = import ./all-packages.nix allPackagesArgs res self;
-        in res;
-
-      aliases = self: super: import ./aliases.nix super;
-
-      # stdenvOverrides is used to avoid circular dependencies for building
-      # the standard build environment. This mechanism uses the override
-      # mechanism to implement some staged compilation of the stdenv.
-      #
-      # We don't want stdenv overrides in the case of cross-building, or
-      # otherwise the basic overridden packages will not be built with the
-      # crossStdenv adapter.
-      stdenvOverrides = self: super:
-        lib.optionalAttrs (crossSystem == null && super.stdenv ? overrides)
-          (super.stdenv.overrides super);
-
-      customOverrides = self: super:
-        lib.optionalAttrs (bootStdenv == null) (overrider self super);
-    in
-      lib.fix' (
-        lib.extends customOverrides (
-          lib.extends stdenvOverrides (
-            lib.extends aliases (
-              lib.extends allPackages (
-                lib.extends stdenvDefault (
-                  lib.extends trivialBuilders (
-                    lib.extends stdenvAdapters (
-                      self: {}))))))));
-in
-  pkgs
+  configOverrides = self: super:
+    lib.optionalAttrs (bootStdenv == null)
+      ((config.packageOverrides or (super: {})) super);
+
+  # The complete chain of package set builders, applied from top to bottom
+  toFix = lib.foldl' (lib.flip lib.extends) (self: {}) [
+    stdenvAdapters
+    trivialBuilders
+    stdenvDefault
+    allPackages
+    aliases
+    stdenvOverrides
+    configOverrides
+  ];
+
+  # Use `overridePackages` to easily override this package set.
+  # Warning: this function is very expensive and must not be used
+  # from within the nixpkgs repository.
+  #
+  # Example:
+  #  pkgs.overridePackages (self: super: {
+  #    foo = super.foo.override { ... };
+  #  }
+  #
+  # The result is `pkgs' where all the derivations depending on `foo'
+  # will use the new version.
+
+  # Return the complete set of packages. Warning: this function is very
+  # expensive!
+  pkgs = lib.makeExtensibleWithCustomName "overridePackages" toFix;
+in pkgs
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 578558bb11ee..caab784c8576 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6489,10 +6489,10 @@ let self = _self // overrides; _self = with self; {
   };
 
   Importer = buildPerlPackage rec {
-    name = "Importer-0.014";
+    name = "Importer-0.024";
     src = fetchurl {
       url = "mirror://cpan/authors/id/E/EX/EXODIST/${name}.tar.gz";
-      sha256 = "79b088cdead749d2c5a8cf585456cba064b4847c003a28d02d10a6cc2231b989";
+      sha256 = "1d19760ceb366b664985ace9a7ee1b54a438b1e060a5bca6eff0c6a35b07a557";
     };
     meta = {
       description = "Alternative but compatible interface to modules that export symbols";
@@ -12898,10 +12898,10 @@ let self = _self // overrides; _self = with self; {
   TestSimple = null;
 
   TestSimple13 = buildPerlPackage rec {
-    name = "Test-Simple-1.302056";
+    name = "Test-Simple-1.302062";
     src = fetchurl {
       url = "mirror://cpan/authors/id/E/EX/EXODIST/${name}.tar.gz";
-      sha256 = "7ba4d821545051f3bc2a6a3308cc43a45f242eec0121a6c85394601785f2e2e8";
+      sha256 = "6729060d4ab12e2db3a3c6d6376ee6a9fb77c0ba0308b66919365a1e8bf156ea";
     };
     meta = {
       description = "Basic utilities for writing tests";
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 6b78a039ec2e..228747f6a219 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -27,15 +27,7 @@ let
 
   buildPythonApplication = args: buildPythonPackage ({namePrefix="";} // args );
 
-  modules = python.modules or {
-    readline = null;
-    sqlite3 = null;
-    curses = null;
-    curses_panel = null;
-    crypt = null;
-  };
-
-in modules // {
+in {
 
   inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k mkPythonDerivation buildPythonPackage buildPythonApplication;
 
@@ -877,6 +869,7 @@ in modules // {
 
     propagatedBuildInputs = with self; [
       pycrypto paramiko jinja2 pyyaml httplib2 boto six
+      netaddr dns
     ] ++ optional windowsSupport pywinrm;
 
     meta = {
@@ -912,7 +905,8 @@ in modules // {
     windowsSupport = true;
 
     propagatedBuildInputs = with self; [
-      pycrypto paramiko jinja2 pyyaml httplib2 boto six readline
+      pycrypto paramiko jinja2 pyyaml httplib2 boto six
+      netaddr dns
     ] ++ optional windowsSupport pywinrm;
 
     meta = with stdenv.lib; {
@@ -1033,11 +1027,11 @@ in modules // {
   } else null;
 
   funcsigs = buildPythonPackage rec {
-    name = "funcsigs-0.4";
+    name = "funcsigs-1.0.2";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/f/funcsigs/${name}.tar.gz";
-      sha256 = "d83ce6df0b0ea6618700fe1db353526391a8a3ada1b7aba52fed7a61da772033";
+      sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
     };
 
     buildInputs = with self; [
@@ -1506,7 +1500,7 @@ in modules // {
         url = "mirror://pypi/a/aws-shell/aws-shell-${version}.tar.gz";
       };
     propagatedBuildInputs = with self; [
-      configobj prompt_toolkit awscli boto3 pygments sqlite3 mock pytest
+      configobj prompt_toolkit awscli boto3 pygments mock pytest
       pytestcov unittest2 tox
     ];
 
@@ -1757,6 +1751,25 @@ in modules // {
     };
   };
 
+  backports_functools_lru_cache = buildPythonPackage rec {
+    name = "backports.functools_lru_cache-${version}";
+    version = "1.3";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/b/backports_functools_lru_cache/${name}.tar.gz";
+      sha256 = "444a21bcec4ae177da554321f81a78dc879eaa8f6ea9920cb904830585d31e95";
+    };
+
+    buildInputs = with self; [ setuptools_scm ];
+    doCheck = false; # No proper test
+
+    meta = {
+      description = "Backport of functools.lru_cache";
+      homepage = https://github.com/jaraco/backports.functools_lru_cache;
+      license = licenses.mit;
+    };
+  };
+
   backports_shutil_get_terminal_size = if !(pythonOlder "3.3") then null else buildPythonPackage rec {
     name = "backports.shutil_get_terminal_size-${version}";
     version = "1.0.0";
@@ -2042,7 +2055,7 @@ in modules // {
       sha256 = "0grid93yz6i6jb2zggrqncp5awdf7qi88j5y2k7dq0k9r6b8zydw";
     };
 
-    propagatedBuildInputs = with stdenv.lib; with pkgs; [ modules.curses zlib xz ncompress gzip bzip2 gnutar p7zip cabextract lzma self.pycrypto ]
+    propagatedBuildInputs = with stdenv.lib; with pkgs; [ zlib xz ncompress gzip bzip2 gnutar p7zip cabextract lzma self.pycrypto ]
       ++ optional visualizationSupport pyqtgraph;
 
     meta = with stdenv.lib; {
@@ -2603,7 +2616,7 @@ in modules // {
       sha256 = "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb";
     };
 
-    buildInputs = with self; [ hypothesis sqlite3 ];
+    buildInputs = with self; [ hypothesis ];
 
     propagatedBuildInputs = with self; [ chardet ];
 
@@ -2673,11 +2686,11 @@ in modules // {
 
   blaze = buildPythonPackage rec {
     name = "blaze-${version}";
-    version = "0.10.2";
+    version = "0.11.0";
 
     src = pkgs.fetchurl {
-      url = "mirror://pypi/b/blaze/${name}.tar.gz";
-      sha256 = "16m1nzs5gzwa62pwybjsxgbdpd9jy10rhs3c3niacyf6aa6hr9jh";
+      url = "https://github.com/blaze/blaze/archive/${version}.tar.gz";
+      sha256 = "07zrrxkmdqk84xvdmp29859zcfzlpx5pz6g62l28nqp6n6a7yq9a";
     };
 
     buildInputs = with self; [ pytest ];
@@ -2807,7 +2820,7 @@ in modules // {
        sha256 = "1ilf58qq7sazmcgg4f1wswbhcn2gb8qbbrpgm6gf0j2lbm60gabl";
      };
 
-     propagatedBuildInputs = with self; [ modules.curses pygments ];
+     propagatedBuildInputs = with self; [ pygments ];
      doCheck = false;
 
      meta = {
@@ -2848,11 +2861,11 @@ in modules // {
 
   bokeh = buildPythonPackage rec {
     name = "bokeh-${version}";
-    version = "0.12.1";
+    version = "0.12.3";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/b/bokeh/${name}.tar.gz";
-      sha256 = "06d3ed14308f550376d5b0c7e9f2bacb3ff5bbcceefd7f6369d070de71dfa563";
+      sha256 = "e138941b62f59bc48bc5b8d249e90c03fed31c1d5abe47ab2ce9e4c83202f73c";
     };
 
     disabled = isPyPy;
@@ -2869,7 +2882,6 @@ in modules // {
       werkzeug
       itsdangerous
       dateutil
-      futures
       requests2
       six
       pygments
@@ -2880,6 +2892,7 @@ in modules // {
       tornado
       colorama
       ]
+      ++ optionals ( !isPy3k ) [ futures ]
       ++ optionals ( isPy26 ) [ argparse ]
       ++ optionals ( !isPy3k && !isPyPy ) [ websocket_client ]
       ++ optionals ( !isPyPy ) [ numpy pandas greenlet ];
@@ -3138,11 +3151,11 @@ in modules // {
 
   devpi-common = buildPythonPackage rec {
     name = "devpi-common";
-    version = "2.0.8";
+    version = "3.0.1";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/d/devpi-common/devpi-common-${version}.tar.gz";
-      sha256 = "a059c4099002d4af8f3ccfc8a9f4bf133b20ea404049b21a31fc1003e1d79452";
+      sha256 = "0l3a7iyk596x6pvzg7604lzzi012qszr804fqn6f517zcy1xz23j";
     };
 
     propagatedBuildInputs = [ self.requests2 self.py ];
@@ -3151,7 +3164,7 @@ in modules // {
       homepage = https://bitbucket.org/hpk42/devpi;
       description = "Utilities jointly used by devpi-server and devpi-client";
       license = licenses.mit;
-      maintainers = with maintainers; [ lewo ];
+      maintainers = with maintainers; [ lewo makefu ];
     };
   };
 
@@ -3993,7 +4006,6 @@ in modules // {
 
     propagatedBuildInputs = with self; [
       pyparsing
-      modules.readline
       urwid
     ];
 
@@ -4040,6 +4052,7 @@ in modules // {
       homepage = https://github.com/cablehead/python-consul;
       license = licenses.mit;
       maintainers = with maintainers; [ desiderius ];
+      broken = true;
     };
   });
 
@@ -4164,9 +4177,16 @@ in modules // {
     # For testing
     nativeBuildInputs = with self; [ numpy pkgs.ncurses ];
 
+    # cython's testsuite requires npy_isinf to return sign of the infinity, but
+    # a C99 conformant is only required to return a non zero value
+    patches = [ ../development/python-modules/cython_test.patch ];
+
+    # cython's testsuite is not working very well with libc++
+    # We are however optimistic about things outside of testsuite still working
     checkPhase = ''
       export HOME="$NIX_BUILD_TOP"
-      ${python.interpreter} runtests.py
+      ${python.interpreter} runtests.py \
+        ${if stdenv.cc.isClang or false then ''--exclude="(cpdef_extern_func|libcpp_algo)"'' else ""}
     '';
 
     meta = {
@@ -4209,7 +4229,7 @@ in modules // {
     name = "cryptacular-1.4.1";
 
     buildInputs = with self; [ coverage nose ];
-    propagatedBuildInputs = with self; [ pbkdf2 modules.crypt ];
+    propagatedBuildInputs = with self; [ pbkdf2 ];
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/c/cryptacular/${name}.tar.gz";
@@ -4237,7 +4257,7 @@ in modules // {
     buildInputs = [ pkgs.openssl self.pretend self.cryptography_vectors
                     self.iso8601 self.pyasn1 self.pytest_29 self.py self.hypothesis self.pytz ]
                ++ optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.Security;
-    propagatedBuildInputs = with self; [ six idna ipaddress pyasn1 cffi pyasn1-modules modules.sqlite3 pytz ]
+    propagatedBuildInputs = with self; [ six idna ipaddress pyasn1 cffi pyasn1-modules pytz ]
      ++ optional (pythonOlder "3.4") self.enum34;
 
     # IOKit's dependencies are inconsistent between OSX versions, so this is the best we
@@ -5454,7 +5474,7 @@ in modules // {
       sha256 = "671969d00719fa3e80476b128dc9232025926884d0110d4d235abdd9c3508fc0";
     };
 
-    buildInputs = with self; [ mock sqlite3 ];
+    buildInputs = with self; [ mock ];
 
     propagatedBuildInputs = with self; [ self.six requests2 ];
 
@@ -5701,7 +5721,7 @@ in modules // {
       make -f Makefile.prep synctus/ddar_pb2.py
     '';
 
-    propagatedBuildInputs = with self; [ protobuf modules.sqlite3 ];
+    propagatedBuildInputs = with self; [ protobuf ];
 
     meta = {
       description = "Unix de-duplicating archiver";
@@ -6258,14 +6278,17 @@ in modules // {
     };
   };
 
-  easy-process = buildPythonPackage rec {
-    name = "EasyProcess-0.1.9";
+  EasyProcess = buildPythonPackage rec {
+    name = "EasyProcess-0.2.3";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/E/EasyProcess/${name}.tar.gz";
-      sha256 = "c9980c0b0eeab97969305d8829bed966a3e28a77284e4f45a9b38fb23ce83633";
+      sha256 = "94e241cadc9a46f55b5c06000df85618849602e7e1865b8de87576b90a22e61f";
     };
 
+    # No tests
+    doCheck = false;
+
     meta = {
       description = "Easy to use python subprocess interface";
       homepage = "https://github.com/ponty/EasyProcess";
@@ -6428,7 +6451,6 @@ in modules // {
       pymongo_2_9_1
       simplejson
       werkzeug
-
     ];
 
     # tests call a running mongodb instance
@@ -6643,7 +6665,7 @@ in modules // {
       sha256 = "105swvzshgn3g6bjwk67xd8pslnhpxwa63mdsw6cl4c7cjp2blx9";
     };
 
-    propagatedBuildInputs = with self; [ python_fedora modules.sqlite3 pyopenssl ];
+    propagatedBuildInputs = with self; [ python_fedora pyopenssl ];
     postInstall = "mv $out/bin/fedpkg $out/bin/fedora-cert-fedpkg";
     doCheck = false;
   };
@@ -6822,7 +6844,7 @@ in modules // {
       repo = "GateOne";
       sha256 = "1ghrawlqwv7wnck6alqpbwy9mpv0y21cw2jirrvsxaracmvgk6vv";
     };
-    propagatedBuildInputs = with self; [tornado futures html5lib readline pkgs.openssl pkgs.cacert pkgs.openssh];
+    propagatedBuildInputs = with self; [tornado futures html5lib pkgs.openssl pkgs.cacert pkgs.openssh];
     meta = {
       homepage = https://liftoffsoftware.com/;
       description = "GateOne is a web-based terminal emulator and SSH client";
@@ -6863,6 +6885,7 @@ in modules // {
       homepage = "https://cloud.google.com/compute/docs/gcutil/";
       license = licenses.asl20;
       maintainers = with maintainers; [ phreedom ];
+      broken = true;
     };
   };
 
@@ -7486,7 +7509,6 @@ in modules // {
       pyyaml
       redis
       six
-      modules.sqlite3
       pkgs.zlib
     ];
 
@@ -7880,8 +7902,7 @@ in modules // {
       sha256 = "1dnmnkc21zdfaypskbpvkwl0wpkpn0nagj1fc338w64mbxrk8ny7";
     };
 
-    propagatedBuildInputs = with self;
-      [
+    propagatedBuildInputs = with self; [
         apipkg
         bottle
         gevent
@@ -7896,7 +7917,7 @@ in modules // {
         simplejson
         sqlite3dbm
         timelib
-      ] ++ optionals (!isPy3k) [ modules.sqlite3 ];
+    ];
 
     meta = {
       description = "Library for parsing MediaWiki articles and converting them to different output formats";
@@ -9521,7 +9542,7 @@ in modules // {
     };
 
     propagatedBuildInputs = with self; [
-      pyGtkGlade pkgs.libtorrentRasterbar_1_0 twisted Mako chardet pyxdg self.pyopenssl modules.curses service-identity
+      pyGtkGlade pkgs.libtorrentRasterbar_1_0 twisted Mako chardet pyxdg self.pyopenssl service-identity
     ];
 
     nativeBuildInputs = [ pkgs.intltool ];
@@ -9765,7 +9786,7 @@ in modules // {
     doCheck = false;
 
     # Requires Django >= 1.8
-    buildInputs = with self ; [ sqlite3 django ];
+    buildInputs = with self; [ django ];
 
     meta = {
       description = "Django extension that provides database and form color fields";
@@ -9864,7 +9885,7 @@ in modules // {
       sha256 = "1m7y3brk3697hr2cvkzl8dry4pp7wkmhvxmf8db1ardz1r9d8895";
     };
 
-    buildInputs = with self ; [ pytestrunner pytestdjango django_environ mock sqlite3 ];
+    buildInputs = with self ; [ pytestrunner pytestdjango django_environ mock ];
     propagatedBuildInputs = with self ; [ django six ];
 
     checkPhase = ''
@@ -11640,6 +11661,9 @@ in modules // {
       sha256 = "07rqwfpbv13mk6gg8mf0bmvcf6siyffjpgai1xd8ky7r801j4xb4";
     };
 
+    # SyntaxError in tests.
+    disabled = isPy3k;
+
     propagatedBuildInputs = with self; [ gevent ];
 
   };
@@ -11735,7 +11759,7 @@ in modules // {
     doCheck = false;
 
     buildInputs = with self; [ unittest2 ];
-    propagatedBuildInputs = with self; [ modules.curses modules.curses_panel psutil setuptools bottle batinfo pkgs.hddtemp pysnmp ];
+    propagatedBuildInputs = with self; [ psutil setuptools bottle batinfo pkgs.hddtemp pysnmp ];
 
     preConfigure = ''
       sed -i 's/data_files\.append((conf_path/data_files.append(("etc\/glances"/' setup.py;
@@ -11936,6 +11960,8 @@ in modules // {
       ../development/python-modules/gyp/no-darwin-cflags.patch
     ];
 
+    disabled = isPy3k;
+
     meta = {
       description = "A tool to generate native build files";
       homepage = https://chromium.googlesource.com/external/gyp/+/master/README.md;
@@ -12177,7 +12203,7 @@ in modules // {
     };
 
     buildInputs = with self; [ flake8 pytest flaky ];
-    propagatedBuildInputs = with self; ([ uncompyle6 ] ++ optionals isPy27 [ enum34 modules.sqlite3 ]);
+    propagatedBuildInputs = with self; ([ uncompyle6 ] ++ optionals isPy27 [ enum34  ]);
 
     # https://github.com/DRMacIver/hypothesis/issues/300
     checkPhase = ''
@@ -12198,6 +12224,9 @@ in modules // {
       url = "mirror://pypi/c/colored/${name}.tar.gz";
       sha256 = "1r1vsypk8v7az82d66bidbxlndx1h7xd4m43hpg1a6hsjr30wrm3";
     };
+
+    # No proper test suite
+    doCheck = false;
   };
 
 
@@ -12312,6 +12341,32 @@ in modules // {
 
   icdiff = callPackage ../tools/text/icdiff {};
 
+  imageio = buildPythonPackage rec {
+    name = "imageio-${version}";
+    version = "1.6";
+
+    src = pkgs.fetchurl {
+      url = "https://github.com/imageio/imageio/archive/v${version}.tar.gz";
+      sha256 = "195snkk3fsbjqd5g1cfsd9alzs5q45gdbi2ka9ph4yxqb31ijrbv";
+    };
+
+    buildInputs = with self; [ pytest ];
+    propagatedBuildInputs = with self; [ numpy ];
+
+    checkPhase = ''
+      py.test
+    '';
+
+    # Tries to write in /var/tmp/.imageio
+    doCheck = false;
+
+    meta = {
+      description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats";
+      homepage = http://imageio.github.io/;
+      license = licenses.bsd2;
+    };
+  };
+
   importlib = buildPythonPackage rec {
     name = "importlib-1.0.2";
 
@@ -12373,6 +12428,9 @@ in modules // {
       sha256 = "07mxp4mla7fwfc032f3mxrhjarnhkjqdxxibf9ba87c93z3dq8jj";
     };
 
+    # requires network
+    doCheck = false;
+
     buildInputs = with self; [ html5lib ];
     propagatedBuildInputs = (with self; [ six beautifulsoup4 ])
                          ++ (with pkgs; [ ffmpeg swftools rtmpdump ]);
@@ -12527,7 +12585,7 @@ in modules // {
 
     propagatedBuildInputs = with self;
       [ backports_shutil_get_terminal_size decorator pickleshare prompt_toolkit
-      simplegeneric traitlets requests2 pathlib2 pexpect sqlite3 ]
+      simplegeneric traitlets requests2 pathlib2 pexpect ]
       ++ optionals stdenv.isDarwin [appnope];
 
     LC_ALL="en_US.UTF-8";
@@ -12858,7 +12916,7 @@ in modules // {
     };
 
     propagatedBuildInputs = with self; [
-      pytz six tzlocal keyring modules.readline argparse dateutil_1_5
+      pytz six tzlocal keyring argparse dateutil_1_5
       parsedatetime
     ];
 
@@ -13267,7 +13325,7 @@ in modules // {
       sed -i 's/version=version/version="${version}"/' setup.py
     '';
     buildInputs = with self; [ pkgs.git ];
-    propagatedBuildInputs = with self; [ modules.sqlite3 ];
+    propagatedBuildInputs = with self; [  ];
 
     doCheck = false;
 
@@ -13436,12 +13494,15 @@ in modules // {
       url = "https://github.com/openstack/pylockfile/archive/${version}.tar.gz";
     };
 
-    doCheck = true;
     OSLO_PACKAGE_VERSION = "${version}";
     buildInputs = with self; [
       pbr nose sphinx_1_2
     ];
 
+    checkPhase = ''
+      nosetests
+    '';
+
     meta = {
       homepage = http://launchpad.net/pylockfile;
       description = "Platform-independent advisory file locking capability for Python applications";
@@ -13660,6 +13721,38 @@ in modules // {
     };
   };
 
+  markdown-macros = buildPythonPackage rec {
+    name = "markdown-macros-${version}";
+    version = "0.1.2";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/m/markdown-macros/${name}.tar.gz";
+      sha256 = "1lzvrb7nci22yp21ab2qqc9p0fhkazqj29vw0wln2r4ckb2nbawv";
+    };
+
+    patches = [
+      # Fixes a bug with markdown>2.4
+      (pkgs.fetchpatch {
+        url = "https://github.com/wnielson/markdown-macros/pull/1.patch";
+        sha256 = "17njbgq2srzkf03ar6yn92frnsbda3g45cdi529fdh0x8mmyxci0";
+      })
+    ];
+
+    prePatch = ''
+      substituteInPlace setup.py --replace "distribute" "setuptools"
+    '';
+
+    propagatedBuildInputs = with self; [ markdown ];
+
+    doCheck = false;
+
+    meta = {
+      description = "An extension for python-markdown that makes writing trac-like macros easy";
+      homepage = https://github.com/wnielson/markdown-macros;
+      license = licenses.mit;
+      maintainers = [ maintainers.abigailbuccaneer ];
+    };
+  };
 
   mathics = buildPythonPackage rec {
     name = "mathics-${version}";
@@ -13693,9 +13786,6 @@ in modules // {
       dateutil
       colorama
       six
-
-      readline
-      sqlite3
     ];
 
     meta = {
@@ -13867,7 +13957,7 @@ in modules // {
     buildInputs = with self; [ pyflakes pep8 ];
     propagatedBuildInputs = with self; [
       django_1_6 filebrowser_safe grappelli_safe bleach tzlocal beautifulsoup4
-      requests2 requests_oauthlib future pillow modules.sqlite3
+      requests2 requests_oauthlib future pillow
     ];
 
     # Tests Fail Due to Syntax Warning, Fixed for v3.1.11+
@@ -13924,6 +14014,26 @@ in modules // {
     };
   };
 
+  moviepy = buildPythonPackage rec {
+    name = "moviepy-${version}";
+    version = "0.2.2.11";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/m/moviepy/${name}.tar.gz";
+      sha256 = "d937d817e534efc54eaee2fc4c0e70b48fcd81e1528cd6425f22178704681dc3";
+    };
+
+    # No tests
+    doCheck = false;
+    propagatedBuildInputs = with self; [ numpy decorator imageio tqdm ];
+
+    meta = {
+      description = "Video editing with Python";
+      homepage = http://zulko.github.io/moviepy/;
+      license = licenses.mit;
+    };
+  };
+
   munch = buildPythonPackage rec {
     name = "munch-${version}";
     version = "2.0.4";
@@ -14006,7 +14116,7 @@ in modules // {
 
     buildInputs = with self; [
       pkgs.libjpeg pkgs.freetype pkgs.zlib pkgs.glibcLocales
-      pillow twitter pyfiglet requests2 arrow dateutil modules.readline pysocks
+      pillow twitter pyfiglet requests2 arrow dateutil pysocks
       pocket
     ];
 
@@ -14081,15 +14191,16 @@ in modules // {
       description = ''Man-in-the-middle proxy'';
       homepage = "http://mitmproxy.org/";
       license = licenses.mit;
+      broken = true;
     };
   };
 
   mock = buildPythonPackage (rec {
-    name = "mock-1.3.0";
+    name = "mock-2.0.0";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/m/mock/${name}.tar.gz";
-      sha256 = "1xm0xkaz8d8d26kdk09f2n9vn543ssd03vmpkqlmgq3crjz7s90y";
+      sha256 = "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i";
     };
 
     buildInputs = with self; [ unittest2 ];
@@ -14320,7 +14431,7 @@ in modules // {
 
     LC_ALL="en_US.UTF-8";
 
-    propagatedBuildInputs = with self; [ argparse jinja2 six modules.readline ] ++
+    propagatedBuildInputs = with self; [ argparse jinja2 six ] ++
                             (optionals isPy26 [ importlib ordereddict ]);
 
     meta = {
@@ -15038,7 +15149,6 @@ in modules // {
     propagatedBuildInputs = with self; [
       numpy
       nose
-      modules.sqlite3
     ];
 
     # Failing tests
@@ -15430,12 +15540,15 @@ in modules // {
     name = "ntplib-0.3.3";
     src = pkgs.fetchurl {
       url = mirror://pypi/n/ntplib/ntplib-0.3.3.tar.gz;
-
       sha256 = "c4621b64d50be9461d9bd9a71ba0b4af06fbbf818bbd483752d95c1a4e273ede";
     };
 
+    # Require networking
+    doCheck = false;
+
     meta = {
       description = "Python NTP library";
+      license = licenses.mit;
     };
   };
 
@@ -15721,7 +15834,7 @@ in modules // {
       sha256 = "1v49sym6mrci9dxy0a7cpbp4bv6fg2ijj6rwk4wzg18c2x4qzkhn";
     };
 
-    propagatedBuildInputs = with self; [ curses livestreamer ];
+    propagatedBuildInputs = with self; [ livestreamer ];
 
     meta = {
       homepage = https://github.com/gapato/livestreamer-curses;
@@ -17384,7 +17497,6 @@ in modules // {
       sqlalchemy
       lxml
       html5lib
-      modules.sqlite3
       beautifulsoup4
       openpyxl
       tables
@@ -17882,7 +17994,12 @@ in modules // {
       url = "https://github.com/GreenSteam/pep257/archive/${version}.tar.gz";
       sha256 = "0v8aq0xzsa7clazszxl42904c3jpq69lg8a5hg754bqcqf72hfrn";
     };
-    buildInputs = with self; [ pytest ];
+    LC_ALL="en_US.UTF-8";
+    buildInputs = with self; [ pkgs.glibcLocales pytest ];
+
+    checkPhase = ''
+      py.test
+    '';
 
     meta = {
       homepage = https://github.com/GreenSteam/pep257/;
@@ -17902,7 +18019,7 @@ in modules // {
       sha256 = "169s5mhw1s60qbsd6pkf9bb2x6wfgx8hn8nw9d4qgc68qnnpp2cj";
     };
 
-    propagatedBuildInputs = with self; [ modules.curses ];
+    propagatedBuildInputs = with self; [ ];
 
     meta = {
       homepage = https://github.com/mooz/percol;
@@ -18984,7 +19101,7 @@ in modules // {
 
     disabled = isPy3k || isPyPy;
 
-    propagatedBuildInputs = with self; [ sqlite3 vobject lxml requests urwid pyxdg ];
+    propagatedBuildInputs = with self; [ vobject lxml requests urwid pyxdg ];
 
     meta = {
       description = "Command-line interface carddav client";
@@ -20223,7 +20340,7 @@ in modules // {
       sha256 = "0jgyhkkq36wn36rymn4jiyqh2vdslmradq4a2mjkxfbk2cz6wpi5";
     };
 
-    buildInputs = with self; [ six pytest hypothesis ] ++ optional (!isPy3k) modules.sqlite3;
+    buildInputs = with self; [ six pytest hypothesis ];
 
     checkPhase = ''
       py.test
@@ -20609,6 +20726,13 @@ in modules // {
     LC_ALL = "en_US.UTF-8";
     buildInputs = [ pkgs.glibcLocales ];
 
+    checkPhase = ''
+      ${python.interpreter} -m unittest discover -s Tests
+    '';
+
+    # Tests broken on Python 3.x
+    doCheck = !(isPy3k);
+
     meta = {
       description = "A Pure-Python library built as a PDF toolkit";
       homepage = "http://mstamy2.github.com/PyPDF2/";
@@ -21221,7 +21345,7 @@ in modules // {
     };
 
     buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ modules.sqlite3 six ];
+    propagatedBuildInputs = with self; [ six ];
 
     checkPhase = "nosetests";
 
@@ -21743,7 +21867,7 @@ in modules // {
 
     propagatedBuildInputs = with self;
       [ django_1_6 recaptcha_client pytz memcached dateutil_1_5 paramiko flup
-        pygments djblets django_evolution pycrypto modules.sqlite3 pysvn pillow
+        pygments djblets django_evolution pycrypto pysvn pillow
         psycopg2 django-haystack python_mimeparse markdown django-multiselectfield
       ];
   };
@@ -21911,7 +22035,7 @@ in modules // {
       sha256 = "1lf5f4x80f7d983bmkx12sxcizzii21kghs8kf63a1mj022a5x5j";
     };
 
-    propagatedBuildInputs = with self; [ pygments wxPython modules.sqlite3 ];
+    propagatedBuildInputs = with self; [ pygments wxPython ];
 
     # ride_postinstall.py checks that needed deps are installed and creates a
     # desktop shortcut. We don't really need it and it clutters up bin/ so
@@ -21943,7 +22067,7 @@ in modules // {
 
     disabled = isPy3k;
 
-    propagatedBuildInputs = with self; [ pkgs.root readline numpy matplotlib ];
+    propagatedBuildInputs = with self; [ pkgs.root numpy matplotlib ];
 
     meta = {
       homepage = "http://www.rootpy.org";
@@ -22015,7 +22139,7 @@ in modules // {
       url = "mirror://pypi/r/ropper/${name}.tar.gz";
       sha256 = "1676e07947a19df9d17002307a7555c2647a4224d6f2869949e8fc4bd18f2e87";
     };
-    propagatedBuildInputs = with self; [ capstone filebytes readline ];
+    propagatedBuildInputs = with self; [ capstone filebytes ];
     meta = with pkgs.stdenv.lib; {
       homepage = "https://scoding.de/ropper/";
       license = licenses.gpl2;
@@ -22341,8 +22465,6 @@ in modules // {
       sha256 = "1bqmp0xglkndrqgmybpwmzkv462mir8qlkfwsxwbvvzh9li3ndn5";
     };
 
-    propagatedBuildInputs = [ modules.readline ];
-
     meta = {
       description = "Powerful interactive network packet manipulation program";
       homepage = http://www.secdev.org/projects/scapy/;
@@ -22811,8 +22933,6 @@ in modules // {
       sha256 = "4721607e0b817b89efdba7e79cab881a03164b94777f4cf796ad5dd59a7612c5";
     };
 
-    buildInputs = with self; [ modules.sqlite3 ];
-
     meta = {
       description = "sqlite-backed dictionary";
       homepage = "http://github.com/Yelp/sqlite3dbm";
@@ -22845,8 +22965,6 @@ in modules // {
       sha256 = "0g8sjky8anrmcisc697b5qndp88qmay35kng9sz9x46wd3agm9pa";
     };
 
-		propagatedBuildInputs = with self; [ modules.sqlite3 ];
-
     meta = with pkgs.stdenv.lib; {
       homepage = "http://sqlmap.org";
       license = licenses.gpl2;
@@ -23307,7 +23425,7 @@ in modules // {
     # 4 failing tests, 2to3
     doCheck = false;
 
-    propagatedBuildInputs = with self; [ modules.curses ];
+    propagatedBuildInputs = with self; [ ];
 
     meta = {
       maintainers = with maintainers; [ domenkozar ];
@@ -23685,7 +23803,6 @@ in modules // {
       sha256 = "94933b64e2fe0807da0612c574a021c0dac28c7bd3c4a23723ae5a39ea8f3d04";
     };
     patches = [];
-    disabled = isPy35;
     # Tests requires Pygments >=2.0.2 which isn't worth keeping around for this:
     doCheck = false;
   };
@@ -23903,7 +24020,6 @@ in modules // {
 
     buildInputs = with self; [ nose mock ]
       ++ stdenv.lib.optional doCheck pysqlite;
-    propagatedBuildInputs = with self; [ modules.sqlite3 ];
 
     checkPhase = ''
       ${python.executable} sqla_nose.py
@@ -23929,7 +24045,6 @@ in modules // {
 
     buildInputs = with self; [ pytest mock pytest_xdist ]
       ++ stdenv.lib.optional (!isPy3k) pysqlite;
-    propagatedBuildInputs = with self; [ modules.sqlite3 ];
 
     # Test-only dependency pysqlite doesn't build on Python 3. This isn't an
     # acceptable reason to make all dependents unavailable on Python 3 as well
@@ -24694,6 +24809,27 @@ in modules // {
     };
   };
 
+  # Tkinter/tkinter is part of the Python standard library.
+  # The Python interpreters in Nixpkgs come without tkinter by default.
+  # To make the module available, we make it available as any other
+  # Python package.
+  tkinter = let
+    py = python.override{x11Support=true;};
+  in mkPythonDerivation rec {
+    name = "tkinter-${python.version}";
+    src = py;
+
+    disabled = isPy26 || isPyPy;
+
+    installPhase = ''
+      mkdir -p $out/${py.sitePackages}
+      ls -Al lib/${py.libPrefix}/lib-dynload/ | grep tkinter
+      mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
+    '';
+
+    inherit (py) meta;
+  };
+
   tlslite = buildPythonPackage rec {
     name = "tlslite-${version}";
     version = "0.4.8";
@@ -24858,7 +24994,7 @@ in modules // {
 
     PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
 
-    propagatedBuildInputs = with self; [ genshi setuptools modules.sqlite3 ];
+    propagatedBuildInputs = with self; [ genshi ];
 
     meta = {
       description = "Enhanced wiki and issue tracking system for software development projects";
@@ -25416,7 +25552,7 @@ in modules // {
   virtual-display = buildPythonPackage rec {
     name = "PyVirtualDisplay-0.1.5";
 
-    propagatedBuildInputs = with self; [ easy-process ];
+    propagatedBuildInputs = with self; [ EasyProcess ];
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/P/PyVirtualDisplay/${name}.tar.gz";
@@ -25443,7 +25579,7 @@ in modules // {
 
     patches = [ ../development/python-modules/virtualenv-change-prefix.patch ];
 
-    propagatedBuildInputs = with self; [ modules.readline modules.sqlite3 modules.curses ];
+    propagatedBuildInputs = with self; [ ];
 
     # Tarball doesn't contain tests
     doCheck = false;
@@ -25864,7 +26000,7 @@ in modules // {
       sha256 = "e03dd26ea694b877a2b3b7b4dcca8e79420e7f346abab34292bff43d992a8cc5";
     };
 
-    buildInputs = with self; [ pytest modules.sqlite3 ];
+    buildInputs = with self; [ pytest ];
     propagatedBuildInputs = with self; [ feedparser pytz lxml praw pyenchant pygeoip backports_ssl_match_hostname ];
     checkPhase = ''
       py.test test
@@ -26906,7 +27042,7 @@ in modules // {
     };
 
     buildInputs = with self; [ unittest2 nose mock ];
-    propagatedBuildInputs = with self; [ modules.curses libarchive ];
+    propagatedBuildInputs = with self; [ libarchive ];
 
     # tests are still failing
     doCheck = false;
@@ -27448,7 +27584,7 @@ in modules // {
       sha256 = "472a4403fd5b5364939aee10e78f171b1489e5f6bfe6f150ed9cae8476410114";
     };
 
-    propagatedBuildInputs = with self; [ django_1_5 django_tagging modules.sqlite3 whisper pycairo ldap memcached ];
+    propagatedBuildInputs = with self; [ django_1_5 django_tagging whisper pycairo ldap memcached ];
 
     postInstall = ''
       wrapProgram $out/bin/run-graphite-devel-server.py \
@@ -28239,6 +28375,18 @@ in modules // {
     ];
   };
 
+  pynac = buildPythonPackage rec {
+    name = "pynac-${version}";
+    version = "0.2";
+
+    src = pkgs.fetchurl {
+      url = "mirror://sourceforge/project/pynac/pynac/pynac-0.2/pynac-0.2.tar.gz";
+      sha256 = "0avzqqcxl54karjmla9jbsyid98mva36lxahwmrsx5h40ys2ggxp";
+    };
+
+    propagatedBuildInputs = with self; [];
+  };
+
   pymacaroons-pynacl = buildPythonPackage rec {
     name = "pymacaroons-pynacl-${version}";
     version = "0.9.3";
@@ -28343,6 +28491,7 @@ in modules // {
       description = "A smart imaging service";
       homepage = https://github.com/globocom/thumbor/wiki;
       license = licenses.mit;
+      broken = true;
     };
   };
 
@@ -28568,14 +28717,22 @@ in modules // {
 
   ofxtools = buildPythonPackage rec {
     name = "ofxtools-0.3.8";
-	src = pkgs.fetchurl {
-	  url = "mirror://pypi/o/ofxtools/${name}.tar.gz";
-	  sha256 = "88f289a60f4312a1599c38a8fb3216e2b46d10cc34476f9a16a33ac8aac7ec35";
-	};
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/o/ofxtools/${name}.tar.gz";
+      sha256 = "88f289a60f4312a1599c38a8fb3216e2b46d10cc34476f9a16a33ac8aac7ec35";
+    };
+
+    checkPhase = ''
+      ${python.interpreter} -m unittest discover -s ofxtools
+    '';
+
+    buildInputs = with self; [ sqlalchemy ];
+
     meta = {
       homepage = "https://github.com/csingley/ofxtools";
       description = "Library for working with Open Financial Exchange (OFX) formatted data used by financial institutions";
       license = licenses.mit;
+      broken = true;
     };
   };
 
@@ -30090,6 +30247,41 @@ in modules // {
     };
   };
 
+  tensorflowCuDNN = buildPythonPackage rec {
+    name = "tensorflow";
+    version = "0.11.0rc0";
+    format = "wheel";
+
+    src = pkgs.fetchurl {
+      url = "https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-${version}-cp27-none-linux_x86_64.whl";
+      sha256 = "1r8zlz95sw7bnjzg5zdbpa9dj8wmp8cvvgyl9sv3amsscagnnfj5";
+    };
+
+    buildInputs = with self; [ pkgs.swig ];
+    propagatedBuildInputs = with self; [ numpy six protobuf3_0 pkgs.cudatoolkit75 pkgs.cudnn5_cudatoolkit75 pkgs.gcc49 self.mock ];
+
+    # Note that we need to run *after* the fixup phase because the
+    # libraries are loaded at runtime. If we run in preFixup then
+    # patchelf --shrink-rpath will remove the cuda libraries.
+    postFixup = let rpath = stdenv.lib.makeLibraryPath [
+      pkgs.gcc49.cc.lib
+      pkgs.zlib pkgs.cudatoolkit75
+      pkgs.cudnn5_cudatoolkit75
+      pkgs.linuxPackages.nvidia_x11
+    ]; in ''
+      find $out -name '*.so' -exec patchelf --set-rpath "${rpath}" {} \;
+    '';
+
+    doCheck = false;
+
+    meta = {
+      description = "TensorFlow helps the tensors flow (no gpu support)";
+      homepage = http://tensorflow.org;
+      license = licenses.asl20;
+      platforms   = platforms.linux;
+    };
+  };
+
   tflearn = buildPythonPackage rec {
     name = "tflearn-0.2.1";
 
@@ -30401,6 +30593,8 @@ in modules // {
       sha256 = "08n7vxdbsl0637b1ap2x3rg698d2as0wzvvpx05dzkrdgsgxrx3g";
     };
 
+    propagatedBuildInputs = with self; [ backports_functools_lru_cache ];
+
     doCheck = false;
 
     buildInputs = with self; [ setuptools_scm ];
diff --git a/pkgs/top-level/release-small.nix b/pkgs/top-level/release-small.nix
index ad7d07f44cce..8ab27bc171d9 100644
--- a/pkgs/top-level/release-small.nix
+++ b/pkgs/top-level/release-small.nix
@@ -130,7 +130,6 @@ with import ./release-lib.nix { inherit supportedSystems; };
   portmap = linux;
   procps = linux;
   python = allBut cygwin;
-  pythonFull = linux;
   readline = all;
   rlwrap = all;
   rpm = linux;