summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--default.nix8
-rw-r--r--lib/licenses.nix38
-rw-r--r--lib/maintainers.nix2
-rw-r--r--lib/meta.nix9
-rw-r--r--nixos/lib/test-driver/Machine.pm2
-rw-r--r--nixos/modules/misc/ids.nix8
-rw-r--r--nixos/modules/module-list.nix7
-rw-r--r--nixos/modules/programs/zsh/zsh.nix3
-rw-r--r--nixos/modules/rename.nix1
-rw-r--r--nixos/modules/security/duosec.nix198
-rw-r--r--nixos/modules/services/backup/tarsnap.nix11
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/default.nix118
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/slave.nix67
-rw-r--r--nixos/modules/services/databases/couchdb.nix33
-rw-r--r--nixos/modules/services/databases/mysql.nix5
-rw-r--r--nixos/modules/services/databases/postgresql.nix2
-rw-r--r--nixos/modules/services/misc/gpsd.nix30
-rw-r--r--nixos/modules/services/misc/nixos-manual.nix2
-rw-r--r--nixos/modules/services/monitoring/apcupsd.nix2
-rw-r--r--nixos/modules/services/monitoring/graphite.nix94
-rw-r--r--nixos/modules/services/monitoring/statsd.nix4
-rw-r--r--nixos/modules/services/network-filesystems/openafs-client/default.nix35
-rw-r--r--nixos/modules/services/networking/firewall.nix15
-rw-r--r--nixos/modules/services/networking/kippo.nix3
-rw-r--r--nixos/modules/services/networking/notbit.nix93
-rw-r--r--nixos/modules/services/search/solr.nix114
-rw-r--r--nixos/modules/services/ttys/agetty.nix95
-rw-r--r--nixos/modules/services/ttys/kmscon.nix11
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix11
-rw-r--r--nixos/modules/services/web-servers/phpfpm.nix77
-rw-r--r--nixos/modules/services/web-servers/winstone.nix129
-rw-r--r--nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/xbmc.nix31
-rw-r--r--nixos/modules/services/x11/desktop-managers/xfce.nix2
-rw-r--r--nixos/modules/services/x11/window-managers/default.nix1
-rw-r--r--nixos/modules/services/x11/window-managers/xbmc.nix31
-rw-r--r--nixos/modules/system/activation/switch-to-configuration.pl2
-rw-r--r--nixos/modules/system/boot/kernel.nix3
-rw-r--r--nixos/modules/system/boot/stage-2-init.sh13
-rw-r--r--nixos/modules/system/boot/systemd-unit-options.nix7
-rw-r--r--nixos/modules/system/boot/systemd.nix126
-rw-r--r--nixos/modules/system/etc/etc.nix20
-rw-r--r--nixos/modules/system/etc/make-etc.sh4
-rw-r--r--nixos/modules/system/etc/setup-etc.pl8
-rw-r--r--nixos/modules/tasks/filesystems/zfs.nix221
-rw-r--r--nixos/modules/tasks/network-interfaces.nix53
-rw-r--r--nixos/tests/default.nix1
-rw-r--r--nixos/tests/jenkins.nix35
-rw-r--r--pkgs/applications/audio/a2jmidid/default.nix2
-rw-r--r--pkgs/applications/audio/ardour/ardour3.nix62
-rw-r--r--pkgs/applications/audio/ardour/default.nix81
-rw-r--r--pkgs/applications/audio/gigedit/default.nix1
-rw-r--r--pkgs/applications/audio/jalv/default.nix1
-rw-r--r--pkgs/applications/audio/lash/default.nix2
-rw-r--r--pkgs/applications/audio/mid2key/default.nix1
-rw-r--r--pkgs/applications/audio/mpg123/default.nix6
-rw-r--r--pkgs/applications/audio/qsampler/default.nix1
-rw-r--r--pkgs/applications/audio/quodlibet/default.nix6
-rw-r--r--pkgs/applications/audio/vmpk/default.nix26
-rw-r--r--pkgs/applications/editors/emacs-modes/darcsum/darcs_context7
-rw-r--r--pkgs/applications/editors/emacs-modes/darcsum/default.nix34
-rw-r--r--pkgs/applications/graphics/openscad/default.nix12
-rw-r--r--pkgs/applications/graphics/shotwell/default.nix56
-rw-r--r--pkgs/applications/graphics/synfigstudio/default.nix56
-rw-r--r--pkgs/applications/graphics/synfigstudio/synfig-cstring.patch12
-rw-r--r--pkgs/applications/misc/nut/default.nix2
-rw-r--r--pkgs/applications/misc/st/default.nix4
-rw-r--r--pkgs/applications/misc/xmobar/default.nix11
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/sources.nix18
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix8
-rw-r--r--pkgs/applications/networking/cluster/spark/default.nix2
-rw-r--r--pkgs/applications/networking/mailreaders/sup/default.nix6
-rw-r--r--pkgs/applications/networking/newsreaders/liferea/default.nix29
-rw-r--r--pkgs/applications/networking/notbit/default.nix24
-rw-r--r--pkgs/applications/networking/p2p/ktorrent/default.nix6
-rw-r--r--pkgs/applications/networking/p2p/transmission/default.nix2
-rw-r--r--pkgs/applications/office/gnumeric/default.nix4
-rw-r--r--pkgs/applications/science/logic/coq/default.nix6
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix15
-rw-r--r--pkgs/applications/video/kazam/default.nix1
-rw-r--r--pkgs/applications/virtualization/qemu/default.nix16
-rw-r--r--pkgs/build-support/vm/default.nix7
-rw-r--r--pkgs/data/documentation/man-pages-posix/default.nix6
-rw-r--r--pkgs/data/documentation/man-pages/default.nix4
-rw-r--r--pkgs/data/fonts/wqy-microhei/default.nix21
-rw-r--r--pkgs/data/fonts/wqy-zenhei/default.nix15
-rw-r--r--pkgs/desktops/gnome-3/core/empathy/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix19
-rw-r--r--pkgs/desktops/gnome-3/core/yelp-xsl/default.nix2
-rw-r--r--pkgs/desktops/gnome-3/default.nix3
-rw-r--r--pkgs/desktops/gnome-3/misc/gexiv2/default.nix25
-rw-r--r--pkgs/desktops/gnome-3/misc/goffice/default.nix16
-rw-r--r--pkgs/desktops/kde-4.10/kdeutils/kdf.nix2
-rw-r--r--pkgs/desktops/xfce/applications/gigolo.nix8
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-taskmanager.nix4
-rw-r--r--pkgs/desktops/xfce/core/tumbler.nix4
-rw-r--r--pkgs/desktops/xfce/core/xfce4-power-manager-brightness.patch307
-rw-r--r--pkgs/desktops/xfce/core/xfce4-power-manager.nix7
-rw-r--r--pkgs/development/compilers/ghc/7.8.1.nix45
-rw-r--r--pkgs/development/compilers/ghc/head.nix4
-rw-r--r--pkgs/development/compilers/jdk/jdk7-linux.nix27
-rw-r--r--pkgs/development/interpreters/clisp/2.44.1.nix4
-rw-r--r--pkgs/development/interpreters/python/3.4/default.nix4
-rw-r--r--pkgs/development/libraries/SDL2/default.nix4
-rw-r--r--pkgs/development/libraries/SDL_ttf/default.nix6
-rw-r--r--pkgs/development/libraries/audio/lilv/default.nix2
-rw-r--r--pkgs/development/libraries/audio/lv2/default.nix2
-rw-r--r--pkgs/development/libraries/audio/sratom/default.nix2
-rw-r--r--pkgs/development/libraries/audio/suil/default.nix2
-rw-r--r--pkgs/development/libraries/check/default.nix4
-rw-r--r--pkgs/development/libraries/dbus/default.nix2
-rw-r--r--pkgs/development/libraries/facile/default.nix8
-rw-r--r--pkgs/development/libraries/facile/ocaml_4.xx.patch12
-rw-r--r--pkgs/development/libraries/ffmpeg/0.10.nix4
-rw-r--r--pkgs/development/libraries/geoip/default.nix29
-rw-r--r--pkgs/development/libraries/geoip/src-for-default.nix8
-rw-r--r--pkgs/development/libraries/geoip/src-info-for-default.nix6
-rw-r--r--pkgs/development/libraries/glib-networking/default.nix30
-rw-r--r--pkgs/development/libraries/gstreamer/bad/default.nix17
-rw-r--r--pkgs/development/libraries/gstreamer/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ges/default.nix24
-rw-r--r--pkgs/development/libraries/gstreamer/gnonlin/default.nix29
-rw-r--r--pkgs/development/libraries/gstreamer/good/default.nix16
-rw-r--r--pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/python/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ugly/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/Boolean/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/HDBC/HDBC.nix4
-rw-r--r--pkgs/development/libraries/haskell/MissingH/default.nix12
-rw-r--r--pkgs/development/libraries/haskell/adjunctions/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/aes/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/alsa-mixer/default.nix5
-rw-r--r--pkgs/development/libraries/haskell/alsa-pcm/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/amqp/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/bson/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/bytestring-lexing/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/bytestring-show/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/chell-quickcheck/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/chell/default.nix18
-rw-r--r--pkgs/development/libraries/haskell/cipher-aes/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/conduit-combinators/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/constraints/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/convertible/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/cryptohash-cryptoapi/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/data-accessor/data-accessor-template.nix4
-rw-r--r--pkgs/development/libraries/haskell/data-accessor/data-accessor.nix4
-rw-r--r--pkgs/development/libraries/haskell/dbus/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/diagrams/cairo.nix10
-rw-r--r--pkgs/development/libraries/haskell/diagrams/contrib.nix4
-rw-r--r--pkgs/development/libraries/haskell/diagrams/core.nix4
-rw-r--r--pkgs/development/libraries/haskell/diagrams/diagrams.nix4
-rw-r--r--pkgs/development/libraries/haskell/diagrams/lib.nix13
-rw-r--r--pkgs/development/libraries/haskell/diagrams/postscript.nix13
-rw-r--r--pkgs/development/libraries/haskell/diagrams/svg.nix4
-rw-r--r--pkgs/development/libraries/haskell/doctest/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/dsp/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/fay-base/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/fay/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/force-layout/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ghc-mod/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ghc-mtl/default.nix10
-rw-r--r--pkgs/development/libraries/haskell/ghcjs-codemirror/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/ghcjs-dom/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/gnuplot/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/happstack/happstack-fastcgi.nix14
-rw-r--r--pkgs/development/libraries/haskell/happstack/happstack-server.nix4
-rw-r--r--pkgs/development/libraries/haskell/haskell-names/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hint/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/hledger-web/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/hoauth2/default.nix19
-rw-r--r--pkgs/development/libraries/haskell/hsini/default.nix5
-rw-r--r--pkgs/development/libraries/haskell/http-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/http-reverse-proxy/default.nix18
-rw-r--r--pkgs/development/libraries/haskell/lens/3.10.2.nix36
-rw-r--r--pkgs/development/libraries/haskell/lens/4.0.5.nix35
-rw-r--r--pkgs/development/libraries/haskell/lens/default.nix34
-rw-r--r--pkgs/development/libraries/haskell/leveldb-haskell/default.nix21
-rw-r--r--pkgs/development/libraries/haskell/lifted-base/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/linear/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ltk/default.nix10
-rw-r--r--pkgs/development/libraries/haskell/lzma-enumerator/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/midi/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/mono-traversable/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/monoid-extras/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/network-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/numeric-prelude/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/options/default.nix16
-rw-r--r--pkgs/development/libraries/haskell/pbkdf/default.nix15
-rw-r--r--pkgs/development/libraries/haskell/persistent-postgresql/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent-sqlite/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/persistent-template/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pipes-bytestring/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pool-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/sample-frame/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/scientific/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/scrypt/default.nix20
-rw-r--r--pkgs/development/libraries/haskell/shelly/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/smtp-mail/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/snap/core.nix4
-rw-r--r--pkgs/development/libraries/haskell/snowball/default.nix21
-rw-r--r--pkgs/development/libraries/haskell/sqlite-simple/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/stm-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/tagged/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/tasty-rerun/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/tasty/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/terminal-size/default.nix12
-rw-r--r--pkgs/development/libraries/haskell/th-desugar/default.nix7
-rw-r--r--pkgs/development/libraries/haskell/thyme/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/vado/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/vcsgui/default.nix16
-rw-r--r--pkgs/development/libraries/haskell/vcswrapper/default.nix16
-rw-r--r--pkgs/development/libraries/haskell/vector-space-points/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/wai-app-static/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-extra/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-handler-fastcgi/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-handler-launch/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-middleware-static/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/wai-test/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-websockets/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/wai/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/warp-tls/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/warp/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/x509/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-auth/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-bin/default.nix28
-rw-r--r--pkgs/development/libraries/haskell/yesod-core/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/yesod-form/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/zip-archive/default.nix4
-rw-r--r--pkgs/development/libraries/itk/default.nix7
-rw-r--r--pkgs/development/libraries/keybinder/default.nix8
-rw-r--r--pkgs/development/libraries/libav/default.nix4
-rw-r--r--pkgs/development/libraries/libconfig/default.nix1
-rw-r--r--pkgs/development/libraries/libgig/default.nix1
-rw-r--r--pkgs/development/libraries/libktorrent/default.nix10
-rw-r--r--pkgs/development/libraries/liblscp/default.nix1
-rw-r--r--pkgs/development/libraries/libpng/12.nix4
-rw-r--r--pkgs/development/libraries/libpng/15.nix4
-rw-r--r--pkgs/development/libraries/libpng/default.nix6
-rw-r--r--pkgs/development/libraries/libvirt/default.nix72
-rw-r--r--pkgs/development/libraries/pangomm/default.nix2
-rw-r--r--pkgs/development/libraries/ruby_ncursesw_sup/default.nix11
-rw-r--r--pkgs/development/libraries/serd/default.nix2
-rw-r--r--pkgs/development/libraries/sord/default.nix2
-rw-r--r--pkgs/development/libraries/telepathy/farstream/default.nix4
-rw-r--r--pkgs/development/libraries/thrift/default.nix24
-rw-r--r--pkgs/development/mobile/titaniumenv/default.nix2
-rw-r--r--pkgs/development/mobile/titaniumenv/examples/default.nix2
-rw-r--r--pkgs/development/mobile/titaniumenv/titaniumsdk-3.2.nix14
-rw-r--r--pkgs/development/ocaml-modules/batteries/default.nix24
-rw-r--r--pkgs/development/ocaml-modules/extlib/default.nix14
-rw-r--r--pkgs/development/ocaml-modules/odn/default.nix28
-rw-r--r--pkgs/development/ocaml-modules/react/default.nix31
-rw-r--r--pkgs/development/ocaml-modules/typeconv/3.0.5.nix23
-rw-r--r--pkgs/development/ocaml-modules/typeconv/default.nix11
-rw-r--r--pkgs/development/python-modules/distutils-cfg/default.nix7
-rw-r--r--pkgs/development/python-modules/generic/default.nix24
-rw-r--r--pkgs/development/tools/continuous-integration/jenkins/default.nix20
-rw-r--r--pkgs/development/tools/haskell/HaRe/default.nix6
-rw-r--r--pkgs/development/tools/haskell/hlint/default.nix11
-rw-r--r--pkgs/development/tools/haskell/keter/default.nix4
-rw-r--r--pkgs/development/tools/literate-programming/noweb/default.nix6
-rw-r--r--pkgs/development/tools/misc/lttv/default.nix2
-rw-r--r--pkgs/development/tools/ocaml/oasis/default.nix32
-rw-r--r--pkgs/development/tools/ocaml/ocamlify/default.nix26
-rw-r--r--pkgs/development/tools/ocaml/ocamlmod/default.nix25
-rw-r--r--pkgs/development/tools/selenium/chromedriver/default.nix1
-rwxr-xr-xpkgs/games/planetaryannihilation/default.nix54
-rw-r--r--pkgs/misc/themes/gtk2/oxygen-gtk/default.nix1
-rw-r--r--pkgs/misc/vim-plugins/default.nix11
-rw-r--r--pkgs/os-specific/darwin/otool/default.nix2
-rw-r--r--pkgs/os-specific/linux/acpid/default.nix4
-rw-r--r--pkgs/os-specific/linux/alsa-utils/default.nix10
-rw-r--r--pkgs/os-specific/linux/checksec/default.nix2
-rw-r--r--pkgs/os-specific/linux/criu/default.nix37
-rw-r--r--pkgs/os-specific/linux/ffado/default.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/grsec-path.patch10
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.13.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix14
-rw-r--r--pkgs/os-specific/linux/ktap/default.nix2
-rw-r--r--pkgs/os-specific/linux/lttng-modules/default.nix4
-rw-r--r--pkgs/os-specific/linux/plymouth/default.nix1
-rw-r--r--pkgs/os-specific/linux/procps-ng/default.nix2
-rw-r--r--pkgs/os-specific/linux/spl/3_12-compat.patch429
-rw-r--r--pkgs/os-specific/linux/spl/3_13-compat-1.patch61
-rw-r--r--pkgs/os-specific/linux/spl/3_13-compat-2.patch168
-rw-r--r--pkgs/os-specific/linux/spl/default.nix6
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix8
-rw-r--r--pkgs/os-specific/linux/udisks/1-default.nix10
-rw-r--r--pkgs/os-specific/linux/udisks/2-default.nix6
-rw-r--r--pkgs/os-specific/linux/wpa_supplicant/default.nix20
-rw-r--r--pkgs/os-specific/linux/zfs/3.13-compat.patch43
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix4
-rw-r--r--pkgs/os-specific/linux/zfs/gcc-4.8.patch114
-rw-r--r--pkgs/os-specific/linux/zfs/libblkid-1db7b9b.patch118
-rw-r--r--pkgs/servers/gpsd/0001-Import-LD_LIBRARY_PATH-to-allow-running-scons-check-.patch25
-rw-r--r--pkgs/servers/gpsd/0002-Import-XML_CATALOG_FILES-to-be-able-to-validate-the-.patch28
-rw-r--r--pkgs/servers/gpsd/default.nix95
-rw-r--r--pkgs/servers/http/lighttpd/default.nix12
-rw-r--r--pkgs/servers/http/winstone/default.nix26
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x-module_dir.patch69
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x.nix4
-rw-r--r--pkgs/servers/memcached/default.nix8
-rw-r--r--pkgs/servers/openafs-client/default.nix7
-rw-r--r--pkgs/servers/search/solr/default.nix30
-rw-r--r--pkgs/servers/serfdom/default.nix111
-rw-r--r--pkgs/servers/sql/postgresql/9.3.x.nix9
-rw-r--r--pkgs/stdenv/generic/default.nix6
-rw-r--r--pkgs/tools/graphics/pfstools/default.nix4
-rw-r--r--pkgs/tools/misc/apt-offline/default.nix28
-rw-r--r--pkgs/tools/misc/autorandr/default.nix1
-rw-r--r--pkgs/tools/misc/colord/default.nix6
-rw-r--r--pkgs/tools/misc/fasd/default.nix37
-rw-r--r--pkgs/tools/misc/system-config-printer/default.nix2
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix6
-rw-r--r--pkgs/tools/networking/easyrsa/default.nix2
-rw-r--r--pkgs/tools/networking/haproxy/default.nix4
-rw-r--r--pkgs/tools/networking/isync/default.nix5
-rw-r--r--pkgs/tools/networking/network-manager-applet/default.nix2
-rw-r--r--pkgs/tools/networking/openvpn/openvpn_learnaddress.nix27
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/default.nix2
-rw-r--r--pkgs/tools/networking/socat/2.x.nix1
-rw-r--r--pkgs/tools/networking/socat/default.nix5
-rw-r--r--pkgs/tools/package-management/rpm/default.nix16
-rw-r--r--pkgs/tools/security/cb0cat/default.nix2
-rw-r--r--pkgs/tools/security/ccid/default.nix4
-rw-r--r--pkgs/tools/security/duo-unix/default.nix26
-rw-r--r--pkgs/tools/security/nmap/default.nix12
-rw-r--r--pkgs/tools/security/pcsclite/default.nix9
-rw-r--r--pkgs/tools/system/logcheck/default.nix6
-rw-r--r--pkgs/tools/text/podiff/default.nix1
-rw-r--r--pkgs/tools/text/uni2ascii/default.nix1
-rw-r--r--pkgs/top-level/all-packages.nix112
-rw-r--r--pkgs/top-level/haskell-defaults.nix15
-rw-r--r--pkgs/top-level/haskell-packages.nix72
-rw-r--r--pkgs/top-level/perl-packages.nix11
-rw-r--r--pkgs/top-level/python-packages.nix293
343 files changed, 5271 insertions, 1483 deletions
diff --git a/default.nix b/default.nix
index 9d5764a6307f..c1b9bfd39f92 100644
--- a/default.nix
+++ b/default.nix
@@ -1 +1,7 @@
-import ./pkgs/top-level/all-packages.nix
+if ! builtins ? nixVersion || builtins.compareVersions "1.6" builtins.nixVersion == 1 then
+
+  abort "This version of Nixpkgs requires Nix >= 1.6, please upgrade!"
+
+else
+
+  import ./pkgs/top-level/all-packages.nix
diff --git a/lib/licenses.nix b/lib/licenses.nix
index cda43583279f..d82402cd3af9 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -25,12 +25,14 @@
   amd = {
     shortName = "amd";
     fullName = "AMD License Agreement";
-    url = "http://developer.amd.com/amd-license-agreement/";
-  };
+    url = http://developer.amd.com/amd-license-agreement/;
+  };#
 
-  # Apple Public Source License 2.0;
-  # http://opensource.org/licenses/APSL-2.0
-  apsl20 = "APSL 2.0";
+  apsl20 = {
+    shortName = "APSL 2.0";
+    fullName = "Apple Public Source License 2.0";
+    url = http://opensource.org/licenses/APSL-2.0;
+  };
 
   asl20 = {
     shortName = "ASL2.0";
@@ -80,7 +82,11 @@
     url = http://www.eclipse.org/legal/epl-v10.html;
   };
 
-  gpl2 = "GPLv2";
+  gpl2 = {
+    shortName = "GPLv2";
+    fullName = "GNU General Public License version 2";
+    url = http://www.gnu.org/licenses/old-licenses/gpl-2.0.html;
+  };
 
   gpl2Oss = {
     shortName = "GPLv2+OSS";
@@ -88,9 +94,11 @@
     url = http://www.mysql.com/about/legal/licensing/foss-exception;
   };
 
-  # GNU General Public License version 2 or later;
-  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-  gpl2Plus = "GPLv2+";
+  gpl2Plus = {
+    shortName = "GPLv2+";
+    fullName = "GNU General Public License version 2 or later";
+    url = http://www.gnu.org/licenses/old-licenses/gpl-2.0.html;
+  };
 
   gpl3 = {
     shortName = "GPLv3";
@@ -134,7 +142,11 @@
     url = https://fedoraproject.org/wiki/Licensing/libtiff;
   };
 
-  lgpl2 = "LGPLv2";
+  lgpl2 = {
+    shortName = "LGPLv2";
+    fullName = "GNU Library General Public License version 2";
+    url = http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html;
+  };
 
   lgpl2Plus = {
     shortName = "LGPLv2+";
@@ -142,7 +154,11 @@
     url = http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html;
   };
 
-  lgpl21 = "LGPLv2.1";
+  lgpl21 = {
+    shortName = "LGPLv2.1";
+    fullName = "GNU Lesser General Public License version 2.1";
+    url = http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html;
+  };
 
   lgpl21Plus = {
     shortName = "LGPLv2.1+";
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 73c288231c88..8d6c613fd0f8 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -25,6 +25,7 @@
   edwtjo = "Edward Tjörnhammar <ed@cflags.cc>";
   eelco = "Eelco Dolstra <eelco.dolstra@logicblox.com>";
   ertes = "Ertugrul Söylemez <es@ertes.de>";
+  falsifian = "James Cook <james.cook@utoronto.ca>";
   garbas = "Rok Garbas <rok@garbas.si>";
   goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";
   guibert = "David Guibert <david.guibert@gmail.com>";
@@ -52,6 +53,7 @@
   phreedom = "Evgeny Egorochkin <phreedom@yandex.ru>";
   pierron = "Nicolas B. Pierron <nixos@nbp.name>";
   piotr = "Piotr Pietraszkiewicz <ppietrasa@gmail.com>";
+  pkmx = "Chih-Mao Chen <pkmx.tw@gmail.com>";
   pSub = "Pascal Wittmann <mail@pascal-wittmann.de>";
   qknight = "Joachim Schiele <js@lastlog.de>";
   raskin = "Michael Raskin <7c6f434c@mail.ru>";
diff --git a/lib/meta.nix b/lib/meta.nix
index 1af314733486..44e3cc011f18 100644
--- a/lib/meta.nix
+++ b/lib/meta.nix
@@ -31,11 +31,10 @@ rec {
   updateName = updater: drv: drv // {name = updater (drv.name);};
 
 
-  /* Append a suffix to the name of a package.  !!! the suffix should
-     really be appended *before* the version, at least most of the
-     time.
-  */
-  appendToName = suffix: updateName (name: "${name}-${suffix}");
+  /* Append a suffix to the name of a package (before the version
+     part). */
+  appendToName = suffix: updateName (name:
+    let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
 
 
   /* Apply a function to each derivation and only to derivations in an attrset
diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm
index 8bef3d67b8d9..99810f87750d 100644
--- a/nixos/lib/test-driver/Machine.pm
+++ b/nixos/lib/test-driver/Machine.pm
@@ -497,7 +497,7 @@ sub waitForX {
         retry sub {
             my ($status, $out) = $self->execute("journalctl -bu systemd-logind | grep Linked");
             return 0 if $status != 0;
-            my ($status, $out) = $self->execute("xwininfo -root > /dev/null 2>&1");
+            ($status, $out) = $self->execute("xwininfo -root > /dev/null 2>&1");
             return 1 if $status == 0;
         }
     });
diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix
index e50819d6d001..970b9caa2f9d 100644
--- a/nixos/modules/misc/ids.nix
+++ b/nixos/modules/misc/ids.nix
@@ -116,6 +116,10 @@
       dictd = 105;
       couchdb = 106;
       searx = 107;
+      kippo = 108;
+      jenkins = 109;
+      systemd-journal-gateway = 110;
+      notbit = 111;
 
       # When adding a uid, make sure it doesn't match an existing gid.
 
@@ -210,6 +214,10 @@
       dictd = 105;
       couchdb = 106;
       searx = 107;
+      kippo = 108;
+      jenkins = 109;
+      systemd-journal-gateway = 110;
+      notbit = 111;
 
       # When adding a gid, make sure it doesn't match an existing uid.
 
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 3a5eee1e3c69..1c2fca1f88b5 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -61,6 +61,7 @@
   ./security/apparmor.nix
   ./security/apparmor-suid.nix
   ./security/ca.nix
+  ./security/duosec.nix
   ./security/pam.nix
   ./security/pam_usb.nix
   ./security/polkit.nix
@@ -81,6 +82,8 @@
   ./services/backup/rsnapshot.nix
   ./services/backup/sitecopy-backup.nix
   ./services/backup/tarsnap.nix
+  ./services/continuous-integration/jenkins/default.nix
+  ./services/continuous-integration/jenkins/slave.nix
   ./services/databases/4store-endpoint.nix
   ./services/databases/4store.nix
   ./services/databases/couchdb.nix
@@ -177,6 +180,7 @@
   ./services/networking/minidlna.nix
   ./services/networking/nat.nix
   ./services/networking/networkmanager.nix
+  ./services/networking/notbit.nix
   ./services/networking/ntopng.nix
   ./services/networking/ntpd.nix
   ./services/networking/oidentd.nix
@@ -206,6 +210,7 @@
   ./services/scheduling/cron.nix
   ./services/scheduling/fcron.nix
   ./services/search/elasticsearch.nix
+  ./services/search/solr.nix
   ./services/security/clamav.nix
   ./services/security/haveged.nix
   ./services/security/fprot.nix
@@ -228,8 +233,10 @@
   ./services/web-servers/lighttpd/cgit.nix
   ./services/web-servers/lighttpd/gitweb.nix
   ./services/web-servers/nginx/default.nix
+  ./services/web-servers/phpfpm.nix
   ./services/web-servers/tomcat.nix
   ./services/web-servers/varnish/default.nix
+  ./services/web-servers/winstone.nix
   ./services/web-servers/zope2.nix
   ./services/x11/desktop-managers/default.nix
   ./services/x11/display-managers/auto.nix
diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix
index cff751934d7d..69a56ff69a0d 100644
--- a/nixos/modules/programs/zsh/zsh.nix
+++ b/nixos/modules/programs/zsh/zsh.nix
@@ -116,8 +116,9 @@ in
         # This file is read for all shells.
 
         # Only execute this file once per shell.
+        # But don't clobber the environment of interactive non-login children!
         if [ -n "$__ETC_ZSHENV_SOURCED" ]; then return; fi
-        __ETC_ZSHENV_SOURCED=1
+        export __ETC_ZSHENV_SOURCED=1
 
         ${cfg.shellInit}
 
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index a26f930eda1d..72093aab5cd7 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -103,6 +103,7 @@ in zipModules ([]
 ++ obsolete [ "services" "sshd" "gatewayPorts" ] [ "services" "openssh" "gatewayPorts" ]
 ++ obsolete [ "services" "sshd" "permitRootLogin" ] [ "services" "openssh" "permitRootLogin" ]
 ++ obsolete [ "services" "xserver" "startSSHAgent" ] [ "services" "xserver" "startOpenSSHAgent" ]
+++ obsolete [ "services" "xserver" "windowManager" "xbmc" ] [ "services" "xserver" "desktopManager" "xbmc" ]
 
 # KDE
 ++ deprecated [ "kde" "extraPackages" ] [ "environment" "kdePackages" ]
diff --git a/nixos/modules/security/duosec.nix b/nixos/modules/security/duosec.nix
new file mode 100644
index 000000000000..989bd13d101e
--- /dev/null
+++ b/nixos/modules/security/duosec.nix
@@ -0,0 +1,198 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+  cfg = config.security.duosec;
+
+  boolToStr = b: if b then "yes" else "no";
+
+  configFile = ''
+    [duo]
+    ikey=${cfg.ikey}
+    skey=${cfg.skey}
+    host=${cfg.host}
+    ${optionalString (cfg.group != "") ("group="+cfg.group)}
+    failmode=${cfg.failmode}
+    pushinfo=${boolToStr cfg.pushinfo}
+    autopush=${boolToStr cfg.autopush}
+    motd=${boolToStr cfg.motd}
+    prompts=${toString cfg.prompts}
+    accept_env_factor=${boolToStr cfg.acceptEnvFactor}
+    fallback_local_ip=${boolToStr cfg.fallbackLocalIP}
+  '';
+
+  loginCfgFile = optional cfg.ssh.enable
+    { source = pkgs.writeText "login_duo.conf" configFile;
+      mode   = "0600";
+      uid    = config.ids.uids.sshd;
+      target = "duo/login_duo.conf";
+    };
+
+  pamCfgFile = optional cfg.pam.enable
+    { source = pkgs.writeText "pam_duo.conf" configFile;
+      mode   = "0600";
+      uid    = config.ids.uids.sshd;
+      target = "duo/pam_duo.conf";
+    };
+in
+{
+  options = {
+    security.duosec = {
+      ssh.enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = "If enabled, protect SSH logins with Duo Security.";
+      };
+
+      pam.enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = "If enabled, protect logins with Duo Security using PAM support.";
+      };
+
+      ikey = mkOption {
+        type = types.str;
+        description = "Integration key.";
+      };
+
+      skey = mkOption {
+        type = types.str;
+        description = "Secret key.";
+      };
+
+      host = mkOption {
+        type = types.str;
+        description = "Duo API hostname.";
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "";
+        description = "Use Duo authentication for users only in this group.";
+      };
+
+      failmode = mkOption {
+        type = types.str;
+        default = "safe";
+        description = ''
+          On service or configuration errors that prevent Duo
+          authentication, fail "safe" (allow access) or "secure" (deny
+          access). The default is "safe".
+        '';
+      };
+
+      pushinfo = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Include information such as the command to be executed in
+          the Duo Push message.
+        '';
+      };
+
+      autopush = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          If <literal>true</literal>, Duo Unix will automatically send
+          a push login request to the user’s phone, falling back on a
+          phone call if push is unavailable. If
+          <literal>false</literal>, the user will be prompted to
+          choose an authentication method. When configured with
+          <literal>autopush = yes</literal>, we recommend setting
+          <literal>prompts = 1</literal>.
+        '';
+      };
+
+      motd = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Print the contents of <literal>/etc/motd</literal> to screen
+          after a succesful login.
+        '';
+      };
+
+      prompts = mkOption {
+        type = types.int;
+        default = 3;
+        description = ''
+          If a user fails to authenticate with a second factor, Duo
+          Unix will prompt the user to authenticate again. This option
+          sets the maximum number of prompts that Duo Unix will
+          display before denying access. Must be 1, 2, or 3. Default
+          is 3.
+
+          For example, when <literal>prompts = 1</literal>, the user
+          will have to successfully authenticate on the first prompt,
+          whereas if <literal>prompts = 2</literal>, if the user
+          enters incorrect information at the initial prompt, he/she
+          will be prompted to authenticate again.
+
+          When configured with <literal>autopush = true</literal>, we
+          recommend setting <literal>prompts = 1</literal>.
+        '';
+      };
+
+      acceptEnvFactor = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Look for factor selection or passcode in the
+          <literal>$DUO_PASSCODE</literal> environment variable before
+          prompting the user for input.
+
+          When $DUO_PASSCODE is non-empty, it will override
+          autopush. The SSH client will need SendEnv DUO_PASSCODE in
+          its configuration, and the SSH server will similarily need
+          AcceptEnv DUO_PASSCODE.
+        '';
+      };
+
+      fallbackLocalIP = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Duo Unix reports the IP address of the authorizing user, for
+          the purposes of authorization and whitelisting. If Duo Unix
+          cannot detect the IP address of the client, setting
+          <literal>fallbackLocalIP = yes</literal> will cause Duo Unix
+          to send the IP address of the server it is running on.
+
+          If you are using IP whitelisting, enabling this option could
+          cause unauthorized logins if the local IP is listed in the
+          whitelist.
+        '';
+      };
+    };
+  };
+
+  config = mkIf (cfg.ssh.enable || cfg.pam.enable) {
+    assertions =
+      [ { assertion = cfg.failmode == "safe" || cfg.failmode == "secure";
+          message   = "Invalid value for failmode (must be safe or secure).";
+        }
+        { assertion = cfg.prompts == 1 || cfg.prompts == 2 || cfg.prompts == 3;
+          message   = "Invalid value for prompts (must be 1, 2, or 3).";
+        }
+        { assertion = !cfg.pam.enable;
+          message   = "PAM support is currently not implemented.";
+        }
+      ];
+
+     environment.systemPackages = [ pkgs.duo-unix ];
+     security.setuidPrograms    = [ "login_duo" ];
+     environment.etc = loginCfgFile ++ pamCfgFile;
+
+     /* If PAM *and* SSH are enabled, then don't do anything special.
+     If PAM isn't used, set the default SSH-only options. */
+     services.openssh.extraConfig = mkIf (cfg.ssh.enable || cfg.pam.enable) (
+     if cfg.pam.enable then "UseDNS no" else ''
+       # Duo Security configuration
+       ForceCommand ${config.security.wrapperDir}/login_duo
+       PermitTunnel no
+       AllowTcpForwarding no
+     '');
+  };
+}
diff --git a/nixos/modules/services/backup/tarsnap.nix b/nixos/modules/services/backup/tarsnap.nix
index 03fbd29a191d..ac8f008069a6 100644
--- a/nixos/modules/services/backup/tarsnap.nix
+++ b/nixos/modules/services/backup/tarsnap.nix
@@ -33,8 +33,9 @@ in
           service called <literal>tarsnap-backup</literal> which is
           periodically run by cron, or you may run it on-demand.
 
-          See <link xlink:href='http://www.tarsnap.com/gettingstarted.html'>Getting Started</link> 
-          Tarsnap page.
+          See the Tarsnap <link
+          xlink:href='http://www.tarsnap.com/gettingstarted.html'>Getting
+          Started</link> page.
         '';
       };
 
@@ -46,7 +47,7 @@ in
           full name will be
           <literal>label-$(date+"%Y%m%d%H%M%S")</literal>. For
           example, by default your backups will look similar to
-          <literal>nixos-20140301021501</literal>.
+          <literal>nixos-20140301011501</literal>.
         '';
       };
 
@@ -110,8 +111,8 @@ in
         default = "15 01 * * *";
         description = ''
           This option defines (in the format used by cron) when
-          tarsnap is run for backups.  The default is to update at
-          01:15 at night every day.
+          tarsnap is run for backups. The default is to backup the
+          specified paths at 01:15 at night every day.
         '';
       };
 
diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix
new file mode 100644
index 000000000000..c3dc59a9fbd0
--- /dev/null
+++ b/nixos/modules/services/continuous-integration/jenkins/default.nix
@@ -0,0 +1,118 @@
+{ config, pkgs, ... }:
+with pkgs.lib;
+let
+  cfg = config.services.jenkins;
+in {
+  options = {
+    services.jenkins = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable the jenkins continuous integration server.
+        '';
+      };
+
+      user = mkOption {
+        default = "jenkins";
+        type = with types; string;
+        description = ''
+          User the jenkins server should execute under.
+        '';
+      };
+
+      group = mkOption {
+        default = "jenkins";
+        type = with types; string;
+        description = ''
+          User the jenkins server should execute under.
+        '';
+      };
+
+      home = mkOption {
+        default = "/var/lib/jenkins";
+        type = with types; string;
+        description = ''
+          The path to use as JENKINS_HOME. If the default user "jenkins" is configured then
+          this is the home of the "jenkins" user.
+        '';
+      };
+
+      port = mkOption {
+        default = 8080;
+        type = types.uniq types.int;
+        description = ''
+          Specifies port number on which the jenkins HTTP interface listens. The default is 8080
+        '';
+      };
+
+      packages = mkOption {
+        default = [ pkgs.stdenv pkgs.git pkgs.jdk pkgs.openssh pkgs.nix ];
+        type = types.listOf types.package;
+        description = ''
+          Packages to add to PATH for the jenkins process.
+        '';
+      };
+
+      environment = mkOption {
+        default = { NIX_REMOTE = "daemon"; };
+        type = with types; attrsOf string;
+        description = ''
+          Additional environment variables to be passed to the jenkins process.
+          The environment will always include JENKINS_HOME.
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    users.extraGroups = optional (cfg.group == "jenkins") {
+      name = "jenkins";
+      gid = config.ids.gids.jenkins;
+    };
+
+    users.extraUsers = optional (cfg.user == "jenkins") {
+      name = "jenkins";
+      description = "jenkins user";
+      createHome = true;
+      home = cfg.home;
+      group = cfg.group;
+      useDefaultShell = true;
+      uid = config.ids.uids.jenkins;
+    };
+
+    systemd.services.jenkins = {
+      description = "Jenkins Continuous Integration Server";
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      environment = {
+        JENKINS_HOME = cfg.home;
+      } // cfg.environment;
+
+      path = cfg.packages;
+
+      script = ''
+        ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --httpPort=${toString cfg.port}
+      '';
+
+      postStart = ''
+        until ${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port} ; do
+          sleep 10
+        done
+        while true ; do
+          index=`${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port}`
+          if [[ !("$index" =~ 'Please wait while Jenkins is restarting' ||
+                  "$index" =~ 'Please wait while Jenkins is getting ready to work') ]]; then
+            exit 0
+          fi
+          sleep 30
+        done
+      '';
+
+      serviceConfig = {
+        User = cfg.user;
+      };
+    };
+  };
+}
diff --git a/nixos/modules/services/continuous-integration/jenkins/slave.nix b/nixos/modules/services/continuous-integration/jenkins/slave.nix
new file mode 100644
index 000000000000..1d31ab830f6c
--- /dev/null
+++ b/nixos/modules/services/continuous-integration/jenkins/slave.nix
@@ -0,0 +1,67 @@
+{ config, pkgs, ... }:
+with pkgs.lib;
+let
+  cfg = config.services.jenkinsSlave;
+  masterCfg = config.services.jenkins;
+in {
+  options = {
+    services.jenkinsSlave = {
+      # todo:
+      # * assure the profile of the jenkins user has a JRE and any specified packages. This would
+      # enable ssh slaves.
+      # * Optionally configure the node as a jenkins ad-hoc slave. This would imply configuration
+      # properties for the master node.
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          If true the system will be configured to work as a jenkins slave.
+          If the system is also configured to work as a jenkins master then this has no effect.
+          In progress: Currently only assures the jenkins user is configured.
+        '';
+      };
+
+      user = mkOption {
+        default = "jenkins";
+        type = with types; string;
+        description = ''
+          User the jenkins slave agent should execute under.
+        '';
+      };
+
+      group = mkOption {
+        default = "jenkins";
+        type = with types; string;
+        description = ''
+          User the jenkins slave agent should execute under.
+        '';
+      };
+
+      home = mkOption {
+        default = "/var/lib/jenkins";
+        type = with types; string;
+        description = ''
+          The path to use as JENKINS_HOME. If the default user "jenkins" is configured then
+          this is the home of the "jenkins" user.
+        '';
+      };
+    };
+  };
+
+  config = mkIf (cfg.enable && !masterCfg.enable) {
+    users.extraGroups = optional (cfg.group == "jenkins") {
+      name = "jenkins";
+      gid = config.ids.gids.jenkins;
+    };
+
+    users.extraUsers = optional (cfg.user == "jenkins") {
+      name = "jenkins";
+      description = "jenkins user";
+      createHome = true;
+      home = cfg.home;
+      group = cfg.group;
+      useDefaultShell = true;
+      uid = config.ids.uids.jenkins;
+    };
+  };
+}
diff --git a/nixos/modules/services/databases/couchdb.nix b/nixos/modules/services/databases/couchdb.nix
index 01631e9879a2..b48d3a64767f 100644
--- a/nixos/modules/services/databases/couchdb.nix
+++ b/nixos/modules/services/databases/couchdb.nix
@@ -1,9 +1,7 @@
 { config, pkgs, ... }:
-
-with pkgs.lib;
+  with pkgs.lib;
 
 let
-
   cfg = config.services.couchdb;
   configFile = pkgs.writeText "couchdb.ini"
     ''
@@ -19,10 +17,8 @@ let
       [log]
       file = ${cfg.logFile}
     '';
-  configExtraFile = pkgs.writeText "couchdb-extra.ini" cfg.extraConfig;
 
-in
-{
+in {
 
   ###### interface
 
@@ -64,14 +60,6 @@ in
         '';
       };
 
-      pidFile = mkOption {
-        type = types.path;
-        default = "/var/run/couchdb/couchdb.pid";
-        description = ''
-          pid file.
-        '';
-      };
-
       # couchdb options: http://docs.couchdb.org/en/latest/config/index.html
 
       databaseDir = mkOption {
@@ -153,26 +141,23 @@ in
 
       preStart =
         ''
-        mkdir -p `dirname ${cfg.pidFile}`;
         mkdir -p `dirname ${cfg.uriFile}`;
         mkdir -p `dirname ${cfg.logFile}`;
-        touch ${cfg.logFile};
         mkdir -p ${cfg.databaseDir};
         mkdir -p ${cfg.viewIndexDir};
-        chown ${cfg.user}:${cfg.group} `dirname ${cfg.pidFile}`
-        chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`
-        chown ${cfg.user}:${cfg.group} ${cfg.logFile}
-        chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
-        chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
+
+        if [ "$(id -u)" = 0 ]; then
+          chown ${cfg.user}:${cfg.group} `dirname ${cfg.uriFile}`
+          chown ${cfg.user}:${cfg.group} ${cfg.databaseDir}
+          chown ${cfg.user}:${cfg.group} ${cfg.viewIndexDir}
+        fi
         '';
 
       serviceConfig = {
         PermissionsStartOnly = true;
         User = cfg.user;
         Group = cfg.group;
-        Type = "forking";
-        ExecStart = "${cfg.package}/bin/couchdb -b -o /dev/null -e /dev/null -p ${cfg.pidFile} -a ${configFile} -a ${configExtraFile}";
-        ExecStop = "${cfg.package}/bin/couchdb -d";
+        ExecStart = "${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig}";
       };
     };
 
diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix
index 62fbc2a1415b..44fb0062f928 100644
--- a/nixos/modules/services/databases/mysql.nix
+++ b/nixos/modules/services/databases/mysql.nix
@@ -15,7 +15,7 @@ let
   pidFile = "${cfg.pidDir}/mysqld.pid";
 
   mysqldOptions =
-    "--user=${cfg.user} --datadir=${cfg.dataDir} " +
+    "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql} " +
     "--pid-file=${pidFile}";
 
   myCnf = pkgs.writeText "my.cnf"
@@ -250,9 +250,6 @@ in
               rm /tmp/mysql_init
             fi
           ''; # */
-
-        serviceConfig.ExecStop =
-          "${mysql}/bin/mysqladmin ${optionalString (cfg.rootPassword != null) "--user=root --password=\"$(cat ${cfg.rootPassword})\""} shutdown";
       };
 
   };
diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix
index cc4230d4d6a7..a83b1a110fed 100644
--- a/nixos/modules/services/databases/postgresql.nix
+++ b/nixos/modules/services/databases/postgresql.nix
@@ -190,7 +190,7 @@ in
                 mkdir -m 0700 -p ${cfg.dataDir}
                 if [ "$(id -u)" = 0 ]; then
                   chown -R postgres ${cfg.dataDir}
-                  su -s ${pkgs.stdenv.shell} postgres -c 'initdb -U root'
+                  su -s ${pkgs.stdenv.shell} postgres -c initdb
                 else
                   # For non-root operation.
                   initdb
diff --git a/nixos/modules/services/misc/gpsd.nix b/nixos/modules/services/misc/gpsd.nix
index bc1d1f4575a8..99b733d399e2 100644
--- a/nixos/modules/services/misc/gpsd.nix
+++ b/nixos/modules/services/misc/gpsd.nix
@@ -19,6 +19,7 @@ in
     services.gpsd = {
 
       enable = mkOption {
+        type = types.bool;
         default = false;
         description = ''
           Whether to enable `gpsd', a GPS service daemon.
@@ -26,6 +27,7 @@ in
       };
 
       device = mkOption {
+        type = types.str;
         default = "/dev/ttyUSB0";
         description = ''
           A device may be a local serial device for GPS input, or a URL of the form:
@@ -35,6 +37,7 @@ in
       };
 
       readonly = mkOption {
+        type = types.bool;
         default = true;
         description = ''
           Whether to enable the broken-device-safety, otherwise
@@ -51,6 +54,7 @@ in
       };
 
       port = mkOption {
+        type = types.uniq types.int;
         default = 2947;
         description = ''
           The port where to listen for TCP connections.
@@ -58,6 +62,7 @@ in
       };
 
       debugLevel = mkOption {
+        type = types.uniq types.int;
         default = 0;
         description = ''
           The debugging level.
@@ -85,19 +90,20 @@ in
         inherit gid;
       };
 
-    jobs.gpsd =
-      { description = "GPSD daemon";
-
-        startOn = "ip-up";
-
-        exec =
-          ''
-            ${pkgs.gpsd}/sbin/gpsd -D "${toString cfg.debugLevel}"  \
-              -S "${toString cfg.port}"                             \
-              ${if cfg.readonly then "-b" else ""}                  \
-              "${cfg.device}"
-          '';
+    systemd.services.gpsd = {
+      description = "GPSD daemon";
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network.target" ];
+      serviceConfig = {
+        Type = "forking";
+        ExecStart = ''
+          ${pkgs.gpsd}/sbin/gpsd -D "${toString cfg.debugLevel}"  \
+            -S "${toString cfg.port}"                             \
+            ${if cfg.readonly then "-b" else ""}                  \
+            "${cfg.device}"
+        '';
       };
+    };
 
   };
 
diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix
index 9a5b170d5e66..1a8b85db3290 100644
--- a/nixos/modules/services/misc/nixos-manual.nix
+++ b/nixos/modules/services/misc/nixos-manual.nix
@@ -63,7 +63,7 @@ in
 
     services.nixosManual.showManual = mkOption {
       type = types.bool;
-      default = true;
+      default = false;
       description = ''
         Whether to show the NixOS manual on one of the virtual
         consoles.
diff --git a/nixos/modules/services/monitoring/apcupsd.nix b/nixos/modules/services/monitoring/apcupsd.nix
index 58ec8a49694b..38fd53653d62 100644
--- a/nixos/modules/services/monitoring/apcupsd.nix
+++ b/nixos/modules/services/monitoring/apcupsd.nix
@@ -168,11 +168,11 @@ in
     # shuts off power.) Copied from here:
     # http://forums.opensuse.org/english/get-technical-help-here/applications/479499-apcupsd-systemd-killpower-issues.html
     systemd.services.apcupsd-killpower = {
+      description = "APC UPS Kill Power";
       after = [ "shutdown.target" ]; # append umount.target?
       before = [ "final.target" ];
       wantedBy = [ "shutdown.target" ];
       unitConfig = {
-        Description = "APC UPS Kill Power";
         ConditionPathExists = "/run/apcupsd/powerfail";
         DefaultDependencies = "no";
       };
diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix
index be57b8c5c03f..3e2e7e9df6ef 100644
--- a/nixos/modules/services/monitoring/graphite.nix
+++ b/nixos/modules/services/monitoring/graphite.nix
@@ -4,17 +4,31 @@ with pkgs.lib;
 
 let
   cfg = config.services.graphite;
-  writeTextOrNull = f: t: if t == null then null else pkgs.writeText f t;
+  writeTextOrNull = f: t: if t == null then null else pkgs.writeTextDir f t;
+
+  dataDir = cfg.dataDir;
+
+  configDir = pkgs.buildEnv {
+    name = "graphite-config";
+    paths = lists.filter (el: el != null) [
+      (writeTextOrNull "carbon.conf" cfg.carbon.config)
+      (writeTextOrNull "storage-agregation.conf" cfg.carbon.storageAggregation)
+      (writeTextOrNull "storage-schemas.conf" cfg.carbon.storageSchemas)
+      (writeTextOrNull "blacklist.conf" cfg.carbon.blacklist)
+      (writeTextOrNull "whitelist.conf" cfg.carbon.whitelist)
+      (writeTextOrNull "rewrite-rules.conf" cfg.carbon.rewriteRules)
+      (writeTextOrNull "relay-rules.conf" cfg.carbon.relayRules)
+      (writeTextOrNull "aggregation-rules.conf" cfg.carbon.aggregationRules)
+    ];
+  };
 
-  dataDir = "/var/db/graphite";
   carbonOpts = name: with config.ids; ''
-    --nodaemon --syslog --prefix=${name} --pidfile /var/run/${name}.pid \
-    --uid ${toString uids.graphite} --gid ${toString uids.graphite} ${name}
+    --nodaemon --syslog --prefix=${name} --pidfile ${dataDir}/${name}.pid ${name}
   '';
   carbonEnv = {
     PYTHONPATH = "${pkgs.python27Packages.carbon}/lib/python2.7/site-packages";
     GRAPHITE_ROOT = dataDir;
-    GRAPHITE_CONF_DIR = "/etc/graphite/";
+    GRAPHITE_CONF_DIR = configDir;
     GRAPHITE_STORAGE_DIR = dataDir;
   };
 
@@ -23,6 +37,14 @@ in {
   ###### interface
 
   options.services.graphite = {
+    dataDir = mkOption {
+      type = types.path;
+      default = "/var/db/graphite";
+      description = ''
+        Data directory for graphite.
+      '';
+    };
+
     web = {
       enable = mkOption {
         description = "Whether to enable graphite web frontend";
@@ -38,8 +60,8 @@ in {
 
       port = mkOption {
         description = "Graphite web frontend port";
-        default = "8080";
-        type = types.str;
+        default = 8080;
+        type = types.int;
       };
     };
 
@@ -152,31 +174,17 @@ in {
   ###### implementation
 
   config = mkIf (cfg.carbon.enableAggregator || cfg.carbon.enableCache || cfg.carbon.enableRelay || cfg.web.enable) {
-    environment.etc = lists.filter (el: el.source != null) [
-      { source = writeTextOrNull "carbon.conf" cfg.carbon.config;
-        target = "graphite/carbon.conf"; }
-      { source = writeTextOrNull "storage-agregation.conf" cfg.carbon.storageAggregation;
-        target = "graphite/storage-agregation.conf"; }
-      { source = writeTextOrNull "storage-schemas.conf" cfg.carbon.storageSchemas;
-        target = "graphite/storage-schemas.conf"; }
-      { source = writeTextOrNull "blacklist.conf" cfg.carbon.blacklist;
-        target = "graphite/blacklist.conf"; }
-      { source = writeTextOrNull "whitelist.conf" cfg.carbon.whitelist;
-        target = "graphite/whitelist.conf"; }
-      { source = writeTextOrNull "rewrite-rules.conf" cfg.carbon.rewriteRules;
-        target = "graphite/rewrite-rules.conf"; }
-      { source = writeTextOrNull "relay-rules.conf" cfg.carbon.relayRules;
-        target = "graphite/relay-rules.conf"; }
-      { source = writeTextOrNull "aggregation-rules.conf" cfg.carbon.aggregationRules;
-        target = "graphite/aggregation-rules.conf"; }
-    ];
-
-    systemd.services.carbonCache = mkIf cfg.carbon.enableCache {
+    systemd.services.carbonCache = {
+      enable = cfg.carbon.enableCache;
       description = "Graphite Data Storage Backend";
       wantedBy = [ "multi-user.target" ];
       after = [ "network-interfaces.target" ];
       environment = carbonEnv;
-      serviceConfig.ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-cache"}";
+      serviceConfig = {
+        ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-cache"}";
+        User = "graphite";
+        Group = "graphite";
+      };
       restartTriggers = [
         pkgs.pythonPackages.carbon
         cfg.carbon.config
@@ -185,33 +193,45 @@ in {
         cfg.carbon.rewriteRules
       ];
       preStart = ''
-        mkdir -p ${dataDir}/whisper
+        mkdir -m 0700 -p ${cfg.dataDir}/whisper
+        if [ "$(id -u)" = 0 ]; then chown -R graphite:graphite ${cfg.dataDir}; fi
       '';
     };
 
-    systemd.services.carbonAggregator = mkIf cfg.carbon.enableAggregator {
+    systemd.services.carbonAggregator = {
+      enable = cfg.carbon.enableAggregator;
       description = "Carbon Data Aggregator";
       wantedBy = [ "multi-user.target" ];
       after = [ "network-interfaces.target" ];
       environment = carbonEnv;
-      serviceConfig.ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-aggregator"}";
+      serviceConfig = {
+        ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-aggregator"}";
+        User = "graphite";
+        Group = "graphite";
+      };
       restartTriggers = [
         pkgs.pythonPackages.carbon cfg.carbon.config cfg.carbon.aggregationRules
       ];
     };
 
-    systemd.services.carbonRelay = mkIf cfg.carbon.enableRelay {
+    systemd.services.carbonRelay = {
+      enable = cfg.carbon.enableRelay;
       description = "Carbon Data Relay";
       wantedBy = [ "multi-user.target" ];
       after = [ "network-interfaces.target" ];
       environment = carbonEnv;
-      serviceConfig.ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-relay"}";
+      serviceConfig = {
+        ExecStart = "${pkgs.twisted}/bin/twistd ${carbonOpts "carbon-relay"}";
+        User = "graphite";
+        Group = "graphite";
+      };
       restartTriggers = [
         pkgs.pythonPackages.carbon cfg.carbon.config cfg.carbon.relayRules
       ];
     };
 
-    systemd.services.graphiteWeb = mkIf cfg.web.enable {
+    systemd.services.graphiteWeb = {
+      enable = cfg.web.enable;
       description = "Graphite Web Interface";
       wantedBy = [ "multi-user.target" ];
       after = [ "network-interfaces.target" ];
@@ -224,14 +244,15 @@ in {
       serviceConfig = {
         ExecStart = ''
           ${pkgs.python27Packages.waitress}/bin/waitress-serve \
-          --host=${cfg.web.host} --port=${cfg.web.port} \
+          --host=${cfg.web.host} --port=${toString cfg.web.port} \
           --call django.core.handlers.wsgi:WSGIHandler'';
         User = "graphite";
         Group = "graphite";
       };
       preStart = ''
         if ! test -e ${dataDir}/db-created; then
-          mkdir -p ${dataDir}/{whisper/,log/webapp/}
+          mkdir -m 0700 -p ${dataDir}/{whisper/,log/webapp/}
+          if [ "$(id -u)" = 0 ]; then chown -R graphite:graphite ${cfg.dataDir}; fi
 
           # populate database
           ${pkgs.python27Packages.graphite_web}/bin/manage-graphite.py syncdb --noinput
@@ -259,7 +280,6 @@ in {
       uid = config.ids.uids.graphite;
       description = "Graphite daemon user";
       home = dataDir;
-      createHome = true;
     };
     users.extraGroups.graphite.gid = config.ids.gids.graphite;
   };
diff --git a/nixos/modules/services/monitoring/statsd.nix b/nixos/modules/services/monitoring/statsd.nix
index 979debefdd9f..54b7e79f82eb 100644
--- a/nixos/modules/services/monitoring/statsd.nix
+++ b/nixos/modules/services/monitoring/statsd.nix
@@ -64,13 +64,13 @@ in
 
     graphiteHost = mkOption {
       description = "Hostname or IP of Graphite server";
-      default = "127.0.0.1";
+      default = config.services.graphite.web.host;
       type = types.str;
     };
 
     graphitePort = mkOption {
       description = "Port of Graphite server";
-      default = 2003;
+      default = config.services.graphite.web.port;
       type = types.uniq types.int;
     };
 
diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix
index 4a888b64bd34..b34ebc3663e3 100644
--- a/nixos/modules/services/network-filesystems/openafs-client/default.nix
+++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix
@@ -46,6 +46,16 @@ in
         description = "Cache directory.";
       };
 
+      crypt = mkOption {
+        default = false;
+        description = "Whether to enable (weak) protocol encryption.";
+      };
+
+      sparse = mkOption {
+        default = false;
+        description = "Minimal cell list in /afs.";
+      };
+
     };
   };
 
@@ -70,18 +80,23 @@ in
         startOn = "started network-interfaces";
         stopOn = "stopping network-interfaces";
 
-	preStart = ''
-	  mkdir -m 0755 /afs || true
-	  mkdir -m 0755 -p ${cfg.cacheDirectory} || true
+        preStart = ''
+          mkdir -p -m 0755 /afs
+          mkdir -m 0700 -p ${cfg.cacheDirectory}
           ${pkgs.module_init_tools}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true
-          ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} -dynroot -fakestat
-	'';
-
-	postStop = ''
-	  umount /afs
+          ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb
+          ${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"}
+        '';
+
+        # Doing this in preStop, because after these commands AFS is basically
+        # stopped, so systemd has nothing to do, just noticing it.  If done in
+        # postStop, then we get a hang + kernel oops, because AFS can't be
+        # stopped simply by sending signals to processes.
+        preStop = ''
+          ${pkgs.utillinux}/bin/umount /afs
           ${openafsPkgs}/sbin/afsd -shutdown
-	  rmmod libafs
-	'';
+          ${pkgs.module_init_tools}/sbin/rmmod libafs
+        '';
 
       };
 
diff --git a/nixos/modules/services/networking/firewall.nix b/nixos/modules/services/networking/firewall.nix
index babde3e942b3..07e05fa6d051 100644
--- a/nixos/modules/services/networking/firewall.nix
+++ b/nixos/modules/services/networking/firewall.nix
@@ -171,6 +171,17 @@ in
         '';
     };
 
+    networking.firewall.pingLimit = mkOption {
+      default = null;
+      type = types.nullOr (types.separatedString " ");
+      description =
+        ''
+          If pings are allowed, this allows setting rate limits
+          on them. If non-null, this option should be in the form
+          of flags like "-limit 1/minute -limit-burst 5"
+        '';
+    };
+
     networking.firewall.checkReversePath = mkOption {
       default = kernelHasRPFilter;
       type = types.bool;
@@ -375,7 +386,9 @@ in
 
             # Optionally respond to ICMPv4 pings.
             ${optionalString cfg.allowPing ''
-              iptables -A nixos-fw -p icmp --icmp-type echo-request -j nixos-fw-accept
+              iptables -A nixos-fw -p icmp --icmp-type echo-request ${optionalString (cfg.pingLimit != null)
+                "-m limit ${cfg.pingLimit} "
+              }-j nixos-fw-accept
             ''}
 
             # Accept all ICMPv6 messages except redirects and node
diff --git a/nixos/modules/services/networking/kippo.nix b/nixos/modules/services/networking/kippo.nix
index 76dd66013ba7..164c38940f77 100644
--- a/nixos/modules/services/networking/kippo.nix
+++ b/nixos/modules/services/networking/kippo.nix
@@ -76,8 +76,9 @@ rec {
     users.extraUsers = singleton {
       name = "kippo";
       description = "kippo web server privilege separation user";
+      uid = 108; # why does config.ids.uids.kippo give an error?
     };
-    users.extraGroups = singleton { name = "kippo"; };
+    users.extraGroups = singleton { name = "kippo";gid=108; };
 
     systemd.services.kippo = with pkgs; {
       description = "Kippo Web Server";
diff --git a/nixos/modules/services/networking/notbit.nix b/nixos/modules/services/networking/notbit.nix
new file mode 100644
index 000000000000..83dafd083791
--- /dev/null
+++ b/nixos/modules/services/networking/notbit.nix
@@ -0,0 +1,93 @@
+{ config, pkgs, ... }:
+
+let
+  cfg = config.services.notbit;
+  varDir = "/var/lib/notbit";
+  
+  sendmail = pkgs.stdenv.mkDerivation {
+    name = "notbit-wrapper";
+    buildInputs = [ pkgs.makeWrapper ];
+    propagatedBuildInputs = [ pkgs.notbit ];
+    buildCommand = ''
+      mkdir -p $out/bin
+      makeWrapper ${pkgs.notbit}/bin/notbit-sendmail $out/bin/notbit-system-sendmail \
+        --set XDG_RUNTIME_DIR ${varDir}
+    '';
+  };
+in
+
+with pkgs.lib;
+{
+
+  ### configuration
+
+  options = {
+
+    services.notbit = {
+
+      enable = mkOption {
+        type = types.uniq types.bool;
+        default = false;
+        description = ''
+          Enables the notbit daemon and provides a sendmail binary named `notbit-system-sendmail` for sending mail over the system instance of notbit. Users must be in the notbit group in order to send mail over the system notbit instance. Currently mail recipt is not supported.
+        '';
+      };
+
+      port = mkOption {
+        type = types.uniq types.int;
+        default = 8443;
+        description = "The port which the daemon listens for other bitmessage clients";
+      };
+
+      nice = mkOption {
+        type = types.uniq types.int;
+        default = 10;
+        description = "Set the nice level for the notbit daemon";
+      };
+
+    };
+
+  };
+
+  ### implementation
+
+  config = mkIf cfg.enable {
+
+    environment.systemPackages = [ pkgs.notbit sendmail ];
+
+    systemd.services.notbit = {
+      description = "Notbit daemon";
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+      path = [ pkgs.notbit ];
+      environment = { XDG_RUNTIME_DIR = varDir; };
+
+      postStart = ''
+        [ ! -f "${varDir}/addr" ] && notbit-keygen > ${varDir}/addr
+        chmod 0640 ${varDir}/{addr,notbit/notbit-ipc.lock}
+        chmod 0750 ${varDir}/notbit/{,notbit-ipc}
+      '';
+
+      serviceConfig = {
+        Type = "forking";
+        ExecStart = "${pkgs.notbit}/bin/notbit -d -p ${toString cfg.port}";
+        User = "notbit";
+        Group = "notbit";
+        UMask = "0077";
+        WorkingDirectory = varDir;
+        Nice = cfg.nice;
+      };
+    };
+
+    users.extraUsers.notbit = {
+      group = "notbit";
+      description = "Notbit daemon user";
+      home = varDir;
+      createHome = true;
+      uid = config.ids.uids.notbit;
+    };
+
+    users.extraGroups.notbit.gid = config.ids.gids.notbit;
+  };
+
+}
diff --git a/nixos/modules/services/search/solr.nix b/nixos/modules/services/search/solr.nix
new file mode 100644
index 000000000000..eab18c4229b7
--- /dev/null
+++ b/nixos/modules/services/search/solr.nix
@@ -0,0 +1,114 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+
+  cfg = config.services.solr;
+
+in {
+
+  options = {
+    services.solr = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Enables the solr service.
+        '';
+      };
+
+      javaPackage = mkOption {
+        type = types.package;
+        default = pkgs.openjre;
+        description = ''
+          Which Java derivation to use for running solr.
+        '';
+      };
+
+      solrPackage = mkOption {
+        type = types.package;
+        default = pkgs.solr;
+        description = ''
+          Which solr derivation to use for running solr.
+        '';
+      };
+
+      log4jConfiguration = mkOption {
+        type = types.lines;
+        default = ''
+          log4j.rootLogger=INFO, stdout
+          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+          log4j.appender.stdout.Target=System.out
+          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+          log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
+        '';
+        description = ''
+          Contents of the <literal>log4j.properties</literal> used. By default,
+          everything is logged to stdout (picked up by systemd) with level INFO.
+        '';
+      };
+
+      user = mkOption {
+        type = types.str;
+        description = ''
+          The user that should run the solr process and.
+          the working directories.
+        '';
+      };
+
+      group = mkOption {
+        type = types.str;
+        description = ''
+          The group that will own the working directory.
+        '';
+      };
+
+      solrHome = mkOption {
+        type = types.str;
+        description = ''
+          The solr home directory. It is your own responsibility to
+          make sure this directory contains a working solr configuration,
+          and is writeable by the the user running the solr service.
+          Failing to do so, the solr will not start properly.
+        '';
+      };
+
+      extraJavaOptions = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Extra command line options given to the java process running
+          solr.
+        '';
+      };
+
+      extraWinstoneOptions = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Extra command line options given to the Winstone, which is
+          the servlet container hosting solr.
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+
+    services.winstone.solr = {
+      serviceName = "solr";
+      inherit (cfg) user group javaPackage;
+      warFile = "${cfg.solrPackage}/lib/solr.war";
+      extraOptions = [
+        "--commonLibFolder=${cfg.solrPackage}/lib/ext"
+      ] ++ cfg.extraWinstoneOptions;
+      extraJavaOptions = [
+        "-Dsolr.solr.home=${cfg.solrHome}"
+        "-Dlog4j.configuration=file://${pkgs.writeText "log4j.properties" cfg.log4jConfiguration}"
+      ] ++ cfg.extraJavaOptions;
+    };
+
+  };
+
+}
diff --git a/nixos/modules/services/ttys/agetty.nix b/nixos/modules/services/ttys/agetty.nix
index 211008fa7e41..ca4fbeb0add3 100644
--- a/nixos/modules/services/ttys/agetty.nix
+++ b/nixos/modules/services/ttys/agetty.nix
@@ -48,82 +48,25 @@ with pkgs.lib;
 
   config = {
 
-    # FIXME: these are mostly copy/pasted from the systemd sources,
-    # which some small modifications, which is annoying.
-
-    # Generate a separate job for each tty.
-    systemd.units."getty@.service".text =
-      ''
-        [Unit]
-        Description=Getty on %I
-        Documentation=man:agetty(8)
-        After=systemd-user-sessions.service plymouth-quit-wait.service
-
-        # If additional gettys are spawned during boot then we should make
-        # sure that this is synchronized before getty.target, even though
-        # getty.target didn't actually pull it in.
-        Before=getty.target
-        IgnoreOnIsolate=yes
-
-        ConditionPathExists=/dev/tty0
-
-        [Service]
-        Environment=TERM=linux
-        Environment=LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
-        ExecStart=@${pkgs.utillinux}/sbin/agetty agetty --noclear --login-program ${pkgs.shadow}/bin/login %I 38400
-        Type=idle
-        Restart=always
-        RestartSec=0
-        UtmpIdentifier=%I
-        TTYPath=/dev/%I
-        TTYReset=yes
-        TTYVHangup=yes
-        TTYVTDisallocate=yes # set to no to prevent clearing the screen
-        KillMode=process
-        IgnoreSIGPIPE=no
-
-        # Some login implementations ignore SIGTERM, so we send SIGHUP
-        # instead, to ensure that login terminates cleanly.
-        KillSignal=SIGHUP
-
-        X-RestartIfChanged=false
-      '';
-    
-    systemd.units."serial-getty@.service".text = let
-        speeds = with pkgs.lib; concatStringsSep "," (map toString config.services.mingetty.serialSpeed);
-      in ''
-        [Unit]
-        Description=Serial Getty on %I
-        Documentation=man:agetty(8) man:systemd-getty-generator(8)
-        BindsTo=dev-%i.device
-        After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
-
-        # If additional gettys are spawned during boot then we should make
-        # sure that this is synchronized before getty.target, even though
-        # getty.target didn't actually pull it in.
-        Before=getty.target
-        IgnoreOnIsolate=yes
-
-        [Service]
-        Environment=TERM=linux
-        Environment=LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
-        ExecStart=@${pkgs.utillinux}/sbin/agetty agetty --login-program ${pkgs.shadow}/bin/login %I ${speeds}
-        Type=idle
-        Restart=always
-        RestartSec=0
-        UtmpIdentifier=%I
-        TTYPath=/dev/%I
-        TTYReset=yes
-        TTYVHangup=yes
-        KillMode=process
-        IgnoreSIGPIPE=no
-
-        # Some login implementations ignore SIGTERM, so we send SIGHUP
-        # instead, to ensure that login terminates cleanly.
-        KillSignal=SIGHUP
-        
-        X-RestartIfChanged=false
-      '';
+    systemd.services."getty@" =
+      { baseUnit = pkgs.runCommand "getty.service" {}
+          ''
+            sed '/ExecStart/ d' < ${config.systemd.package}/example/systemd/system/getty@.service > $out
+          '';
+        serviceConfig.ExecStart = "@${pkgs.utillinux}/sbin/agetty agetty --noclear --login-program ${pkgs.shadow}/bin/login %I 38400";
+        restartIfChanged = false;
+      };
+
+    systemd.services."serial-getty@" =
+      { baseUnit = pkgs.runCommand "serial-getty.service" {}
+          ''
+            sed '/ExecStart/ d' < ${config.systemd.package}/example/systemd/system/serial-getty@.service > $out
+          '';
+        serviceConfig.ExecStart =
+          let speeds = concatStringsSep "," (map toString config.services.mingetty.serialSpeed);
+          in "@${pkgs.utillinux}/sbin/agetty agetty --login-program ${pkgs.shadow}/bin/login %I ${speeds}";
+        restartIfChanged = false;
+      };
 
     environment.etc = singleton
       { # Friendly greeting on the virtual consoles.
diff --git a/nixos/modules/services/ttys/kmscon.nix b/nixos/modules/services/ttys/kmscon.nix
index eb68a3d95d8f..70555e5d8825 100644
--- a/nixos/modules/services/ttys/kmscon.nix
+++ b/nixos/modules/services/ttys/kmscon.nix
@@ -44,6 +44,7 @@ in {
       After=systemd-user-sessions.service
       After=plymouth-quit-wait.service
       After=systemd-logind.service
+      After=systemd-vconsole-setup.service
       Requires=systemd-logind.service
       Before=getty.target
       Conflicts=getty@%i.service
@@ -62,11 +63,13 @@ in {
       X-RestartIfChanged=false
     '';
 
-    systemd.units."autovt@.service".linkTarget = "${config.systemd.units."kmsconvt@.service".unit}/kmsconvt@.service";
-
-    systemd.services."systemd-vconsole-setup".restartIfChanged = false;
+    systemd.units."autovt@.service".unit = pkgs.runCommand "unit" { }
+        ''
+          mkdir -p $out
+          ln -s ${config.systemd.units."kmsconvt@.service".unit}/kmsconvt@.service $out/autovt@.service
+        '';
 
-    systemd.units."kmsconvt@tty1.service".extraConfig.wait-for-vconsole-setup = "After=systemd-vconsole-setup.service";
+    systemd.services.systemd-vconsole-setup.restartIfChanged = false;
 
     services.kmscon.extraConfig = mkIf cfg.hwRender ''
       drm
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 1a39fe43bbee..621536133554 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -9,6 +9,11 @@ let
     user ${cfg.user} ${cfg.group};
     daemon off;
     ${cfg.config}
+    ${optionalString (cfg.httpConfig != "") ''
+    http {
+      ${cfg.httpConfig}
+    }
+    ''}
     ${cfg.appendConfig}
   '';
 in
@@ -51,6 +56,12 @@ in
         '';
       };
 
+      httpConfig = mkOption {
+        type = types.lines;
+        default = "";
+        description = "Configuration lines to be appended inside of the http {} block.";
+      };
+
       stateDir = mkOption {
         default = "/var/spool/nginx";
         description = "
diff --git a/nixos/modules/services/web-servers/phpfpm.nix b/nixos/modules/services/web-servers/phpfpm.nix
new file mode 100644
index 000000000000..76ec41244627
--- /dev/null
+++ b/nixos/modules/services/web-servers/phpfpm.nix
@@ -0,0 +1,77 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+  cfg = config.services.phpfpm;
+
+  stateDir = "/run/phpfpm";
+
+  pidFile = "${stateDir}/phpfpm.pid";
+
+  cfgFile = pkgs.writeText "phpfpm.conf" ''
+    [global]
+    pid = ${pidFile}
+    error_log = syslog
+    daemonize = yes
+    ${cfg.extraConfig}
+
+    ${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
+  '';
+
+in {
+
+  options = {
+    services.phpfpm = {
+      extraConfig = mkOption {
+        type = types.lines;
+        default = "";
+        description = ''
+          Extra configuration that should be put in the global section of
+          the PHP FPM configuration file. Do not specify the options
+          <literal>pid</literal>, <literal>error_log</literal> or
+          <literal>daemonize</literal> here, since they are generated by
+          NixOS.
+        '';
+      };
+
+      poolConfigs = mkOption {
+        type = types.attrsOf types.lines;
+        default = {};
+        example = {
+          mypool = ''
+            listen = /run/phpfpm/mypool
+            user = nobody
+            pm = dynamic
+            pm.max_children = 75
+            pm.start_servers = 10
+            pm.min_spare_servers = 5
+            pm.max_spare_servers = 20
+            pm.max_requests = 500
+          '';
+        };
+        description = ''
+          A mapping between PHP FPM pool names and their configurations.
+          See the documentation on <literal>php-fpm.conf</literal> for
+          details on configuration directives. If no pools are defined,
+          the phpfpm service is disabled.
+        '';
+      };
+    };
+  };
+
+  config = mkIf (cfg.poolConfigs != {}) {
+
+    systemd.services.phpfpm = {
+      wantedBy = [ "multi-user.target" ];
+      preStart = ''
+        mkdir -p "${stateDir}"
+      '';
+      serviceConfig = {
+        ExecStart = "${pkgs.php54}/sbin/php-fpm -y ${cfgFile}";
+        PIDFile = pidFile;
+      };
+    };
+
+  };
+}
diff --git a/nixos/modules/services/web-servers/winstone.nix b/nixos/modules/services/web-servers/winstone.nix
new file mode 100644
index 000000000000..33c7e7301182
--- /dev/null
+++ b/nixos/modules/services/web-servers/winstone.nix
@@ -0,0 +1,129 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+
+  cfg = config.services.winstone;
+
+  winstoneOpts = { name, ... }: {
+    options = {
+      name = mkOption {
+        default = name;
+        internal = true;
+      };
+
+      serviceName = mkOption {
+        type = types.str;
+        description = ''
+          The name of the systemd service. By default, it is
+          derived from the winstone instance name.
+        '';
+      };
+
+      warFile = mkOption {
+        type = types.str;
+        description = ''
+          The WAR file that Winstone should serve.
+        '';
+      };
+
+      javaPackage = mkOption {
+        type = types.package;
+        default = pkgs.openjre;
+        description = ''
+          Which Java derivation to use for running Winstone.
+        '';
+      };
+
+      user = mkOption {
+        type = types.str;
+        description = ''
+          The user that should run this Winstone process and
+          own the working directory.
+        '';
+      };
+
+      group = mkOption {
+        type = types.str;
+        description = ''
+          The group that will own the working directory.
+        '';
+      };
+
+      workDir = mkOption {
+        type = types.str;
+        description = ''
+          The working directory for this Winstone instance. Will
+          contain extracted webapps etc. The directory will be
+          created if it doesn't exist.
+        '';
+      };
+
+      extraJavaOptions = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Extra command line options given to the java process running
+          Winstone.
+        '';
+      };
+
+      extraOptions = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Extra command line options given to the Winstone process.
+        '';
+      };
+    };
+
+    config = {
+      workDir = mkDefault "/run/winstone/${name}";
+      serviceName = mkDefault "winstone-${name}";
+    };
+  };
+
+  mkService = cfg: let
+    opts = concatStringsSep " " (cfg.extraOptions ++ [
+      "--warfile ${cfg.warFile}"
+    ]);
+
+    javaOpts = concatStringsSep " " (cfg.extraJavaOptions ++ [
+      "-Djava.io.tmpdir=${cfg.workDir}"
+      "-jar ${pkgs.winstone}/lib/winstone.jar"
+    ]);
+  in {
+    wantedBy = [ "multi-user.target" ];
+    description = "winstone service for ${cfg.name}";
+    preStart = ''
+      mkdir -p "${cfg.workDir}"
+      chown ${cfg.user}:${cfg.group} "${cfg.workDir}"
+    '';
+    serviceConfig = {
+      ExecStart = "${cfg.javaPackage}/bin/java ${javaOpts} ${opts}";
+      User = cfg.user;
+      PermissionsStartOnly = true;
+    };
+  };
+
+in {
+
+  options = {
+    services.winstone = mkOption {
+      default = {};
+      type = types.attrsOf types.optionSet;
+      options = [ winstoneOpts ];
+      description = ''
+        Defines independent Winstone services, each serving one WAR-file.
+      '';
+    };
+  };
+
+  config = mkIf (cfg != {}) {
+
+    systemd.services = mapAttrs' (n: c: nameValuePair c.serviceName (mkService c)) cfg;
+
+  };
+
+}
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix
index dde5b333f329..753babf6a225 100644
--- a/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixos/modules/services/x11/desktop-managers/default.nix
@@ -17,7 +17,7 @@ in
   # Note: the order in which desktop manager modules are imported here
   # determines the default: later modules (if enabled) are preferred.
   # E.g., if KDE is enabled, it supersedes xterm.
-  imports = [ ./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./e17.nix ./gnome3.nix ];
+  imports = [ ./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./e17.nix ./gnome3.nix ./xbmc.nix ];
 
   options = {
 
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 456975015a22..85be61bfc1e9 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -43,7 +43,7 @@ in {
         '';
       };
 
-    environment.variables.GIO_EXTRA_MODULES = "${gnome3.dconf}/lib/gio/modules";
+    environment.variables.GIO_EXTRA_MODULES = [ "${gnome3.dconf}/lib/gio/modules" ];
     environment.systemPackages =
       [ gnome3.evince
         gnome3.eog
diff --git a/nixos/modules/services/x11/desktop-managers/xbmc.nix b/nixos/modules/services/x11/desktop-managers/xbmc.nix
new file mode 100644
index 000000000000..51278c5fadb6
--- /dev/null
+++ b/nixos/modules/services/x11/desktop-managers/xbmc.nix
@@ -0,0 +1,31 @@
+{ pkgs, config, ... }:
+
+with pkgs.lib;
+
+let
+  cfg = config.services.xserver.desktopManager.xbmc;
+in
+
+{
+  options = {
+    services.xserver.desktopManager.xbmc = {
+      enable = mkOption {
+        default = false;
+        example = true;
+        description = "Enable the xbmc multimedia center.";
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    services.xserver.desktopManager.session = [{
+      name = "xbmc";
+      start = ''
+        ${pkgs.xbmc}/bin/xbmc --lircdev /var/run/lirc/lircd --standalone &
+        waitPID=$!
+      '';
+    }];
+    
+    environment.systemPackages = [ pkgs.xbmc ];
+  };
+}
\ No newline at end of file
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
index 3c67571ffd5b..9ce7744b0652 100644
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -81,7 +81,7 @@ in
     environment.pathsToLink =
       [ "/share/xfce4" "/share/themes" "/share/mime" "/share/desktop-directories" "/share/gtksourceview-2.0" ];
 
-    environment.variables.GIO_EXTRA_MODULES = "${pkgs.xfce.gvfs}/lib/gio/modules";
+    environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
 
     # Enable helpful DBus services.
     services.udisks2.enable = true;
diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix
index 4d52e398b477..1c10333462c8 100644
--- a/nixos/modules/services/x11/window-managers/default.nix
+++ b/nixos/modules/services/x11/window-managers/default.nix
@@ -16,7 +16,6 @@ in
       ./wmii.nix
       ./xmonad.nix
       ./i3.nix
-      ./xbmc.nix
       ./herbstluftwm.nix
     ];
 
diff --git a/nixos/modules/services/x11/window-managers/xbmc.nix b/nixos/modules/services/x11/window-managers/xbmc.nix
deleted file mode 100644
index 46494202b404..000000000000
--- a/nixos/modules/services/x11/window-managers/xbmc.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{pkgs, config, ...}:
-
-let
-  inherit (pkgs.lib) mkOption mkIf;
-  cfg = config.services.xserver.windowManager.xbmc;
-in
-
-{
-  options = {
-    services.xserver.windowManager.xbmc = {
-      enable = mkOption {
-        default = false;
-        example = true;
-        description = "Enable the xbmc multimedia center.";
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.xserver.windowManager = {
-      session = [{
-        name = "xbmc";
-        start = "
-          ${pkgs.xbmc}/bin/xbmc --lircdev /var/run/lirc/lircd --standalone &
-          waitPID=$!
-        ";
-      }];
-    };
-    environment.systemPackages = [ pkgs.xbmc ];
-  };
-}
diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl
index cb5b49692fe1..e0649448c834 100644
--- a/nixos/modules/system/activation/switch-to-configuration.pl
+++ b/nixos/modules/system/activation/switch-to-configuration.pl
@@ -128,7 +128,7 @@ while (my ($unit, $state) = each %{$activePrev}) {
     $baseName =~ s/\.[a-z]*$//;
 
     if (-e $prevUnitFile && ($state->{state} eq "active" || $state->{state} eq "activating")) {
-        if (! -e $newUnitFile) {
+        if (! -e $newUnitFile || abs_path($newUnitFile) eq "/dev/null") {
             push @unitsToStop, $unit;
         }
 
diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix
index 327f3b7e1128..4cfd8a0b6187 100644
--- a/nixos/modules/system/boot/kernel.nix
+++ b/nixos/modules/system/boot/kernel.nix
@@ -203,6 +203,9 @@ in
 
         # To wait for SCSI devices to appear.
         "scsi_wait_scan"
+
+        # Needed by the stage 2 init script.
+        "rtc_cmos"
       ];
 
     boot.initrd.kernelModules =
diff --git a/nixos/modules/system/boot/stage-2-init.sh b/nixos/modules/system/boot/stage-2-init.sh
index b749172a3ff3..ee042992b178 100644
--- a/nixos/modules/system/boot/stage-2-init.sh
+++ b/nixos/modules/system/boot/stage-2-init.sh
@@ -131,13 +131,12 @@ if ! mountpoint -q /run; then
     mount -t tmpfs -o "mode=0755,size=@runSize@" none /run
 fi
 
-# Create a ramfs on /run/keys to hold secrets that shouldn't
-# be written to disk (generally used for nixops, harmless
-# elsehwere)
+# Create a ramfs on /run/keys to hold secrets that shouldn't be
+# written to disk (generally used for NixOps, harmless elsewhere).
 if ! mountpoint -q /run/keys; then
     rm -rf /run/keys
     mkdir -m 0750 /run/keys
-    chown root:keys /run/keys
+    chown 0:96 /run/keys
     mount -t ramfs none /run/keys
 fi
 
@@ -162,6 +161,12 @@ echo "running activation script..."
 $systemConfig/activate
 
 
+# Restore the system time from the hardware clock.  We do this after
+# running the activation script to be sure that /etc/localtime points
+# at the current time zone.
+hwclock --hctosys
+
+
 # Record the boot configuration.
 ln -sfn "$systemConfig" /run/booted-system
 
diff --git a/nixos/modules/system/boot/systemd-unit-options.nix b/nixos/modules/system/boot/systemd-unit-options.nix
index c0518599f17a..113990814efa 100644
--- a/nixos/modules/system/boot/systemd-unit-options.nix
+++ b/nixos/modules/system/boot/systemd-unit-options.nix
@@ -41,6 +41,12 @@ in rec {
       '';
     };
 
+    baseUnit = mkOption {
+      type = types.nullOr types.path;
+      default = null;
+      description = "Path to an upstream unit file on which the NixOS unit configuration will be based.";
+    };
+
     description = mkOption {
       default = "";
       type = types.str;
@@ -135,6 +141,7 @@ in rec {
 
     restartTriggers = mkOption {
       default = [];
+      type = types.listOf types.unspecified;
       description = ''
         An arbitrary list of items such as derivations.  If any item
         in the list changes between reconfigurations, the service will
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index 2d1bb5ae9802..49502b3e6851 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -11,20 +11,18 @@ let
   systemd = cfg.package;
 
   makeUnit = name: unit:
-    pkgs.runCommand "unit" { preferLocalBuild = true; inherit (unit) text; }
-      ((if !unit.enable then  ''
-        mkdir -p $out
-        ln -s /dev/null $out/${name}
-      '' else if unit.linkTarget != null then ''
-        mkdir -p $out
-        ln -s ${unit.linkTarget} $out/${name}
-      '' else if unit.text != null then ''
-        mkdir -p $out
-        echo -n "$text" > $out/${name}
-      '' else "") + optionalString (unit.extraConfig != {}) ''
-        mkdir -p $out/${name}.d
-        ${concatStringsSep "\n" (mapAttrsToList (n: v: "echo -n \"${v}\" > $out/${name}.d/${n}") unit.extraConfig)}
-      '');
+    if unit.enable then
+      pkgs.runCommand "unit" { preferLocalBuild = true; inherit (unit) text; }
+        ''
+          mkdir -p $out
+          echo -n "$text" > $out/${name}
+        ''
+    else
+      pkgs.runCommand "unit" { preferLocalBuild = true; }
+        ''
+          mkdir -p $out
+          ln -s /dev/null $out/${name}
+        '';
 
   upstreamUnits =
     [ # Targets.
@@ -132,6 +130,11 @@ let
     ++ optionals cfg.enableEmergencyMode [
       "emergency.target"
       "emergency.service"
+    ]
+
+    ++ optionals config.services.journald.enableHttpGateway [
+      "systemd-journal-gatewayd.socket"
+      "systemd-journal-gatewayd.service"
     ];
 
   upstreamWants =
@@ -151,15 +154,23 @@ let
   unitConfig = { name, config, ... }: {
     config = {
       unitConfig =
-        { Requires = concatStringsSep " " config.requires;
-          Wants = concatStringsSep " " config.wants;
-          After = concatStringsSep " " config.after;
-          Before = concatStringsSep " " config.before;
-          BindsTo = concatStringsSep " " config.bindsTo;
-          PartOf = concatStringsSep " " config.partOf;
-          Conflicts = concatStringsSep " " config.conflicts;
-          "X-Restart-Triggers" = toString config.restartTriggers;
-        } // optionalAttrs (config.description != "") {
+        optionalAttrs (config.requires != [])
+          { Requires = toString config.requires; }
+        // optionalAttrs (config.wants != [])
+          { Wants = toString config.wants; }
+        // optionalAttrs (config.after != [])
+          { After = toString config.after; }
+        // optionalAttrs (config.before != [])
+          { Before = toString config.before; }
+        // optionalAttrs (config.bindsTo != [])
+          { BindsTo = toString config.bindsTo; }
+        // optionalAttrs (config.partOf != [])
+          { PartOf = toString config.partOf; }
+        // optionalAttrs (config.conflicts != [])
+          { Conflicts = toString config.conflicts; }
+        // optionalAttrs (config.restartTriggers != [])
+          { X-Restart-Triggers = toString config.restartTriggers; }
+        // optionalAttrs (config.description != "") {
           Description = config.description;
         };
     };
@@ -167,7 +178,7 @@ let
 
   serviceConfig = { name, config, ... }: {
     config = mkMerge
-      [ { # Default path for systemd services.  Should be quite minimal.
+      [ (mkIf (config.baseUnit == null) { # Default path for systemd services.  Should be quite minimal.
           path =
             [ pkgs.coreutils
               pkgs.findutils
@@ -176,7 +187,7 @@ let
               systemd
             ];
           environment.PATH = config.path;
-        }
+        })
         (mkIf (config.preStart != "")
           { serviceConfig.ExecStartPre = makeJobScript "${name}-pre-start" ''
               #! ${pkgs.stdenv.shell} -e
@@ -244,6 +255,14 @@ let
         (if isList value then value else [value]))
         as));
 
+  commonUnitText = def:
+    optionalString (def.baseUnit != null) ''
+      .include ${def.baseUnit}
+    '' + ''
+      [Unit]
+      ${attrsToSection def.unitConfig}
+    '';
+
   targetToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
       text =
@@ -255,11 +274,8 @@ let
 
   serviceToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
-      text =
+      text = commonUnitText def +
         ''
-          [Unit]
-          ${attrsToSection def.unitConfig}
-
           [Service]
           ${let env = cfg.globalEnvironment // def.environment;
             in concatMapStrings (n: "Environment=\"${n}=${getAttr n env}\"\n") (attrNames env)}
@@ -271,11 +287,8 @@ let
 
   socketToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
-      text =
+      text = commonUnitText def +
         ''
-          [Unit]
-          ${attrsToSection def.unitConfig}
-
           [Socket]
           ${attrsToSection def.socketConfig}
           ${concatStringsSep "\n" (map (s: "ListenStream=${s}") def.listenStreams)}
@@ -284,11 +297,8 @@ let
 
   timerToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
-      text =
+      text = commonUnitText def +
         ''
-          [Unit]
-          ${attrsToSection def.unitConfig}
-
           [Timer]
           ${attrsToSection def.timerConfig}
         '';
@@ -296,11 +306,8 @@ let
 
   mountToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
-      text =
+      text = commonUnitText def +
         ''
-          [Unit]
-          ${attrsToSection def.unitConfig}
-
           [Mount]
           ${attrsToSection def.mountConfig}
         '';
@@ -308,11 +315,8 @@ let
 
   automountToUnit = name: def:
     { inherit (def) wantedBy requiredBy enable;
-      text =
+      text = commonUnitText def +
         ''
-          [Unit]
-          ${attrsToSection def.unitConfig}
-
           [Automount]
           ${attrsToSection def.automountConfig}
         '';
@@ -372,6 +376,10 @@ let
 
       ln -s ../local-fs.target ../remote-fs.target ../network.target ../nss-lookup.target \
             ../nss-user-lookup.target ../swap.target $out/multi-user.target.wants/
+
+      ${ optionalString config.services.journald.enableHttpGateway ''
+      ln -s ../systemd-journal-gatewayd.service $out/multi-user-target.wants/
+      ''}
     ''; # */
 
 in
@@ -423,25 +431,9 @@ in
               internal = true;
               description = "The generated unit.";
             };
-            linkTarget = mkOption {
-              default = null;
-              description = "The file to symlink this target to.";
-              type = types.nullOr types.path;
-            };
-            extraConfig = mkOption {
-              default = {};
-              example = { "foo@1.conf" = "X-RestartIfChanged=false"; };
-              type = types.attrsOf types.lines;
-              description = ''
-                Extra files to be appended to the configuration for the unit.
-                This can be used to override configuration for a unit provided
-                by systemd or another package, or to override only a single instance
-                of a template unit.
-              '';
-            };
           };
           config = {
-            unit = makeUnit name config;
+            unit = mkDefault (makeUnit name config);
           };
         };
     };
@@ -567,6 +559,14 @@ in
       '';
     };
 
+    services.journald.enableHttpGateway = mkOption {
+      default = false;
+      type = types.bool;
+      description = ''
+        Enable journal http gateway
+      '';
+    };
+
     services.logind.extraConfig = mkOption {
       default = "";
       type = types.lines;
@@ -676,6 +676,8 @@ in
       };
 
     users.extraGroups.systemd-journal.gid = config.ids.gids.systemd-journal;
+    users.extraUsers.systemd-journal-gateway.uid = config.ids.uids.systemd-journal-gateway;
+    users.extraGroups.systemd-journal-gateway.gid = config.ids.gids.systemd-journal-gateway;
 
     # Generate timer units for all services that have a ‘startAt’ value.
     systemd.timers =
diff --git a/nixos/modules/system/etc/etc.nix b/nixos/modules/system/etc/etc.nix
index a8f0a59b6fa9..e9c03df2ba34 100644
--- a/nixos/modules/system/etc/etc.nix
+++ b/nixos/modules/system/etc/etc.nix
@@ -19,6 +19,8 @@ let
     sources = map (x: x.source) etc';
     targets = map (x: x.target) etc';
     modes = map (x: x.mode) etc';
+    uids  = map (x: x.uid) etc';
+    gids  = map (x: x.gid) etc';
   };
 
 in
@@ -87,6 +89,24 @@ in
               '';
             };
 
+            uid = mkOption {
+              default = 0;
+              type = types.int;
+              description = ''
+                UID of created file. Only takes affect when the file is
+                copied (that is, the mode is not 'symlink').
+                '';
+            };
+
+            gid = mkOption {
+              default = 0;
+              type = types.int;
+              description = ''
+                GID of created file. Only takes affect when the file is
+                copied (that is, the mode is not 'symlink').
+              '';
+            };
+
           };
 
           config = {
diff --git a/nixos/modules/system/etc/make-etc.sh b/nixos/modules/system/etc/make-etc.sh
index 7cf68db9ddce..60d4ba1301a3 100644
--- a/nixos/modules/system/etc/make-etc.sh
+++ b/nixos/modules/system/etc/make-etc.sh
@@ -6,6 +6,8 @@ set -f
 sources_=($sources)
 targets_=($targets)
 modes_=($modes)
+uids_=($uids)
+gids_=($gids)
 set +f
 
 for ((i = 0; i < ${#targets_[@]}; i++)); do
@@ -35,6 +37,8 @@ for ((i = 0; i < ${#targets_[@]}; i++)); do
         
         if test "${modes_[$i]}" != symlink; then
             echo "${modes_[$i]}" > $out/etc/$target.mode
+            echo "${uids_[$i]}" > $out/etc/$target.uid
+            echo "${gids_[$i]}" > $out/etc/$target.gid
         fi
         
     fi
diff --git a/nixos/modules/system/etc/setup-etc.pl b/nixos/modules/system/etc/setup-etc.pl
index 4b79dbaab89e..8ba9a370b27a 100644
--- a/nixos/modules/system/etc/setup-etc.pl
+++ b/nixos/modules/system/etc/setup-etc.pl
@@ -60,7 +60,15 @@ sub link {
         if ($mode eq "direct-symlink") {
             atomicSymlink readlink("$static/$fn"), $target or warn;
         } else {
+            open UID, "<$_.uid";
+            my $uid = <UID>; chomp $uid;
+            close UID;
+            open GID, "<$_.gid";
+            my $gid = <GID>; chomp $gid;
+            close GID;
+
             copy "$static/$fn", "$target.tmp" or warn;
+            chown int($uid), int($gid), "$target.tmp" or warn;
             chmod oct($mode), "$target.tmp" or warn;
             rename "$target.tmp", $target or warn;
         }
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix
index 7c3c662eeac9..32e3da6a273c 100644
--- a/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixos/modules/tasks/filesystems/zfs.nix
@@ -11,18 +11,30 @@ with pkgs.lib;
 let
 
   cfgSpl = config.boot.spl;
+  cfgSnapshots = config.services.zfs.autoSnapshot;
+
   inInitrd = any (fs: fs == "zfs") config.boot.initrd.supportedFilesystems;
   inSystem = any (fs: fs == "zfs") config.boot.supportedFilesystems;
+
+  enableAutoSnapshots = cfgSnapshots.enable;
+  enableZfs = inInitrd || inSystem || enableAutoSnapshots;
+
   kernel = config.boot.kernelPackages;
 
+  autosnapPkg = pkgs.zfstools.override {
+    zfs = config.boot.kernelPackages.zfs;
+  };
+
+  zfsAutoSnap = "${autosnapPkg}/bin/zfs-auto-snapshot";
+
 in
 
 {
 
   ###### interface
-  
-  options = { 
-    boot.spl.hostid = mkOption { 
+
+  options = {
+    boot.spl.hostid = mkOption {
       default = "";
       example = "0xdeadbeef";
       description = ''
@@ -34,62 +46,177 @@ in
         manually import pools.
       '';
     };
-  };
 
-  ###### implementation
+    services.zfs.autoSnapshot = {
+      enable = mkOption {
+        default = false;
+        type = types.bool;
+        description = ''
+          Enable the (OpenSolaris-compatible) ZFS auto-snapshotting service.
+          Note that you must set the <literal>com.sun:auto-snapshot</literal>
+          property to <literal>true</literal> on all datasets which you wish
+          to auto-snapshot.
 
-  config = mkIf ( inInitrd || inSystem ) {
+          You can override a child dataset to use, or not use auto-snapshotting
+          by setting its flag with the given interval:
+          <literal>zfs set com.sun:auto-snapshot:weekly=false DATASET</literal>
+        '';
+      };
 
-    boot = { 
-      kernelModules = [ "spl" "zfs" ] ;
-      extraModulePackages = [ kernel.zfs kernel.spl ];
-      extraModprobeConfig = mkIf (cfgSpl.hostid != "") ''
-        options spl spl_hostid=${cfgSpl.hostid}
-      '';
-    };
+      frequent = mkOption {
+        default = 4;
+        type = types.int;
+        description = ''
+          Number of frequent (15-minute) auto-snapshots that you wish to keep.
+        '';
+      };
+
+      hourly = mkOption {
+        default = 24;
+        type = types.int;
+        description = ''
+          Number of hourly auto-snapshots that you wish to keep.
+        '';
+      };
+
+      daily = mkOption {
+        default = 7;
+        type = types.int;
+        description = ''
+          Number of daily auto-snapshots that you wish to keep.
+        '';
+      };
 
-    boot.initrd = mkIf inInitrd { 
-      kernelModules = [ "spl" "zfs" ] ;
-      extraUtilsCommands =
-        ''
-          cp -v ${kernel.zfs}/sbin/zfs $out/bin
-          cp -v ${kernel.zfs}/sbin/zdb $out/bin
-          cp -v ${kernel.zfs}/sbin/zpool $out/bin
-          cp -pdv ${kernel.zfs}/lib/lib*.so* $out/lib
-          cp -pdv ${pkgs.zlib}/lib/lib*.so* $out/lib
+      weekly = mkOption {
+        default = 4;
+        type = types.int;
+        description = ''
+          Number of weekly auto-snapshots that you wish to keep.
         '';
-      postDeviceCommands =
-        ''
-          zpool import -f -a -d /dev
+      };
+
+      monthly = mkOption {
+        default = 12;
+        type = types.int;
+        description = ''
+          Number of monthly auto-snapshots that you wish to keep.
         '';
+      };
     };
+  };
 
-    systemd.services."zpool-import" = {
-      description = "Import zpools";
-      after = [ "systemd-udev-settle.service" ];
-      serviceConfig = {
-        Type = "oneshot";
-        RemainAfterExit = true;
+  ###### implementation
+
+  config = mkMerge [
+    (mkIf enableZfs {
+      boot = {
+        kernelModules = [ "spl" "zfs" ] ;
+        extraModulePackages = [ kernel.zfs kernel.spl ];
+        extraModprobeConfig = mkIf (cfgSpl.hostid != "") ''
+          options spl spl_hostid=${cfgSpl.hostid}
+        '';
+      };
+
+      boot.initrd = mkIf inInitrd {
+        kernelModules = [ "spl" "zfs" ] ;
+        extraUtilsCommands =
+          ''
+            cp -v ${kernel.zfs}/sbin/zfs $out/bin
+            cp -v ${kernel.zfs}/sbin/zdb $out/bin
+            cp -v ${kernel.zfs}/sbin/zpool $out/bin
+            cp -pdv ${kernel.zfs}/lib/lib*.so* $out/lib
+            cp -pdv ${pkgs.zlib}/lib/lib*.so* $out/lib
+          '';
+        postDeviceCommands =
+          ''
+            zpool import -f -a
+          '';
+      };
+
+      systemd.services."zpool-import" = {
+        description = "Import zpools";
+        after = [ "systemd-udev-settle.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          RemainAfterExit = true;
+          ExecStart = "${kernel.zfs}/sbin/zpool import -f -a";
+        };
         restartIfChanged = false;
-        ExecStart = "${kernel.zfs}/sbin/zpool import -f -a -d /dev";
       };
-    };
 
-    systemd.services."zfs-mount" = {
-      description = "Mount ZFS Volumes";
-      after = [ "zpool-import.service" ];
-      wantedBy = [ "local-fs.target" ];
-      serviceConfig = {
-        Type = "oneshot";
-        RemainAfterExit = true;
+      systemd.services."zfs-mount" = {
+        description = "Mount ZFS Volumes";
+        after = [ "zpool-import.service" ];
+        wantedBy = [ "local-fs.target" ];
+        serviceConfig = {
+          Type = "oneshot";
+          RemainAfterExit = true;
+          ExecStart = "${kernel.zfs}/sbin/zfs mount -a";
+          ExecStop = "${kernel.zfs}/sbin/zfs umount -a";
+        };
         restartIfChanged = false;
-        ExecStart = "${kernel.zfs}/sbin/zfs mount -a";
-        ExecStop = "${kernel.zfs}/sbin/zfs umount -a";
       };
-    };
 
-    system.fsPackages = [ kernel.zfs ];                  # XXX: needed? zfs doesn't have (need) a fsck
-    environment.systemPackages = [ kernel.zfs ];
-    services.udev.packages = [ kernel.zfs ];             # to hook zvol naming, etc. 
-  };
+      system.fsPackages = [ kernel.zfs ];                  # XXX: needed? zfs doesn't have (need) a fsck
+      environment.systemPackages = [ kernel.zfs ];
+      services.udev.packages = [ kernel.zfs ];             # to hook zvol naming, etc.
+    })
+
+    (mkIf enableAutoSnapshots {
+      systemd.services."zfs-snapshot-frequent" = {
+        description = "ZFS auto-snapshotting every 15 mins";
+        after = [ "zpool-import.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          ExecStart = "${zfsAutoSnap} frequent ${toString cfgSnapshots.frequent}";
+        };
+        restartIfChanged = false;
+        startAt = "*:15,30,45";
+      };
+
+      systemd.services."zfs-snapshot-hourly" = {
+        description = "ZFS auto-snapshotting every hour";
+        after = [ "zpool-import.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          ExecStart = "${zfsAutoSnap} hourly ${toString cfgSnapshots.hourly}";
+        };
+        restartIfChanged = false;
+        startAt = "hourly";
+      };
+
+      systemd.services."zfs-snapshot-daily" = {
+        description = "ZFS auto-snapshotting every day";
+        after = [ "zpool-import.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          ExecStart = "${zfsAutoSnap} daily ${toString cfgSnapshots.daily}";
+        };
+        restartIfChanged = false;
+        startAt = "daily";
+      };
+
+      systemd.services."zfs-snapshot-weekly" = {
+        description = "ZFS auto-snapshotting every week";
+        after = [ "zpool-import.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          ExecStart = "${zfsAutoSnap} weekly ${toString cfgSnapshots.weekly}";
+        };
+        restartIfChanged = false;
+        startAt = "weekly";
+      };
+
+      systemd.services."zfs-snapshot-monthly" = {
+        description = "ZFS auto-snapshotting every month";
+        after = [ "zpool-import.service" ];
+        serviceConfig = {
+          Type = "oneshot";
+          ExecStart = "${zfsAutoSnap} monthly ${toString cfgSnapshots.monthly}";
+        };
+        restartIfChanged = false;
+        startAt = "monthly";
+      };
+    })
+  ];
 }
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index 9619f0f5ebe7..548685377a90 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -50,6 +50,26 @@ let
         '';
       };
 
+      ipv6Address = mkOption {
+        default = null;
+        example = "2001:1470:fffd:2098::e006";
+        type = types.nullOr types.string;
+        description = ''
+          IPv6 address of the interface.  Leave empty to configure the
+          interface using NDP.
+        '';
+      };
+
+      ipv6prefixLength = mkOption {
+        default = 64;
+        example = 64;
+        type = types.int;
+        description = ''
+          Subnet mask of the interface, specified as the number of
+          bits in the prefix (<literal>64</literal>).
+        '';
+      };
+
       macAddress = mkOption {
         default = null;
         example = "00:11:22:33:44:55";
@@ -401,9 +421,11 @@ in
                 EOF
 
                 # Disable or enable IPv6.
-                if [ -e /proc/sys/net/ipv6/conf/all/disable_ipv6 ]; then
-                  echo ${if cfg.enableIPv6 then "0" else "1"} > /proc/sys/net/ipv6/conf/all/disable_ipv6
-                fi
+                ${optionalString (!config.boot.isContainer) ''
+                  if [ -e /proc/sys/net/ipv6/conf/all/disable_ipv6 ]; then
+                    echo ${if cfg.enableIPv6 then "0" else "1"} > /proc/sys/net/ipv6/conf/all/disable_ipv6
+                  fi
+                ''}
 
                 # Set the default gateway.
                 ${optionalString (cfg.defaultGateway != "") ''
@@ -435,6 +457,7 @@ in
           (let mask =
                 if i.prefixLength != null then toString i.prefixLength else
                 if i.subnetMask != "" then i.subnetMask else "32";
+               staticIPv6 = cfg.enableIPv6 && i.ipv6Address != null;
           in
           { description = "Configuration of ${i.name}";
             wantedBy = [ "network-interfaces.target" ];
@@ -468,11 +491,31 @@ in
                     echo "configuring interface..."
                     ip -4 addr flush dev "${i.name}"
                     ip -4 addr add "${i.ipAddress}/${mask}" dev "${i.name}"
+                    restart_network_setup=true
+                  else
+                    echo "skipping configuring interface"
+                  fi
+                ''
+              + optionalString (staticIPv6)
+                ''
+                  # Only do a flush/add if it's necessary.  This is
+                  # useful when the Nix store is accessed via this
+                  # interface (e.g. in a QEMU VM test).
+                  if ! ip -6 -o a show dev "${i.name}" | grep "${i.ipv6Address}/${toString i.ipv6prefixLength}"; then
+                    echo "configuring interface..."
+                    ip -6 addr flush dev "${i.name}"
+                    ip -6 addr add "${i.ipv6Address}/${toString i.ipv6prefixLength}" dev "${i.name}"
+                    restart_network_setup=true
+                  else
+                    echo "skipping configuring interface"
+                  fi
+                ''
+              + optionalString (i.ipAddress != null || staticIPv6)
+                ''
+                  if [ restart_network_setup = true ]; then
                     # Ensure that the default gateway remains set.
                     # (Flushing this interface may have removed it.)
                     ${config.systemd.package}/bin/systemctl try-restart --no-block network-setup.service
-                  else
-                    echo "skipping configuring interface"
                   fi
                   ${config.systemd.package}/bin/systemctl start ip-up.target
                 ''
diff --git a/nixos/tests/default.nix b/nixos/tests/default.nix
index b37a0d5fa0c9..5b68862a2cd1 100644
--- a/nixos/tests/default.nix
+++ b/nixos/tests/default.nix
@@ -14,6 +14,7 @@ with import ../lib/testing.nix { inherit system minimal; };
   efi-installer = makeTests (import ./efi-installer.nix);
   gnome3 = makeTest (import ./gnome3.nix);
   ipv6 = makeTest (import ./ipv6.nix);
+  jenkins = makeTest (import ./jenkins.nix);
   kde4 = makeTest (import ./kde4.nix);
   #kexec = makeTest (import ./kexec.nix);
   login = makeTest (import ./login.nix {});
diff --git a/nixos/tests/jenkins.nix b/nixos/tests/jenkins.nix
new file mode 100644
index 000000000000..e6524ec56538
--- /dev/null
+++ b/nixos/tests/jenkins.nix
@@ -0,0 +1,35 @@
+# verifies:
+#   1. jenkins service starts on master node
+#   2. jenkins user can be extended on both master and slave
+#   3. jenkins service not started on slave node
+{ pkgs, ... }:
+{
+  nodes = {
+    master = { pkgs, config, ... }: {
+        services.jenkins.enable = true;
+
+        # should have no effect
+        services.jenkinsSlave.enable = true;
+
+        users.extraUsers.jenkins.extraGroups = [ "users" ];
+      };
+    slave = { pkgs, config, ... }: {
+        services.jenkinsSlave.enable = true;
+
+        users.extraUsers.jenkins.extraGroups = [ "users" ];
+      };
+  };
+
+  testScript = ''
+    startAll;
+
+    $master->waitForUnit("jenkins");
+    print $master->execute("sudo -u jenkins groups");
+    $master->mustSucceed("sudo -u jenkins groups | grep jenkins | grep users");
+
+    print $slave->execute("sudo -u jenkins groups");
+    $slave->mustSucceed("sudo -u jenkins groups | grep jenkins | grep users");
+
+    $slave->mustFail("systemctl status jenkins.service");
+  '';
+}
diff --git a/pkgs/applications/audio/a2jmidid/default.nix b/pkgs/applications/audio/a2jmidid/default.nix
index 9dbdada07d49..c5e35d8867c8 100644
--- a/pkgs/applications/audio/a2jmidid/default.nix
+++ b/pkgs/applications/audio/a2jmidid/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "Daemon for exposing legacy ALSA sequencer applications in JACK MIDI system";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/ardour/ardour3.nix b/pkgs/applications/audio/ardour/ardour3.nix
deleted file mode 100644
index 4315a5a7547e..000000000000
--- a/pkgs/applications/audio/ardour/ardour3.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, fftw
-, fftwSinglePrec, flac, glibc, glibmm, gtk, gtkmm, jackaudio
-, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
-, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
-, libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper, pango
-, perl, pkgconfig, python, serd, sord, sratom, suil }:
-
-let
-  tag = "3.5.357";
-in
-
-stdenv.mkDerivation rec {
-  name = "ardour-${tag}";
-
-  src = fetchgit {
-    url = git://git.ardour.org/ardour/ardour.git;
-    rev = "refs/tags/${tag}";
-    sha256 = "1e026fb9a6ad4179d52c4b578cc3861bdfd3629b9e7b7a7341d431c7d3692c42";
-  };
-
-  buildInputs = 
-    [ alsaLib aubio boost cairomm curl fftw fftwSinglePrec flac glibc
-      glibmm gtk gtkmm jackaudio libgnomecanvas libgnomecanvasmm liblo
-      libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
-      libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
-      makeWrapper pango perl pkgconfig python serd sord sratom suil
-    ];
-
-  patchPhase = ''
-    # The funny revision number is from `git describe rev`
-    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-gce4d125\"; }\n' > libs/ardour/revision.cc
-    # Note the different version number
-    sed -i '33i rev = \"3.5-357-gce4d125\"' wscript
-    sed 's|/usr/include/libintl.h|${glibc}/include/libintl.h|' -i wscript
-    sed -e 's|^#!/usr/bin/perl.*$|#!${perl}/bin/perl|g' -i tools/fmt-bindings
-    sed -e 's|^#!/usr/bin/env.*$|#!${perl}/bin/perl|g' -i tools/*.pl
-  '';
-
-  configurePhase = "python waf configure --optimize --prefix=$out";
-
-  buildPhase = "python waf";
-
-  # For the custom ardour clearlooks gtk-engine to work, it must be
-  # moved to a directory called "engines" and added to GTK_PATH
-  installPhase = ''
-    python waf install
-    mkdir -pv $out/gtk2/engines
-    cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
-    wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Multi-track hard disk recording software";
-    longDescription = ''
-      Also read "The importance of Paying Something" on their homepage, please!
-    '';
-    homepage = http://ardour.org/;
-    license = licenses.gpl2;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu ];
-  };
-}
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index 08cecfea064d..4315a5a7547e 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -1,51 +1,62 @@
-{ stdenv, fetchurl, scons, boost, pkgconfig, fftw, librdf_raptor2
-, librdf_rasqal, jackaudio, flac, libsamplerate, alsaLib, libxml2
-, lilv, lv2, serd, sord, sratom, suil # these are probably optional
-, libxslt, libsndfile, libsigcxx, libusb, cairomm, glib, pango
-, gtk, glibmm, gtkmm, libgnomecanvas, libgnomecanvasmm, liblo, aubio
-, fftwSinglePrec, libmad, automake, autoconf, libtool, liblrdf, curl }:
+{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, fftw
+, fftwSinglePrec, flac, glibc, glibmm, gtk, gtkmm, jackaudio
+, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
+, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
+, libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper, pango
+, perl, pkgconfig, python, serd, sord, sratom, suil }:
+
+let
+  tag = "3.5.357";
+in
 
 stdenv.mkDerivation rec {
-  name = "ardour-${version}";
-  version = "2.8.16";
+  name = "ardour-${tag}";
 
-  src = fetchurl {
-    url = "mirror://gentoo/distfiles/${name}.tar.bz2";
-    sha256 = "0h2y0x4yznalllja53anjil2gmgcb26f39zshc4gl1d1kc8k5vip";
+  src = fetchgit {
+    url = git://git.ardour.org/ardour/ardour.git;
+    rev = "refs/tags/${tag}";
+    sha256 = "1e026fb9a6ad4179d52c4b578cc3861bdfd3629b9e7b7a7341d431c7d3692c42";
   };
 
-  postPatch = ''
-    #sed -e "s#/usr/bin/which#type -P#" -i libs/glibmm2/autogen.sh
-    echo '#include "ardour/svn_revision.h"' > libs/ardour/svn_revision.cc
-    echo -e 'namespace ARDOUR {\n extern const char* svn_revision = "2.8.12";\n }\n' >> libs/ardour/svn_revision.cc
-  '';
+  buildInputs = 
+    [ alsaLib aubio boost cairomm curl fftw fftwSinglePrec flac glibc
+      glibmm gtk gtkmm jackaudio libgnomecanvas libgnomecanvasmm liblo
+      libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
+      libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
+      makeWrapper pango perl pkgconfig python serd sord sratom suil
+    ];
 
-  buildInputs = [
-    scons boost pkgconfig fftw librdf_raptor2 librdf_rasqal jackaudio
-    flac libsamplerate alsaLib libxml2 libxslt libsndfile libsigcxx
-    #lilv lv2 serd sord sratom suil
-    libusb cairomm glib pango gtk glibmm gtkmm libgnomecanvas libgnomecanvasmm liblrdf
-    liblo aubio fftwSinglePrec libmad autoconf automake libtool curl
-  ];
-
-  buildPhase = ''
-    mkdir -p $out
-    export CXX=g++
-    scons PREFIX=$out SYSLIBS=1 install
+  patchPhase = ''
+    # The funny revision number is from `git describe rev`
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-gce4d125\"; }\n' > libs/ardour/revision.cc
+    # Note the different version number
+    sed -i '33i rev = \"3.5-357-gce4d125\"' wscript
+    sed 's|/usr/include/libintl.h|${glibc}/include/libintl.h|' -i wscript
+    sed -e 's|^#!/usr/bin/perl.*$|#!${perl}/bin/perl|g' -i tools/fmt-bindings
+    sed -e 's|^#!/usr/bin/env.*$|#!${perl}/bin/perl|g' -i tools/*.pl
   '';
 
-  installPhase = ":";
+  configurePhase = "python waf configure --optimize --prefix=$out";
+
+  buildPhase = "python waf";
+
+  # For the custom ardour clearlooks gtk-engine to work, it must be
+  # moved to a directory called "engines" and added to GTK_PATH
+  installPhase = ''
+    python waf install
+    mkdir -pv $out/gtk2/engines
+    cp build/libs/clearlooks-newer/libclearlooks.so $out/gtk2/engines/
+    wrapProgram $out/bin/ardour3 --prefix GTK_PATH : $out/gtk2
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Multi-track hard disk recording software";
     longDescription = ''
-      Broken: use ardour3-svn instead
       Also read "The importance of Paying Something" on their homepage, please!
     '';
     homepage = http://ardour.org/;
-    branch  = "2";
-    license = "GPLv2";
-    maintainers = [ stdenv.lib.maintainers.marcweber ];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu ];
   };
 }
diff --git a/pkgs/applications/audio/gigedit/default.nix b/pkgs/applications/audio/gigedit/default.nix
index be6970f01e16..269b48aebb8f 100644
--- a/pkgs/applications/audio/gigedit/default.nix
+++ b/pkgs/applications/audio/gigedit/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     description = "Gigasampler file access library";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix
index 6b15052769be..2baf69cef4fd 100644
--- a/pkgs/applications/audio/jalv/default.nix
+++ b/pkgs/applications/audio/jalv/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation  rec {
     homepage = http://drobilla.net/software/jalv;
     license = licenses.isc;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/lash/default.nix b/pkgs/applications/audio/lash/default.nix
index 72087c76b05d..ad52e7b2d85c 100644
--- a/pkgs/applications/audio/lash/default.nix
+++ b/pkgs/applications/audio/lash/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation  rec {
   '';
 
   meta = with stdenv.lib; {
-    description = "LASH Audio Session Handler";
+    description = "A Linux Audio Session Handler";
     longDescription = ''
       Session management system for GNU/Linux audio applications.
     '';
diff --git a/pkgs/applications/audio/mid2key/default.nix b/pkgs/applications/audio/mid2key/default.nix
index 1e163391a397..26ea2c7b0b2c 100644
--- a/pkgs/applications/audio/mid2key/default.nix
+++ b/pkgs/applications/audio/mid2key/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "A simple tool which maps midi notes to simulated keystrokes";
     license = licenses.gpl3;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/mpg123/default.nix b/pkgs/applications/audio/mpg123/default.nix
index 8d4b8d4d778b..3edb7ae6793b 100644
--- a/pkgs/applications/audio/mpg123/default.nix
+++ b/pkgs/applications/audio/mpg123/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, alsaLib }:
 
 stdenv.mkDerivation {
-  name = "mpg123-1.18.1";
+  name = "mpg123-1.19.0";
 
   src = fetchurl {
-    url = mirror://sourceforge/mpg123/mpg123-1.18.1.tar.bz2;
-    sha256 = "0bb5hv0qw3ln09xisi7d19gb4p2y69sx3905rdc293q3gr7khvdw";
+    url = mirror://sourceforge/mpg123/mpg123-1.19.0.tar.bz2;
+    sha256 = "06xhd68mj9yp0r6l771aq0d7xgnl402a3wm2mvhxmd3w3ph29446";
   };
 
   buildInputs = stdenv.lib.optional (!stdenv.isDarwin) alsaLib;
diff --git a/pkgs/applications/audio/qsampler/default.nix b/pkgs/applications/audio/qsampler/default.nix
index 7cfe73c9c750..b851517b8724 100644
--- a/pkgs/applications/audio/qsampler/default.nix
+++ b/pkgs/applications/audio/qsampler/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "graphical frontend to LinuxSampler";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix
index de1aba2a7f6f..ea8ae88f022e 100644
--- a/pkgs/applications/audio/quodlibet/default.nix
+++ b/pkgs/applications/audio/quodlibet/default.nix
@@ -18,7 +18,7 @@ buildPythonPackage {
   # XXX, tests fail
   doCheck = false;
 
-  src = [
+  srcs = [
     (fetchurl {
       url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-${version}.tar.gz";
       sha256 = "0ilasi4b0ay8r6v6ba209wsm80fq2nmzigzc5kvphrk71jwypx6z";
@@ -27,7 +27,7 @@ buildPythonPackage {
       url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-plugins-${version}.tar.gz";
       sha256 = "1rv08rhdjad8sjhplqsspcf4vkazgkxyshsqmbfbrrk5kvv57ybc";
      })
-  ];       
+  ];
 
   preConfigure = ''
     # TODO: for now don't a apply gdist overrides, will be needed for shipping icons, gtk, etc
@@ -35,11 +35,13 @@ buildPythonPackage {
   '';
 
   sourceRoot = "quodlibet-${version}";
+
   postUnpack = ''
     # the patch searches for plugins in directory ../plugins
     # so link the appropriate directory there
     ln -sf quodlibet-plugins-${version} plugins
   '';
+
   patches = [ ./quodlibet-package-plugins.patch ];
 
   buildInputs = stdenv.lib.optionals withGstPlugins [
diff --git a/pkgs/applications/audio/vmpk/default.nix b/pkgs/applications/audio/vmpk/default.nix
new file mode 100644
index 000000000000..7fffa77b5a39
--- /dev/null
+++ b/pkgs/applications/audio/vmpk/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, cmake, pkgconfig
+, qt4, jackaudio
+}:
+
+let
+  version = "0.5.1";
+in stdenv.mkDerivation rec {
+  name = "vmpk-${version}";
+
+  meta = with stdenv.lib; {
+    description = "Virtual MIDI Piano Keyboard";
+    homepage    = "http://vmpk.sourceforge.net/";
+    license     = licenses.gpl3Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
+  };
+
+  src = fetchurl {
+    url = "mirror://sourceforge/vmpk/${version}/${name}.tar.bz2";
+    sha256 = "11fqnxgs9hr9255d93n7lazxzjwn8jpmn23nywdksh0pb1ffvfrc";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ qt4 jackaudio ];
+}
diff --git a/pkgs/applications/editors/emacs-modes/darcsum/darcs_context b/pkgs/applications/editors/emacs-modes/darcsum/darcs_context
new file mode 100644
index 000000000000..7e9de1ed80b5
--- /dev/null
+++ b/pkgs/applications/editors/emacs-modes/darcsum/darcs_context
@@ -0,0 +1,7 @@
+
+Context:
+
+[TAG 1.3
+Simon Michael <simon@joyful.com>**20131103203640
+ Ignore-this: d12bac373e4aa0e5ffe6c390e1dfe269
+] 
diff --git a/pkgs/applications/editors/emacs-modes/darcsum/default.nix b/pkgs/applications/editors/emacs-modes/darcsum/default.nix
new file mode 100644
index 000000000000..cf2bcc6e30b9
--- /dev/null
+++ b/pkgs/applications/editors/emacs-modes/darcsum/default.nix
@@ -0,0 +1,34 @@
+# To automatically load darcsum when needed, add the following to your emacs init file:
+#
+#   (autoload 'darcsum-changes "darcsum" nil t)
+#   (autoload 'darcsum-whatsnew "darcsum" nil t)
+#   (autoload 'darcsum-view "darcsum" nil t)
+#
+# (These lines were copied from 50darcsum.el in the darcsum repository.)
+
+
+{ fetchdarcs, stdenv }:
+
+stdenv.mkDerivation {
+  name = "darcsum-1.3";
+
+  src = fetchdarcs {
+    url = http://hub.darcs.net/simon/darcsum;
+    context = ./darcs_context;
+    sha256 = "18dyk2apmnjapd604a5njfqwjri1mc7lgjaajy9phicpibgdrwzh";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    install -d "$out/share/emacs/site-lisp"
+    install darcsum.el "$out/share/emacs/site-lisp"
+  '';
+
+  meta = {
+    description = "A pcl-cvs like interface for managing darcs patches.";
+    homepage = "http://hub.darcs.net/simon/darcsum";
+    license = "GPLv2+";
+    maintainers = [ stdenv.lib.maintainers.falsifian ];
+  };
+}
diff --git a/pkgs/applications/graphics/openscad/default.nix b/pkgs/applications/graphics/openscad/default.nix
index a1238fe3dcd9..d831df5d7b66 100644
--- a/pkgs/applications/graphics/openscad/default.nix
+++ b/pkgs/applications/graphics/openscad/default.nix
@@ -1,17 +1,19 @@
 { stdenv, fetchurl, qt4, bison, flex, eigen, boost, mesa, glew, opencsg, cgal
-, mpfr, gmp
+, mpfr, gmp, glib, pkgconfig
 }:
 
 stdenv.mkDerivation rec {
-  version = "2013.06";
+  version = "2014.03";
   name = "openscad-${version}";
 
   src = fetchurl {
-    url = "https://openscad.googlecode.com/files/${name}.src.tar.gz";
-    sha256 = "01r013l8zyfkgmqn05axh3rlfsjwd6j403w5ffl7nby4i2spiw1f";
+    url = "http://files.openscad.org/${name}.src.tar.gz";
+    sha256 = "1hv1lmq1ayhlvrz5sqipg650xryq25a9k22ysdw0dsrwg9ixqpw6";
   };
 
-  buildInputs = [ qt4 bison flex eigen boost mesa glew opencsg cgal gmp mpfr ];
+  buildInputs = [
+    qt4 bison flex eigen boost mesa glew opencsg cgal mpfr gmp glib pkgconfig
+  ];
 
   configurePhase = ''
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${eigen}/include/eigen*) "
diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix
new file mode 100644
index 000000000000..2cb86a3f1e66
--- /dev/null
+++ b/pkgs/applications/graphics/shotwell/default.nix
@@ -0,0 +1,56 @@
+{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite, webkit
+, pkgconfig, gnome3, gst_all_1, which, udev, libraw, glib, json_glib, gettext, desktop_file_utils
+, lcms2, gdk_pixbuf, librsvg, makeWrapper }:
+
+# for dependencies see http://www.yorba.org/projects/shotwell/install/
+
+let
+  rest = stdenv.mkDerivation rec {
+    name = "rest-0.7.12";
+
+    src = fetchurl {
+      url = "mirror://gnome/sources/rest/0.7/${name}.tar.xz";
+      sha256 = "0fmg7fq5fx0jg3ryk71kwdkspsvj42acxy9imk7vznkqj29a9zqn";
+    };
+    
+    configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-bundle.crt";
+    
+    buildInputs = [ pkgconfig glib libsoup ];
+  };
+in stdenv.mkDerivation rec {
+  version = "0.15.1";
+  name = "shotwell-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/shotwell/0.15/${name}.tar.xz";
+    sha256 = "12qbqba226q9wb0m31xx8w0m968sr1n18qa4mbz75wblhwws0j7b";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${glib}/include/glib-2.0 -I${glib}/lib/glib-2.0/include";
+  
+  configureFlags = [ "--disable-gsettings-convert-install" ];
+  
+  preConfigure = ''
+    patchShebangs .
+  '';
+  
+  postInstall = ''
+    wrapProgram "$out/bin/shotwell" \
+     --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+     --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:$out/share"
+  '';
+
+
+  buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkit pkgconfig
+                  gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee which udev gnome3.gexiv2
+                  libraw rest json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
+                  makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "Popular photo organizer for the GNOME desktop";
+    homepage = http://www.yorba.org/projects/shotwell/;
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [iElectric];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/graphics/synfigstudio/default.nix b/pkgs/applications/graphics/synfigstudio/default.nix
new file mode 100644
index 000000000000..034a147b7874
--- /dev/null
+++ b/pkgs/applications/graphics/synfigstudio/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, boost, cairo, gettext, glibmm, gtk, gtkmm
+, libsigcxx, libtool, libxmlxx, pango, pkgconfig, imagemagick
+, intltool
+}:
+
+let
+  version = "0.64.1";
+
+  ETL = stdenv.mkDerivation rec {
+    name = "ETL-0.04.17";
+
+    src = fetchurl {
+       url = "mirror://sourceforge/synfig/${name}.tar.gz";
+       sha256 = "13kpiswgcpsif9fwcplqr0405aqavqn390cjnivkn3pxv0d2q8iy";
+    };
+  };
+
+  synfig = stdenv.mkDerivation rec {
+    name = "synfig-${version}";
+
+    src = fetchurl {
+       url = "mirror://sourceforge/synfig/synfig-${version}.tar.gz";
+       sha256 = "1b4ksxnqbaq4rxlvasmrvk7z4jvjbsg4ns3cns2qcnz64dyvbgda";
+    };
+
+    patches = [ ./synfig-cstring.patch ];
+
+    buildInputs = [
+      ETL boost cairo gettext glibmm libsigcxx libtool libxmlxx pango
+      pkgconfig
+    ];
+
+    configureFlags = [ "--with-boost-libdir=${boost}/lib" ];
+  };
+in
+stdenv.mkDerivation rec {
+  name = "synfigstudio-${version}";
+
+  src = fetchurl {
+       url = "mirror://sourceforge/synfig/${name}.tar.gz";
+       sha256 = "0nl6vpsn5dcjd5qhbrmd0j4mr3wddvymkg9414m77cdpz4l8b9v2";
+    };
+
+  buildInputs = [
+    ETL boost cairo gettext glibmm gtk gtkmm imagemagick intltool
+    intltool libsigcxx libtool libxmlxx pkgconfig synfig
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A 2D animation program";
+    homepage = http://www.synfig.org;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/graphics/synfigstudio/synfig-cstring.patch b/pkgs/applications/graphics/synfigstudio/synfig-cstring.patch
new file mode 100644
index 000000000000..51eb77042161
--- /dev/null
+++ b/pkgs/applications/graphics/synfigstudio/synfig-cstring.patch
@@ -0,0 +1,12 @@
+http://www.synfig.org/issues/thebuggenie/synfig/issues/438
+--- a/src/modules/mod_png/trgt_png.cpp
++++ b/src/modules/mod_png/trgt_png.cpp
+@@ -39,6 +39,7 @@
+ #include <algorithm>
+ #include <functional>
+ #include <ETL/misc>
++#include <cstring>
+ 
+ #endif
+ 
+
diff --git a/pkgs/applications/misc/nut/default.nix b/pkgs/applications/misc/nut/default.nix
index 92cd0de8b312..3e972f672cc2 100644
--- a/pkgs/applications/misc/nut/default.nix
+++ b/pkgs/applications/misc/nut/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
       "--without-powerman" # Until we have it ...
       "--without-cgi"
       "--without-hal"
-      "--with-systemdsystemunitdir=$(out)/etc/systemd/systemd"
+      "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
       "--with-udev-dir=$(out)/etc/udev"
     ];
 
diff --git a/pkgs/applications/misc/st/default.nix b/pkgs/applications/misc/st/default.nix
index 41575ce35a69..fda89f1cd3dd 100644
--- a/pkgs/applications/misc/st/default.nix
+++ b/pkgs/applications/misc/st/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, writeText, libX11, ncurses, libXext, libXft, fontconfig
+{ stdenv, fetchurl, pkgconfig, writeText, libX11, ncurses, libXext, libXft, fontconfig
 , conf? null}:
 
 with stdenv.lib;
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
   preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
   
-  buildInputs = [ libX11 ncurses libXext libXft fontconfig ];
+  buildInputs = [ pkgconfig libX11 ncurses libXext libXft fontconfig ];
 
   NIX_LDFLAGS = "-lfontconfig";
 
diff --git a/pkgs/applications/misc/xmobar/default.nix b/pkgs/applications/misc/xmobar/default.nix
index 7eacaf15b625..a7aeed339e24 100644
--- a/pkgs/applications/misc/xmobar/default.nix
+++ b/pkgs/applications/misc/xmobar/default.nix
@@ -1,15 +1,16 @@
-{ cabal, alsaCore, alsaMixer, filepath, libXrandr, mtl, parsec
-, regexCompat, stm, time, utf8String, wirelesstools, X11, X11Xft
+{ cabal, alsaCore, alsaMixer, filepath, HTTP, libXrandr, mtl
+, parsec, regexCompat, stm, time, utf8String, wirelesstools, X11
+, X11Xft
 }:
 
 cabal.mkDerivation (self: {
   pname = "xmobar";
-  version = "0.19";
-  sha256 = "1lwbww9vpqscip16lqiax2qvfyksxms5xx4n0s61mzw7v61hyxq2";
+  version = "0.20.1";
+  sha256 = "16jfgn6ciqxrwj6qjhbcpms7mzlbxfaxyxfxp64xvnw626xlpjvk";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
-    alsaCore alsaMixer filepath mtl parsec regexCompat stm time
+    alsaCore alsaMixer filepath HTTP mtl parsec regexCompat stm time
     utf8String X11 X11Xft
   ];
   extraLibraries = [ libXrandr wirelesstools ];
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index eba32738e0b8..baf67371769d 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -275,7 +275,7 @@ in stdenv.mkDerivation rec {
   meta = {
     description = "An open source web browser from Google";
     homepage = http://www.chromium.org/;
-    maintainers = with maintainers; [ goibhniu chaoflow aszlig ];
+    maintainers = with maintainers; [ goibhniu chaoflow aszlig wizeman ];
     license = licenses.bsd3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix
index 63b4c9033a33..782356640c8d 100644
--- a/pkgs/applications/networking/browsers/chromium/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/sources.nix
@@ -1,18 +1,18 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   dev = {
-    version = "35.0.1862.2";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-35.0.1862.2.tar.xz";
-    sha256 = "19426x4x3bnx21qjhqc4sk27k7dnhm1pw84079h6gk0hyjzcwn0f";
+    version = "35.0.1883.0";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-35.0.1883.0.tar.xz";
+    sha256 = "0qbv6prxl18y5824pfd13ng9798g561gzb6nypwp502hqr45jvb6";
   };
   beta = {
-    version = "34.0.1847.14";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-34.0.1847.14.tar.xz";
-    sha256 = "038bz2d40rgjppkalal9ycjhfvkhph926k35v8pc3618z2fy10cn";
+    version = "34.0.1847.60";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-34.0.1847.60.tar.xz";
+    sha256 = "1na5d6z4a0wkabn7cj62vyiv3mmvcb6qdvrkyy6fj79h7gk2hb7k";
   };
   stable = {
-    version = "33.0.1750.146";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-33.0.1750.146.tar.xz";
-    sha256 = "0x2a5kyaj38661c5s33pywhrwkm8kj2fbr1z940c5al6y2hfgc6m";
+    version = "33.0.1750.152";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-33.0.1750.152.tar.xz";
+    sha256 = "0byc23vwn9alsva0jqvwvgnbx2bm7x48m3jln02y4fpf1f265m4z";
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index db89903c3ad6..b45fb4bbae75 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -195,7 +195,7 @@ rec {
     meta = {
       description = "Mozilla Firefox - the browser, reloaded";
       homepage = http://www.mozilla.com/en-US/firefox/;
-      maintainers = [ stdenv.lib.maintainers.eelco ];
+      maintainers = with stdenv.lib.maintainers; [ eelco wizeman ];
     };
 
     passthru = {
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index 3a73afe48c5f..6a00dfcd8c19 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -2,8 +2,10 @@
 , browserName, desktopName, nameSuffix, icon
 }:
 
+let p = builtins.parseDrvName browser.name; in
+
 stdenv.mkDerivation {
-  name = browser.name + "-with-plugins";
+  name = "${p.name}-with-plugins-${p.version}";
 
   desktopItem = makeDesktopItem {
     name = browserName;
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 8317f94e0796..a33c879ad92d 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -36,7 +36,7 @@
 
 let
   # -> http://get.adobe.com/flashplayer/
-  version = "11.2.202.341";
+  version = "11.2.202.346";
 
   src =
     if stdenv.system == "x86_64-linux" then
@@ -47,7 +47,7 @@ let
       else rec {
         inherit version;
         url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
-        sha256 = "0d1ic70awdig0v699svmq8mmnil8xmmwsap30sgi0r94saxmq49j";
+        sha256 = "19jgiw5f0ksxqgi6jkla4qq7gx9gnn9jmpjgqanb7mhl5fdl0v55";
       }
     else if stdenv.system == "i686-linux" then
       if debug then {
@@ -58,7 +58,7 @@ let
       } else rec {
         inherit version;
         url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
-        sha256 = "0bfz1id4035jnkwy4xm0dj8l9lygrrzqdbf8dgc9pcy8c63d1hac";
+        sha256 = "01f4zady0r0n5rfqq2285svc13wiypmfrm8fnirmr5lpwl5d89ra";
       }
     else throw "Flash Player is not supported on this platform";
 
@@ -88,5 +88,7 @@ stdenv.mkDerivation {
   meta = {
     description = "Adobe Flash Player browser plugin";
     homepage = http://www.adobe.com/products/flashplayer/;
+    maintainer = with stdenv.lib.maintainers; [ wizeman ];
+    license = "unfree";
   };
 }
diff --git a/pkgs/applications/networking/cluster/spark/default.nix b/pkgs/applications/networking/cluster/spark/default.nix
index 34c3af161261..61f2d0c6e202 100644
--- a/pkgs/applications/networking/cluster/spark/default.nix
+++ b/pkgs/applications/networking/cluster/spark/default.nix
@@ -120,8 +120,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Spark cluster computing";
     homepage    = "http://spark.incubator.apache.org";
-    platforms   = stdenv.lib.platforms.all;
     license     = stdenv.lib.licenses.asl20;
+    platforms   = stdenv.lib.platforms.all;
     maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/applications/networking/mailreaders/sup/default.nix b/pkgs/applications/networking/mailreaders/sup/default.nix
index a8fb387e7296..70aeb0009814 100644
--- a/pkgs/applications/networking/mailreaders/sup/default.nix
+++ b/pkgs/applications/networking/mailreaders/sup/default.nix
@@ -3,7 +3,7 @@
 , gettext, iconv, locale, text, highline, rmail_sup, unicode, gnupg, which }:
 
 stdenv.mkDerivation rec {
-  version = "20131130";
+  version = "20140312";
   name    = "sup-${version}";
   
   meta = {
@@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
 
   src = fetchgit {
     url = git://github.com/sup-heliotrope/sup.git;
-    rev = "a5a1e39034204ac4b05c9171a71164712690b010";
-    sha256 = "0w2w7dcif1ri1qq81csz7gj45rqd9z7hjd6x29awibybyyqyvj5s";
+    rev = "0cad7b308237c07b8a46149908b2ad4806ac3d1d";
+    sha256 = "83534b6ad9fb6aa883d630c927e3a71bd09a646e3254b4eb0cc7a09f69a525bc";
   };
 
   buildInputs =
diff --git a/pkgs/applications/networking/newsreaders/liferea/default.nix b/pkgs/applications/networking/newsreaders/liferea/default.nix
index f557af41db92..c0892740dbdc 100644
--- a/pkgs/applications/networking/newsreaders/liferea/default.nix
+++ b/pkgs/applications/networking/newsreaders/liferea/default.nix
@@ -1,29 +1,28 @@
 { stdenv, fetchurl, pkgconfig, intltool, python, pygobject3
-, glib, gnome3, pango, libxml2, libxslt, sqlite, libsoup
-, webkitgtk, json_glib, gobjectIntrospection, gsettings_desktop_schemas
-, gst_all_1
+, glib, gnome3, pango, libxml2, libxslt, sqlite, libsoup, glib_networking
+, webkitgtk, json_glib, gobjectIntrospection, gst_all_1
 , libnotify
 , makeWrapper
 }:
 
 let pname = "liferea";
-    version = "1.10.6";
+    version = "1.10.7";
 in
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.gz";
-    sha256 = "0vp19z4p3cn3zbg1zjpg2iyzwq893dx5c1kh6aac06s3rf1124gm";
+    url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.bz2";
+    sha256 = "17kvg44brdz99firr5h5qx8icvadlr7p1cz3xr3437sf5rhj25wh";
   };
 
   buildInputs = with gst_all_1; [
     pkgconfig intltool python
     glib gnome3.gtk pango libxml2 libxslt sqlite libsoup
-    webkitgtk json_glib gobjectIntrospection gsettings_desktop_schemas
-    gnome3.libpeas
+    webkitgtk json_glib gobjectIntrospection gnome3.gsettings_desktop_schemas
+    gnome3.libpeas gnome3.dconf
     gst-plugins-base gst-plugins-good gst-plugins-bad
-    gnome3.gnome_keyring
+    gnome3.libgnome_keyring
     libnotify
     makeWrapper
   ];
@@ -35,9 +34,10 @@ stdenv.mkDerivation rec {
     for f in "$out"/bin/*; do
       wrapProgram "$f" \
         --prefix PYTHONPATH : "$(toPythonPath $out):$(toPythonPath ${pygobject3})" \
+        --prefix LD_LIBRARY_PATH : "${gnome3.libgnome_keyring}/lib" \
         --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:${gnome3.gnome_icon_theme}/share:${gsettings_desktop_schemas}/share:${gnome3.gtk}/share:$out/share"
+        --prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules:${glib_networking}/lib/gio/modules" \
+        --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_icon_theme}/share:${gnome3.gsettings_desktop_schemas}/share:${gnome3.gtk}/share:$out/share"
     done
   '';
 
@@ -47,5 +47,12 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.gpl2Plus;
     maintainers = with stdenv.lib.maintainers; [ vcunat romildo ];
     platforms = stdenv.lib.platforms.linux;
+
+    longDescription = ''
+      Liferea (Linux Feed Reader) is an RSS/RDF feed reader.
+      It's intended to be a clone of the Windows-only FeedReader.
+      It can be used to maintain a list of subscribed feeds,
+      browse through their items, and show their contents.
+    '';
   };
 }
diff --git a/pkgs/applications/networking/notbit/default.nix b/pkgs/applications/networking/notbit/default.nix
new file mode 100644
index 000000000000..db900f9ff256
--- /dev/null
+++ b/pkgs/applications/networking/notbit/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchgit, autoconf, automake, pkgconfig, openssl }:
+
+stdenv.mkDerivation rec {
+  name = "notbit-0.2-28-g06f9160";
+
+  src = fetchgit {
+    url = "git://git.busydoingnothing.co.uk/notbit";
+    rev = "06f916081836de12f8e57a9f50c95d4d1b51627f";
+    sha256 = "d5c38eea1d9ca213bfbea5c88350478a5088b5532e939de9680d72e60aa65288";
+  };
+
+  buildInputs = [ autoconf automake pkgconfig openssl ];
+
+  preConfigure = "autoreconf -vfi";
+
+  meta = with stdenv.lib; { 
+    homepage = http://busydoingnothing.co.uk/notbit/;
+    description = "A minimal bitmessage client";
+    license = licenses.mit;
+
+    # This is planned to change when the project officially supports other platforms
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/p2p/ktorrent/default.nix b/pkgs/applications/networking/p2p/ktorrent/default.nix
index b408f20b7110..e53fda089111 100644
--- a/pkgs/applications/networking/p2p/ktorrent/default.nix
+++ b/pkgs/applications/networking/p2p/ktorrent/default.nix
@@ -5,11 +5,11 @@ stdenv.mkDerivation rec {
   name = pname + "-" + version;
 
   pname = "ktorrent";
-  version = "4.2.1";
+  version = "4.3.1";
 
   src = fetchurl {
     url = "${meta.homepage}/downloads/${version}/${name}.tar.bz2";
-    sha256 = "1b6w7i1vvq8mlw9yrlxvb51hvaj6rpl8lv9b9zagyl3wcanz73zd";
+    sha256 = "66094f6833347afb0c49e332f0ec15ec48db652cbe66476840846ffd5ca0e4a1";
   };
 
   patches = [ ./find-workspace.diff ];
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "KDE integrated BtTorrent client";
-    homepage = http://ktorrent.org;
+    homepage = http://ktorrent.pwsp.net;
     maintainers = with stdenv.lib.maintainers; [ sander urkud ];
     inherit (libktorrent.meta) platforms;
   };
diff --git a/pkgs/applications/networking/p2p/transmission/default.nix b/pkgs/applications/networking/p2p/transmission/default.nix
index cb439ddb4624..958e19a0986f 100644
--- a/pkgs/applications/networking/p2p/transmission/default.nix
+++ b/pkgs/applications/networking/p2p/transmission/default.nix
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = http://www.transmissionbt.com/;
     license = licenses.gpl2; # parts are under MIT
-    maintainers = with maintainers; [ astsmtl vcunat ];
+    maintainers = with maintainers; [ astsmtl vcunat wizeman ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/office/gnumeric/default.nix b/pkgs/applications/office/gnumeric/default.nix
index 0108f934693e..0ae27e322b7c 100644
--- a/pkgs/applications/office/gnumeric/default.nix
+++ b/pkgs/applications/office/gnumeric/default.nix
@@ -3,11 +3,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gnumeric-1.12.9";
+  name = "gnumeric-1.12.12";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gnumeric/1.12/${name}.tar.xz";
-    sha256 = "1rv2ifw6rp0iza4fkf3bffvdkyi77dwvzdnvcbpqcyn2kxfsvlsc";
+    sha256 = "096i9x6b4i6x24vc4lsxx8fg2n2pjs2jb6x3bkg3ppa2c60w1jq0";
   };
 
   preConfigure = ''sed -i 's/\(SUBDIRS.*\) doc/\1/' Makefile.in''; # fails when installing docs
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index b4a7a203a3c4..aa3ba878eb59 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -3,7 +3,7 @@
 {stdenv, fetchurl, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}:
 
 let 
-  version = "8.4pl2";
+  version = "8.4pl3";
   buildIde = lablgtk != null;
   ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
   idePath = if buildIde then ''
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz";
-    sha256 = "1n52pky7bb45irk2jw6f4rd3kvy8lm2yfldjwdhiic0kyqw9lwgv";
+    sha256 = "0f7v3j4zsrhpswdh47bb30vwgsr0ck79jkkz01a5a74qgxiksn4p";
   };
 
   buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
@@ -54,7 +54,7 @@ stdenv.mkDerivation {
     '';
     homepage = "http://coq.inria.fr";
     license = "LGPL";
-    maintainers = [ stdenv.lib.maintainers.roconnor ];
+    maintainers = with stdenv.lib.maintainers; [ roconnor thoughtpolice ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index ee1de54a4fb0..96e4631889c7 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -4,10 +4,8 @@
 args: with args; with pkgs;
 let
   inherit (pkgs) stdenv fetchgit fetchurl subversion;
-in
-rec {
 
-  git = lib.makeOverridable (import ./git) {
+  gitBase = lib.makeOverridable (import ./git) {
     inherit fetchurl stdenv curl openssl zlib expat perl python gettext gnugrep
       asciidoc xmlto docbook2x docbook_xsl docbook_xml_dtd_45 libxslt cpio tcl
       tk makeWrapper subversionClient gzip;
@@ -24,6 +22,9 @@ rec {
     ];
   };
 
+in
+rec {
+
   # support for bugzilla
   gitBz = import ./git-bz {
     inherit fetchgit stdenv makeWrapper python asciidoc xmlto # docbook2x docbook_xsl docbook_xml_dtd_45 libxslt
@@ -31,17 +32,19 @@ rec {
     inherit (pythonPackages) pysqlite;
   };
 
+  git = appendToName "minimal" gitBase;
+
   # Git with SVN support, but without GUI.
-  gitSVN = lowPrio (appendToName "with-svn" (git.override {
+  gitSVN = lowPrio (appendToName "with-svn" (gitBase.override {
     svnSupport = true;
   }));
 
   # The full-featured Git.
-  gitFull = appendToName "full" (git.override {
+  gitFull = gitBase.override {
     svnSupport = true;
     guiSupport = true;
     sendEmailSupport = !stdenv.isDarwin;
-  });
+  };
 
   gitAnnex = pkgs.haskellPackages.gitAnnex;
 
diff --git a/pkgs/applications/video/kazam/default.nix b/pkgs/applications/video/kazam/default.nix
index ed93f81b6623..17bf282a459a 100644
--- a/pkgs/applications/video/kazam/default.nix
+++ b/pkgs/applications/video/kazam/default.nix
@@ -5,6 +5,7 @@
 python3Packages.buildPythonPackage rec {
   name = "kazam-${version}";
   version = "1.4.3";
+  namePrefix = "";
 
   src = fetchurl {
     url = "https://launchpad.net/kazam/stable/${version}/+download/kazam-${version}.tar.gz";
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix
index dcf5b4e50097..7f3bf8fafc80 100644
--- a/pkgs/applications/virtualization/qemu/default.nix
+++ b/pkgs/applications/virtualization/qemu/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, python, zlib, pkgconfig, glib, ncurses, perl, pixman
-, attr, libcap, vde2, alsaLib, texinfo, libuuid
+, attr, libcap, vde2, alsaLib, texinfo, libuuid, flex, bison
 , makeWrapper
 , sdlSupport ? true, SDL
 , vncSupport ? true, libjpeg, libpng
@@ -7,19 +7,19 @@
 , x86Only ? false
 }:
 
-let n = "qemu-1.5.2"; in
+let n = "qemu-1.7.0"; in
 
 stdenv.mkDerivation rec {
   name = n + (if x86Only then "-x86-only" else "");
 
   src = fetchurl {
     url = "http://wiki.qemu.org/download/${n}.tar.bz2";
-    sha256 = "0l52jwlxmwp9g3jpq0g7ix9dq4qgh46nd2h58lh47f0a35yi8qgn";
+    sha256 = "050kq9mz8c2jcshm7nn7dldypsk8jr590ybnlw2wc51dbyl37wri";
   };
 
   buildInputs =
     [ python zlib pkgconfig glib ncurses perl pixman attr libcap
-      vde2 alsaLib texinfo libuuid makeWrapper
+      vde2 alsaLib texinfo libuuid flex bison makeWrapper
     ]
     ++ stdenv.lib.optionals sdlSupport [ SDL ]
     ++ stdenv.lib.optionals vncSupport [ libjpeg libpng ]
@@ -43,11 +43,11 @@ stdenv.mkDerivation rec {
       fi
     '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.qemu.org/;
     description = "A generic and open source machine emulator and virtualizer";
-    license = "GPLv2+";
-    maintainers = with stdenv.lib.maintainers; [ viric shlevy eelco ];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ viric shlevy eelco ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 3dcb8aa17055..274cd05024bd 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -2,7 +2,7 @@
 , kernel ? pkgs.linux_3_10
 , img ? "bzImage"
 , rootModules ?
-    [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" ]
+    [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ]
 }:
 
 with pkgs;
@@ -57,6 +57,7 @@ rec {
       mknod ${dev}/random  c 1 8
       mknod ${dev}/urandom c 1 9
       mknod ${dev}/tty     c 5 0
+      mknod ${dev}/rtc     c 254 0
       . /sys/class/block/${hd}/uevent
       mknod ${dev}/${hd} b $MAJOR $MINOR
     '';
@@ -159,6 +160,10 @@ rec {
     #! ${bash}/bin/sh
     source /tmp/xchg/saved-env
 
+    # Set the system time from the hardware clock.  Works around an
+    # apparent KVM > 1.5.2 bug.
+    ${pkgs.utillinux}/sbin/hwclock -s
+
     export NIX_STORE=/nix/store
     export NIX_BUILD_TOP=/tmp
     export TMPDIR=/tmp
diff --git a/pkgs/data/documentation/man-pages-posix/default.nix b/pkgs/data/documentation/man-pages-posix/default.nix
index 8c126db07929..78b3aa1c8b3e 100644
--- a/pkgs/data/documentation/man-pages-posix/default.nix
+++ b/pkgs/data/documentation/man-pages-posix/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "man-pages-posix-2003a";
+  name = "man-pages-posix-2013-a";
 
   src = fetchurl {
-    url = "mirror://kernel/linux/docs/man-pages/man-pages-posix/man-pages-posix-2003-a.tar.bz2";
-    sha256 = "1sj97lbj27w935f9ia91ih1mwlz4j3qcr3d3nkvcxm6cpfvv2mg3";
+    url = "mirror://kernel/linux/docs/man-pages/man-pages-posix/${name}.tar.xz";
+    sha256 = "0258j05zdrxpgdj8nndbyi7bvrs8fxdksb0xbfrylzgzfmf3lqqr";
   };
 
   preBuild =
diff --git a/pkgs/data/documentation/man-pages/default.nix b/pkgs/data/documentation/man-pages/default.nix
index e997dd487c5a..b43cc8a7995c 100644
--- a/pkgs/data/documentation/man-pages/default.nix
+++ b/pkgs/data/documentation/man-pages/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "man-pages-3.61";
+  name = "man-pages-3.62";
 
   src = fetchurl {
     url = "mirror://kernel/linux/docs/man-pages/${name}.tar.xz";
-    sha256 = "1qh1rwh0klk9s1wja6rzr5gdyvijh88i0fwqap83grbgqs661c61";
+    sha256 = "1pxnbznrzckzdnlfbdsg9hjd2g93q6b433l4gp095kdxxjqm1mgk";
   };
 
   preBuild =
diff --git a/pkgs/data/fonts/wqy-microhei/default.nix b/pkgs/data/fonts/wqy-microhei/default.nix
new file mode 100644
index 000000000000..065bb4bc828f
--- /dev/null
+++ b/pkgs/data/fonts/wqy-microhei/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "wqy-microhei-0.2.0-beta";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/wqy/${name}.tar.gz";
+    sha256 = "0gi1yxqph8xx869ichpzzxvx6y50wda5hi77lrpacdma4f0aq0i8";
+  };
+
+  installPhase = ''install -Dm644 wqy-microhei.ttc $out/share/fonts/wqy-microhei.ttc'';
+
+  meta = {
+    description = "A (mainly) Chinese Unicode font";
+    homepage = "http://wenq.org";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = stdenv.lib.maintainers.pkmx;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
+
diff --git a/pkgs/data/fonts/wqy-zenhei/default.nix b/pkgs/data/fonts/wqy-zenhei/default.nix
index 960c74f68413..d42665c69cca 100644
--- a/pkgs/data/fonts/wqy-zenhei/default.nix
+++ b/pkgs/data/fonts/wqy-zenhei/default.nix
@@ -1,21 +1,28 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "wqy-zenhei-0.4.23-1";
+  name = "wqy-zenhei-${version}";
+  version = "0.9.45";
 
   src = fetchurl {
-    url = mirror://sourceforge/wqy/wqy-zenhei-0.4.23-1.tar.gz;
-    sha256 = "138nn81ai240av0xvcq4ab3rl73n0qlj3gwr3a36i63ry8vdj5qm";
+    url = "mirror://sourceforge/wqy/${name}.tar.gz";
+    sha256 = "1mkmxq8g2hjcglb3zajfqj20r4r88l78ymsp2xyl5yav8w3f7dz4";
   };
 
+  dontBuild = true;
+
   installPhase =
     ''
       mkdir -p $out/share/fonts
-      cp *.ttf $out/share/fonts
+      install -m644 *.ttc $out/share/fonts/
     '';
 
   meta = {
     description = "A (mainly) Chinese Unicode font";
+    homepage = "http://wenq.org";
+    license = stdenv.lib.licenses.gpl2; # with font embedding exceptions
+    maintainers = stdenv.lib.maintainers.pkmx;
+    platforms = stdenv.lib.platforms.all;
   };
 }
 
diff --git a/pkgs/desktops/gnome-3/core/empathy/default.nix b/pkgs/desktops/gnome-3/core/empathy/default.nix
index 1e0c94d0c7ff..1f7a027fd3e5 100644
--- a/pkgs/desktops/gnome-3/core/empathy/default.nix
+++ b/pkgs/desktops/gnome-3/core/empathy/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Apps/Empathy;
     description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
     maintainers = with maintainers; [ lethalman ];
-    license = [ licenses.gpl2 licenses.lgpl2 ];
+    # TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
index a5d196ae1e32..28c7b80c0d4f 100644
--- a/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
@@ -1,17 +1,26 @@
-{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool }:
+{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool, gobjectIntrospection }:
 
 stdenv.mkDerivation rec {
-  name = "libgnome-keyring-3.6.0";
+  name = "libgnome-keyring-3.10.1";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/libgnome-keyring/3.6/${name}.tar.xz";
-    sha256 = "0c4qrjpmv1hqga3xv6wsq2z10x2n78qgw7q3k3s01y1pggxkgjkd";
+    url = "mirror://gnome/sources/libgnome-keyring/3.10/${name}.tar.xz";
+    sha256 = "0wip88r91kwx4zp6sc9b38mnlv11grgl4k2kzsd3a8x83c9g2b05";
   };
 
-  propagatedBuildInputs = [ glib dbus_libs libgcrypt ];
+  propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ];
   nativeBuildInputs = [ pkgconfig intltool ];
 
   meta = {
+    description = "Framework for managing passwords and other secrets";
+    homepage = http://live.gnome.org/GnomeKeyring;
+    # TODO 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/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
index 708a8ff32d6c..c5060bdba75c 100644
--- a/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
+++ b/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Apps/Yelp;
     description = "Yelp's universal stylesheets for Mallard and DocBook";
     maintainers = with maintainers; [ lethalman ];
-    license = [licenses.gpl2 licenses.lgpl2];
+    # TODO license = [licenses.gpl2 licenses.lgpl2];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix
index 15544eff9220..61dfe2b17959 100644
--- a/pkgs/desktops/gnome-3/default.nix
+++ b/pkgs/desktops/gnome-3/default.nix
@@ -128,5 +128,6 @@ rec {
   gitg = callPackage ./misc/gitg { };
 
   libgit2-glib = callPackage ./misc/libgit2-glib { };
-
+  
+  gexiv2 = callPackage ./misc/gexiv2 { };
 }
diff --git a/pkgs/desktops/gnome-3/misc/gexiv2/default.nix b/pkgs/desktops/gnome-3/misc/gexiv2/default.nix
new file mode 100644
index 000000000000..86942c13f34f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/misc/gexiv2/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4 }:
+
+
+stdenv.mkDerivation rec {
+  name = "gexiv2-${version}";
+  version = "0.7.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gexiv2/0.7/${name}.tar.xz";
+    sha256 = "12pfc5a57dhlf0c3yg5x3jissxi7jy2b6ir6y99cn510801gwcdn";
+  };
+  
+  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;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/desktops/gnome-3/misc/goffice/default.nix b/pkgs/desktops/gnome-3/misc/goffice/default.nix
index 51d259314a7a..0390fc133687 100644
--- a/pkgs/desktops/gnome-3/misc/goffice/default.nix
+++ b/pkgs/desktops/gnome-3/misc/goffice/default.nix
@@ -1,19 +1,23 @@
-{ fetchurl, stdenv, pkgconfig, intltool, bzip2, glib, gdk_pixbuf, gtk3
-, libgsf, libxml2, cairo, pango, librsvg, libspectre }:
+{ fetchurl, stdenv, pkgconfig, intltool, glib, gtk3
+, libgsf, libxml2, libxslt, cairo, pango, librsvg, libspectre }:
 
 stdenv.mkDerivation rec {
-  name = "goffice-0.10.9";
+  name = "goffice-0.10.12";
 
   src = fetchurl {
     url = "mirror://gnome/sources/goffice/0.10/${name}.tar.xz";
-    sha256 = "0xc82hymhkdglnksd3r7405p39d5ym826rwaa7dfkps5crjwq8cg";
+    sha256 = "0vh0sdig5n8sxzh4xx82lm8y8d0jcdhc2ipb1kq02qs142zs74ff";
   };
 
+  nativeBuildInputs = [ pkgconfig intltool ];
+
   propagatedBuildInputs = [ # ToDo lasem library for MathML, opt. introspection?
-    pkgconfig intltool bzip2 glib gdk_pixbuf gtk3
-    libgsf libxml2 cairo pango librsvg libspectre
+    glib gtk3 libxml2 cairo pango libgsf
   ];
 
+  buildInputs = [ libxslt librsvg ];
+
+  enableParallelBuilding = true;
   doCheck = true;
 
   meta = {
diff --git a/pkgs/desktops/kde-4.10/kdeutils/kdf.nix b/pkgs/desktops/kde-4.10/kdeutils/kdf.nix
index 3f9da58d0a62..4b02c12d88ab 100644
--- a/pkgs/desktops/kde-4.10/kdeutils/kdf.nix
+++ b/pkgs/desktops/kde-4.10/kdeutils/kdf.nix
@@ -3,6 +3,8 @@
 kde {
   buildInputs = [ kdelibs ];
 
+  enableParallelBuilding = false;
+
   meta = {
     description = "KDE free disk space utility";
   };
diff --git a/pkgs/desktops/xfce/applications/gigolo.nix b/pkgs/desktops/xfce/applications/gigolo.nix
index b54ea8cc623f..9badeb5370e8 100644
--- a/pkgs/desktops/xfce/applications/gigolo.nix
+++ b/pkgs/desktops/xfce/applications/gigolo.nix
@@ -3,20 +3,16 @@
 stdenv.mkDerivation rec {
   p_name  = "gigolo";
   ver_maj = "0.4";
-  ver_min = "1";
+  ver_min = "2";
 
   src = fetchurl {
     url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1y8p9bbv1a4qgbxl4vn6zbag3gb7gl8qj75cmhgrrw9zrvqbbww2";
+    sha256 = "0r4ij0mlnp0bqq44pyrdcpz18r1zwsksw6w5yc0jzgg7wj7wfgsm";
   };
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs = [ python gettext intltool gtk pkgconfig gvfs];
 
-  preConfigure = ''
-    sed -i "waf" -e "1 s^.*/env[ ]*python^#!${python}/bin/python^";
-  '';
-
   meta = {
     homepage = "http://goodies.xfce.org/projects/applications/${p_name}";
     description = "A frontend to easily manage connections to remote filesystems";
diff --git a/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix b/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix
index baef68728487..df743e4cc9c8 100644
--- a/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix
+++ b/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix
@@ -3,11 +3,11 @@
 stdenv.mkDerivation rec {
   p_name  = "xfce4-taskmanager";
   ver_maj = "1.0";
-  ver_min = "0";
+  ver_min = "1";
 
   src = fetchurl {
     url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1vm9gw7j4ngjlpdhnwdf7ifx6xrrn21011almx2vwidhk2f9zvy0";
+    sha256 = "11pfiglfg3mzsmpiwva6l7dj44zsv76vyf0282pghwcrvnb2gapm";
   };
   name = "${p_name}-${ver_maj}.${ver_min}";
 
diff --git a/pkgs/desktops/xfce/core/tumbler.nix b/pkgs/desktops/xfce/core/tumbler.nix
index 06902792624e..8988d072e2c8 100644
--- a/pkgs/desktops/xfce/core/tumbler.nix
+++ b/pkgs/desktops/xfce/core/tumbler.nix
@@ -4,11 +4,11 @@ libgsf, poppler, bzip2 }:
 stdenv.mkDerivation rec {
   p_name  = "tumbler";
   ver_maj = "0.1";
-  ver_min = "29";
+  ver_min = "30";
 
   src = fetchurl {
     url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "14zw69x5979d19brjbyq81wvbikb13vgv901gxnbw8lyc3pc9fn3";
+    sha256 = "013kacqyy1vya7kp6jgc1almp3cbbvq96a3r7f5myiihr1whvhp7";
   };
   name = "${p_name}-${ver_maj}.${ver_min}";
 
diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager-brightness.patch b/pkgs/desktops/xfce/core/xfce4-power-manager-brightness.patch
new file mode 100644
index 000000000000..6b6f14fdae78
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-power-manager-brightness.patch
@@ -0,0 +1,307 @@
+From 05d12e12596512f7a31d3cdb4845a69dc2d4c611 Mon Sep 17 00:00:00 2001
+From: Martin Matuska <martin@matuska.org>
+Date: Tue, 23 Jul 2013 11:27:41 +0200
+Subject: Change brightness level from glong to gint32
+
+The "Backlight" RandR property is a 32-bit integer. This means that the int32 (gint32) type should be used to represent brightness levels. The attached patch does nothing else than changing the brightness level representation from glong to gint32. This fixes the screen auto-dimming issue and brightness panel plugin issue.
+
+diff --git a/common/xfpm-brightness.c b/common/xfpm-brightness.c
+index aa1ef33..f1524cb 100644
+--- a/common/xfpm-brightness.c
++++ b/common/xfpm-brightness.c
+@@ -92,11 +92,11 @@ out:
+ }
+ 
+ static gboolean
+-xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, long *current)
++xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, gint32 *current)
+ {
+     unsigned long nitems;
+     unsigned long bytes_after;
+-    long *prop;
++    gint32 *prop;
+     Atom actual_type;
+     int actual_format;
+     gboolean ret = FALSE;
+@@ -124,7 +124,7 @@ xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, l
+ }
+ 
+ static gboolean
+-xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, long level)
++xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, gint32 level)
+ {
+     gboolean ret = TRUE;
+ 
+@@ -137,7 +137,7 @@ xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, l
+     
+     if ( gdk_error_trap_pop () ) 
+     {
+-	    g_warning ("failed to XRRChangeOutputProperty for brightness %li", level);
++	    g_warning ("failed to XRRChangeOutputProperty for brightness %d", level);
+ 	    ret = FALSE;
+     }
+     
+@@ -225,11 +225,11 @@ xfpm_brightness_setup_xrandr (XfpmBrightness *brightness)
+ }
+ 
+ static gboolean
+-xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_xrand_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+-    long hw_level;
++    gint32 hw_level;
+     gboolean ret = FALSE;
+-    long set_level;
++    gint32 set_level;
+     
+     ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level);
+     
+@@ -250,14 +250,14 @@ xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
+     
+     if ( !ret )
+     {
+-	g_warning ("xfpm_brightness_xrand_up failed for %li", set_level);
++	g_warning ("xfpm_brightness_xrand_up failed for %d", set_level);
+ 	return FALSE;
+     }
+ 	
+     /* Nothing changed in the hardware*/
+     if ( *new_level == hw_level )
+     {
+-	g_warning ("xfpm_brightness_xrand_up did not change the hw level to %li", set_level);
++	g_warning ("xfpm_brightness_xrand_up did not change the hw level to %d", set_level);
+ 	return FALSE;
+     }
+     
+@@ -265,11 +265,11 @@ xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
+ }
+ 
+ static gboolean
+-xfpm_brightness_xrand_down (XfpmBrightness *brightness, long *new_level)
++xfpm_brightness_xrand_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+-    long hw_level;
++    gint32 hw_level;
+     gboolean ret;
+-    long set_level;
++    gint32 set_level;
+     
+     ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level);
+     
+@@ -290,14 +290,14 @@ xfpm_brightness_xrand_down (XfpmBrightness *brightness, long *new_level)
+     
+     if ( !ret )
+     {
+-	g_warning ("xfpm_brightness_xrand_down failed for %li", set_level);
++	g_warning ("xfpm_brightness_xrand_down failed for %d", set_level);
+ 	return FALSE;
+     }
+     
+     /* Nothing changed in the hardware*/
+     if ( *new_level == hw_level )
+     {
+-	g_warning ("xfpm_brightness_xrand_down did not change the hw level to %li", set_level);
++	g_warning ("xfpm_brightness_xrand_down did not change the hw level to %d", set_level);
+ 	return FALSE;
+     }
+     
+@@ -361,7 +361,7 @@ xfpm_brightness_setup_helper (XfpmBrightness *brightness)
+ }
+ 
+ static gboolean
+-xfpm_brightness_helper_get_level (XfpmBrightness *brg, glong *level)
++xfpm_brightness_helper_get_level (XfpmBrightness *brg, gint32 *level)
+ {
+     int ret;
+ 
+@@ -406,11 +406,11 @@ out:
+ }
+ 
+ static gboolean
+-xfpm_brightness_helper_up (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_helper_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+-    glong hw_level;
++    gint32 hw_level;
+     gboolean ret = FALSE;
+-    gint set_level;
++    gint32 set_level;
+     
+     ret = xfpm_brightness_helper_get_level (brightness, &hw_level);
+     
+@@ -446,11 +446,11 @@ xfpm_brightness_helper_up (XfpmBrightness *brightness, glong *new_level)
+ }
+ 
+ static gboolean
+-xfpm_brightness_helper_down (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_helper_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+-    glong hw_level;
++    gint32 hw_level;
+     gboolean ret;
+-    gint set_level;
++    gint32 set_level;
+     
+     ret = xfpm_brightness_helper_get_level (brightness, &hw_level);
+     
+@@ -572,7 +572,7 @@ xfpm_brightness_setup (XfpmBrightness *brightness)
+     return FALSE;
+ }
+ 
+-gboolean xfpm_brightness_up (XfpmBrightness *brightness, glong *new_level)
++gboolean xfpm_brightness_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+     gboolean ret = FALSE;
+     
+@@ -589,7 +589,7 @@ gboolean xfpm_brightness_up (XfpmBrightness *brightness, glong *new_level)
+     return ret;
+ }
+ 
+-gboolean xfpm_brightness_down (XfpmBrightness *brightness, glong *new_level)
++gboolean xfpm_brightness_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+     gboolean ret = FALSE;
+     
+@@ -618,7 +618,7 @@ gint xfpm_brightness_get_max_level (XfpmBrightness *brightness)
+     return brightness->priv->max_level;
+ }
+ 
+-gboolean xfpm_brightness_get_level	(XfpmBrightness *brightness, glong *level)
++gboolean xfpm_brightness_get_level	(XfpmBrightness *brightness, gint32 *level)
+ {
+     gboolean ret = FALSE;
+     
+@@ -632,7 +632,7 @@ gboolean xfpm_brightness_get_level	(XfpmBrightness *brightness, glong *level)
+     return ret;
+ }
+ 
+-gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, glong level)
++gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, gint32 level)
+ {
+     gboolean ret = FALSE;
+     
+diff --git a/common/xfpm-brightness.h b/common/xfpm-brightness.h
+index 0c4e3ed..26b3dbe 100644
+--- a/common/xfpm-brightness.h
++++ b/common/xfpm-brightness.h
+@@ -51,20 +51,20 @@ XfpmBrightness       	       *xfpm_brightness_new             (void);
+ gboolean			xfpm_brightness_setup 		(XfpmBrightness *brightness);
+ 
+ gboolean			xfpm_brightness_up		(XfpmBrightness *brightness,
+-								 glong *new_level);
++								 gint32 *new_level);
+ 
+ gboolean			xfpm_brightness_down		(XfpmBrightness *brightness,
+-								 glong *new_level);
++								 gint32 *new_level);
+ 
+ gboolean			xfpm_brightness_has_hw 		(XfpmBrightness *brightness);
+ 
+ gint 				xfpm_brightness_get_max_level   (XfpmBrightness *brightness);
+ 
+ gboolean			xfpm_brightness_get_level	(XfpmBrightness *brightness,
+-								 glong *level);
++								 gint32 *level);
+ 
+ gboolean			xfpm_brightness_set_level	(XfpmBrightness *brightness,
+-								 glong level);
++								 gint32 level);
+ 
+ gboolean			xfpm_brightness_dim_down	(XfpmBrightness *brightness);
+ 
+diff --git a/panel-plugins/brightness/brightness-button.c b/panel-plugins/brightness/brightness-button.c
+index 6e60c29..bd466c9 100644
+--- a/panel-plugins/brightness/brightness-button.c
++++ b/panel-plugins/brightness/brightness-button.c
+@@ -186,7 +186,7 @@ static gboolean
+ brightness_button_popup_win (GtkWidget *widget, GdkEvent *ev, guint32 ev_time)
+ {
+     gint x, y;
+-    glong current_level = 0;
++    gint32 current_level = 0;
+     GdkDisplay *display;
+     GdkScreen *screen;
+     BrightnessButton *button;
+@@ -342,7 +342,7 @@ plus_clicked (GtkWidget *widget, BrightnessButton *button)
+ static void
+ range_value_changed (GtkWidget *widget, BrightnessButton *button)
+ {
+-    glong range_level, hw_level;
++    gint32 range_level, hw_level;
+     
+     range_level = (gint) gtk_range_get_value (GTK_RANGE (button->priv->range));
+     
+@@ -428,8 +428,8 @@ brightness_button_create_popup (BrightnessButton *button)
+ static void
+ brightness_button_up (BrightnessButton *button)
+ {
+-    glong level;
+-    glong max_level;
++    gint32 level;
++    gint32 max_level;
+     
+     xfpm_brightness_get_level (button->priv->brightness, &level);
+     max_level = xfpm_brightness_get_max_level (button->priv->brightness);
+@@ -443,7 +443,7 @@ brightness_button_up (BrightnessButton *button)
+ static void
+ brightness_button_down (BrightnessButton *button)
+ {
+-    glong level;
++    gint32 level;
+     xfpm_brightness_get_level (button->priv->brightness, &level);
+     
+     if ( level != 0 )
+diff --git a/src/xfpm-backlight.c b/src/xfpm-backlight.c
+index baeeb43..45c990f 100644
+--- a/src/xfpm-backlight.c
++++ b/src/xfpm-backlight.c
+@@ -63,8 +63,8 @@ struct XfpmBacklightPrivate
+     gboolean	    has_hw;
+     gboolean	    on_battery;
+     
+-    glong            last_level;
+-    glong 	    max_level;
++    gint32          last_level;
++    gint32 	    max_level;
+     
+     gboolean        dimmed;
+     gboolean	    block;
+@@ -79,7 +79,7 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
+     
+     if (xfpm_power_get_mode (backlight->priv->power) == XFPM_POWER_MODE_NORMAL )
+     {
+-	glong dim_level;
++	gint32 dim_level;
+ 	
+ 	g_object_get (G_OBJECT (backlight->priv->conf),
+ 		      backlight->priv->on_battery ? BRIGHTNESS_LEVEL_ON_BATTERY : BRIGHTNESS_LEVEL_ON_AC, &dim_level,
+@@ -101,7 +101,7 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
+ 	 **/
+ 	if (backlight->priv->last_level > dim_level)
+ 	{
+-	    XFPM_DEBUG ("Current brightness level before dimming : %li, new %li", backlight->priv->last_level, dim_level);
++	    XFPM_DEBUG ("Current brightness level before dimming : %d, new %d", backlight->priv->last_level, dim_level);
+ 	    backlight->priv->dimmed = xfpm_brightness_set_level (backlight->priv->brightness, dim_level);
+ 	}
+     }
+@@ -182,7 +182,7 @@ xfpm_backlight_reset_cb (EggIdletime *idle, XfpmBacklight *backlight)
+     {
+ 	if ( !backlight->priv->block)
+ 	{
+-	    XFPM_DEBUG ("Alarm reset, setting level to %li", backlight->priv->last_level);
++	    XFPM_DEBUG ("Alarm reset, setting level to %d", backlight->priv->last_level);
+ 	    xfpm_brightness_set_level (backlight->priv->brightness, backlight->priv->last_level);
+ 	}
+ 	backlight->priv->dimmed = FALSE;
+@@ -192,7 +192,7 @@ xfpm_backlight_reset_cb (EggIdletime *idle, XfpmBacklight *backlight)
+ static void
+ xfpm_backlight_button_pressed_cb (XfpmButton *button, XfpmButtonKey type, XfpmBacklight *backlight)
+ {
+-    glong level;
++    gint32 level;
+     gboolean ret = TRUE;
+     
+     gboolean enable_brightness, show_popup;
+-- 
+cgit v0.10.1
+
diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager.nix b/pkgs/desktops/xfce/core/xfce4-power-manager.nix
index 91ec6b40e23e..7740af438d9c 100644
--- a/pkgs/desktops/xfce/core/xfce4-power-manager.nix
+++ b/pkgs/desktops/xfce/core/xfce4-power-manager.nix
@@ -11,11 +11,6 @@ stdenv.mkDerivation rec {
     sha256 = "1sc4f4wci5yl3l9lk7vcsbwj6hdjshbxw9qm43s64jr882jriyyp";
   };
 
-  brightness_patch = fetchurl {
-    url = "http://git.xfce.org/xfce/xfce4-power-manager/patch/?id=05d12e12596512f7a31d3cdb4845a69dc2d4c611";
-    sha256 = "1y8520s0s4d7x1abdwsm5qig4vgm3np7hhagfbdwd5ymiz5nn9mw";
-  };
-
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
@@ -24,7 +19,7 @@ stdenv.mkDerivation rec {
     ];
   preFixup = "rm $out/share/icons/hicolor/icon-theme.cache";
 
-  patches = [ brightness_patch ];
+  patches = ./xfce4-power-manager-brightness.patch;
 
   meta = {
     homepage = http://goodies.xfce.org/projects/applications/xfce4-power-manager;
diff --git a/pkgs/development/compilers/ghc/7.8.1.nix b/pkgs/development/compilers/ghc/7.8.1.nix
new file mode 100644
index 000000000000..c9ca6fd8719b
--- /dev/null
+++ b/pkgs/development/compilers/ghc/7.8.1.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, ghc, perl, gmp, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "7.8.0.20140228";
+  name = "ghc-${version}";
+
+  src = fetchurl {
+    url = "http://www.haskell.org/ghc/dist/7.8.1-rc2/${name}-src.tar.bz2";
+    sha256 = "09xlgz1xg0182wjy62h3j0xvnhllhjlyvj30vc3him98parnr76w";
+  };
+
+  buildInputs = [ ghc perl gmp ncurses ];
+
+  enableParallelBuilding = true;
+
+  buildMK = ''
+    libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp}/lib"
+    libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-includes="${gmp}/include"
+    DYNAMIC_BY_DEFAULT = NO
+  '';
+
+  preConfigure = ''
+    echo "${buildMK}" > mk/build.mk
+    sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
+    export NIX_LDFLAGS="$NIX_LDFLAGS -rpath $out/lib/ghc-${version}"
+  '';
+
+  configureFlags = "--with-gcc=${stdenv.gcc}/bin/gcc";
+
+  # required, because otherwise all symbols from HSffi.o are stripped, and
+  # that in turn causes GHCi to abort
+  stripDebugFlags = [ "-S" "--keep-file-symbols" ];
+
+  meta = {
+    homepage = "http://haskell.org/ghc";
+    description = "The Glasgow Haskell Compiler";
+    maintainers = [
+      stdenv.lib.maintainers.marcweber
+      stdenv.lib.maintainers.andres
+      stdenv.lib.maintainers.simons
+    ];
+    inherit (ghc.meta) license platforms;
+  };
+
+}
diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix
index f4f8be273679..7f5ec0985b9a 100644
--- a/pkgs/development/compilers/ghc/head.nix
+++ b/pkgs/development/compilers/ghc/head.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ghc, perl, gmp, ncurses, happy, alex }:
 
 stdenv.mkDerivation rec {
-  version = "7.7.20131202";
+  version = "7.9.20140313";
   name = "ghc-${version}";
 
   src = fetchurl {
     url = "http://cryp.to/${name}.tar.xz";
-    sha256 = "1gnp5c3x7dbaz7s2yvkw2fmvqh5by2gpp0zlcyj8p2gv13gxi2cb";
+    sha256 = "03i9ajgzlp2y0qq7qnmyji6vdcgx2xnsyrc2zbqbziinf86igwhi";
   };
 
   buildInputs = [ ghc perl gmp ncurses happy alex ];
diff --git a/pkgs/development/compilers/jdk/jdk7-linux.nix b/pkgs/development/compilers/jdk/jdk7-linux.nix
index 6e1fec4d18ca..106b9fa02d79 100644
--- a/pkgs/development/compilers/jdk/jdk7-linux.nix
+++ b/pkgs/development/compilers/jdk/jdk7-linux.nix
@@ -6,6 +6,19 @@
 , installjdk ? true
 , pluginSupport ? true
 , installjce ? false
+, glib
+, libxml2
+, libav_0_8
+, ffmpeg_0_6
+, libxslt
+, mesa_noglu
+, freetype
+, fontconfig
+, gnome
+, cairo
+, alsaLib
+, atk
+, gdk_pixbuf
 }:
 
 assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
@@ -87,7 +100,7 @@ stdenv.mkDerivation rec {
     # construct the rpath
     rpath=
     for i in $libraries; do
-        rpath=$rpath''${rpath:+:}$i/lib
+        rpath=$rpath''${rpath:+:}$i/lib''${rpath:+:}$i/lib64
     done
 
     if test -z "$installjdk"; then
@@ -102,6 +115,8 @@ stdenv.mkDerivation rec {
     fi
 
     rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/jli
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/server
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/xawt
     rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}
 
     # set all the dynamic linkers
@@ -111,6 +126,12 @@ stdenv.mkDerivation rec {
 
     find $out -name "*.so" -exec patchelf --set-rpath "$rpath" {} \;
 
+    # HACK: For some reason, appending atk to the global patchelf rpath paths causes:
+    #   java: relocation error: java: symbol , version GLIBC_2.2.5 not defined in file libc.so.6 with link time reference
+    # Because only libglass.so needs atk, we put it only in it's rpath.
+    # This seems to work fine.
+    patchelf --set-rpath "$rpath:${atk}/lib" $out/jre/lib/${architecture}/libglass.so
+
     if test -z "$pluginSupport"; then
       rm -f $out/bin/javaws
       if test -n "$installjdk"; then
@@ -128,8 +149,8 @@ stdenv.mkDerivation rec {
    * libXt is only needed on amd64
    */
   libraries =
-    [stdenv.gcc.libc] ++
-    (if swingSupport then [xlibs.libX11 xlibs.libXext xlibs.libXtst xlibs.libXi xlibs.libXp xlibs.libXt] else []);
+    [stdenv.gcc.libc glib libxml2 libav_0_8 ffmpeg_0_6 libxslt mesa_noglu xlibs.libXxf86vm alsaLib fontconfig freetype gnome.pango gnome.gtk cairo gdk_pixbuf] ++
+    (if swingSupport then [xlibs.libX11 xlibs.libXext xlibs.libXtst xlibs.libXi xlibs.libXp xlibs.libXt xlibs.libXrender stdenv.gcc.gcc] else []);
 
   passthru.mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins";
 
diff --git a/pkgs/development/interpreters/clisp/2.44.1.nix b/pkgs/development/interpreters/clisp/2.44.1.nix
index 521933b0ed1f..7b811732a626 100644
--- a/pkgs/development/interpreters/clisp/2.44.1.nix
+++ b/pkgs/development/interpreters/clisp/2.44.1.nix
@@ -3,12 +3,12 @@
 , libffi, libffcall, coreutils }:
         
 stdenv.mkDerivation rec {
-  v = "2.44.1";
+  v = "2.49";
   name = "clisp-${v}";
   
   src = fetchurl {
     url = "mirror://gnu/clisp/release/${v}/${name}.tar.gz";
-    sha256 = "0rkp6j6rih4s5d9acifh7pi4b9xfgcspif512l269dqy9qgyy4j1";
+    sha256 = "0rp82nqp5362isl9i34rwgg04cidz7izljd9d85pqcw1qr964bxx";
   };
 
   buildInputs =
diff --git a/pkgs/development/interpreters/python/3.4/default.nix b/pkgs/development/interpreters/python/3.4/default.nix
index 8d7da9d91e64..3725586f3f4c 100644
--- a/pkgs/development/interpreters/python/3.4/default.nix
+++ b/pkgs/development/interpreters/python/3.4/default.nix
@@ -18,7 +18,7 @@ with stdenv.lib;
 let
   majorVersion = "3.4";
   version = "${majorVersion}.0";
-  fullVersion = "${version}rc2";
+  fullVersion = "${version}";
 
   buildInputs = filter (p: p != null) [
     zlib bzip2 gdbm sqlite db readline ncurses openssl tcl tk libX11 xproto
@@ -30,7 +30,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz";
-    sha256 = "0v37mlkwzbc8m54h3nb04x6xm2yx5fmd7flq2shn37ixf9d0ih6z";
+    sha256 = "1gjcn5c3zqg161vwzh43ciha15w0plf5v7cyfm372pnllb08cdpi";
   };
 
   NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
diff --git a/pkgs/development/libraries/SDL2/default.nix b/pkgs/development/libraries/SDL2/default.nix
index c3b33dfaf620..6964d8ac8040 100644
--- a/pkgs/development/libraries/SDL2/default.nix
+++ b/pkgs/development/libraries/SDL2/default.nix
@@ -22,11 +22,11 @@ let
       '';
 in
 stdenv.mkDerivation rec {
-  name = "SDL2-2.0.1";
+  name = "SDL2-2.0.2";
 
   src = fetchurl {
     url = "http://www.libsdl.org/release/${name}.tar.gz";
-    sha256 = "1w1jcz7hilk4fl8wlhiwvd1licg8lwy0brqz05562xv7l81fkrqa";
+    sha256 = "0l78h3wlirnxxrdw3kkm9amhgjn6xrs9l5j871r552wabbw5f0ar";
   };
 
   # Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated.
diff --git a/pkgs/development/libraries/SDL_ttf/default.nix b/pkgs/development/libraries/SDL_ttf/default.nix
index 591a4bfbd6dd..696b6bd0ac8f 100644
--- a/pkgs/development/libraries/SDL_ttf/default.nix
+++ b/pkgs/development/libraries/SDL_ttf/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, SDL, freetype }:
 
 stdenv.mkDerivation {
-  name = "SDL_ttf-2.0.9";
+  name = "SDL_ttf-2.0.11";
 
   src = fetchurl {
-    url = http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.9.tar.gz;
-    sha256 = "0ls6anmlmwrmy21p3y9nfyl6fkwz4jpgh74kw7xd0hwbg5v8h95l";
+    url = http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz;
+    sha256 = "1dydxd4f5kb1288i5n5568kdk2q7f8mqjr7i7sd33nplxjaxhk3j";
   };
 
   buildInputs = [SDL freetype];
diff --git a/pkgs/development/libraries/audio/lilv/default.nix b/pkgs/development/libraries/audio/lilv/default.nix
index 9150df8da7d4..d1510e342380 100644
--- a/pkgs/development/libraries/audio/lilv/default.nix
+++ b/pkgs/development/libraries/audio/lilv/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A C library to make the use of LV2 plugins";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/audio/lv2/default.nix b/pkgs/development/libraries/audio/lv2/default.nix
index f5d48df03f84..25d19d089a57 100644
--- a/pkgs/development/libraries/audio/lv2/default.nix
+++ b/pkgs/development/libraries/audio/lv2/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A plugin standard for audio systems";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/audio/sratom/default.nix b/pkgs/development/libraries/audio/sratom/default.nix
index 5c78296af971..ac0b9d233fa8 100644
--- a/pkgs/development/libraries/audio/sratom/default.nix
+++ b/pkgs/development/libraries/audio/sratom/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A library for serialising LV2 atoms to/from RDF";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/audio/suil/default.nix b/pkgs/development/libraries/audio/suil/default.nix
index 8af725b6b80f..87e034726594 100644
--- a/pkgs/development/libraries/audio/suil/default.nix
+++ b/pkgs/development/libraries/audio/suil/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A lightweight C library for loading and wrapping LV2 plugin UIs";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/check/default.nix b/pkgs/development/libraries/check/default.nix
index a424041dbc23..a0e1bcfa6121 100644
--- a/pkgs/development/libraries/check/default.nix
+++ b/pkgs/development/libraries/check/default.nix
@@ -1,12 +1,12 @@
 { fetchurl, stdenv }:
 
-let version = "0.9.11"; in
+let version = "0.9.12"; in
 stdenv.mkDerivation {
   name = "check-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/check/${version}/check-${version}.tar.gz";
-    sha256 = "0dk9jx9hjjwsgly0iwvr5hhw870zlx21gwar7zxlzfq0zdzqqkpa";
+    sha256 = "18qybf3s25s1gydp2lwbc4icnmdc6f9sj21fllcwm81kw5apxm67";
   };
 
   # Test can randomly fail: http://hydra.nixos.org/build/7243912
diff --git a/pkgs/development/libraries/dbus/default.nix b/pkgs/development/libraries/dbus/default.nix
index 2101f99bbb90..11ad2014663a 100644
--- a/pkgs/development/libraries/dbus/default.nix
+++ b/pkgs/development/libraries/dbus/default.nix
@@ -56,7 +56,7 @@ let
       "--localstatedir=/var"
       "--sysconfdir=/etc"
       "--with-session-socket-dir=/tmp"
-      "--with-systemdsystemunitdir=$(out)/lib/systemd"
+      "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
     ];
 
     enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/facile/default.nix b/pkgs/development/libraries/facile/default.nix
index edbe99cd8b07..5e3776afbc05 100644
--- a/pkgs/development/libraries/facile/default.nix
+++ b/pkgs/development/libraries/facile/default.nix
@@ -9,9 +9,11 @@ stdenv.mkDerivation rec {
   };
   
   dontAddPrefix = 1;
-        
-  patchPhase = "sed -e 's@mkdir@mkdir -p@' -i Makefile";
-  
+
+  patches = [ ./ocaml_4.xx.patch ];
+
+  postPatch = "sed -e 's@mkdir@mkdir -p@' -i Makefile";
+
   postConfigure = "make -C src .depend";
   
   makeFlags = "FACILEDIR=\${out}/lib/ocaml/facile";
diff --git a/pkgs/development/libraries/facile/ocaml_4.xx.patch b/pkgs/development/libraries/facile/ocaml_4.xx.patch
new file mode 100644
index 000000000000..429405fabdaa
--- /dev/null
+++ b/pkgs/development/libraries/facile/ocaml_4.xx.patch
@@ -0,0 +1,12 @@
+diff -rupN facile-1.1/src/fcl_data.ml facile-1.1-patched//src/fcl_data.ml
+--- facile-1.1/src/fcl_data.ml	2004-09-08 11:51:02.000000000 +0200
++++ facile-1.1-patched//src/fcl_data.ml	2012-12-16 13:49:36.286722670 +0100
+@@ -16,7 +16,7 @@ end
+ 
+ module Hashtbl = struct
+   type ('a, 'b) t = ('a, 'b) Hashtbl.t
+-  let create = Hashtbl.create
++  let create x = Hashtbl.create x
+   let get h = h
+ 
+   let add h k d =
diff --git a/pkgs/development/libraries/ffmpeg/0.10.nix b/pkgs/development/libraries/ffmpeg/0.10.nix
index f356bceaf401..99c823e7b297 100644
--- a/pkgs/development/libraries/ffmpeg/0.10.nix
+++ b/pkgs/development/libraries/ffmpeg/0.10.nix
@@ -21,11 +21,11 @@ assert vdpauSupport -> libvdpau != null;
 assert faacSupport -> faac != null;
 
 stdenv.mkDerivation rec {
-  name = "ffmpeg-0.10.11";
+  name = "ffmpeg-0.10.12";
 
   src = fetchurl {
     url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
-    sha256 = "1l1nyvsfafl9w0falv1hcm65r2rlxyb59har0rkrrpi56fj1ma4r";
+    sha256 = "00nvm3iysn8zincpvv1abqrxqj1ky0322dh2j9csjw983358538i";
   };
 
   # `--enable-gpl' (as well as the `postproc' and `swscale') mean that
diff --git a/pkgs/development/libraries/geoip/default.nix b/pkgs/development/libraries/geoip/default.nix
index 94c0505bc6fa..1abcb7c6943d 100644
--- a/pkgs/development/libraries/geoip/default.nix
+++ b/pkgs/development/libraries/geoip/default.nix
@@ -1,24 +1,19 @@
-a :
-let
-  s = import ./src-for-default.nix;
-  buildInputs = with a; [
-    zlib
-  ];
-in
-rec {
-  src = a.fetchUrlFromSrcInfo s;
+{ stdenv, fetchurl }:
 
-  inherit (s) name;
-  inherit buildInputs;
-  configureFlags = [];
+let version = "1.6.0"; in
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
+stdenv.mkDerivation {
+  name = "geoip-${version}";
+
+  src = fetchurl {
+    url = "http://geolite.maxmind.com/download/geoip/api/c/GeoIP-${version}.tar.gz";
+    sha256 = "0dd6si4cvip73kxdn43apg6yygvaf7dnk5awqfg9w2fd2ll0qnh7";
+  };
 
   meta = {
     description = "Geolocation API";
-    maintainers = [
-      a.lib.maintainers.raskin
-    ];
+    maintainers = [ stdenv.lib.maintainers.raskin ];
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/geoip/src-for-default.nix b/pkgs/development/libraries/geoip/src-for-default.nix
deleted file mode 100644
index 1fc4b9b8755a..000000000000
--- a/pkgs/development/libraries/geoip/src-for-default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-rec {
-  advertisedUrl="http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz";
-  version = "1.4.6";
-  url="http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.6.0.tar.gz";
-  hash = "0dd6si4cvip73kxdn43apg6yygvaf7dnk5awqfg9w2fd2ll0qnh7";
-  name = "geoip-1.6.0";
-  
-}
diff --git a/pkgs/development/libraries/geoip/src-info-for-default.nix b/pkgs/development/libraries/geoip/src-info-for-default.nix
deleted file mode 100644
index 99c79227c630..000000000000
--- a/pkgs/development/libraries/geoip/src-info-for-default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  downloadPage = "http://geolite.maxmind.com/download/geoip/api/c/";
-  sourceRegexp = "GeoIP-[0-9.]+[.]tar[.]gz";
-  choiceCommand = "tail -1";
-  baseName = "geoip";
-}
diff --git a/pkgs/development/libraries/glib-networking/default.nix b/pkgs/development/libraries/glib-networking/default.nix
index 53d447cf5cae..618b37bae4c5 100644
--- a/pkgs/development/libraries/glib-networking/default.nix
+++ b/pkgs/development/libraries/glib-networking/default.nix
@@ -1,21 +1,33 @@
-{stdenv, fetchurl, pkgconfig, glib, libtool, intltool, gnutls, libproxy
-, gsettings_desktop_schemas, libgcrypt, libtasn1 }:
+{ stdenv, fetchurl, pkgconfig, glib, intltool, gnutls, libproxy
+, gsettings_desktop_schemas }:
 
-stdenv.mkDerivation {
-  name = "glib-networking-2.30.2";
+let
+  ver_maj = "2.38";
+  ver_min = "2";
+in
+stdenv.mkDerivation rec {
+  name = "glib-networking-${ver_maj}.${ver_min}";
 
   src = fetchurl {
-    url = mirror://gnome/sources/glib-networking/2.30/glib-networking-2.30.2.tar.xz;
-    sha256 = "1g2ran0rn37009fs3xl38m95i5w8sdf9ax0ady4jbjir15844xcz";
+    url = "mirror://gnome/sources/glib-networking/${ver_maj}/${name}.tar.xz";
+    sha256 = "1iwzjkx6q9gqr7fipc98zi2bi0gccrwq1v7skff1cdijkn8zxqp8";
   };
 
   configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-bundle.crt";
-  
+
   preBuild = ''
     sed -e "s@${glib}/lib/gio/modules@$out/lib/gio/modules@g" -i $(find . -name Makefile)
   '';
 
   nativeBuildInputs = [ pkgconfig intltool ];
-  propagatedBuildInputs =
-    [ glib libtool gnutls libproxy libgcrypt libtasn1 gsettings_desktop_schemas ];
+  propagatedBuildInputs = [ glib gnutls libproxy gsettings_desktop_schemas ];
+
+  doCheck = false; # tests need to access the certificates (among other things)
+
+  meta = with stdenv.lib; {
+    description = "Network-related giomodules for glib";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.unix;
+  };
 }
+
diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix
index a9137ad46a77..7647c0f64dba 100644
--- a/pkgs/development/libraries/gstreamer/bad/default.nix
+++ b/pkgs/development/libraries/gstreamer/bad/default.nix
@@ -9,11 +9,18 @@
 stdenv.mkDerivation rec {
   name = "gst-plugins-bad-1.2.3";
 
-  meta = {
-    homepage = "http://gstreamer.freedesktop.org";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ iyzsong ];
+  meta = with stdenv.lib; {
+    description = "Gstreamer Bad Plugins";
+    homepage    = "http://gstreamer.freedesktop.org";
+    longDescription = ''
+      a set of plug-ins that aren't up to par compared to the
+      rest.  They might be close to being good quality, but they're missing
+      something - be it a good code review, some documentation, a set of tests,
+      a real live maintainer, or some actual wide use.
+    '';
+    license     = licenses.lgpl2Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
   };
 
   src = fetchurl {
diff --git a/pkgs/development/libraries/gstreamer/default.nix b/pkgs/development/libraries/gstreamer/default.nix
index b68de91c240f..4796ce078dfb 100644
--- a/pkgs/development/libraries/gstreamer/default.nix
+++ b/pkgs/development/libraries/gstreamer/default.nix
@@ -14,4 +14,8 @@ rec {
   gst-libav = callPackage ./libav { inherit gst-plugins-base; };
 
   gst-python = callPackage ./python { inherit gst-plugins-base gstreamer; };
+
+  gnonlin = callPackage ./gnonlin { inherit gst-plugins-base; };
+
+  gst-editing-services = callPackage ./ges { inherit gnonlin; };
 }
diff --git a/pkgs/development/libraries/gstreamer/ges/default.nix b/pkgs/development/libraries/gstreamer/ges/default.nix
new file mode 100644
index 000000000000..94d3688eb1ce
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/ges/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, python
+, gnonlin, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  name = "gstreamer-editing-services-1.2.0";
+
+  meta = with stdenv.lib; {
+    description = "Library for creation of audio/video non-linear editors";
+    homepage    = "http://gstreamer.freedesktop.org";
+    license     = licenses.lgpl2Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
+  };
+
+  src = fetchurl {
+    url = "${meta.homepage}/src/gstreamer-editing-services/${name}.tar.xz";
+    sha256 = "1n7nw8rqvwna9af55lggah44gdvfgld1igvgaya8glc37wpq89b0";
+  };
+
+  nativeBuildInputs = [ pkgconfig python ];
+
+  propagatedBuildInputs = [ gnonlin libxml2 ];
+}
diff --git a/pkgs/development/libraries/gstreamer/gnonlin/default.nix b/pkgs/development/libraries/gstreamer/gnonlin/default.nix
new file mode 100644
index 000000000000..c45c1469cb36
--- /dev/null
+++ b/pkgs/development/libraries/gstreamer/gnonlin/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig
+, gst-plugins-base
+}:
+
+stdenv.mkDerivation rec {
+  name = "gnonlin-1.2.0";
+
+  meta = with stdenv.lib; {
+    description = "Gstreamer Non-Linear Multimedia Editing Plugins";
+    homepage    = "http://gstreamer.freedesktop.org";
+    longDescription = ''
+      Gnonlin is a library built on top of GStreamer which provides 
+      support for writing non-linear audio and video editing
+      applications. It introduces the concept of a timeline.
+    '';
+    license     = licenses.lgpl2Plus; 
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
+  };
+
+  src = fetchurl {
+    url = "${meta.homepage}/src/gnonlin/${name}.tar.xz";
+    sha256 = "15hyb0kg8sm92kj37cir4l3sa21b8zy4la1ccfhb358b4mf24vl7";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  propagatedBuildInputs = [ gst-plugins-base ];
+}
diff --git a/pkgs/development/libraries/gstreamer/good/default.nix b/pkgs/development/libraries/gstreamer/good/default.nix
index 71151c4e559c..090c84600ab7 100644
--- a/pkgs/development/libraries/gstreamer/good/default.nix
+++ b/pkgs/development/libraries/gstreamer/good/default.nix
@@ -9,11 +9,17 @@
 stdenv.mkDerivation rec {
   name = "gst-plugins-good-1.2.3";
 
-  meta = {
-    homepage = "http://gstreamer.freedesktop.org";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ iyzsong ];
+  meta = with stdenv.lib; {
+    description = "Gstreamer Good Plugins";
+    homepage    = "http://gstreamer.freedesktop.org";
+    longDescription = ''
+      a set of plug-ins that we consider to have good quality code,
+      correct functionality, our preferred license (LGPL for the plug-in
+      code, LGPL or LGPL-compatible for the supporting library).
+    '';
+    license     = licenses.lgpl2Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
   };
 
   src = fetchurl {
diff --git a/pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix b/pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix
index c3510a69a123..c0cab607062d 100644
--- a/pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix
+++ b/pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix
@@ -2,12 +2,12 @@
 , automoc4, flex, bison, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "${pname}-0.10.2";
+  name = "${pname}-0.10.3";
   pname = "qt-gstreamer";
 
   src = fetchurl {
     url = "http://gstreamer.freedesktop.org/src/${pname}/${name}.tar.bz2";
-    sha256 = "1laryg5vgc3prdi7dmpfwa71nsrc3ngv27sgax44c4qfrgpsgwbf";
+    sha256 = "1pqg9sxzk8sdrf7pazb5v21hasqai9i4l203gbdqz29w2ll1ybsl";
   };
 
   buildInputs = [ gstreamer gst_plugins_base glib qt4 ];
diff --git a/pkgs/development/libraries/gstreamer/python/default.nix b/pkgs/development/libraries/gstreamer/python/default.nix
index eaf284e950d4..843822b0748d 100644
--- a/pkgs/development/libraries/gstreamer/python/default.nix
+++ b/pkgs/development/libraries/gstreamer/python/default.nix
@@ -3,14 +3,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-python-1.1.90";
+  name = "gst-python-1.2.0";
 
   src = fetchurl {
     urls = [
       "${meta.homepage}/src/gst-python/${name}.tar.bz2"
       "mirror://gentoo/distfiles/${name}.tar.bz2"
       ];
-    sha256 = "1vsykx2l5360y19c0rxspa9nf1ilml2c1ybsv8cw8p696scryb2l";
+    sha256 = "09c6yls8ipbmwimdjr7xi3hvf2xa1xn1pv07855r7wfyzas1xbl1";
   };
 
   buildInputs =
diff --git a/pkgs/development/libraries/gstreamer/ugly/default.nix b/pkgs/development/libraries/gstreamer/ugly/default.nix
index 50005004135a..4f16fa4259c8 100644
--- a/pkgs/development/libraries/gstreamer/ugly/default.nix
+++ b/pkgs/development/libraries/gstreamer/ugly/default.nix
@@ -7,11 +7,18 @@
 stdenv.mkDerivation rec {
   name = "gst-plugins-ugly-1.2.3";
 
-  meta = {
-    homepage = "http://gstreamer.freedesktop.org";
-    license = stdenv.lib.licenses.lgpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ iyzsong ];
+  meta = with stdenv.lib; {
+    description = "Gstreamer Ugly Plugins";
+    homepage    = "http://gstreamer.freedesktop.org";
+    longDescription = ''
+      a set of plug-ins that have good quality and correct functionality,
+      but distributing them might pose problems.  The license on either
+      the plug-ins or the supporting libraries might not be how we'd
+      like. The code might be widely known to present patent problems.
+    '';
+    license     = licenses.lgpl2Plus;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ iyzsong ];
   };
 
   src = fetchurl {
diff --git a/pkgs/development/libraries/haskell/Boolean/default.nix b/pkgs/development/libraries/haskell/Boolean/default.nix
index bc8e9dca159c..bb226733f8a5 100644
--- a/pkgs/development/libraries/haskell/Boolean/default.nix
+++ b/pkgs/development/libraries/haskell/Boolean/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "Boolean";
-  version = "0.2";
-  sha256 = "1r8qvsfbfjfp453pdy9ci9w584ad9bm4xv0ynx4b1yny34ag3zr3";
+  version = "0.2.1";
+  sha256 = "0vi09icwc254mbx85lf1n81mx4hr2sdf61a4njaqa91cf046sjlr";
   meta = {
     description = "Generalized booleans and numbers";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC.nix b/pkgs/development/libraries/haskell/HDBC/HDBC.nix
index a8275c31b858..08134abf8438 100644
--- a/pkgs/development/libraries/haskell/HDBC/HDBC.nix
+++ b/pkgs/development/libraries/haskell/HDBC/HDBC.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "HDBC";
-  version = "2.3.1.2";
-  sha256 = "1rjamh8xscb9jhxgxcrs2qnvs2ipv9dqgnn0bpv5vwclmzmn5j87";
+  version = "2.4.0.0";
+  sha256 = "1zwkrr0pbgxi2y75n2sjr3xs8xa3pxbmnqg3phqkjqcz3j4gcq6y";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ convertible mtl text time utf8String ];
diff --git a/pkgs/development/libraries/haskell/MissingH/default.nix b/pkgs/development/libraries/haskell/MissingH/default.nix
index 59656d519781..303a4852649e 100644
--- a/pkgs/development/libraries/haskell/MissingH/default.nix
+++ b/pkgs/development/libraries/haskell/MissingH/default.nix
@@ -1,17 +1,17 @@
-{ cabal, filepath, hslogger, HUnit, mtl, network, parsec
-, QuickCheck, random, regexCompat, testpack, time
+{ cabal, errorcallEqInstance, filepath, hslogger, HUnit, mtl
+, network, parsec, QuickCheck, random, regexCompat, testpack, time
 }:
 
 cabal.mkDerivation (self: {
   pname = "MissingH";
-  version = "1.2.0.2";
-  sha256 = "1wrrfa8dy0h0c53f1zjzwdkj8wkwsbi6qhv35wwlaz39dk32c4nn";
+  version = "1.2.1.0";
+  sha256 = "08zpzfhl31w35x13vapimwd508j4nydi8v3vid668r4fkqnymbss";
   buildDepends = [
     filepath hslogger HUnit mtl network parsec random regexCompat time
   ];
   testDepends = [
-    filepath hslogger HUnit mtl network parsec QuickCheck random
-    regexCompat testpack time
+    errorcallEqInstance filepath hslogger HUnit mtl network parsec
+    QuickCheck random regexCompat testpack time
   ];
   doCheck = false;
   meta = {
diff --git a/pkgs/development/libraries/haskell/adjunctions/default.nix b/pkgs/development/libraries/haskell/adjunctions/default.nix
index bdfec2f01d49..69c7751270cf 100644
--- a/pkgs/development/libraries/haskell/adjunctions/default.nix
+++ b/pkgs/development/libraries/haskell/adjunctions/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "adjunctions";
-  version = "4.0.1";
-  sha256 = "0z13rmh9yp8jg2jzj3bmysqc4h2nblshx125h2sx51wllnvxzh5l";
+  version = "4.0.2";
+  sha256 = "0c9168jmnfpzv3025n05b80b9p7jzkdzs0hzymjmh1qvz3iximq5";
   buildDepends = [
     comonad contravariant distributive free mtl semigroupoids
     semigroups tagged transformers void
diff --git a/pkgs/development/libraries/haskell/aes/default.nix b/pkgs/development/libraries/haskell/aes/default.nix
new file mode 100644
index 000000000000..6b239bd4e776
--- /dev/null
+++ b/pkgs/development/libraries/haskell/aes/default.nix
@@ -0,0 +1,13 @@
+{ cabal, cereal, monadsTf, random, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "AES";
+  version = "0.2.8";
+  sha256 = "1yf0mhmj294gf1b1m11gixa1xxlbvv0yl60b59fnv5lf0s170jn3";
+  buildDepends = [ cereal monadsTf random transformers ];
+  meta = {
+    description = "Fast AES encryption/decryption for bytestrings";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/alsa-mixer/default.nix b/pkgs/development/libraries/haskell/alsa-mixer/default.nix
index 67ab0275e788..35cc7aa0c93c 100644
--- a/pkgs/development/libraries/haskell/alsa-mixer/default.nix
+++ b/pkgs/development/libraries/haskell/alsa-mixer/default.nix
@@ -2,12 +2,13 @@
 
 cabal.mkDerivation (self: {
   pname = "alsa-mixer";
-  version = "0.1.2";
-  sha256 = "081f3a62f83a269d72e0b0fac8bae8c81e9ec342d592fa25abe57f7206cf4414";
+  version = "0.2.0.1";
+  sha256 = "1306kw4w85d3pkdqjw8cwx77a2mbhw2hlmxcjczym1nsyp4rhyhr";
   buildDepends = [ alsaCore ];
   buildTools = [ c2hs ];
   extraLibraries = [ alsaLib ];
   meta = {
+    homepage = "https://github.com/ttuegel/alsa-mixer";
     description = "Bindings to the ALSA simple mixer API";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/haskell/alsa-pcm/default.nix b/pkgs/development/libraries/haskell/alsa-pcm/default.nix
index 39123a176dc7..c4f39cdd7eeb 100644
--- a/pkgs/development/libraries/haskell/alsa-pcm/default.nix
+++ b/pkgs/development/libraries/haskell/alsa-pcm/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "alsa-pcm";
-  version = "0.6";
-  sha256 = "10cmlf1s9y65cs81wn7xwgcd4218n3h3p34avibv3fa7n3q9b4x1";
+  version = "0.6.0.1";
+  sha256 = "0gnq4p172sqmlks6aykzr5l2qx2shrs2fypcvs4g56c9zpk3c3ax";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/amqp/default.nix b/pkgs/development/libraries/haskell/amqp/default.nix
index 200a736f3312..15079a5ba392 100644
--- a/pkgs/development/libraries/haskell/amqp/default.nix
+++ b/pkgs/development/libraries/haskell/amqp/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "amqp";
-  version = "0.8.1";
-  sha256 = "10infzs2siw9vv8jgsndv7c82bsh22cs2drrb73nxpwf73hy3rzm";
+  version = "0.8.2";
+  sha256 = "0hl9x6kbxdv32014k1w34d84wl4ivpiyg1ikpjr0nr9bsg3wr0gf";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/bson/default.nix b/pkgs/development/libraries/haskell/bson/default.nix
index 1fa5f3fb79f5..da4629e93fba 100644
--- a/pkgs/development/libraries/haskell/bson/default.nix
+++ b/pkgs/development/libraries/haskell/bson/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "bson";
-  version = "0.2.3";
-  sha256 = "0p8c4cq8ldspwj4pmg0l8pg8bkwsk9xan07md32ikm4bfqsnv2rb";
+  version = "0.2.4";
+  sha256 = "1fr0xx9q2l3cb72j5lgrwdlr2gba7idh2v80s8d6dr69dhwaccd9";
   buildDepends = [
     binary cryptohash dataBinaryIeee754 mtl network text time
   ];
diff --git a/pkgs/development/libraries/haskell/bytestring-lexing/default.nix b/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
index 93c8b2aa2290..8c4f2af654e1 100644
--- a/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
+++ b/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "bytestring-lexing";
-  version = "0.4.3";
-  sha256 = "0dynfrf8ym01v2dl57422h8r75kdlqh2qzqi9yc0f1bmbfqxap6r";
+  version = "0.4.3.1";
+  sha256 = "1n0sk1xqwkj4whp0gav7hwr33xqmwl3ylqfnqix8wbwz6xpg9ygn";
   buildTools = [ alex ];
   meta = {
     homepage = "http://code.haskell.org/~wren/";
diff --git a/pkgs/development/libraries/haskell/bytestring-show/default.nix b/pkgs/development/libraries/haskell/bytestring-show/default.nix
new file mode 100644
index 000000000000..b71b2a3ad83a
--- /dev/null
+++ b/pkgs/development/libraries/haskell/bytestring-show/default.nix
@@ -0,0 +1,14 @@
+{ cabal, binary }:
+
+cabal.mkDerivation (self: {
+  pname = "bytestring-show";
+  version = "0.3.5.5";
+  sha256 = "0vd8f3jrzi2s119rcn20k6srk6l7ypiars1mxw1n1jrjx8ill2y4";
+  buildDepends = [ binary ];
+  meta = {
+    homepage = "http://code.haskell.org/~dolio/";
+    description = "Efficient conversion of values into readable byte strings";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/chell-quickcheck/default.nix b/pkgs/development/libraries/haskell/chell-quickcheck/default.nix
new file mode 100644
index 000000000000..835747ee8813
--- /dev/null
+++ b/pkgs/development/libraries/haskell/chell-quickcheck/default.nix
@@ -0,0 +1,14 @@
+{ cabal, chell, QuickCheck, random }:
+
+cabal.mkDerivation (self: {
+  pname = "chell-quickcheck";
+  version = "0.2.2";
+  sha256 = "05qshv9vcl05khxsxyks2z7dqd8dqafjsg3awkkdhviviv5p2fp8";
+  buildDepends = [ chell QuickCheck random ];
+  meta = {
+    homepage = "https://john-millikin.com/software/chell/";
+    description = "QuickCheck support for the Chell testing library";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/chell/default.nix b/pkgs/development/libraries/haskell/chell/default.nix
new file mode 100644
index 000000000000..c69994e6868b
--- /dev/null
+++ b/pkgs/development/libraries/haskell/chell/default.nix
@@ -0,0 +1,18 @@
+{ cabal, ansiTerminal, options, patience, random, text
+, transformers
+}:
+
+cabal.mkDerivation (self: {
+  pname = "chell";
+  version = "0.3.3";
+  sha256 = "1k5vxipf47753d41dgr1gr4zy7y72gz2x8lcn0fgfmxi2v810nsm";
+  buildDepends = [
+    ansiTerminal options patience random text transformers
+  ];
+  meta = {
+    homepage = "https://john-millikin.com/software/chell/";
+    description = "A simple and intuitive library for automated testing";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/cipher-aes/default.nix b/pkgs/development/libraries/haskell/cipher-aes/default.nix
index d68d2389e0e7..52ec2fab7114 100644
--- a/pkgs/development/libraries/haskell/cipher-aes/default.nix
+++ b/pkgs/development/libraries/haskell/cipher-aes/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cipher-aes";
-  version = "0.2.6";
-  sha256 = "0ys5a1w5pwwr74k9wzcsh1flb2jdcvnp1zz7sjs14jpxclpd8x3i";
+  version = "0.2.7";
+  sha256 = "1a5viy2frkdqhzzlipd2ik89a04gv95v4b98lgpsas2958r9c9yp";
   buildDepends = [ byteable cryptoCipherTypes securemem ];
   testDepends = [
     byteable cryptoCipherTests cryptoCipherTypes QuickCheck
diff --git a/pkgs/development/libraries/haskell/conduit-combinators/default.nix b/pkgs/development/libraries/haskell/conduit-combinators/default.nix
index 8372d465f012..5d1fa791c694 100644
--- a/pkgs/development/libraries/haskell/conduit-combinators/default.nix
+++ b/pkgs/development/libraries/haskell/conduit-combinators/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "conduit-combinators";
-  version = "0.2.0.0";
-  sha256 = "0r5s1m31ncg1m9sm8n2212r9mm4hjrxc3a92divkhcxwijadzghc";
+  version = "0.2.0.1";
+  sha256 = "0hmy398kk37n5l4pacb2a0z9h9f1kl6vva9gsph1kiqnnz7sbr4r";
   buildDepends = [
     chunkedData conduit monoTraversable primitive systemFileio
     systemFilepath text transformers transformersBase vector
diff --git a/pkgs/development/libraries/haskell/constraints/default.nix b/pkgs/development/libraries/haskell/constraints/default.nix
index 1e0dc901aaf5..333d8e6601d2 100644
--- a/pkgs/development/libraries/haskell/constraints/default.nix
+++ b/pkgs/development/libraries/haskell/constraints/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "constraints";
-  version = "0.3.4.2";
-  sha256 = "14bfar4d44yl9zxgqxj4p67ag2ndprm602l4pinfjk0ywbh63fwq";
+  version = "0.3.5";
+  sha256 = "01xrk0xqkfwzzr5jwkadkyjgrdcpslwiqfqdb7mci688xp2isi3i";
   buildDepends = [ newtype ];
   meta = {
     homepage = "http://github.com/ekmett/constraints/";
diff --git a/pkgs/development/libraries/haskell/convertible/default.nix b/pkgs/development/libraries/haskell/convertible/default.nix
index 8a79e50527d8..78be057c2011 100644
--- a/pkgs/development/libraries/haskell/convertible/default.nix
+++ b/pkgs/development/libraries/haskell/convertible/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "convertible";
-  version = "1.0.11.1";
-  sha256 = "1r50a2rpfsx0s7dv8ww5xck33b1mhy73gfilffrbqd4hxjgnxlj6";
+  version = "1.1.0.0";
+  sha256 = "0pc3z4jfjna1rz5wlfimw9fyhpasmdnwvava883s401760y99i0k";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ mtl text time ];
diff --git a/pkgs/development/libraries/haskell/cryptohash-cryptoapi/default.nix b/pkgs/development/libraries/haskell/cryptohash-cryptoapi/default.nix
index e21e026080bf..7041bcc52856 100644
--- a/pkgs/development/libraries/haskell/cryptohash-cryptoapi/default.nix
+++ b/pkgs/development/libraries/haskell/cryptohash-cryptoapi/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cryptohash-cryptoapi";
-  version = "0.1.0";
-  sha256 = "06b62ddwx2mp71dzaj8h88vw2c6nv3rj8n6d3d9vmqa7cws3mjkx";
+  version = "0.1.2";
+  sha256 = "1i2qxyq5qk4jzgkl7kndy10sbmzmagamfnqvl300qm3msi9k0kfy";
   buildDepends = [ cereal cryptoApi cryptohash tagged ];
   meta = {
     homepage = "http://github.com/vincenthz/hs-cryptohash-cryptoapi";
diff --git a/pkgs/development/libraries/haskell/data-accessor/data-accessor-template.nix b/pkgs/development/libraries/haskell/data-accessor/data-accessor-template.nix
index 41bd23470124..89658ead4d58 100644
--- a/pkgs/development/libraries/haskell/data-accessor/data-accessor-template.nix
+++ b/pkgs/development/libraries/haskell/data-accessor/data-accessor-template.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "data-accessor-template";
-  version = "0.2.1.10";
-  sha256 = "11a4c0g74ppl7nls0dhx6xs47dfcq1wp7bd8qgdba6hhn645afzy";
+  version = "0.2.1.11";
+  sha256 = "1n2slv287zp6pabqb7xbfi296dbikw5a4ivqmnas0c4nxikqkayx";
   buildDepends = [ dataAccessor utilityHt ];
   meta = {
     homepage = "http://www.haskell.org/haskellwiki/Record_access";
diff --git a/pkgs/development/libraries/haskell/data-accessor/data-accessor.nix b/pkgs/development/libraries/haskell/data-accessor/data-accessor.nix
index 7c1de10b20b0..8fdde66f5fd6 100644
--- a/pkgs/development/libraries/haskell/data-accessor/data-accessor.nix
+++ b/pkgs/development/libraries/haskell/data-accessor/data-accessor.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "data-accessor";
-  version = "0.2.2.3";
-  sha256 = "1fa1rbbs3m05y61w42vj4vqlcpqmz60v8mv3r0h6lx669k6ka5gj";
+  version = "0.2.2.5";
+  sha256 = "0z63fv41cnpk3h404gprk2f5jl7rrpyv97xmsgac9zgdm5zkkhm6";
   buildDepends = [ transformers ];
   meta = {
     homepage = "http://www.haskell.org/haskellwiki/Record_access";
diff --git a/pkgs/development/libraries/haskell/dbus/default.nix b/pkgs/development/libraries/haskell/dbus/default.nix
index 304b9e84942e..7f0285dfc7aa 100644
--- a/pkgs/development/libraries/haskell/dbus/default.nix
+++ b/pkgs/development/libraries/haskell/dbus/default.nix
@@ -1,16 +1,22 @@
-{ cabal, cereal, libxmlSax, network, parsec, random, text
-, transformers, vector, xmlTypes
+{ cabal, cereal, chell, chellQuickcheck, filepath, libxmlSax
+, network, parsec, QuickCheck, random, text, transformers, vector
+, xmlTypes
 }:
 
 cabal.mkDerivation (self: {
   pname = "dbus";
-  version = "0.10.6";
-  sha256 = "0jbysa7czhp7yl3fb6sxiqppg8yb3cdk4v8hcs4y8yzwjj0lm7mf";
+  version = "0.10.7";
+  sha256 = "0xszynw6p07r7z9nlq8alx5lxfjm57gljya835ccj63hqhkr5yxh";
   buildDepends = [
     cereal libxmlSax network parsec random text transformers vector
     xmlTypes
   ];
+  testDepends = [
+    cereal chell chellQuickcheck filepath libxmlSax network parsec
+    QuickCheck random text transformers vector xmlTypes
+  ];
   jailbreak = true;
+  doCheck = false;
   meta = {
     homepage = "https://john-millikin.com/software/haskell-dbus/";
     description = "A client library for the D-Bus IPC system";
diff --git a/pkgs/development/libraries/haskell/diagrams/cairo.nix b/pkgs/development/libraries/haskell/diagrams/cairo.nix
index 186f60aecf54..c38346d189bc 100644
--- a/pkgs/development/libraries/haskell/diagrams/cairo.nix
+++ b/pkgs/development/libraries/haskell/diagrams/cairo.nix
@@ -1,14 +1,16 @@
 { cabal, cairo, colour, dataDefaultClass, diagramsCore, diagramsLib
-, filepath, hashable, lens, mtl, split, statestack, time
+, filepath, hashable, JuicyPixels, lens, mtl, optparseApplicative
+, split, statestack, time, vector
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-cairo";
-  version = "1.0.1.2";
-  sha256 = "040x3zdrr70kg10isby6xp8mswvjd84xiz2rf7w1y66g9izdgfmc";
+  version = "1.1";
+  sha256 = "0x66qdwni3pwc2lrqy5jnyz7nqbfpr1086g1ndy6cxx8hp632zaf";
   buildDepends = [
     cairo colour dataDefaultClass diagramsCore diagramsLib filepath
-    hashable lens mtl split statestack time
+    hashable JuicyPixels lens mtl optparseApplicative split statestack
+    time vector
   ];
   meta = {
     homepage = "http://projects.haskell.org/diagrams";
diff --git a/pkgs/development/libraries/haskell/diagrams/contrib.nix b/pkgs/development/libraries/haskell/diagrams/contrib.nix
index c0ce17d63db4..34dcb3745e35 100644
--- a/pkgs/development/libraries/haskell/diagrams/contrib.nix
+++ b/pkgs/development/libraries/haskell/diagrams/contrib.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "diagrams-contrib";
-  version = "1.1.0.1";
-  sha256 = "1vgfk3drs61am5z0146pq17i00ygsi2pyz8qipf6c30c9wri9hjp";
+  version = "1.1.1.1";
+  sha256 = "1b91scy96zf2njikfyr2ir2ckiib4dlvjazrlbri6f5ds40gnhna";
   buildDepends = [
     arithmoi circlePacking colour dataDefault dataDefaultClass
     diagramsCore diagramsLib forceLayout lens MonadRandom mtl parsec
diff --git a/pkgs/development/libraries/haskell/diagrams/core.nix b/pkgs/development/libraries/haskell/diagrams/core.nix
index c291ce9a48cc..3a3f74d4c272 100644
--- a/pkgs/development/libraries/haskell/diagrams/core.nix
+++ b/pkgs/development/libraries/haskell/diagrams/core.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "diagrams-core";
-  version = "1.0.0.1";
-  sha256 = "19jri4np14lgf4pxyyczqjwh30cdmcpnb8alj60b0z5fca7042xm";
+  version = "1.1";
+  sha256 = "0prklz6s5zcainpkawibdg3bidmvsd2xsc1xxrmfp7lscmim736v";
   buildDepends = [
     dualTree lens MemoTrie monoidExtras newtype semigroups vectorSpace
     vectorSpacePoints
diff --git a/pkgs/development/libraries/haskell/diagrams/diagrams.nix b/pkgs/development/libraries/haskell/diagrams/diagrams.nix
index 7a0cd53218de..cddc5dbadcf9 100644
--- a/pkgs/development/libraries/haskell/diagrams/diagrams.nix
+++ b/pkgs/development/libraries/haskell/diagrams/diagrams.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "diagrams";
-  version = "1.0.0.1";
-  sha256 = "0nlh4n5ykymjkyi9n0r5l1caq1f26mijw7smnj78mv3d40qcrnv1";
+  version = "1.1";
+  sha256 = "1fdacsa57w64hkcsrriwdgdxddd7gps97fyaz2rl8wfxcl96vclr";
   buildDepends = [
     diagramsContrib diagramsCore diagramsLib diagramsSvg
   ];
diff --git a/pkgs/development/libraries/haskell/diagrams/lib.nix b/pkgs/development/libraries/haskell/diagrams/lib.nix
index 6dbedd5ecda6..323856554268 100644
--- a/pkgs/development/libraries/haskell/diagrams/lib.nix
+++ b/pkgs/development/libraries/haskell/diagrams/lib.nix
@@ -1,18 +1,17 @@
 { cabal, active, colour, dataDefaultClass, diagramsCore, filepath
 , fingertree, hashable, intervals, lens, MemoTrie, monoidExtras
-, NumInstances, optparseApplicative, safe, semigroups, tagged
-, vectorSpace, vectorSpacePoints
+, optparseApplicative, safe, semigroups, tagged, vectorSpace
+, vectorSpacePoints
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-lib";
-  version = "1.0.1";
-  sha256 = "0cjhb6dm0n4a7s8z0lyihql7dz34pdbm3ahm2p0yya4xf9pf0fw4";
+  version = "1.1.0.1";
+  sha256 = "0zkxkncz8ayvahr57fgq44vgir3yghxs2y1rrp138951fcy2g3a7";
   buildDepends = [
     active colour dataDefaultClass diagramsCore filepath fingertree
-    hashable intervals lens MemoTrie monoidExtras NumInstances
-    optparseApplicative safe semigroups tagged vectorSpace
-    vectorSpacePoints
+    hashable intervals lens MemoTrie monoidExtras optparseApplicative
+    safe semigroups tagged vectorSpace vectorSpacePoints
   ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/diagrams/postscript.nix b/pkgs/development/libraries/haskell/diagrams/postscript.nix
index 2c827b5f3d1b..a7f85f98b093 100644
--- a/pkgs/development/libraries/haskell/diagrams/postscript.nix
+++ b/pkgs/development/libraries/haskell/diagrams/postscript.nix
@@ -1,14 +1,15 @@
-{ cabal, diagramsCore, diagramsLib, dlist, filepath, hashable, lens
-, monoidExtras, mtl, semigroups, split, vectorSpace
+{ cabal, dataDefaultClass, diagramsCore, diagramsLib, dlist
+, filepath, hashable, lens, monoidExtras, mtl, semigroups, split
+, vectorSpace
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-postscript";
-  version = "1.0.1.2";
-  sha256 = "0im1w70qi8qs2z8x41v7pwvk1alfaw1h8k0683njzd5sfz2m1gny";
+  version = "1.0.2";
+  sha256 = "14y8wivgxs3qvybzqk1bfqsrs5457qd5br7nk1924si5gpsgp1xx";
   buildDepends = [
-    diagramsCore diagramsLib dlist filepath hashable lens monoidExtras
-    mtl semigroups split vectorSpace
+    dataDefaultClass diagramsCore diagramsLib dlist filepath hashable
+    lens monoidExtras mtl semigroups split vectorSpace
   ];
   meta = {
     homepage = "http://projects.haskell.org/diagrams/";
diff --git a/pkgs/development/libraries/haskell/diagrams/svg.nix b/pkgs/development/libraries/haskell/diagrams/svg.nix
index 926249b853a1..cc5795c80a18 100644
--- a/pkgs/development/libraries/haskell/diagrams/svg.nix
+++ b/pkgs/development/libraries/haskell/diagrams/svg.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "diagrams-svg";
-  version = "1.0.1.3";
-  sha256 = "0brbvzwh7yi3400wrdpkmw6jfd2nhi238zddhid76lmx2q9zxvvx";
+  version = "1.0.2";
+  sha256 = "1pbkr5qg3cjk2c23aas5y9f0bk5nsding4r4c4fdkxj49ipi4ys1";
   buildDepends = [
     blazeMarkup blazeSvg colour diagramsCore diagramsLib filepath
     hashable lens monoidExtras mtl split time vectorSpace
diff --git a/pkgs/development/libraries/haskell/doctest/default.nix b/pkgs/development/libraries/haskell/doctest/default.nix
index 843fd6239dcf..8ed11decf059 100644
--- a/pkgs/development/libraries/haskell/doctest/default.nix
+++ b/pkgs/development/libraries/haskell/doctest/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "doctest";
-  version = "0.9.10.1";
-  sha256 = "1kl6bihhyj08ifij7ddpy6067s1lv2lnnp4an9wany3fzwlifbyi";
+  version = "0.9.10.2";
+  sha256 = "1vrhfbw59vfypylkr2ica2wx1vm62r40s4165syy76r8cyy0i554";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ deepseq filepath ghcPaths syb transformers ];
diff --git a/pkgs/development/libraries/haskell/dsp/default.nix b/pkgs/development/libraries/haskell/dsp/default.nix
new file mode 100644
index 000000000000..c1315a238174
--- /dev/null
+++ b/pkgs/development/libraries/haskell/dsp/default.nix
@@ -0,0 +1,14 @@
+{ cabal, random }:
+
+cabal.mkDerivation (self: {
+  pname = "dsp";
+  version = "0.2.2";
+  sha256 = "0vb71z8iky3xl40b9d79z7krq960ykcgn3y8lks3wzgiabbh2d89";
+  buildDepends = [ random ];
+  meta = {
+    homepage = "http://www.haskell.org/haskellwiki/DSP";
+    description = "Haskell Digital Signal Processing";
+    license = "GPL";
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/fay-base/default.nix b/pkgs/development/libraries/haskell/fay-base/default.nix
index 53f6fdce41cb..6e9ed4868847 100644
--- a/pkgs/development/libraries/haskell/fay-base/default.nix
+++ b/pkgs/development/libraries/haskell/fay-base/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "fay-base";
-  version = "0.19";
-  sha256 = "03jf1ig3s2dcdd26j3d3iwm9hbiq5f5q5hyg22jdvl7lmvigw36j";
+  version = "0.19.1";
+  sha256 = "1b4v8l3adhcpply9yqk1pc1cgsvqlamvk60rvcb89kw5clrbvr4r";
   buildDepends = [ fay ];
   meta = {
     homepage = "https://github.com/faylang/fay-base";
diff --git a/pkgs/development/libraries/haskell/fay/default.nix b/pkgs/development/libraries/haskell/fay/default.nix
index fdce9907056c..d945298d228a 100644
--- a/pkgs/development/libraries/haskell/fay/default.nix
+++ b/pkgs/development/libraries/haskell/fay/default.nix
@@ -8,8 +8,8 @@
 
 cabal.mkDerivation (self: {
   pname = "fay";
-  version = "0.19.0.2";
-  sha256 = "025yhl32xr5fcsxval5rcj8jrgd6qnjq9bqbhbsr5ni8dz3ks5r3";
+  version = "0.19.1";
+  sha256 = "05h4jmwy1wzgps1an1df5b4gic91xlm884mv6nqnazvpbnn23d5b";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/force-layout/default.nix b/pkgs/development/libraries/haskell/force-layout/default.nix
index 70488010072b..b57abc40e200 100644
--- a/pkgs/development/libraries/haskell/force-layout/default.nix
+++ b/pkgs/development/libraries/haskell/force-layout/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "force-layout";
-  version = "0.3.0.1";
-  sha256 = "0x9nfmvml9hszbm2izr4rfl9xphiyv0lj0hlixjbpxvm5nqk2w95";
+  version = "0.3.0.2";
+  sha256 = "0zrvsrqwl0wjv38l6zl1pa09572njdbcfbvimhpp930629zk4yb7";
   buildDepends = [
     dataDefaultClass lens vectorSpace vectorSpacePoints
   ];
diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix
index 02c459c8e5c5..260fff8ae827 100644
--- a/pkgs/development/libraries/haskell/ghc-mod/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "ghc-mod";
-  version = "3.1.6";
-  sha256 = "1z8fzh08f38cxplf14sflpgrazlwzz6q73lvxm37xyp7gww2prhi";
+  version = "3.1.7";
+  sha256 = "1mv6m1fcqkm4i27jw1aniwfq2dhpn4m7kicyq4l70zmkfr7y7c5s";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/ghc-mtl/default.nix b/pkgs/development/libraries/haskell/ghc-mtl/default.nix
index ea2495f6586a..1379d4a8ee8f 100644
--- a/pkgs/development/libraries/haskell/ghc-mtl/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mtl/default.nix
@@ -1,12 +1,12 @@
-{ cabal, MonadCatchIOMtl, mtl }:
+{ cabal, exceptions, extensibleExceptions, mtl }:
 
 cabal.mkDerivation (self: {
   pname = "ghc-mtl";
-  version = "1.0.1.2";
-  sha256 = "06m8ynqlbvvs37w211ikldwvlvg4ry27x9l7idnwa1m8w2jkbkva";
-  buildDepends = [ MonadCatchIOMtl mtl ];
+  version = "1.1.0.0";
+  sha256 = "1vmiy00fsdp1jzmpjrz8wzxbv3185h27aspw412pmcr4v1n29kxc";
+  buildDepends = [ exceptions extensibleExceptions mtl ];
   meta = {
-    homepage = "http://darcsden.com/jcpetruzza/ghc-mtl";
+    homepage = "http://hub.darcs.net/jcpetruzza/ghc-mtl";
     description = "An mtl compatible version of the Ghc-Api monads and monad-transformers";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/libraries/haskell/ghcjs-codemirror/default.nix b/pkgs/development/libraries/haskell/ghcjs-codemirror/default.nix
new file mode 100644
index 000000000000..3f15f394c2c6
--- /dev/null
+++ b/pkgs/development/libraries/haskell/ghcjs-codemirror/default.nix
@@ -0,0 +1,13 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "ghcjs-codemirror";
+  version = "0.0.0.1";
+  sha256 = "04x5h0i4fgyc2c5ihrnk0w3l1f3avvcl115zlnich93nillgbnfw";
+  meta = {
+    homepage = "https://github.com/ghcjs/CodeMirror";
+    description = "Installs CodeMirror JavaScript files";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/ghcjs-dom/default.nix b/pkgs/development/libraries/haskell/ghcjs-dom/default.nix
new file mode 100644
index 000000000000..58ad2765f6b0
--- /dev/null
+++ b/pkgs/development/libraries/haskell/ghcjs-dom/default.nix
@@ -0,0 +1,13 @@
+{ cabal, glib, gtk3, mtl, transformers, webkitgtk3 }:
+
+cabal.mkDerivation (self: {
+  pname = "ghcjs-dom";
+  version = "0.0.4";
+  sha256 = "1a3dv2l3s3aifcpivmnv308k2a1kb7r4x0z9gi83wc4xr9a8f08w";
+  buildDepends = [ glib gtk3 mtl transformers webkitgtk3 ];
+  meta = {
+    description = "DOM library that supports both GHCJS and WebKitGTK";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/gnuplot/default.nix b/pkgs/development/libraries/haskell/gnuplot/default.nix
index 8390ef2520aa..14655677c6f5 100644
--- a/pkgs/development/libraries/haskell/gnuplot/default.nix
+++ b/pkgs/development/libraries/haskell/gnuplot/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "gnuplot";
-  version = "0.5.2";
-  sha256 = "11gma33bikx97jra04vgnhikylw9wm1l37hdrsknl7mgk2qbrs74";
+  version = "0.5.2.1";
+  sha256 = "1bzj7z803mxyxfv2123swvdv78gh5dbrf8ldc6iziry3fz5q8nb1";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/happstack/happstack-fastcgi.nix b/pkgs/development/libraries/haskell/happstack/happstack-fastcgi.nix
new file mode 100644
index 000000000000..858512e9add1
--- /dev/null
+++ b/pkgs/development/libraries/haskell/happstack/happstack-fastcgi.nix
@@ -0,0 +1,14 @@
+{ cabal, cgi, fastcgi, happstackServer, mtl, utf8String }:
+
+cabal.mkDerivation (self: {
+  pname = "happstack-fastcgi";
+  version = "0.1.5";
+  sha256 = "0rvb041nx2f8azvfy1yysisjqrmsfbxnccn992v5q7zhlglcvj8h";
+  buildDepends = [ cgi fastcgi happstackServer mtl utf8String ];
+  meta = {
+    description = "Happstack extension for use with FastCGI";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [ self.stdenv.lib.maintainers.tomberek ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix
index 40da6037e7d9..4b54a002ab07 100644
--- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix
+++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "happstack-server";
-  version = "7.3.3";
-  sha256 = "18z706n9idszmn5j2cm2aqhs8zavk2sas6fwwywh38j536qzz36l";
+  version = "7.3.4";
+  sha256 = "1k9614f0x5ravblb00xiy8z2nqi4k9jhp2vzm1vdpx9q8sg47h1p";
   buildDepends = [
     base64Bytestring blazeHtml extensibleExceptions filepath hslogger
     html monadControl mtl network parsec sendfile syb systemFilepath
diff --git a/pkgs/development/libraries/haskell/haskell-names/default.nix b/pkgs/development/libraries/haskell/haskell-names/default.nix
index eba56e578f77..74cfc4530997 100644
--- a/pkgs/development/libraries/haskell/haskell-names/default.nix
+++ b/pkgs/development/libraries/haskell/haskell-names/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "haskell-names";
-  version = "0.3.2.7";
-  sha256 = "0ibc74xd480nnjhx274i184g2m24wx5ks602731fr490044cr4hl";
+  version = "0.3.3";
+  sha256 = "1f40dyrdb9c5iysmclql75l86zg3iisnyyiq5fkgixdafzsq31ir";
   buildDepends = [
     aeson Cabal dataLens dataLensTemplate filepath haskellPackages
     haskellSrcExts hseCpp mtl tagged transformers traverseWithClass
diff --git a/pkgs/development/libraries/haskell/hint/default.nix b/pkgs/development/libraries/haskell/hint/default.nix
index 3512bce96118..5534c2fc9da8 100644
--- a/pkgs/development/libraries/haskell/hint/default.nix
+++ b/pkgs/development/libraries/haskell/hint/default.nix
@@ -1,17 +1,20 @@
-{ cabal, extensibleExceptions, filepath, ghcMtl, ghcPaths
-, haskellSrc, MonadCatchIOMtl, mtl, random, utf8String
+{ cabal, exceptions, extensibleExceptions, filepath, ghcMtl
+, ghcPaths, HUnit, mtl, random, utf8String
 }:
 
 cabal.mkDerivation (self: {
   pname = "hint";
-  version = "0.3.3.7";
-  sha256 = "1aba9dfkxlpmvbvllw4qnlrd300vnr0ismkn3kva1pv1cay5pifk";
+  version = "0.4.0.0";
+  sha256 = "0xs56ws7vwdjgvg7d31iqa111342an6rxvwhh7c3h4z1bq5l1l61";
   buildDepends = [
-    extensibleExceptions filepath ghcMtl ghcPaths haskellSrc
-    MonadCatchIOMtl mtl random utf8String
+    exceptions extensibleExceptions filepath ghcMtl ghcPaths mtl random
+    utf8String
+  ];
+  testDepends = [
+    exceptions extensibleExceptions filepath HUnit mtl
   ];
   meta = {
-    homepage = "http://darcsden.com/jcpetruzza/hint";
+    homepage = "http://hub.darcs.net/jcpetruzza/hint";
     description = "Runtime Haskell interpreter (GHC API wrapper)";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix
index 0875c09db863..eee84c338e63 100644
--- a/pkgs/development/libraries/haskell/hledger-web/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-web/default.nix
@@ -20,6 +20,7 @@ cabal.mkDerivation (self: {
     yesodCore yesodStatic
   ];
   testDepends = [ hspec yesod yesodTest ];
+  jailbreak = true;
   doCheck = false;
   meta = {
     homepage = "http://hledger.org";
diff --git a/pkgs/development/libraries/haskell/hoauth2/default.nix b/pkgs/development/libraries/haskell/hoauth2/default.nix
new file mode 100644
index 000000000000..77e848427239
--- /dev/null
+++ b/pkgs/development/libraries/haskell/hoauth2/default.nix
@@ -0,0 +1,19 @@
+{ cabal, aeson, bytestringShow, conduit, httpConduit, httpTypes
+, monadControl, mtl, random, resourcet, text, transformers
+}:
+
+cabal.mkDerivation (self: {
+  pname = "hoauth2";
+  version = "0.3.6.1";
+  sha256 = "0nfh77fxyl8vbdnrrp28hsl1zhxhmg8mjn0gfvc2i3w5rd6j0lda";
+  buildDepends = [
+    aeson bytestringShow conduit httpConduit httpTypes monadControl mtl
+    random resourcet text transformers
+  ];
+  meta = {
+    homepage = "https://github.com/freizl/hoauth2";
+    description = "hoauth2";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/hsini/default.nix b/pkgs/development/libraries/haskell/hsini/default.nix
index 45e03ad71441..73368a1dd6cf 100644
--- a/pkgs/development/libraries/haskell/hsini/default.nix
+++ b/pkgs/development/libraries/haskell/hsini/default.nix
@@ -4,14 +4,13 @@
 
 cabal.mkDerivation (self: {
   pname = "hsini";
-  version = "0.2";
-  sha256 = "0d9dhzaw2v9r0hb4lywzw4f0inijbcw5brc5dh45zfkalmn3aqam";
+  version = "0.3.1";
+  sha256 = "06cys4i1nsic13dkp5jgammm3qykzizlnp6wdka2vl699rvnzaaf";
   buildDepends = [ mtl parsec ];
   testDepends = [
     HUnit mtl parsec QuickCheck testFramework testFrameworkHunit
     testFrameworkQuickcheck2 testFrameworkTh
   ];
-  doCheck = false;
   meta = {
     description = "Package for user configuration files (INI)";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix
index 3f938332c02b..398459f60769 100644
--- a/pkgs/development/libraries/haskell/http-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/http-conduit/default.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "http-conduit";
-  version = "2.0.0.7";
-  sha256 = "0rizmshpypllfbmipbrad7hkrs2asx0ijfhr53w3pj58w6h80m0i";
+  version = "2.0.0.8";
+  sha256 = "1yralv1nalvdpgamnbjl8xm4lrx22m3v6jancrzisq38a680q96b";
   buildDepends = [
     conduit httpClient httpClientConduit httpClientTls httpTypes
     liftedBase resourcet transformers
diff --git a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
index f78205c49a09..3605425436e4 100644
--- a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
+++ b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
@@ -1,17 +1,17 @@
-{ cabal, basicPrelude, blazeBuilder, caseInsensitive, conduit
-, dataDefaultClass, hspec, httpClient, httpConduit, httpTypes
-, liftedBase, monadControl, network, networkConduit, resourcet
-, text, transformers, wai, waiLogger, warp, word8
+{ cabal, async, basicPrelude, blazeBuilder, caseInsensitive
+, conduit, dataDefaultClass, hspec, httpClient, httpConduit
+, httpTypes, liftedBase, monadControl, network, networkConduit
+, resourcet, text, transformers, wai, waiLogger, warp, word8
 }:
 
 cabal.mkDerivation (self: {
   pname = "http-reverse-proxy";
-  version = "0.3.0.1";
-  sha256 = "01rbczzf300ivb08wncm19wq64m7n6r5xfbgh82phjxjmmx9h6wj";
+  version = "0.3.1";
+  sha256 = "1xayhjrs6nm7gm5xc6z6vhzi9iq5czdvpywamkncivjsxjlc50b8";
   buildDepends = [
-    basicPrelude blazeBuilder caseInsensitive conduit dataDefaultClass
-    httpClient httpTypes liftedBase monadControl network networkConduit
-    resourcet text wai waiLogger word8
+    async basicPrelude blazeBuilder caseInsensitive conduit
+    dataDefaultClass httpClient httpTypes liftedBase monadControl
+    network networkConduit resourcet text wai waiLogger word8
   ];
   testDepends = [
     blazeBuilder conduit hspec httpConduit httpTypes liftedBase network
diff --git a/pkgs/development/libraries/haskell/lens/3.10.2.nix b/pkgs/development/libraries/haskell/lens/3.10.2.nix
deleted file mode 100644
index 819902d61397..000000000000
--- a/pkgs/development/libraries/haskell/lens/3.10.2.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ cabal, bifunctors, comonad, contravariant, deepseq, distributive
-, doctest, filepath, genericDeriving, hashable, HUnit
-, MonadCatchIOTransformers, mtl, nats, parallel, profunctors
-, QuickCheck, reflection, semigroupoids, semigroups, simpleReflect
-, split, tagged, testFramework, testFrameworkHunit
-, testFrameworkQuickcheck2, testFrameworkTh, text, transformers
-, transformersCompat, unorderedContainers, vector, void
-}:
-
-cabal.mkDerivation (self: {
-  pname = "lens";
-  version = "3.10.2";
-  sha256 = "0hdj75sg8r1m2jdpfh81zdcwbhp6mb7xipp6q57pv6n90xc6dnxw";
-  buildDepends = [
-    bifunctors comonad contravariant distributive filepath
-    genericDeriving hashable MonadCatchIOTransformers mtl parallel
-    profunctors reflection semigroupoids semigroups split tagged text
-    transformers transformersCompat unorderedContainers vector void
-  ];
-  testDepends = [
-    deepseq doctest filepath genericDeriving HUnit mtl nats parallel
-    QuickCheck semigroups simpleReflect split testFramework
-    testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text
-    transformers unorderedContainers vector
-  ];
-  patchPhase = ''
-    sed -i lens.cabal -e 's|MonadCatchIO-transformers >=.*,|MonadCatchIO-transformers,|'
-  '';
-  doCheck = false;
-  meta = {
-    homepage = "http://github.com/ekmett/lens/";
-    description = "Lenses, Folds and Traversals";
-    license = self.stdenv.lib.licenses.bsd3;
-    platforms = self.ghc.meta.platforms;
-  };
-})
diff --git a/pkgs/development/libraries/haskell/lens/4.0.5.nix b/pkgs/development/libraries/haskell/lens/4.0.5.nix
deleted file mode 100644
index 7c347f69ce4c..000000000000
--- a/pkgs/development/libraries/haskell/lens/4.0.5.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ cabal, aeson, bifunctors, comonad, constraints, contravariant
-, deepseq, distributive, doctest, exceptions, filepath
-, genericDeriving, hashable, hlint, HUnit, mtl, nats, parallel
-, primitive, profunctors, QuickCheck, reflection, scientific
-, semigroupoids, semigroups, simpleReflect, split, tagged
-, testFramework, testFrameworkHunit, testFrameworkQuickcheck2
-, testFrameworkTh, text, transformers, transformersCompat
-, unorderedContainers, utf8String, vector, void, zlib
-}:
-
-cabal.mkDerivation (self: {
-  pname = "lens";
-  version = "4.0.5";
-  sha256 = "1kjmi76zpkhkwn514inhpfhfh3pg5na1f2zw1faqnk3bylpp9h6g";
-  buildDepends = [
-    aeson bifunctors comonad constraints contravariant distributive
-    exceptions filepath hashable mtl parallel primitive profunctors
-    reflection scientific semigroupoids semigroups split tagged text
-    transformers transformersCompat unorderedContainers utf8String
-    vector void zlib
-  ];
-  testDepends = [
-    deepseq doctest filepath genericDeriving hlint HUnit mtl nats
-    parallel QuickCheck semigroups simpleReflect split testFramework
-    testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text
-    transformers unorderedContainers vector
-  ];
-  doCheck = false;
-  meta = {
-    homepage = "http://github.com/ekmett/lens/";
-    description = "Lenses, Folds and Traversals";
-    license = self.stdenv.lib.licenses.bsd3;
-    platforms = self.ghc.meta.platforms;
-  };
-})
diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix
new file mode 100644
index 000000000000..57f84955be3a
--- /dev/null
+++ b/pkgs/development/libraries/haskell/lens/default.nix
@@ -0,0 +1,34 @@
+{ cabal, aeson, bifunctors, comonad, contravariant, deepseq
+, distributive, doctest, exceptions, filepath, genericDeriving
+, hashable, hlint, HUnit, mtl, nats, parallel, primitive
+, profunctors, QuickCheck, reflection, scientific, semigroupoids
+, semigroups, simpleReflect, split, tagged, testFramework
+, testFrameworkHunit, testFrameworkQuickcheck2, testFrameworkTh
+, text, transformers, transformersCompat, unorderedContainers
+, utf8String, vector, void, zlib
+}:
+
+cabal.mkDerivation (self: {
+  pname = "lens";
+  version = "4.0.7";
+  sha256 = "0n4xw182yamgaplyshbhyjw9i7n6rvaszr4011mdbd6yvprl5v29";
+  buildDepends = [
+    aeson bifunctors comonad contravariant distributive exceptions
+    filepath hashable mtl parallel primitive profunctors reflection
+    scientific semigroupoids semigroups split tagged text transformers
+    transformersCompat unorderedContainers utf8String vector void zlib
+  ];
+  testDepends = [
+    deepseq doctest filepath genericDeriving hlint HUnit mtl nats
+    parallel QuickCheck semigroups simpleReflect split testFramework
+    testFrameworkHunit testFrameworkQuickcheck2 testFrameworkTh text
+    transformers unorderedContainers vector
+  ];
+  doCheck = false;
+  meta = {
+    homepage = "http://github.com/ekmett/lens/";
+    description = "Lenses, Folds and Traversals";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/leveldb-haskell/default.nix b/pkgs/development/libraries/haskell/leveldb-haskell/default.nix
new file mode 100644
index 000000000000..becd68ba9157
--- /dev/null
+++ b/pkgs/development/libraries/haskell/leveldb-haskell/default.nix
@@ -0,0 +1,21 @@
+{ cabal, async, dataDefault, filepath, leveldb, resourcet
+, transformers
+}:
+
+cabal.mkDerivation (self: {
+  pname = "leveldb-haskell";
+  version = "0.3.0";
+  sha256 = "0hdxn6v7fzc0wlpkymlci60m2584h6fn78bxdnv2q18ra03r3ygs";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [
+    async dataDefault filepath resourcet transformers
+  ];
+  extraLibraries = [ leveldb ];
+  meta = {
+    homepage = "http://github.com/kim/leveldb-haskell";
+    description = "Haskell bindings to LevelDB";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/lifted-base/default.nix b/pkgs/development/libraries/haskell/lifted-base/default.nix
index 7462b362c98c..9dd46754164f 100644
--- a/pkgs/development/libraries/haskell/lifted-base/default.nix
+++ b/pkgs/development/libraries/haskell/lifted-base/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "lifted-base";
-  version = "0.2.2.0";
-  sha256 = "1m6mk24nxkp9a78nywdb844avbqwh931gv1bxsgcbhavavzs72jj";
+  version = "0.2.2.1";
+  sha256 = "13w1y67wng5rv90fsikkwpvx2ajmq5ybnxrx9b2x0y0zbcy7pzk8";
   buildDepends = [
     baseUnicodeSymbols monadControl transformersBase
   ];
diff --git a/pkgs/development/libraries/haskell/linear/default.nix b/pkgs/development/libraries/haskell/linear/default.nix
index ea7c86e3c992..f0dac623a987 100644
--- a/pkgs/development/libraries/haskell/linear/default.nix
+++ b/pkgs/development/libraries/haskell/linear/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "linear";
-  version = "1.8.1";
-  sha256 = "1hrvlavghwj8psi3qdmvnccrr2vk8rss8ggw87gn0jh771pv8zl2";
+  version = "1.9.1";
+  sha256 = "17jvqy2nbcra36fzkwbjkfwg6mjw804zd1i50mhbqwg9j7z4s5sb";
   buildDepends = [
     adjunctions binary distributive hashable lens reflection
     semigroupoids semigroups tagged transformers unorderedContainers
diff --git a/pkgs/development/libraries/haskell/ltk/default.nix b/pkgs/development/libraries/haskell/ltk/default.nix
index 7960395eb098..df1e4be218f0 100644
--- a/pkgs/development/libraries/haskell/ltk/default.nix
+++ b/pkgs/development/libraries/haskell/ltk/default.nix
@@ -1,10 +1,12 @@
-{ cabal, Cabal, filepath, glib, gtk, mtl, parsec, transformers }:
+{ cabal, Cabal, filepath, glib, gtk3, mtl, parsec, transformers }:
 
 cabal.mkDerivation (self: {
   pname = "ltk";
-  version = "0.12.1.0";
-  sha256 = "12x6nba5bll8fgzpxii1cf87j27jk4mn5gf1bx4ahd9v30h1a0h6";
-  buildDepends = [ Cabal filepath glib gtk mtl parsec transformers ];
+  version = "0.13.1.0";
+  sha256 = "09ryyzjd3iazwiw714hsny2b9f4b1cfhyzc11k5xzin5kh5d804a";
+  buildDepends = [
+    Cabal filepath glib gtk3 mtl parsec transformers
+  ];
   meta = {
     homepage = "http://www.leksah.org";
     description = "Leksah tool kit";
diff --git a/pkgs/development/libraries/haskell/lzma-enumerator/default.nix b/pkgs/development/libraries/haskell/lzma-enumerator/default.nix
new file mode 100644
index 000000000000..f931262a91e3
--- /dev/null
+++ b/pkgs/development/libraries/haskell/lzma-enumerator/default.nix
@@ -0,0 +1,22 @@
+{ cabal, bindingsDSL, enumerator, HUnit, lzma, mtl, QuickCheck
+, testFramework, testFrameworkHunit, testFrameworkQuickcheck2
+}:
+
+cabal.mkDerivation (self: {
+  pname = "lzma-enumerator";
+  version = "0.1.3";
+  sha256 = "0pzz8bf6310p23pmsa013i8vib0xsfvlkj7zp0w9xs2xsi4j7jk1";
+  buildDepends = [ bindingsDSL enumerator mtl ];
+  testDepends = [
+    enumerator HUnit QuickCheck testFramework testFrameworkHunit
+    testFrameworkQuickcheck2
+  ];
+  extraLibraries = [ lzma ];
+  jailbreak = true;
+  meta = {
+    homepage = "http://github.com/alphaHeavy/lzma-enumerator";
+    description = "Enumerator interface for lzma/xz compression";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/midi/default.nix b/pkgs/development/libraries/haskell/midi/default.nix
index e50843c6ff23..9467b567f829 100644
--- a/pkgs/development/libraries/haskell/midi/default.nix
+++ b/pkgs/development/libraries/haskell/midi/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "midi";
-  version = "0.2.1";
-  sha256 = "0i767y0835979s9i3wm8qwzh2awhhmfvhc5zvq2lkn8xlsp3wa6y";
+  version = "0.2.1.1";
+  sha256 = "11h4kr9a1jia1ghcyzgavcznw4771l00z736iibjpagw0b8fpip5";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/mono-traversable/default.nix b/pkgs/development/libraries/haskell/mono-traversable/default.nix
index a88f6902d838..5119863500dd 100644
--- a/pkgs/development/libraries/haskell/mono-traversable/default.nix
+++ b/pkgs/development/libraries/haskell/mono-traversable/default.nix
@@ -1,15 +1,15 @@
 { cabal, comonad, foldl, hashable, hspec, QuickCheck, semigroupoids
 , semigroups, text, transformers, unorderedContainers, vector
-, vectorInstances
+, vectorAlgorithms, vectorInstances
 }:
 
 cabal.mkDerivation (self: {
   pname = "mono-traversable";
-  version = "0.4.0";
-  sha256 = "0a59m46dr0am05v4b19j2saxlv0dp22kw47lck1m871y5x2gp936";
+  version = "0.4.0.1";
+  sha256 = "049skbjwz49c9qz2nys2hn6pc4gqn1a91b5kl9z6hjs9fnaic6ng";
   buildDepends = [
     comonad hashable semigroupoids semigroups text transformers
-    unorderedContainers vector vectorInstances
+    unorderedContainers vector vectorAlgorithms vectorInstances
   ];
   testDepends = [
     foldl hspec QuickCheck semigroups text transformers
diff --git a/pkgs/development/libraries/haskell/monoid-extras/default.nix b/pkgs/development/libraries/haskell/monoid-extras/default.nix
index ffde409a9b11..17df8cbeecc2 100644
--- a/pkgs/development/libraries/haskell/monoid-extras/default.nix
+++ b/pkgs/development/libraries/haskell/monoid-extras/default.nix
@@ -1,10 +1,10 @@
-{ cabal, groupoids, groups, semigroupoids, semigroups }:
+{ cabal, groups, semigroupoids, semigroups }:
 
 cabal.mkDerivation (self: {
   pname = "monoid-extras";
-  version = "0.3.3";
-  sha256 = "1a203fccwfmyqdv9mdzwd6gq5g9v3k9mial8n0hykdhmlny7dd56";
-  buildDepends = [ groupoids groups semigroupoids semigroups ];
+  version = "0.3.3.1";
+  sha256 = "1176sazk10vapia1qvcm2rxckn2vxfav21277rsgf11hvn3lzznc";
+  buildDepends = [ groups semigroupoids semigroups ];
   jailbreak = true;
   meta = {
     description = "Various extra monoid-related definitions and utilities";
diff --git a/pkgs/development/libraries/haskell/network-conduit/default.nix b/pkgs/development/libraries/haskell/network-conduit/default.nix
index b859858b8be4..c2f00b68f8f1 100644
--- a/pkgs/development/libraries/haskell/network-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/network-conduit/default.nix
@@ -3,8 +3,8 @@
 
 cabal.mkDerivation (self: {
   pname = "network-conduit";
-  version = "1.0.2.2";
-  sha256 = "1l7r40raqbhfgwgp5knkqfg2b7pqm4h23c9slbx55r829if8c54h";
+  version = "1.0.4";
+  sha256 = "1a7p3gs0rczx0rhz27410rr6fzy3l0nsj6kk5wi0nqvqfyh7jb9c";
   buildDepends = [
     conduit liftedBase monadControl network transformers
   ];
diff --git a/pkgs/development/libraries/haskell/numeric-prelude/default.nix b/pkgs/development/libraries/haskell/numeric-prelude/default.nix
index 9fb5d334a4d5..4fac81b01f93 100644
--- a/pkgs/development/libraries/haskell/numeric-prelude/default.nix
+++ b/pkgs/development/libraries/haskell/numeric-prelude/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "numeric-prelude";
-  version = "0.4.0.3";
-  sha256 = "0lgjnkvbz14cqsm5fjafl8g5mkclcdvpwa3kpz9radmg2x09rsnl";
+  version = "0.4.1";
+  sha256 = "1y1dg4bk811xmz3p23g8kjl6vxns3gs8qj671971c06nccfl1h5r";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/options/default.nix b/pkgs/development/libraries/haskell/options/default.nix
new file mode 100644
index 000000000000..3772a142a58d
--- /dev/null
+++ b/pkgs/development/libraries/haskell/options/default.nix
@@ -0,0 +1,16 @@
+{ cabal, chell, chellQuickcheck, monadsTf, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "options";
+  version = "1.0";
+  sha256 = "0d40d6k1c8v2b0bgchgl54sk9wx28kysp8bjws8bwjcmmd57775f";
+  buildDepends = [ monadsTf transformers ];
+  testDepends = [ chell chellQuickcheck monadsTf transformers ];
+  doCheck = false;
+  meta = {
+    homepage = "https://john-millikin.com/software/haskell-options/";
+    description = "A powerful and easy-to-use command-line option parser";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/pbkdf/default.nix b/pkgs/development/libraries/haskell/pbkdf/default.nix
new file mode 100644
index 000000000000..29ccc2b63dac
--- /dev/null
+++ b/pkgs/development/libraries/haskell/pbkdf/default.nix
@@ -0,0 +1,15 @@
+{ cabal, binary, byteable, bytedump, cryptohash, utf8String }:
+
+cabal.mkDerivation (self: {
+  pname = "pbkdf";
+  version = "1.1.1.1";
+  sha256 = "1nbn8kan43i00g23g8aljxjpaxm9q1qhzxxdgks0mc4mr1f7bifx";
+  buildDepends = [ binary byteable bytedump cryptohash utf8String ];
+  testDepends = [ binary byteable bytedump cryptohash utf8String ];
+  meta = {
+    homepage = "https://github.com/cdornan/pbkdf";
+    description = "Haskell implementation of the PBKDF functions from RFC-2898";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
index 14b2e08ccac0..e529747e7a75 100644
--- a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-postgresql";
-  version = "1.3.0.2";
-  sha256 = "1d5g5zg3p0nhhkgnf9mr1wxmrpw5y1adv5lf21681an9frkisggy";
+  version = "1.3.0.3";
+  sha256 = "00frqpv7wbksbjl714nhrian45p61kggxhpin9hawbwn2siwsg2m";
   buildDepends = [
     aeson blazeBuilder conduit monadControl persistent postgresqlLibpq
     postgresqlSimple text time transformers
diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
index 742f4d3b5168..009aa3b62995 100644
--- a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
@@ -4,8 +4,10 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-sqlite";
-  version = "1.3.0.2";
-  sha256 = "0mxnmbqsj67mfsp7d09wbziwfwcfdqr0rln0qcyi3wjwgybjmkzk";
+  version = "1.3.0.3";
+  sha256 = "0b7dp2hiza02rnnph44rd2vls06jipmixi32icbijmcqk83hfglq";
+  isLibrary = true;
+  isExecutable = true;
   buildDepends = [
     aeson conduit monadControl monadLogger persistent text transformers
   ];
diff --git a/pkgs/development/libraries/haskell/persistent-template/default.nix b/pkgs/development/libraries/haskell/persistent-template/default.nix
index 9dc3ea188bb3..1340ceaaf957 100644
--- a/pkgs/development/libraries/haskell/persistent-template/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-template/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-template";
-  version = "1.3.1.1";
-  sha256 = "13rbsxfrync5vmg5f1h5z5lc2b1vvh7nzbap4s5g5df3nvzfmmqx";
+  version = "1.3.1.2";
+  sha256 = "1gdwwx55ihnqxgyw0wsx0pr4dcs2hdbp5xbnx6l1j03rn5x1sglq";
   buildDepends = [
     aeson monadControl monadLogger persistent text transformers
     unorderedContainers
diff --git a/pkgs/development/libraries/haskell/persistent/default.nix b/pkgs/development/libraries/haskell/persistent/default.nix
index c9375dc06b4a..1a61e5f76a0a 100644
--- a/pkgs/development/libraries/haskell/persistent/default.nix
+++ b/pkgs/development/libraries/haskell/persistent/default.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent";
-  version = "1.3.0.2";
-  sha256 = "16bq0l6nqjpzlbzm47ip2m8b5yhwhf28fpv3hxy7qsnzmy7siv6y";
+  version = "1.3.0.3";
+  sha256 = "0p9h43wvm1l9va6s6p71y6r5ifgvbqz8ypc86pmzbphq6712jnsl";
   buildDepends = [
     aeson attoparsec base64Bytestring blazeHtml blazeMarkup conduit
     liftedBase monadControl monadLogger pathPieces poolConduit
diff --git a/pkgs/development/libraries/haskell/pipes-bytestring/default.nix b/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
index 8847f5e93f02..2a2324027d4b 100644
--- a/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
+++ b/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
@@ -3,8 +3,8 @@
 
 cabal.mkDerivation (self: {
   pname = "pipes-bytestring";
-  version = "2.0.0";
-  sha256 = "17l74g7xfl1i32jj9qa9ivbb3ndi68hkc1b6jchwnn19rmg51j9i";
+  version = "2.0.1";
+  sha256 = "1vsfqqkr5danb0n30av4vk8d4by9f50y5l8ywm1xjrmwrx999gvf";
   buildDepends = [
     pipes pipesGroup pipesParse profunctors transformers
   ];
diff --git a/pkgs/development/libraries/haskell/pool-conduit/default.nix b/pkgs/development/libraries/haskell/pool-conduit/default.nix
index 77faceeea923..e97fbb983a71 100644
--- a/pkgs/development/libraries/haskell/pool-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/pool-conduit/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "pool-conduit";
-  version = "0.1.2";
-  sha256 = "10lvq18pk9d4la5irr1qv1c9y4qbwlglmzgs7bz1d0g5232w3rv8";
+  version = "0.1.2.1";
+  sha256 = "1mcx66xv1irxd66cfv23h4n7fplg5a0hyldlgk8km0k395mjw8k8";
   buildDepends = [
     monadControl resourcePool resourcet transformers
   ];
diff --git a/pkgs/development/libraries/haskell/sample-frame/default.nix b/pkgs/development/libraries/haskell/sample-frame/default.nix
index f8acbf1fda83..8e9478ed5e2a 100644
--- a/pkgs/development/libraries/haskell/sample-frame/default.nix
+++ b/pkgs/development/libraries/haskell/sample-frame/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "sample-frame";
-  version = "0.0.2";
-  sha256 = "1k1fyslgw5vvn9a38mhp7c9j1xxf75ys010rcn2vr3pm6aj868sx";
+  version = "0.0.3";
+  sha256 = "0ivj0bcnqqc805np62bdpvh8v4ykmw86ph5rp7k54bbv9wd31bsv";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ QuickCheck storableRecord ];
diff --git a/pkgs/development/libraries/haskell/scientific/default.nix b/pkgs/development/libraries/haskell/scientific/default.nix
index aa57f9dc5df8..523bfce62b5d 100644
--- a/pkgs/development/libraries/haskell/scientific/default.nix
+++ b/pkgs/development/libraries/haskell/scientific/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "scientific";
-  version = "0.2.0.1";
-  sha256 = "0xwxds884pqywjbc4j6qkx27nbi64sihig8ps9v884sk08021wrp";
+  version = "0.2.0.2";
+  sha256 = "13rrdaf5mrhpckq9vvrm4pnj63vahg7f0g75hk11nk7k1644l4f0";
   buildDepends = [ deepseq hashable text ];
   testDepends = [ smallcheck tasty tastySmallcheck text ];
   jailbreak = true;
diff --git a/pkgs/development/libraries/haskell/scrypt/default.nix b/pkgs/development/libraries/haskell/scrypt/default.nix
new file mode 100644
index 000000000000..6caf51edc1ed
--- /dev/null
+++ b/pkgs/development/libraries/haskell/scrypt/default.nix
@@ -0,0 +1,20 @@
+{ cabal, base64Bytestring, entropy, HUnit, QuickCheck
+, testFramework, testFrameworkHunit, testFrameworkQuickcheck2
+}:
+
+cabal.mkDerivation (self: {
+  pname = "scrypt";
+  version = "0.5.0";
+  sha256 = "1cnrjdq1ncv224dlk236a7w29na8r019d2acrsxlsaiy74iadh1y";
+  buildDepends = [ base64Bytestring entropy ];
+  testDepends = [
+    HUnit QuickCheck testFramework testFrameworkHunit
+    testFrameworkQuickcheck2
+  ];
+  meta = {
+    homepage = "http://github.com/informatikr/scrypt";
+    description = "Stronger password hashing via sequential memory-hard functions";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/shelly/default.nix b/pkgs/development/libraries/haskell/shelly/default.nix
index 720bbea89331..3ebc62932cf2 100644
--- a/pkgs/development/libraries/haskell/shelly/default.nix
+++ b/pkgs/development/libraries/haskell/shelly/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "shelly";
-  version = "1.4.4.2";
-  sha256 = "01h08bw7j7f5vi3bffd4ipvj5nmab8j5rqgxav688n2jm2342jzk";
+  version = "1.5.0.1";
+  sha256 = "19mfxdwnzv01bxd0l5q2z4mbdp7r8p6z2bm083vjlxx7cc35wv7a";
   buildDepends = [
     async mtl systemFileio systemFilepath text time unixCompat
   ];
diff --git a/pkgs/development/libraries/haskell/smtp-mail/default.nix b/pkgs/development/libraries/haskell/smtp-mail/default.nix
index 814a89f70c2c..80f18da4c564 100644
--- a/pkgs/development/libraries/haskell/smtp-mail/default.nix
+++ b/pkgs/development/libraries/haskell/smtp-mail/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "smtp-mail";
-  version = "0.1.4.4";
-  sha256 = "055b736sr9w4dxf1p5xjfsisqxk49kz4d3hyqwgdvi8zzvi31vp6";
+  version = "0.1.4.5";
+  sha256 = "010fbrcbypajwd9fjjc35br9p5axl1pqd0n1v51585ncrlv2icyw";
   buildDepends = [
     base16Bytestring base64Bytestring cryptohash filepath mimeMail
     network text
diff --git a/pkgs/development/libraries/haskell/snap/core.nix b/pkgs/development/libraries/haskell/snap/core.nix
index 7bc8d6e4b573..351e8d943235 100644
--- a/pkgs/development/libraries/haskell/snap/core.nix
+++ b/pkgs/development/libraries/haskell/snap/core.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "snap-core";
-  version = "0.9.6.0";
-  sha256 = "0v5bp8dw867gq92p3qw3h2yv6bhr2b7gy72rs26m9crk2dsfx9pa";
+  version = "0.9.6.1";
+  sha256 = "1wfjkbck2dc4a1nxz62yprf68g66m9vhvxihn9c5xypxjpgj2r9k";
   buildDepends = [
     attoparsec attoparsecEnumerator blazeBuilder blazeBuilderEnumerator
     bytestringMmap caseInsensitive deepseq enumerator filepath hashable
diff --git a/pkgs/development/libraries/haskell/snowball/default.nix b/pkgs/development/libraries/haskell/snowball/default.nix
new file mode 100644
index 000000000000..36a4231109df
--- /dev/null
+++ b/pkgs/development/libraries/haskell/snowball/default.nix
@@ -0,0 +1,21 @@
+{ cabal, HUnit, QuickCheck, quickcheckInstances, testFrameworkHunit
+, testFrameworkQuickcheck2, testFrameworkTh, text, textIcu
+}:
+
+cabal.mkDerivation (self: {
+  pname = "snowball";
+  version = "1.0.0.1";
+  sha256 = "0fvxzm14ffjqq6n51bi5cmq5yrlggpkbb9rbbw522l6cjgv0apbx";
+  buildDepends = [ text textIcu ];
+  testDepends = [
+    HUnit QuickCheck quickcheckInstances testFrameworkHunit
+    testFrameworkQuickcheck2 testFrameworkTh text
+  ];
+  doCheck = false;
+  meta = {
+    homepage = "http://hub.darcs.net/dag/snowball";
+    description = "Bindings to the Snowball library";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/sqlite-simple/default.nix b/pkgs/development/libraries/haskell/sqlite-simple/default.nix
index cc6204735d2c..d6d8d43bf24a 100644
--- a/pkgs/development/libraries/haskell/sqlite-simple/default.nix
+++ b/pkgs/development/libraries/haskell/sqlite-simple/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "sqlite-simple";
-  version = "0.4.5.1";
-  sha256 = "0mmj6vk3yjvrbsggc5pyba5iprzvfhlsq1jfradpazgfc998j0ry";
+  version = "0.4.5.2";
+  sha256 = "04080ak589n0abisb6bzsmycrh3l8sh0ipcl1gcsvvfd4x83c9yi";
   buildDepends = [
     attoparsec blazeBuilder blazeTextual directSqlite text time
     transformers
diff --git a/pkgs/development/libraries/haskell/stm-conduit/default.nix b/pkgs/development/libraries/haskell/stm-conduit/default.nix
index b53b310dafe0..412dfa1fcd21 100644
--- a/pkgs/development/libraries/haskell/stm-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/stm-conduit/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "stm-conduit";
-  version = "2.2.1.1";
-  sha256 = "0rqn6xhqhaqiy0n2g46z58zzccq1i749p97aihrvjpikrz5kypka";
+  version = "2.2.2";
+  sha256 = "0a6yi35iw0p18asr6l8370kndmvim097vklayads6gbk74gg67cy";
   buildDepends = [
     async cereal cerealConduit conduit liftedAsync liftedBase
     monadControl monadLoops resourcet stm stmChans transformers
diff --git a/pkgs/development/libraries/haskell/tagged/default.nix b/pkgs/development/libraries/haskell/tagged/default.nix
index ee808800c55f..d62033e8d16a 100644
--- a/pkgs/development/libraries/haskell/tagged/default.nix
+++ b/pkgs/development/libraries/haskell/tagged/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "tagged";
-  version = "0.7";
-  sha256 = "1g78hl6sib1mhg016gy3fqw78x72jsgqizsgim8a1pysjzq0y6zm";
+  version = "0.7.1";
+  sha256 = "036k5k44971fq6zdxc36kkic9ma93mcas7zk48i32s60iznnfc6v";
   meta = {
     homepage = "http://github.com/ekmett/tagged";
     description = "Haskell 98 phantom types to avoid unsafely passing dummy arguments";
diff --git a/pkgs/development/libraries/haskell/tasty-rerun/default.nix b/pkgs/development/libraries/haskell/tasty-rerun/default.nix
index b5f7351c594c..65d0c73473ad 100644
--- a/pkgs/development/libraries/haskell/tasty-rerun/default.nix
+++ b/pkgs/development/libraries/haskell/tasty-rerun/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "tasty-rerun";
-  version = "1.1.1";
-  sha256 = "1xgjf47bvahankyic18l5fcda4dlfbd4j2lxqv3v5hhwk7zgvcp8";
+  version = "1.1.2";
+  sha256 = "0vgx6l9yd21aiwivd6zp67rgjly1j2wwqdmx99p17prr430rm4id";
   buildDepends = [
     mtl optparseApplicative reducers split stm tagged tasty
     transformers
diff --git a/pkgs/development/libraries/haskell/tasty/default.nix b/pkgs/development/libraries/haskell/tasty/default.nix
index 6fcdf9a4cb3c..706053a3e031 100644
--- a/pkgs/development/libraries/haskell/tasty/default.nix
+++ b/pkgs/development/libraries/haskell/tasty/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "tasty";
-  version = "0.8";
-  sha256 = "12r8ml45r1dq3vmjkibxkla5rmmyrm11js26kmkha110ji8hnflg";
+  version = "0.8.0.2";
+  sha256 = "0xn0qc1d7bq8s7988x58snq5ipvmi7g87rg89r1l21yxl6a85zw5";
   buildDepends = [
     ansiTerminal async deepseq mtl optparseApplicative regexTdfa stm
     tagged unboundedDelays
diff --git a/pkgs/development/libraries/haskell/terminal-size/default.nix b/pkgs/development/libraries/haskell/terminal-size/default.nix
new file mode 100644
index 000000000000..d33bc7d43173
--- /dev/null
+++ b/pkgs/development/libraries/haskell/terminal-size/default.nix
@@ -0,0 +1,12 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "terminal-size";
+  version = "0.2.1.0";
+  sha256 = "0d41af1is3vdb1kgd8dk82fags86bgs67vkbzpdhjdwa3aimsxgn";
+  meta = {
+    description = "Get terminal window height and width";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/th-desugar/default.nix b/pkgs/development/libraries/haskell/th-desugar/default.nix
index f3aa1628aae7..42ff1d78198a 100644
--- a/pkgs/development/libraries/haskell/th-desugar/default.nix
+++ b/pkgs/development/libraries/haskell/th-desugar/default.nix
@@ -1,10 +1,11 @@
-{ cabal, mtl, syb }:
+{ cabal, hspec, HUnit, mtl, syb }:
 
 cabal.mkDerivation (self: {
   pname = "th-desugar";
-  version = "1.2.1";
-  sha256 = "12a8m1vzfbn728psaiqxwngmksrbybci3g7a47z04rjbsjf3cy4v";
+  version = "1.3.0";
+  sha256 = "1wfypk1hcxr2918qp63df5xlx00rqwnaa59mivnlqs558g4kjx6j";
   buildDepends = [ mtl syb ];
+  testDepends = [ hspec HUnit mtl syb ];
   meta = {
     homepage = "http://www.cis.upenn.edu/~eir/packages/th-desugar";
     description = "Functions to desugar Template Haskell";
diff --git a/pkgs/development/libraries/haskell/thyme/default.nix b/pkgs/development/libraries/haskell/thyme/default.nix
index 6f1a6b41bba3..08563c6f2c5d 100644
--- a/pkgs/development/libraries/haskell/thyme/default.nix
+++ b/pkgs/development/libraries/haskell/thyme/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "thyme";
-  version = "0.3.1.0";
-  sha256 = "0dhnsqn6miiqnbpqln2vmkq7cbm8bz5jz1dwc1bif6dwl16fvhm6";
+  version = "0.3.1.1";
+  sha256 = "00c15zy7190mghpvrpwl0hp8w1mp386vvff8w2zdpgl792cvdby8";
   buildDepends = [
     aeson attoparsec deepseq lens QuickCheck random text time
     transformers vector vectorSpace
diff --git a/pkgs/development/libraries/haskell/vado/default.nix b/pkgs/development/libraries/haskell/vado/default.nix
new file mode 100644
index 000000000000..45e9524657a9
--- /dev/null
+++ b/pkgs/development/libraries/haskell/vado/default.nix
@@ -0,0 +1,17 @@
+{ cabal, attoparsec, filepath, QuickCheck, text }:
+
+cabal.mkDerivation (self: {
+  pname = "vado";
+  version = "0.0.1";
+  sha256 = "11b8glzzpzhm8cfw3vyvvvz3h0xid5r3prwhnvplajr7v3r562h2";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [ attoparsec filepath text ];
+  testDepends = [ attoparsec filepath QuickCheck text ];
+  meta = {
+    homepage = "https://github.com/hamishmack/vado";
+    description = "Runs commands on remote machines using ssh";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/vcsgui/default.nix b/pkgs/development/libraries/haskell/vcsgui/default.nix
new file mode 100644
index 000000000000..b27f61323a29
--- /dev/null
+++ b/pkgs/development/libraries/haskell/vcsgui/default.nix
@@ -0,0 +1,16 @@
+{ cabal, filepath, gtk3, MissingH, mtl, vcswrapper }:
+
+cabal.mkDerivation (self: {
+  pname = "vcsgui";
+  version = "0.0.2";
+  sha256 = "0kj06l9s4l791ffwdnh7j0nvjvgili18g2jl2ik81n28bzfyq1dx";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [ filepath gtk3 MissingH mtl vcswrapper ];
+  meta = {
+    homepage = "https://github.com/forste/haskellVCSGUI";
+    description = "GUI library for source code management systems";
+    license = "GPL";
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/vcswrapper/default.nix b/pkgs/development/libraries/haskell/vcswrapper/default.nix
new file mode 100644
index 000000000000..33462522c29a
--- /dev/null
+++ b/pkgs/development/libraries/haskell/vcswrapper/default.nix
@@ -0,0 +1,16 @@
+{ cabal, filepath, hxt, MissingH, mtl, parsec }:
+
+cabal.mkDerivation (self: {
+  pname = "vcswrapper";
+  version = "0.0.3";
+  sha256 = "04gmiiv461qh8fypkkiynipn5jsjqvywkj17ldq5wag4qaspx97x";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [ filepath hxt MissingH mtl parsec ];
+  meta = {
+    homepage = "https://github.com/forste/haskellVCSWrapper";
+    description = "Wrapper for source code management systems";
+    license = "GPL";
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/vector-space-points/default.nix b/pkgs/development/libraries/haskell/vector-space-points/default.nix
index 2edb15beeda5..ca9218bf42c0 100644
--- a/pkgs/development/libraries/haskell/vector-space-points/default.nix
+++ b/pkgs/development/libraries/haskell/vector-space-points/default.nix
@@ -1,10 +1,10 @@
-{ cabal, newtype, vectorSpace }:
+{ cabal, vectorSpace }:
 
 cabal.mkDerivation (self: {
   pname = "vector-space-points";
-  version = "0.1.3";
-  sha256 = "0bk2zrccf5bxh14dzhhv89mr755j801ziqyxgv69ksdyxh8hx2qg";
-  buildDepends = [ newtype vectorSpace ];
+  version = "0.2";
+  sha256 = "05wczgvcqwqhcr4v0md4x5vybq6ns8rk6459yqyrc96kaig0sf2i";
+  buildDepends = [ vectorSpace ];
   meta = {
     description = "A type for points, as distinct from vectors";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/wai-app-static/default.nix b/pkgs/development/libraries/haskell/wai-app-static/default.nix
index 8f2c6ebb342c..412fd3f16e6c 100644
--- a/pkgs/development/libraries/haskell/wai-app-static/default.nix
+++ b/pkgs/development/libraries/haskell/wai-app-static/default.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-app-static";
-  version = "2.0.0.2";
-  sha256 = "0d9afs50r08k9zgz7vvh7fvamcvhm8hf4qxca4w0xi7pcj1vql0r";
+  version = "2.0.0.3";
+  sha256 = "0anbmp6wjk1qba1skr08fkm5y9lm58kfghzcgzgx8hrid7w85fb7";
   buildDepends = [
     base64Bytestring blazeBuilder blazeHtml blazeMarkup cereal
     cryptoApi cryptoConduit cryptohashCryptoapi fileEmbed filepath
diff --git a/pkgs/development/libraries/haskell/wai-extra/default.nix b/pkgs/development/libraries/haskell/wai-extra/default.nix
index f3d2dfbd0cdf..50e4d983d755 100644
--- a/pkgs/development/libraries/haskell/wai-extra/default.nix
+++ b/pkgs/development/libraries/haskell/wai-extra/default.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-extra";
-  version = "2.0.3.3";
-  sha256 = "11ma8pazvysvpiy8y7xfh7kpmsfiw94bd6vyyi3ji8q71rzjlf62";
+  version = "2.1.0";
+  sha256 = "14aj1c6i58jyg79y516sa2l39y4i7az3l5lp6fkxkgqgzl5dxs6c";
   buildDepends = [
     ansiTerminal base64Bytestring blazeBuilder blazeBuilderConduit
     caseInsensitive conduit dataDefault fastLogger httpTypes liftedBase
diff --git a/pkgs/development/libraries/haskell/wai-handler-fastcgi/default.nix b/pkgs/development/libraries/haskell/wai-handler-fastcgi/default.nix
index 6612003fa2e6..9767f2d7750d 100644
--- a/pkgs/development/libraries/haskell/wai-handler-fastcgi/default.nix
+++ b/pkgs/development/libraries/haskell/wai-handler-fastcgi/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-handler-fastcgi";
-  version = "2.0.0";
-  sha256 = "1pqiqx1wq2iv705f8bd4sxmjmmkkxiw4g6a9dpwnawwb5n0d88nl";
+  version = "2.0.0.1";
+  sha256 = "14jsibsqfj6z5yqgdrh43aiqps1yldxkgn6fkj4i80zxk099nbxp";
   buildDepends = [ wai waiExtra ];
   extraLibraries = [ fcgi ];
   meta = {
diff --git a/pkgs/development/libraries/haskell/wai-handler-launch/default.nix b/pkgs/development/libraries/haskell/wai-handler-launch/default.nix
index 3ba78e162519..f25206e69acf 100644
--- a/pkgs/development/libraries/haskell/wai-handler-launch/default.nix
+++ b/pkgs/development/libraries/haskell/wai-handler-launch/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-handler-launch";
-  version = "2.0.0";
-  sha256 = "1z03c3hjkh4k6j5dsp4973f05rk2cgl7gazac4vdq4imwfzxj3lg";
+  version = "2.0.1.1";
+  sha256 = "10izbri1a8mjb2q4r1badw63qbp3vxnw5v2hzskq6911bckqkskc";
   buildDepends = [
     blazeBuilder blazeBuilderConduit conduit httpTypes transformers wai
     warp zlibConduit
diff --git a/pkgs/development/libraries/haskell/wai-middleware-static/default.nix b/pkgs/development/libraries/haskell/wai-middleware-static/default.nix
index 859c75c39c3d..e496d5266db3 100644
--- a/pkgs/development/libraries/haskell/wai-middleware-static/default.nix
+++ b/pkgs/development/libraries/haskell/wai-middleware-static/default.nix
@@ -5,6 +5,7 @@ cabal.mkDerivation (self: {
   version = "0.4.0.2";
   sha256 = "0nw54h8baphjdwsd118g9j5w4g2mnb2hrny0n4ih4jlqlcqam3lf";
   buildDepends = [ filepath httpTypes mtl text wai ];
+  jailbreak = true;
   meta = {
     homepage = "https://github.com/scotty-web/scotty";
     description = "WAI middleware that intercepts requests to static files";
diff --git a/pkgs/development/libraries/haskell/wai-test/default.nix b/pkgs/development/libraries/haskell/wai-test/default.nix
index 9cae0a85d6c9..1d7b184d6dfd 100644
--- a/pkgs/development/libraries/haskell/wai-test/default.nix
+++ b/pkgs/development/libraries/haskell/wai-test/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-test";
-  version = "2.0.0.1";
-  sha256 = "1lk7i9kiawsn56f8w2nidmas6g94yq7diaprvkd7c52hjki5mla7";
+  version = "2.0.0.2";
+  sha256 = "0085whb8jav2zasmgi8z62anm6i509lc2w0988vqlcrds7rrknc8";
   buildDepends = [
     blazeBuilder blazeBuilderConduit caseInsensitive conduit cookie
     httpTypes HUnit network text transformers wai
diff --git a/pkgs/development/libraries/haskell/wai-websockets/default.nix b/pkgs/development/libraries/haskell/wai-websockets/default.nix
new file mode 100644
index 000000000000..4b4038fd4111
--- /dev/null
+++ b/pkgs/development/libraries/haskell/wai-websockets/default.nix
@@ -0,0 +1,22 @@
+{ cabal, blazeBuilder, caseInsensitive, conduit, fileEmbed
+, httpTypes, ioStreams, network, text, transformers, wai
+, waiAppStatic, warp, websockets
+}:
+
+cabal.mkDerivation (self: {
+  pname = "wai-websockets";
+  version = "2.1.0";
+  sha256 = "094imqhkn4ghifgp2qhs4hnby3zzdd84fhmyvvy7igcpz1rmll7a";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [
+    blazeBuilder caseInsensitive conduit fileEmbed httpTypes ioStreams
+    network text transformers wai waiAppStatic warp websockets
+  ];
+  meta = {
+    homepage = "http://github.com/yesodweb/wai";
+    description = "Provide a bridge betweeen WAI and the websockets package";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/wai/default.nix b/pkgs/development/libraries/haskell/wai/default.nix
index 4273e408a7f7..f17b999f1497 100644
--- a/pkgs/development/libraries/haskell/wai/default.nix
+++ b/pkgs/development/libraries/haskell/wai/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai";
-  version = "2.0.0";
-  sha256 = "11s60v9pw8jl9w950z81gkxci7djrdibi8hxrw6j1v8az40qqiwk";
+  version = "2.1.0";
+  sha256 = "0n3dgm1pwv9baxrx0qh0iq1mh9i7ihhki3h4ks5k74d37w7bwcjy";
   buildDepends = [
     blazeBuilder conduit httpTypes network text transformers vault
   ];
diff --git a/pkgs/development/libraries/haskell/warp-tls/default.nix b/pkgs/development/libraries/haskell/warp-tls/default.nix
index c93352cf65c7..c21e3b0d4328 100644
--- a/pkgs/development/libraries/haskell/warp-tls/default.nix
+++ b/pkgs/development/libraries/haskell/warp-tls/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "warp-tls";
-  version = "2.0.2";
-  sha256 = "02wj9hwxd0x49g7kl68h3r4b9hc29yqfjagyybnr42xzwl6bdpyg";
+  version = "2.0.3.1";
+  sha256 = "1cyf4syblisi5hana7h2g72yyrjln40v3b6jq2253nglqip79l5w";
   buildDepends = [
     conduit cprngAes dataDefaultClass network networkConduit tls
     transformers wai warp
diff --git a/pkgs/development/libraries/haskell/warp/default.nix b/pkgs/development/libraries/haskell/warp/default.nix
index f5b0f6835538..7ebc7af36270 100644
--- a/pkgs/development/libraries/haskell/warp/default.nix
+++ b/pkgs/development/libraries/haskell/warp/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "warp";
-  version = "2.0.3.3";
-  sha256 = "02wh8jf8pcjb03xxdim9q92vr4jk9jibqqzl8kvccqlqfi5giq0f";
+  version = "2.1.1";
+  sha256 = "1nldm0pq1q5m91mhss4h23dxdqwqmvfdmcpq5grc1rqjb88mgm25";
   buildDepends = [
     blazeBuilder blazeBuilderConduit caseInsensitive conduit hashable
     httpDate httpTypes liftedBase network networkConduit simpleSendfile
diff --git a/pkgs/development/libraries/haskell/x509/default.nix b/pkgs/development/libraries/haskell/x509/default.nix
index 24ebf7462026..d8fd7030f14f 100644
--- a/pkgs/development/libraries/haskell/x509/default.nix
+++ b/pkgs/development/libraries/haskell/x509/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "x509";
-  version = "1.4.10";
-  sha256 = "1xsq0g7f5ki6l9yx604j6bsl1k7s3p1xr6hh2086hsgl9fp1f9ap";
+  version = "1.4.11";
+  sha256 = "1ax56jps640cj1swy08y4k75vx908ckwkg2hi7y2s3bhnvpz49ga";
   buildDepends = [
     asn1Encoding asn1Parse asn1Types cryptohash cryptoPubkeyTypes
     filepath mtl pem time
diff --git a/pkgs/development/libraries/haskell/yesod-auth/default.nix b/pkgs/development/libraries/haskell/yesod-auth/default.nix
index 3831cac76e43..6857b6f02d76 100644
--- a/pkgs/development/libraries/haskell/yesod-auth/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-auth/default.nix
@@ -8,8 +8,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-auth";
-  version = "1.2.6";
-  sha256 = "1w7svh49zqdrw1qp8v7df6y6mvkf40cn27k5ckxjyfin00rz0x31";
+  version = "1.2.7";
+  sha256 = "0arszd7nk7rwm0xnjb2vqk2zf7lcwyw1ncxyxdmdxxvmh28lymwk";
   buildDepends = [
     aeson authenticate blazeHtml blazeMarkup dataDefault emailValidate
     fileEmbed hamlet httpConduit httpTypes liftedBase mimeMail network
diff --git a/pkgs/development/libraries/haskell/yesod-bin/default.nix b/pkgs/development/libraries/haskell/yesod-bin/default.nix
index 59eeac6e3cfc..50071e8cffe3 100644
--- a/pkgs/development/libraries/haskell/yesod-bin/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-bin/default.nix
@@ -1,26 +1,26 @@
 { cabal, attoparsec, base64Bytestring, blazeBuilder, Cabal, conduit
-, dataDefaultClass, fileEmbed, filepath, fsnotify, ghcPaths
-, httpConduit, httpReverseProxy, httpTypes, liftedBase, network
-, networkConduit, optparseApplicative, parsec, projectTemplate
-, resourcet, shakespeare, shakespeareCss, shakespeareJs
-, shakespeareText, split, systemFileio, systemFilepath, tar, text
-, time, transformers, unixCompat, unorderedContainers, wai, warp
-, yaml, zlib
+, dataDefaultClass, fileEmbed, filepath, filesystemConduit
+, fsnotify, ghcPaths, httpConduit, httpReverseProxy, httpTypes
+, liftedBase, network, networkConduit, optparseApplicative, parsec
+, projectTemplate, resourcet, shakespeare, shakespeareCss
+, shakespeareJs, shakespeareText, split, systemFileio
+, systemFilepath, tar, text, time, transformers, unixCompat
+, unorderedContainers, wai, warp, yaml, zlib
 }:
 
 cabal.mkDerivation (self: {
   pname = "yesod-bin";
-  version = "1.2.6.1";
-  sha256 = "0w3qar315w96139j16fq4py4qs83bhm6pab9pzjbx8h451sqjarh";
+  version = "1.2.7.1";
+  sha256 = "1lbnn7lzgpw0xsbnlax41q5hqb1bv9irmncgjvv18y8mpf5zcncs";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
     attoparsec base64Bytestring blazeBuilder Cabal conduit
-    dataDefaultClass fileEmbed filepath fsnotify ghcPaths httpConduit
-    httpReverseProxy httpTypes liftedBase network networkConduit
-    optparseApplicative parsec projectTemplate resourcet shakespeare
-    shakespeareCss shakespeareJs shakespeareText split systemFileio
-    systemFilepath tar text time transformers unixCompat
+    dataDefaultClass fileEmbed filepath filesystemConduit fsnotify
+    ghcPaths httpConduit httpReverseProxy httpTypes liftedBase network
+    networkConduit optparseApplicative parsec projectTemplate resourcet
+    shakespeare shakespeareCss shakespeareJs shakespeareText split
+    systemFileio systemFilepath tar text time transformers unixCompat
     unorderedContainers wai warp yaml zlib
   ];
   meta = {
diff --git a/pkgs/development/libraries/haskell/yesod-core/default.nix b/pkgs/development/libraries/haskell/yesod-core/default.nix
index 5eaaa316ecfa..bd1116267fa1 100644
--- a/pkgs/development/libraries/haskell/yesod-core/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-core/default.nix
@@ -1,17 +1,17 @@
-{ cabal, aeson, attoparsecConduit, blazeBuilder, blazeHtml
+{ cabal, aeson, async, attoparsecConduit, blazeBuilder, blazeHtml
 , blazeMarkup, caseInsensitive, cereal, clientsession, conduit
 , cookie, dataDefault, failure, fastLogger, hamlet, hspec
-, httpTypes, HUnit, liftedBase, monadControl, monadLogger, parsec
-, pathPieces, QuickCheck, random, resourcet, safe, shakespeare
-, shakespeareCss, shakespeareI18n, shakespeareJs, text, time
-, transformers, transformersBase, unixCompat, vector, wai, waiExtra
-, waiLogger, waiTest, warp, yesodRoutes
+, httpTypes, HUnit, liftedBase, monadControl, monadLogger, network
+, networkConduit, parsec, pathPieces, QuickCheck, random, resourcet
+, safe, shakespeare, shakespeareCss, shakespeareI18n, shakespeareJs
+, text, time, transformers, transformersBase, unixCompat, vector
+, wai, waiExtra, waiLogger, waiTest, warp, yesodRoutes
 }:
 
 cabal.mkDerivation (self: {
   pname = "yesod-core";
-  version = "1.2.6.7";
-  sha256 = "09vxi7fkiakr58ifa6ribsqq1p6fmqclznj38vhl5rdfalm7yivg";
+  version = "1.2.7";
+  sha256 = "1gkpx0d7hyvn45254aj40iy4k0bf3kkrvmxnw3q1mvqc3k1kdxqn";
   buildDepends = [
     aeson attoparsecConduit blazeBuilder blazeHtml blazeMarkup
     caseInsensitive cereal clientsession conduit cookie dataDefault
@@ -22,9 +22,9 @@ cabal.mkDerivation (self: {
     yesodRoutes
   ];
   testDepends = [
-    blazeBuilder conduit hamlet hspec httpTypes HUnit liftedBase
-    QuickCheck random resourcet shakespeareCss shakespeareJs text
-    transformers wai waiTest
+    async blazeBuilder conduit hamlet hspec httpTypes HUnit liftedBase
+    network networkConduit QuickCheck random resourcet shakespeareCss
+    shakespeareJs text transformers wai waiTest
   ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/yesod-form/default.nix b/pkgs/development/libraries/haskell/yesod-form/default.nix
index 7a7d1f16e05b..a42e0a50bc40 100644
--- a/pkgs/development/libraries/haskell/yesod-form/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-form/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-form";
-  version = "1.3.5.2";
-  sha256 = "0ppzj04c5y02k2daw52g2pkzf85mhsg7n4hbkm05xk1crzbrbcxj";
+  version = "1.3.7";
+  sha256 = "01fv3c5db702nm9dk5ynvn5mf9vc4a1rkjn31zlw260jlgqy4vsn";
   buildDepends = [
     aeson attoparsec blazeBuilder blazeHtml blazeMarkup cryptoApi
     dataDefault emailValidate hamlet network persistent resourcet
diff --git a/pkgs/development/libraries/haskell/zip-archive/default.nix b/pkgs/development/libraries/haskell/zip-archive/default.nix
index 2d18fcd1f83b..d76de048babd 100644
--- a/pkgs/development/libraries/haskell/zip-archive/default.nix
+++ b/pkgs/development/libraries/haskell/zip-archive/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "zip-archive";
-  version = "0.2.1";
-  sha256 = "1w58fg3kzbsgscadwx3k34xbq7d7hzghlv4mxyglaxn3qdcd6w8b";
+  version = "0.2.2";
+  sha256 = "10br64sn7wmssimxssqmjd43br8y63l5szn2wg30d957a9zgdk60";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ binary digest filepath mtl text time zlib ];
diff --git a/pkgs/development/libraries/itk/default.nix b/pkgs/development/libraries/itk/default.nix
index bfe10490fc7f..29e15e08f696 100644
--- a/pkgs/development/libraries/itk/default.nix
+++ b/pkgs/development/libraries/itk/default.nix
@@ -8,7 +8,12 @@ stdenv.mkDerivation rec {
     sha256 = "05z49sw612cbyiaghcsda0xylrkf06jh81ql79si5632w1hpgbd9";
   };
 
-  cmakeFlags = [ "-DBUILD_TESTING=OFF" "-DBUILD_EXAMPLES=OFF" ];
+  cmakeFlags = [
+    "-DBUILD_TESTING=OFF"
+    "-DBUILD_EXAMPLES=OFF"
+    "-DBUILD_SHARED_LIBS=ON"
+    "-DCMAKE_CXX_FLAGS=-fPIC"
+  ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/keybinder/default.nix b/pkgs/development/libraries/keybinder/default.nix
index 20e2cd2218ff..0cc875e2656f 100644
--- a/pkgs/development/libraries/keybinder/default.nix
+++ b/pkgs/development/libraries/keybinder/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, gnome_common
-, gtk_doc, gtk2, python, pygtk, pygobject, lua
+{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, gnome3, pygobject3, pygtk
+, gtk_doc, gtk2, python, pygobject, lua, libX11, libXext, libXrender, gobjectIntrospection
 }:
 
 stdenv.mkDerivation rec {
@@ -13,8 +13,8 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    autoconf automake libtool pkgconfig gnome_common gtk_doc gtk2
-    python pygtk pygobject lua
+    autoconf automake libtool pkgconfig gnome3.gnome_common gtk_doc gnome3.gtk3
+    python pygobject3 pygtk lua libX11 libXext libXrender gobjectIntrospection gtk2
   ];
 
   preConfigure = ''
diff --git a/pkgs/development/libraries/libav/default.nix b/pkgs/development/libraries/libav/default.nix
index c99059bf034f..04d51edf5310 100644
--- a/pkgs/development/libraries/libav/default.nix
+++ b/pkgs/development/libraries/libav/default.nix
@@ -26,8 +26,8 @@ with { inherit (stdenv.lib) optional optionals; };
 
 let
   result = {
-    libav_9   = libavFun  "9.11"  "1ad7vyxp0w8dw6ngc16fz0ngsjlgk6h8bpphghqia5sqkbl10ca3";
-    libav_0_8 = libavFun "0.8.10" "0sxmj4qsd3ljygvdjz7ly46nf7sqmaqka4hx65b1jdji12al1djc";
+    libav_9   = libavFun  "9.12"  "1wm0nf12c1p138y54jh71mvbpikrpk43zc9m2qhpjm9pgnagizk0";
+    libav_0_8 = libavFun "0.8.11" "0nhm0mzz2aj78sgmw9xf20a1mlgig78cv1nyhx4zrq7nvgqf8d2r";
   };
 
   libavFun = version : sha256 : stdenv.mkDerivation rec {
diff --git a/pkgs/development/libraries/libconfig/default.nix b/pkgs/development/libraries/libconfig/default.nix
index 70a882ff15c1..d6c238ff1793 100644
--- a/pkgs/development/libraries/libconfig/default.nix
+++ b/pkgs/development/libraries/libconfig/default.nix
@@ -14,5 +14,6 @@ stdenv.mkDerivation rec {
     description = "a simple library for processing structured configuration files";
     license = licenses.lgpl3;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/libgig/default.nix b/pkgs/development/libraries/libgig/default.nix
index 6129ef42f3dc..8975c4fa0743 100644
--- a/pkgs/development/libraries/libgig/default.nix
+++ b/pkgs/development/libraries/libgig/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     description = "Gigasampler file access library";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/libktorrent/default.nix b/pkgs/development/libraries/libktorrent/default.nix
index a452cb7609e1..db07775d45ed 100644
--- a/pkgs/development/libraries/libktorrent/default.nix
+++ b/pkgs/development/libraries/libktorrent/default.nix
@@ -2,8 +2,8 @@
 , phonon, libgcrypt }:
 
 let
-  mp_ = "2.1";
-  version = "1.${mp_}-2";
+  mp_ = "3.1";
+  version = "1.${mp_}";
   version4 = "4.${mp_}";
 in
 stdenv.mkDerivation rec {
@@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
   pname = "libktorrent";
 
   src = fetchurl {
-    url = "http://ktorrent.org/downloads/${version4}/${name}.tar.bz2";
-    sha256 = "1b4ibkba27ivvjsh5s93xwlcgzvvwsgl6mcd8g96d1al05n2ccw9";
+    url = "${meta.homepage}/downloads/${version4}/${name}.tar.bz2";
+    sha256 = "2fe11ccb4bf2028c3da11e52cde890f1b3a90560e548eac89a4f8e1558b09725";
   };
 
   nativeBuildInputs = [ cmake automoc4 gettext ];
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A BiTtorrent library used by KTorrent";
-    homepage = http://ktorrent.org;
+    homepage = http://ktorrent.pwsp.net;
     inherit (kdelibs.meta) platforms;
   };
 }
diff --git a/pkgs/development/libraries/liblscp/default.nix b/pkgs/development/libraries/liblscp/default.nix
index 33731e5d7557..a1cbf9250c49 100644
--- a/pkgs/development/libraries/liblscp/default.nix
+++ b/pkgs/development/libraries/liblscp/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     description = "LinuxSampler Control Protocol (LSCP) wrapper library";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/libpng/12.nix b/pkgs/development/libraries/libpng/12.nix
index 031e2aa1a914..094483da660a 100644
--- a/pkgs/development/libraries/libpng/12.nix
+++ b/pkgs/development/libraries/libpng/12.nix
@@ -3,11 +3,11 @@
 assert zlib != null;
 
 stdenv.mkDerivation rec {
-  name = "libpng-1.2.50";
+  name = "libpng-1.2.51";
 
   src = fetchurl {
     url = "mirror://sourceforge/libpng/${name}.tar.xz";
-    sha256 = "1rz8v3cvy1zzpagxn91lj8swb9vf75rz3yyi18v7zb4jihgzh927";
+    sha256 = "0jkdlmnvn72jwm94dp98pznm9fy7alvcr2zpfh2dgbr2n09vimy7";
   };
 
   propagatedBuildInputs = [ zlib ];
diff --git a/pkgs/development/libraries/libpng/15.nix b/pkgs/development/libraries/libpng/15.nix
index 8f62ef1e8dc9..153517986334 100644
--- a/pkgs/development/libraries/libpng/15.nix
+++ b/pkgs/development/libraries/libpng/15.nix
@@ -3,11 +3,11 @@
 assert zlib != null;
 
 stdenv.mkDerivation rec {
-  name = "libpng-1.5.15";
+  name = "libpng-1.5.18";
 
   src = fetchurl {
     url = "mirror://sourceforge/libpng/${name}.tar.xz";
-    sha256 = "1iaplghmv5qhd4dgwfymhp42sh27vz6s2107jk698xm57z2v9hwm";
+    sha256 = "119m71p60iq3yn2n8ckl4j4cxvbpddj6sgdpa6g05jzyg7vw54y0";
   };
 
   propagatedBuildInputs = [ zlib ];
diff --git a/pkgs/development/libraries/libpng/default.nix b/pkgs/development/libraries/libpng/default.nix
index c1655bf7f2bd..52aaeaf93a46 100644
--- a/pkgs/development/libraries/libpng/default.nix
+++ b/pkgs/development/libraries/libpng/default.nix
@@ -3,11 +3,11 @@
 assert zlib != null;
 
 let
-  version = "1.6.9";
-  sha256 = "0ji7488fp08b3xa6605zzghzpxawkhhg6jbqzrdw2y38zrvadqzx";
+  version = "1.6.10";
+  sha256 = "0mjsfxc18478y1jxrs3snmx7mvckmghvki9gfhmhl49n1vyz00s0";
   patch_src = fetchurl {
     url = "mirror://sourceforge/libpng-apng/libpng-${version}-apng.patch.gz";
-    sha256 = "0l61y6b03avyxrx8c72x8m73j3b8mj0wx80wdl6w82wgnr2fw4x1";
+    sha256 = "0512q27c26ajzqm2qzmmc7q1frj7cjylls2hxy3y3wg2r6ryizw8";
   };
   whenPatched = stdenv.lib.optionalString apngSupport;
 
diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix
index c34934400d01..d883f1da9caa 100644
--- a/pkgs/development/libraries/libvirt/default.nix
+++ b/pkgs/development/libraries/libvirt/default.nix
@@ -4,47 +4,57 @@
 , dnsmasq
 }:
 
-let version = "1.2.0"; in
+let version = "1.2.2"; in
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   name = "libvirt-${version}";
 
   src = fetchurl {
-    url = "http://libvirt.org/sources/libvirt-${version}.tar.gz";
-    sha256 = "1p9dn96j8qqp20lr0kvc7zyjjcpgsa9k41slyk2jmnv1g2p7ird8";
+    url = "http://libvirt.org/sources/${name}.tar.gz";
+    sha256 = "1hxvgh2fp2fk3wva7fnbz2pk6g5217wrmf9xwikiphn50zipg0x4";
   };
 
-  buildInputs =
-    [ pkgconfig libxml2 gnutls devicemapper perl python readline lvm2
-      utillinux udev libpciaccess gettext libtasn1 libgcrypt yajl makeWrapper
-      libcap_ng
-    ];
-
-  preConfigure =
-    ''
-      PATH=${iproute}/sbin:${iptables}/sbin:${ebtables}/sbin:${lvm2}/sbin:${udev}/sbin:${dnsmasq}/bin:$PATH
-      patchShebangs . # fixes /usr/bin/python references
-    '';
-
-  configureFlags = "--localstatedir=/var --sysconfdir=/etc --with-init-script=redhat --without-macvtap";
-
-  installFlags = "localstatedir=$(TMPDIR)/var sysconfdir=$(out)/etc";
-
-  postInstall =
-    ''
-      substituteInPlace $out/libexec/libvirt-guests.sh \
-        --replace "$out/bin" "${gettext}/bin"
-      wrapProgram $out/sbin/libvirtd \
-        --prefix PATH : ${iptables}/sbin:${iproute}/sbin:${pmutils}/bin
-    '';
+  buildInputs = [
+    pkgconfig libxml2 gnutls devicemapper perl python readline lvm2
+    utillinux udev libpciaccess gettext libtasn1 libgcrypt yajl makeWrapper
+    libcap_ng
+  ];
+
+  preConfigure = ''
+    PATH=${iproute}/sbin:${iptables}/sbin:${ebtables}/sbin:${lvm2}/sbin:${udev}/sbin:${dnsmasq}/bin:$PATH
+    patchShebangs . # fixes /usr/bin/python references
+  '';
+
+  configureFlags = [
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--with-init-script=redhat"
+    "--without-macvtap"
+  ];
+
+  installFlags = [
+    "localstatedir=$(TMPDIR)/var"
+    "sysconfdir=$(out)/etc"
+  ];
+
+  postInstall = ''
+    substituteInPlace $out/libexec/libvirt-guests.sh \
+      --replace "$out/bin" "${gettext}/bin"
+    wrapProgram $out/sbin/libvirtd \
+      --prefix PATH : ${iptables}/sbin:${iproute}/sbin:${pmutils}/bin
+  '';
 
   enableParallelBuilding = true;
+
   NIX_CFLAGS_COMPILE = "-fno-stack-protector";
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://libvirt.org/;
-    description = "A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes)";
-    license = "LGPLv2+";
-    platforms = stdenv.lib.platforms.linux;
+    description = ''
+      A toolkit to interact with the virtualization capabilities of recent
+      versions of Linux (and other OSes)
+    '';
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/pangomm/default.nix b/pkgs/development/libraries/pangomm/default.nix
index f71c52e670bf..ab598f47a52d 100644
--- a/pkgs/development/libraries/pangomm/default.nix
+++ b/pkgs/development/libraries/pangomm/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "C++ interface to the Pango text rendering library";
     homepage    = http://www.pango.org/;
-    license     = with licenses; [ lgpl2 lgpl21 ];
+    # TODO license     = with licenses; [ lgpl2 lgpl21 ];
     maintainers = with maintainers; [ lovek323 raskin ];
     platforms   = platforms.unix;
 
diff --git a/pkgs/development/libraries/ruby_ncursesw_sup/default.nix b/pkgs/development/libraries/ruby_ncursesw_sup/default.nix
index 67041ad06078..8d55bafeb20d 100644
--- a/pkgs/development/libraries/ruby_ncursesw_sup/default.nix
+++ b/pkgs/development/libraries/ruby_ncursesw_sup/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl, ncurses, ruby, rubygems }:
 
 stdenv.mkDerivation rec {
-  name = ''ncursesw-sup-afd962b9c06108ff0643e98593c5605314d76917'';
+  name = "ncursesw-sup-${version}";
+  version = "1.4.6";
 
   src = fetchurl {
-    url = "https://github.com/sup-heliotrope/ncursesw-ruby/archive/afd962b9c06108ff0643e98593c5605314d76917.tar.gz";
-    sha256 = "13i286p4bm8zqg9xh96a1dg7wkywj9m6975gbh3w43d3rmfc1h6a";
+    url = "https://github.com/sup-heliotrope/ncursesw-ruby/archive/v${version}.tar.gz";
+    sha256 = "1fzmj5kqh2aql7r7jys8cyf7mb78kz71yc4a6gh74h9s8pybyhh7";
   };
 
   meta = {
@@ -32,12 +33,12 @@ stdenv.mkDerivation rec {
     # For some reason, the installation phase doesn't work with the default
     # make install command run by gem (we'll fix it and do it ourselves later)
     gem install --no-verbose --install-dir "$out/${ruby.gemPath}" \
-        --bindir "$out/bin" --no-rdoc --no-ri ncursesw-sup-1.3.1.2.gem || true
+        --bindir "$out/bin" --no-rdoc --no-ri ncursesw-${version}.gem || true
 
     # Needed for ruby to recognise the gem
     cp ncursesw.gemspec "$out/${ruby.gemPath}/specifications"
 
-    cd "$out/${ruby.gemPath}/gems/ncursesw-sup-1.3.1.2"
+    cd "$out/${ruby.gemPath}/gems/ncursesw-${version}"
     mkdir src
     mv lib src
     sed -i "s/srcdir = ./srcdir = src/" Makefile
diff --git a/pkgs/development/libraries/serd/default.nix b/pkgs/development/libraries/serd/default.nix
index 63733a35b204..2fd5c9ad493d 100644
--- a/pkgs/development/libraries/serd/default.nix
+++ b/pkgs/development/libraries/serd/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A lightweight C library for RDF syntax which supports reading and writing Turtle and NTriples";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/sord/default.nix b/pkgs/development/libraries/sord/default.nix
index 0f2326420cbb..8f122cb699ac 100644
--- a/pkgs/development/libraries/sord/default.nix
+++ b/pkgs/development/libraries/sord/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
     description = "A lightweight C library for storing RDF data in memory";
     license = licenses.mit;
     maintainers = [ maintainers.goibhniu ];
-
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/telepathy/farstream/default.nix b/pkgs/development/libraries/telepathy/farstream/default.nix
index e41bd9fdb02c..a5185689ee0a 100644
--- a/pkgs/development/libraries/telepathy/farstream/default.nix
+++ b/pkgs/development/libraries/telepathy/farstream/default.nix
@@ -2,12 +2,12 @@
 , pkgconfig, libxslt, python, gstreamer, gst_python, pygobject }:
 
 stdenv.mkDerivation rec {
-  name = "${pname}-0.6.0";
+  name = "${pname}-0.6.1";
   pname = "telepathy-farstream";
 
   src = fetchurl {
     url = "http://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
-    sha256 = "04v414jij2ba71krk7vh4avsz07sfp5w38dmvjwig5isdygy0905";
+    sha256 = "0ia8nldxxan1cvplr62aicjhfcrm27s3qyk0x46c8q0fmqvnzlm3";
   };
 
   buildInputs = [ gst_plugins_base gst_python pygobject ];
diff --git a/pkgs/development/libraries/thrift/default.nix b/pkgs/development/libraries/thrift/default.nix
index 2b555db32821..e1129d25ef4e 100644
--- a/pkgs/development/libraries/thrift/default.nix
+++ b/pkgs/development/libraries/thrift/default.nix
@@ -1,5 +1,6 @@
-{ stdenv, fetchgit, boost, zlib, libevent, openssl, python, automake, autoconf,
-libtool, pkgconfig, bison, flex }:
+{ stdenv, fetchgit, boost, zlib, libevent, openssl, python, automake, autoconf
+, libtool, pkgconfig, bison, flex
+}:
 
 stdenv.mkDerivation {
   name = "thrift-0.9.1";
@@ -13,14 +14,23 @@ stdenv.mkDerivation {
   };
 
   enableParallelBuilding = true;
-  buildInputs = [ boost zlib libevent openssl python automake autoconf libtool
-      pkgconfig bison flex ];
+
+  # Workaround to make the python wrapper not drop this package:
+  # pythonFull.override { extraLibs = [ thrift ]; }
+  pythonPath = [];
+
+  buildInputs = [
+    boost zlib libevent openssl python automake autoconf libtool pkgconfig
+    bison flex
+  ];
 
   preConfigure = "sh bootstrap.sh; export PY_PREFIX=$out";
 
-  meta = {
-    homepage = http://thrift.apache.org/;
-    license = "ASL2.0";
+  meta = with stdenv.lib; {
     description = "Library for scalable cross-language services";
+    homepage = http://thrift.apache.org/;
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
   };
 }
diff --git a/pkgs/development/mobile/titaniumenv/default.nix b/pkgs/development/mobile/titaniumenv/default.nix
index 6c80cdae3e26..18b76bc3bbdf 100644
--- a/pkgs/development/mobile/titaniumenv/default.nix
+++ b/pkgs/development/mobile/titaniumenv/default.nix
@@ -29,7 +29,7 @@ rec {
   
   titaniumsdk = let
     titaniumSdkFile = if tiVersion == "3.1.4.GA" then ./titaniumsdk-3.1.nix
-      else if tiVersion == "3.2.1.GA" then ./titaniumsdk-3.2.nix
+      else if tiVersion == "3.2.2.GA" then ./titaniumsdk-3.2.nix
       else throw "Titanium version not supported: "+tiVersion;
     in
     import titaniumSdkFile {
diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix
index c9f32f8bb6b1..b81fcd41bcb9 100644
--- a/pkgs/development/mobile/titaniumenv/examples/default.nix
+++ b/pkgs/development/mobile/titaniumenv/examples/default.nix
@@ -1,7 +1,7 @@
 { nixpkgs ? <nixpkgs>
 , systems ? [ "x86_64-linux" "x86_64-darwin" ]
 , xcodeVersion ? "5.0"
-, tiVersion ? "3.2.1.GA"
+, tiVersion ? "3.2.2.GA"
 , rename ? false
 , newBundleId ? "com.example.kitchensink", iosMobileProvisioningProfile ? null, iosCertificate ? null, iosCertificateName ? "Example", iosCertificatePassword ? ""
 }:
diff --git a/pkgs/development/mobile/titaniumenv/titaniumsdk-3.2.nix b/pkgs/development/mobile/titaniumenv/titaniumsdk-3.2.nix
index 96428f4a99bc..1f0d53e99fe5 100644
--- a/pkgs/development/mobile/titaniumenv/titaniumsdk-3.2.nix
+++ b/pkgs/development/mobile/titaniumenv/titaniumsdk-3.2.nix
@@ -1,14 +1,14 @@
 {stdenv, fetchurl, unzip, makeWrapper, python, jdk}:
 
 stdenv.mkDerivation {
-  name = "mobilesdk-3.2.1.v20140206170116";
+  name = "mobilesdk-3.2.2.v20140305122111";
   src = if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then fetchurl {
-    url = http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_2_X/mobilesdk-3.2.1.v20140206170116-linux.zip;
-    sha1 = "89955d31d48875aca64dd0131baac5ed82abcfc9";
+    url = http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_2_X/mobilesdk-3.2.2.v20140305122111-linux.zip;
+    sha1 = "12dc1bfe8dd73db0650a235492f5f50c7b816d69";
   }
   else if stdenv.system == "x86_64-darwin" then fetchurl {
-    url = http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_2_X/mobilesdk-3.2.1.v20140206170116-osx.zip;
-    sha1 = "06d9338c619b787be83baf3c0d93748b0e430182";
+    url = http://builds.appcelerator.com.s3.amazonaws.com/mobile/3_2_X/mobilesdk-3.2.2.v20140305122111-osx.zip;
+    sha1 = "9875b59faf0ab92e8996b58476466405ed60f6e2";
   }
   else throw "Platform: ${stdenv.system} not supported!";
   
@@ -28,8 +28,8 @@ stdenv.mkDerivation {
    
     # Rename ugly version number
     cd mobilesdk/*
-    mv 3.2.1.v20140206170116 3.2.1.GA
-    cd 3.2.1.GA
+    mv 3.2.2.v20140305122111 3.2.2.GA
+    cd 3.2.2.GA
     
     # Zip files do not support timestamps lower than 1980. We have to apply a few work-arounds to cope with that
     # Yes, I know it's nasty :-)
diff --git a/pkgs/development/ocaml-modules/batteries/default.nix b/pkgs/development/ocaml-modules/batteries/default.nix
index 3ecf2ae46994..ac7b8adfd8ca 100644
--- a/pkgs/development/ocaml-modules/batteries/default.nix
+++ b/pkgs/development/ocaml-modules/batteries/default.nix
@@ -1,32 +1,18 @@
 {stdenv, fetchurl, ocaml, findlib, camomile, ounit}:
 
-let
-  ocaml_version = (builtins.parseDrvName ocaml.name).version;
-in
-
 stdenv.mkDerivation {
-  name = "ocaml-batteries-1.4.1";
+  name = "ocaml-batteries-2.2.0";
 
   src = fetchurl {
-    url = http://forge.ocamlcore.org/frs/download.php/684/batteries-1.4.1.tar.gz;
-    sha256 = "bdca7deba290d83c66c0a5001da52b2d7f2af58b7b7e7d9303d4363aaafe9c30";
+    url = http://forge.ocamlcore.org/frs/download.php/1363/batteries-2.2.tar.gz;
+    sha256 = "0z4wg357fzz7cnarjsrrdnpmxw8mxcj10fp67dm3bnn0l3zkjwbs";
   };
 
   buildInputs = [ocaml findlib camomile ounit];
 
-  patchPhase = ''
-    substituteInPlace Makefile --replace '/bin/echo -n' echo
-  '';
-
   configurePhase = "true"; 	# Skip configure
 
-  preInstall = ''
-    mkdir -p "$out/lib/ocaml/${ocaml_version}/site-lib"
-  '';
-
-  doCheck = true;
-
-  checkTarget = "test";
+  createFindlibDestdir = true;
 
   meta = {
     homepage = http://batteries.forge.ocamlcore.org/;
@@ -36,7 +22,7 @@ stdenv.mkDerivation {
       and comprehensive development platform for the OCaml programming
       language.
     '';
-    license = "LGPL";
+    license = stdenv.lib.licenses.lgpl21;
     platforms = ocaml.meta.platforms;
     maintainers = [
       stdenv.lib.maintainers.z77z
diff --git a/pkgs/development/ocaml-modules/extlib/default.nix b/pkgs/development/ocaml-modules/extlib/default.nix
index 41620b9424f8..8b977dd7c525 100644
--- a/pkgs/development/ocaml-modules/extlib/default.nix
+++ b/pkgs/development/ocaml-modules/extlib/default.nix
@@ -1,21 +1,21 @@
 {stdenv, fetchurl, ocaml, findlib}:
 
 stdenv.mkDerivation {
-  name = "ocaml-extlib-1.5.3";
+  name = "ocaml-extlib-1.6.1";
 
   src = fetchurl {
-    url = http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz;
-    sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021";
+    url = http://ocaml-extlib.googlecode.com/files/extlib-1.6.1.tar.gz;
+    sha256 = "1jmfj2w0f3ap0swz8k3qqmrl6x2y4gkmg88vv024xnmliiiv7m48";
   };
 
   buildInputs = [ocaml findlib];
 
   createFindlibDestdir = true;
 
-  buildPhase = ''
-    make all
-    make opt
-  '';
+  configurePhase = "true";      # Skip configure
+  # De facto, option minimal=1 seems to be the default.  See the README.
+  buildPhase     = "make minimal=1 build";
+  installPhase   = "make minimal=1 install";
 
   meta = {
     homepage = http://code.google.com/p/ocaml-extlib/;
diff --git a/pkgs/development/ocaml-modules/odn/default.nix b/pkgs/development/ocaml-modules/odn/default.nix
new file mode 100644
index 000000000000..5f72afcf7666
--- /dev/null
+++ b/pkgs/development/ocaml-modules/odn/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, ocaml, findlib, ocaml_typeconv, ounit}:
+
+stdenv.mkDerivation {
+  name = "ocaml-data-notation-0.0.11";
+
+  src = fetchurl {
+    url = https://forge.ocamlcore.org/frs/download.php/1310/ocaml-data-notation-0.0.11.tar.gz;
+    sha256 = "09a8zdyifpc2nl4hdvg9206142y31cq95ajgij011s1qcg3z93lj";
+  };
+
+  buildInputs = [ocaml findlib ocaml_typeconv ounit];
+
+  createFindlibDestdir = true;
+
+  configurePhase = "ocaml setup.ml -configure";
+  buildPhase     = "ocaml setup.ml -build";
+  installPhase   = "ocaml setup.ml -install";
+
+  meta = {
+    description = "Store data using OCaml notation";
+    homepage = https://forge.ocamlcore.org/projects/odn/;
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = ocaml.meta.platforms;
+    maintainers = with stdenv.lib.maintainers; [
+      z77z
+    ];
+  };
+}
diff --git a/pkgs/development/ocaml-modules/react/default.nix b/pkgs/development/ocaml-modules/react/default.nix
index 02420204dbfa..a69ef9d446c2 100644
--- a/pkgs/development/ocaml-modules/react/default.nix
+++ b/pkgs/development/ocaml-modules/react/default.nix
@@ -1,34 +1,25 @@
-{stdenv, fetchurl, ocaml}:
-
-let
-  ocaml_version = (builtins.parseDrvName ocaml.name).version;
-  version = "0.9.2";
-in
+{stdenv, fetchurl, ocaml, findlib, ocaml_oasis}:
 
 stdenv.mkDerivation {
-  name = "ocaml-react-${version}";
+  name = "ocaml-react-0.9.4";
 
   src = fetchurl {
-    url = "http://erratique.ch/software/react/releases/react-${version}.tbz";
-    sha256 = "0fiaxzfxv8pc82d31jz85zryz06k84is0l3sn5g0di5mpc5falxr";
+    url = http://github.com/dbuenzli/react/archive/v0.9.4.tar.gz;
+    sha256 = "16k0kx93kd45s7pigkzvirfsbr22xhby0y88y86p473qxzc6ngrm";
   };
 
-  buildInputs = [ocaml];
+  buildInputs = [ocaml findlib ocaml_oasis];
+
+  createFindlibDestdir = true;
 
-  buildCommand = ''
-    export INSTALLDIR=$out/lib/ocaml/${ocaml_version}/site-lib/react
-    tar xjf $src
-    cd react-*
-    substituteInPlace src/META --replace '+react' $INSTALLDIR
-    chmod +x build
-    ./build 
-    ./build install
-  '';
+  configurePhase = "oasis setup && ocaml setup.ml -configure --prefix $out";
+  buildPhase     = "ocaml setup.ml -build";
+  installPhase   = "ocaml setup.ml -install";
 
   meta = {
     homepage = http://erratique.ch/software/react;
     description = "Applicative events and signals for OCaml";
-    license = "BSD";
+    license = stdenv.lib.licenses.bsd3;
     platforms = ocaml.meta.platforms;
     maintainers = [
       stdenv.lib.maintainers.z77z
diff --git a/pkgs/development/ocaml-modules/typeconv/3.0.5.nix b/pkgs/development/ocaml-modules/typeconv/3.0.5.nix
new file mode 100644
index 000000000000..299e7729b91e
--- /dev/null
+++ b/pkgs/development/ocaml-modules/typeconv/3.0.5.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, ocaml, findlib}:
+
+# note: works only with ocaml >3.12
+
+stdenv.mkDerivation {
+  name = "ocaml-typeconv-3.0.5";
+
+  src = fetchurl {
+    url = "http://forge.ocamlcore.org/frs/download.php/821/type_conv-3.0.5.tar.gz";
+    sha256 = "90ac6c401a600a23012a3f513def6f67d4979b11bd551f4d0af78f0f0b479198";
+  };
+
+  buildInputs = [ocaml findlib ]; 
+
+  createFindlibDestdir = true;
+
+  meta = {
+    homepage = "http://forge.ocamlcore.org/projects/type-conv/";
+    description = "Support library for OCaml preprocessor type conversions";
+    license = "LGPL";
+    platforms = ocaml.meta.platforms;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/typeconv/default.nix b/pkgs/development/ocaml-modules/typeconv/default.nix
index 299e7729b91e..33e30f5d5c8e 100644
--- a/pkgs/development/ocaml-modules/typeconv/default.nix
+++ b/pkgs/development/ocaml-modules/typeconv/default.nix
@@ -1,13 +1,11 @@
 {stdenv, fetchurl, ocaml, findlib}:
 
-# note: works only with ocaml >3.12
-
 stdenv.mkDerivation {
-  name = "ocaml-typeconv-3.0.5";
+  name = "ocaml-typeconv-109.60.01";
 
   src = fetchurl {
-    url = "http://forge.ocamlcore.org/frs/download.php/821/type_conv-3.0.5.tar.gz";
-    sha256 = "90ac6c401a600a23012a3f513def6f67d4979b11bd551f4d0af78f0f0b479198";
+    url = https://github.com/janestreet/type_conv/archive/109.60.01.tar.gz;
+    sha256 = "0lpxri68glgq1z2pp02rp45cb909xywbff8d4idljrf6fzzil2zx";
   };
 
   buildInputs = [ocaml findlib ]; 
@@ -17,7 +15,8 @@ stdenv.mkDerivation {
   meta = {
     homepage = "http://forge.ocamlcore.org/projects/type-conv/";
     description = "Support library for OCaml preprocessor type conversions";
-    license = "LGPL";
+    license = stdenv.lib.licenses.lgpl21;
     platforms = ocaml.meta.platforms;
+    maintainers = with stdenv.lib.maintainers; [ z77z ];
   };
 }
diff --git a/pkgs/development/python-modules/distutils-cfg/default.nix b/pkgs/development/python-modules/distutils-cfg/default.nix
index 190c663b471a..204f4de5456a 100644
--- a/pkgs/development/python-modules/distutils-cfg/default.nix
+++ b/pkgs/development/python-modules/distutils-cfg/default.nix
@@ -1,10 +1,11 @@
 # global distutils configuration, see http://docs.python.org/2/install/index.html#distutils-configuration-files
 
-{ stdenv, python, writeText, extraCfg ? "" }:
+{ stdenv, python, writeText, extraCfg ? "", overrideCfg ? "" }:
 
 
 let
-  distutilsCfg = writeText "distutils.cfg" ''
+  distutilsCfg = writeText "distutils.cfg" (
+  if overrideCfg != "" then overrideCfg else ''
     [easy_install]
 
     # don't allow network connections during build to ensure purity
@@ -14,7 +15,7 @@ let
     zip_ok = 0
 
     ${extraCfg}
-  '';
+  '');
 in stdenv.mkDerivation {
   name = "${python.libPrefix}-distutils.cfg";
 
diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix
index 067a1cdf2e27..d0234c29ed9a 100644
--- a/pkgs/development/python-modules/generic/default.nix
+++ b/pkgs/development/python-modules/generic/default.nix
@@ -3,7 +3,7 @@
    (http://pypi.python.org/pypi/setuptools/), which represents a large
    number of Python packages nowadays.  */
 
-{ python, setuptools, wrapPython, lib, recursivePthLoader, distutils-cfg }:
+{ python, setuptools, unzip, wrapPython, lib, recursivePthLoader, distutils-cfg }:
 
 { name
 
@@ -38,6 +38,12 @@
 
 , meta ? {}
 
+# Execute before shell hook
+, preShellHook ? ""
+
+# Execute after shell hook
+, postShellHook ? ""
+
 , ... } @ attrs:
 
 # Keep extra attributes from `attrs`, e.g., `patchPhase', etc.
@@ -46,7 +52,11 @@ python.stdenv.mkDerivation (attrs // {
 
   name = namePrefix + name;
 
-  buildInputs = [ python wrapPython setuptools (distutils-cfg.override { extraCfg = distutilsExtraCfg; }) ] ++ buildInputs ++ pythonPath;
+  buildInputs = [
+    python wrapPython setuptools
+    (distutils-cfg.override { extraCfg = distutilsExtraCfg; })
+  ] ++ buildInputs ++ pythonPath
+    ++ (lib.optional (lib.hasSuffix "zip" attrs.src.name or "") unzip);
 
   propagatedBuildInputs = propagatedBuildInputs ++ [ recursivePthLoader ];
 
@@ -146,6 +156,16 @@ python.stdenv.mkDerivation (attrs // {
       done
     '';
 
+  shellHook = attrs.shellHook or ''
+    mkdir -p /tmp/$name/lib/${python.libPrefix}/site-packages
+    ${preShellHook}
+    export PATH="/tmp/$name/bin:$PATH"
+    export PYTHONPATH="/tmp/$name/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+    python setup.py develop --prefix /tmp/$name
+    ${postShellHook}
+    return
+  '';
+
   meta = with lib.maintainers; {
     # default to python's platforms
     platforms = python.meta.platforms;
diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix
new file mode 100644
index 000000000000..5194684261c9
--- /dev/null
+++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "jenkins";
+  version = "1.550";
+
+  src = fetchurl {
+    url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war";
+    sha256 = "1ziimbfs9kylga0xmxlfsfcc7qsirs5bnx00pa99m2l5sz2ki793";
+  };
+  meta = {
+    description = "An extendable open source continuous integration server.";
+    homepage = http://jenkins-ci.org;
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.coconnor ];
+  };
+
+  buildCommand = "ln -s $src $out";
+}
diff --git a/pkgs/development/tools/haskell/HaRe/default.nix b/pkgs/development/tools/haskell/HaRe/default.nix
index babfa131f105..6c128c25073e 100644
--- a/pkgs/development/tools/haskell/HaRe/default.nix
+++ b/pkgs/development/tools/haskell/HaRe/default.nix
@@ -7,8 +7,8 @@
 
 cabal.mkDerivation (self: {
   pname = "HaRe";
-  version = "0.7.1.3";
-  sha256 = "1x900mywsl5rmn4rv2ss1nnrb6y5zs422ivn0iqb4ijd8a2j4lq5";
+  version = "0.7.1.4";
+  sha256 = "000vdvm38a3d3jpjg3cgsfl11w8jzvl0haqz78fy3zblqlndxy1m";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
@@ -24,7 +24,7 @@ cabal.mkDerivation (self: {
   ];
   jailbreak = true;
   meta = {
-    homepage = "http://www.cs.kent.ac.uk/projects/refactor-fp";
+    homepage = "https://github.com/RefactoringTools/HaRe/wiki";
     description = "the Haskell Refactorer";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/tools/haskell/hlint/default.nix b/pkgs/development/tools/haskell/hlint/default.nix
index 860148cf244d..72ba1ba6b87b 100644
--- a/pkgs/development/tools/haskell/hlint/default.nix
+++ b/pkgs/development/tools/haskell/hlint/default.nix
@@ -1,15 +1,16 @@
-{ cabal, cpphs, filepath, haskellSrcExts, hscolour, transformers
-, uniplate
+{ cabal, cmdargs, cpphs, filepath, haskellSrcExts, hscolour
+, transformers, uniplate
 }:
 
 cabal.mkDerivation (self: {
   pname = "hlint";
-  version = "1.8.57";
-  sha256 = "062fpyjd3mha9faxdpg763sigafl4mvl8qqw3z31zkafz361qzm4";
+  version = "1.8.59";
+  sha256 = "14yn63zbbqwvxlis0kwga4mrz6qjr8kq1cq7f0rcilgqgh1dkwh8";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    cpphs filepath haskellSrcExts hscolour transformers uniplate
+    cmdargs cpphs filepath haskellSrcExts hscolour transformers
+    uniplate
   ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/tools/haskell/keter/default.nix b/pkgs/development/tools/haskell/keter/default.nix
index 53e2c5a74194..b8cf2466b10a 100644
--- a/pkgs/development/tools/haskell/keter/default.nix
+++ b/pkgs/development/tools/haskell/keter/default.nix
@@ -10,8 +10,8 @@
 
 cabal.mkDerivation (self: {
   pname = "keter";
-  version = "1.1.0.1";
-  sha256 = "04hvwfs1dskaxl1fw29lf52389hy1yr3hwd05bl294zgfh995i0s";
+  version = "1.2.0";
+  sha256 = "06iz01ci1mcxjqs7dknxgjlkl783sdf680b54schxxirg268cxh3";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/tools/literate-programming/noweb/default.nix b/pkgs/development/tools/literate-programming/noweb/default.nix
index c173010928dc..291bc29e1b70 100644
--- a/pkgs/development/tools/literate-programming/noweb/default.nix
+++ b/pkgs/development/tools/literate-programming/noweb/default.nix
@@ -9,13 +9,15 @@ stdenv.mkDerivation {
     sha256 = "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9";
   };
   preBuild = ''
+    ensureDir $out/lib/noweb
     cd src
-    makeFlags="BIN=$out/bin LIB=$out/lib MAN=$out/share/man TEXINPUTS=$out/share/texmf/tex/latex"
+    makeFlags="BIN=$out/bin LIB=$out/lib/noweb MAN=$out/share/man TEXINPUTS=$out/share/texmf/tex/latex"
   '';
   preInstall=''mkdir -p $out/share/texmf/tex/latex'';
   postInstall= ''
     substituteInPlace $out/bin/cpif --replace "PATH=/bin:/usr/bin" ""
-    for f in $out/bin/{noweb,nountangle,noroots,noroff,noindex} $out/lib/*; do
+    for f in $out/bin/{noweb,nountangle,noroots,noroff,noindex} \
+             $out/lib/noweb/{toroff,btdefn,totex,pipedoc,noidx,unmarkup,toascii,tohtml,emptydefn}; do
       substituteInPlace $f --replace "nawk" "${gawk}/bin/awk"
     done
   '';
diff --git a/pkgs/development/tools/misc/lttv/default.nix b/pkgs/development/tools/misc/lttv/default.nix
index 5cf8b6649418..0096cbdbabf5 100644
--- a/pkgs/development/tools/misc/lttv/default.nix
+++ b/pkgs/development/tools/misc/lttv/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     homepage = http://lttng.org/;
     # liblttvtraceread (ltt/ directory) is distributed under the GNU LGPL v2.1.
     # The rest of the LTTV package is distributed under the GNU GPL v2.
-    license = with licenses; [ gpl2 lgpl21 ];
+    # TODO license = with licenses; [ gpl2 lgpl21 ];
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
   };
diff --git a/pkgs/development/tools/ocaml/oasis/default.nix b/pkgs/development/tools/ocaml/oasis/default.nix
new file mode 100644
index 000000000000..3ab935705a2d
--- /dev/null
+++ b/pkgs/development/tools/ocaml/oasis/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, ocaml, findlib, ocaml_data_notation, ocaml_typeconv,
+ ocamlmod, ocamlify, ounit, expect}:
+
+stdenv.mkDerivation {
+  name = "ocaml-oasis-0.4.1";
+
+  src = fetchurl {
+    url = http://forge.ocamlcore.org/frs/download.php/1355/oasis-0.4.1.tar.gz;
+    sha256 = "1lsnw9f1jh6106kphxg40qp0sia6cbkbb9ahs5y6ifnfkmllkjhj";
+  };
+
+  createFindlibDestdir = true;
+
+  buildInputs =
+    [
+      ocaml findlib ocaml_data_notation ocaml_typeconv ocamlmod ocamlify ounit
+    ];
+
+  configurePhase = "ocaml setup.ml -configure --prefix $out";
+  buildPhase     = "ocaml setup.ml -build";
+  installPhase   = "ocaml setup.ml -install";
+
+  meta = {
+    homepage = http://oasis.forge.ocamlcore.org/;
+    description = "Configure, build and install system for OCaml projects";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = ocaml.meta.platforms;
+    maintainers = with stdenv.lib.maintainers; [
+      z77z
+    ];
+  };
+}
diff --git a/pkgs/development/tools/ocaml/ocamlify/default.nix b/pkgs/development/tools/ocaml/ocamlify/default.nix
new file mode 100644
index 000000000000..88b7451e0f00
--- /dev/null
+++ b/pkgs/development/tools/ocaml/ocamlify/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, ocaml, findlib, ounit}:
+
+stdenv.mkDerivation {
+  name = "ocamlify-0.0.2";
+
+  src = fetchurl {
+    url = http://forge.ocamlcore.org/frs/download.php/1209/ocamlify-0.0.2.tar.gz;
+    sha256 = "1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii";
+  };
+
+  buildInputs = [ocaml findlib ounit];
+
+  configurePhase = "ocaml setup.ml -configure --prefix $out";
+  buildPhase     = "ocaml setup.ml -build";
+  installPhase   = "ocaml setup.ml -install";
+
+  meta = {
+    homepage = http://forge.ocamlcore.org/projects/ocamlmod/ocamlmod;
+    description = "Generate OCaml modules from source files";
+    platforms = ocaml.meta.platforms;
+    license = stdenv.lib.licenses.lgpl21;
+    maintainers = with stdenv.lib.maintainers; [
+      z77z
+    ];
+  };
+}
diff --git a/pkgs/development/tools/ocaml/ocamlmod/default.nix b/pkgs/development/tools/ocaml/ocamlmod/default.nix
new file mode 100644
index 000000000000..d72df18f8992
--- /dev/null
+++ b/pkgs/development/tools/ocaml/ocamlmod/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchurl, ocaml, findlib, ounit}:
+
+stdenv.mkDerivation {
+  name = "ocamlmod-0.0.7";
+
+  src = fetchurl {
+    url = http://forge.ocamlcore.org/frs/download.php/1350/ocamlmod-0.0.7.tar.gz;
+    sha256 = "11kg7wh0gy492ma5c6bcjh6frv1a9lh9f26hiys2i0d1ky8s0ad3";
+  };
+
+  buildInputs = [ocaml findlib ounit];
+
+  configurePhase = "ocaml setup.ml -configure --prefix $out";
+  buildPhase     = "ocaml setup.ml -build";
+  installPhase   = "ocaml setup.ml -install";
+
+  meta = {
+    homepage = http://forge.ocamlcore.org/projects/ocamlmod/ocamlmod;
+    description = "Generate OCaml modules from source files";
+    platforms = ocaml.meta.platforms;
+    maintainers = with stdenv.lib.maintainers; [
+      z77z
+    ];
+  };
+}
diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix
index bbe213782485..90f7647aa05f 100644
--- a/pkgs/development/tools/selenium/chromedriver/default.nix
+++ b/pkgs/development/tools/selenium/chromedriver/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     description = "A WebDriver server for running Selenium tests on Chrome";
     license = licenses.bsd3;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/games/planetaryannihilation/default.nix b/pkgs/games/planetaryannihilation/default.nix
new file mode 100755
index 000000000000..009d07d4456c
--- /dev/null
+++ b/pkgs/games/planetaryannihilation/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, config, fetchurl, patchelf, makeWrapper, xlibs, gtk, glib, udev, alsaLib, atk
+, nspr, fontconfig, cairo, pango, nss, freetype, gnome3, gdk_pixbuf, curl, systemd, xorg }:
+
+# TODO: use dynamic attributes once Nix 1.7 is out
+assert ((config.planetary_annihilation or null).url or null) != null;
+assert ((config.planetary_annihilation or null).sha256 or null) != null;
+
+/* to setup:
+ $ cat ~/.nixpkgs/config.nix
+ {
+  planetary_annihilation = {
+    url = "file:///home/user/PA_Linux_62857.tar.bz2";
+    sha256 = "0imi3k5144dsn3ka9khx3dj76klkw46ga7m6rddqjk4yslwabh3k";
+  };
+}
+*/
+
+stdenv.mkDerivation {
+  name = "planetary-annihalation";
+
+  src = fetchurl {
+    inherit (config.planetary_annihilation) url sha256;
+  };
+
+  buildInputs = [ patchelf makeWrapper ];
+ 
+  installPhase = ''
+    mkdir -p $out/{bin,lib}
+
+    cp -R * $out/
+    mv $out/*.so $out/lib
+    rm $out/libstdc++.so.6
+    ln -s $out/PA $out/bin/PA
+
+    ln -s ${systemd}/lib/libudev.so.1 $out/lib/libudev.so.0
+
+    patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" "$out/PA"
+    patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.gcc.gcc xlibs.libXdamage xorg.libXfixes gtk glib stdenv.glibc "$out" xlibs.libXext pango udev xlibs.libX11 xlibs.libXcomposite alsaLib atk nspr fontconfig cairo pango nss freetype gnome3.gconf gdk_pixbuf xlibs.libXrender ]}:{stdenv.gcc.gcc}/lib64:${stdenv.glibc}/lib64" "$out/host/CoherentUI_Host.bin" 
+
+    wrapProgram $out/PA --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.gcc.gcc stdenv.glibc xlibs.libX11 xlibs.libXcursor gtk glib curl "$out" ]}:${stdenv.gcc.gcc}/lib64:${stdenv.glibc}/lib64"
+
+    for f in $out/lib/*; do
+      patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ stdenv.gcc.gcc curl xlibs.libX11 stdenv.glibc xlibs.libXcursor "$out" ]}:${stdenv.gcc.gcc}/lib64:${stdenv.glibc}/lib64" $f
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.uberent.com/pa/;
+    description = "next-generation RTS that takes the genre to a planetary scale";
+    license = "unfree";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.iElectric ];
+  };
+}
diff --git a/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix b/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix
index 88807ab6deaa..1bd4d5f35b4a 100644
--- a/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix
+++ b/pkgs/misc/themes/gtk2/oxygen-gtk/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = https://projects.kde.org/projects/playground/artwork/oxygen-gtk;
     license = licenses.lgpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 40a0d7af4968..f410f25e8cb7 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -109,10 +109,13 @@ in rec
   };
 
   YouCompleteMe = stdenv.mkDerivation {
-    # REGION AUTO UPDATE: { name="youcompleteme"; type="git"; url="git://github.com/Valloric/YouCompleteMe"; }
-    src = (fetchurl { url = "http://mawercer.de/~nix/repos/youcompleteme-git-97306.tar.bz2"; sha256 = "b9b892f5a723370c2034491dc72a4ca722c6cf1e5de4d60501141bba151bc719"; });
-    name = "youcompleteme-git-97306";
-    # END
+    src = fetchgit {
+      url = "https://github.com/Valloric/YouCompleteMe.git";
+      rev = "ee12530df0574e18289d6daf25ff72bd3c6e94f5";
+      sha256 = "1z93l2v0s078h632jrlhxzs9pg8phnx60qlrrhb3l2nbfk047rgx";
+    };
+
+    name = "youcompleteme-git-ee12530df0";
     buildInputs = [ python cmake ];
 
     configurePhase = ":";
diff --git a/pkgs/os-specific/darwin/otool/default.nix b/pkgs/os-specific/darwin/otool/default.nix
index 671e51542d06..e0793664a9c8 100644
--- a/pkgs/os-specific/darwin/otool/default.nix
+++ b/pkgs/os-specific/darwin/otool/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
   meta = with stdenv.lib; {
     description = "Object file displaying tool";
     homepage    = https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/otool.1.html;
-    license     = with licenses; [ apsl20 gpl2Plus ];
+    # TODO license     = with licenses; [ apsl20 gpl2Plus ];
     maintainers = with maintainers; [ lovek323 ];
     platforms   = platforms.darwin;
 
diff --git a/pkgs/os-specific/linux/acpid/default.nix b/pkgs/os-specific/linux/acpid/default.nix
index a0ae59a5a5bb..c9d45835cfd0 100644
--- a/pkgs/os-specific/linux/acpid/default.nix
+++ b/pkgs/os-specific/linux/acpid/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "acpid-2.0.21";
+  name = "acpid-2.0.22";
 
   src = fetchurl {
     url = "mirror://sourceforge/acpid2/${name}.tar.xz";
-    sha256 = "0vv3zz8p3wxhlp35aqgqvzn6lda595wzn7php3k47jwci1cpxrn4";
+    sha256 = "0cdbcy5xjdcyp2x6hzgpv6a9vg9bbxmypmfvv1qzgj43897la49x";
   };
 
   preBuild = ''
diff --git a/pkgs/os-specific/linux/alsa-utils/default.nix b/pkgs/os-specific/linux/alsa-utils/default.nix
index 484ecd06bb0b..6167696f336c 100644
--- a/pkgs/os-specific/linux/alsa-utils/default.nix
+++ b/pkgs/os-specific/linux/alsa-utils/default.nix
@@ -1,12 +1,12 @@
 {stdenv, fetchurl, alsaLib, gettext, ncurses, libsamplerate}:
 
 stdenv.mkDerivation rec {
-  name = "alsa-utils-1.0.27";
+  name = "alsa-utils-1.0.27.2";
 
   src = fetchurl {
     # url = "ftp://ftp.alsa-project.org/pub/utils/${name}.tar.bz2";
     url = "http://alsa.cybermirror.org/utils/${name}.tar.bz2";
-    sha256 = "1vssljbdzf0psqhhd7w9m9mzb0sl2kgx9fagkja25sqw6ivwsxkg";
+    sha256 = "1sjjngnq50jv5ilwsb4zys6smifni3bd6fn28gbnhfrg14wsrgq2";
   };
 
   buildInputs = [ alsaLib ncurses libsamplerate ];
@@ -16,12 +16,6 @@ stdenv.mkDerivation rec {
 
   installFlags = "ASOUND_STATE_DIR=$(TMPDIR)/dummy";
 
-  preConfigure =
-    ''
-      # Ensure that ‘90-alsa-restore.rules.in’ gets rebuilt.
-      rm alsactl/90-alsa-restore.rules
-    '';
-
   meta = {
     homepage = http://www.alsa-project.org/;
     description = "ALSA, the Advanced Linux Sound Architecture utils";
diff --git a/pkgs/os-specific/linux/checksec/default.nix b/pkgs/os-specific/linux/checksec/default.nix
index 0f3b87361f83..4701d774dfdc 100644
--- a/pkgs/os-specific/linux/checksec/default.nix
+++ b/pkgs/os-specific/linux/checksec/default.nix
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A tool for checking security bits on executables";
     homepage    = "http://www.trapkit.de/tools/checksec.html";
-    platforms   = stdenv.lib.platforms.linux;
     license     = stdenv.lib.licenses.bsd3;
+    platforms   = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/os-specific/linux/criu/default.nix b/pkgs/os-specific/linux/criu/default.nix
new file mode 100644
index 000000000000..30056d8b8e6b
--- /dev/null
+++ b/pkgs/os-specific/linux/criu/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, protobuf, protobufc, asciidoc, xmlto, utillinux }:
+
+stdenv.mkDerivation rec {
+  name    = "criu-${version}";
+  version = "1.2";
+
+  src = fetchurl {
+    url    = "http://download.openvz.org/criu/${name}.tar.bz2";
+    sha256 = "04xlnqvgbjd5wfmi97m5rr76a3agkz8g96hdyzhc6x8gd52bbg9y";
+  };
+
+  enableParallelBuilding = true;
+  buildInputs = [ protobuf protobufc asciidoc xmlto ];
+
+  patchPhase = ''
+    chmod +w ./scripts/gen-offsets.sh
+    substituteInPlace ./scripts/gen-offsets.sh --replace hexdump ${utillinux}/bin/hexdump
+  '';
+
+  buildPhase = ''
+    make config PREFIX=$out
+    make PREFIX=$out
+  '';
+
+  installPhase = ''
+    mkdir -p $out/etc/logrotate.d
+    make install PREFIX=$out LIBDIR=$out/lib
+  '';
+
+  meta = {
+    description = "userspace checkpoint/restore for Linux";
+    homepage    = "http://criu.org";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/pkgs/os-specific/linux/ffado/default.nix b/pkgs/os-specific/linux/ffado/default.nix
index 834f98960dfb..e024a608a0b6 100644
--- a/pkgs/os-specific/linux/ffado/default.nix
+++ b/pkgs/os-specific/linux/ffado/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     description = "FireWire audio drivers";
     license = licenses.gpl3;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/kernel/grsec-path.patch b/pkgs/os-specific/linux/kernel/grsec-path.patch
index be242779548f..6f59cf8d80bd 100644
--- a/pkgs/os-specific/linux/kernel/grsec-path.patch
+++ b/pkgs/os-specific/linux/kernel/grsec-path.patch
@@ -1,15 +1,17 @@
 diff --git a/kernel/kmod.c b/kernel/kmod.c
-index 3227c2c..f32c944 100644
+index 67f7981..03f127d 100644
 --- a/kernel/kmod.c
 +++ b/kernel/kmod.c
-@@ -246,8 +246,8 @@ static int ____call_usermodehelper(void *data)
+@@ -246,9 +246,9 @@ static int ____call_usermodehelper(void *data)
  	   out the path to be used prior to this point and are now operating
  	   on that copy
  	*/
 -	if ((strncmp(sub_info->path, "/sbin/", 6) && strncmp(sub_info->path, "/usr/lib/", 9) &&
--	     strncmp(sub_info->path, "/lib/", 5) && strncmp(sub_info->path, "/lib64/", 7)) || strstr(sub_info->path, "..")) {
+-	     strncmp(sub_info->path, "/lib/", 5) && strncmp(sub_info->path, "/lib64/", 7) &&
+-	     strcmp(sub_info->path, "/usr/share/apport/apport")) || strstr(sub_info->path, "..")) {
 +	if ((strncmp(sub_info->path, "/sbin/", 6) && strncmp(sub_info->path, "/nix/store/", 11) &&
-+	     strncmp(sub_info->path, "/run/current-system/systemd/lib/", 32)) || strstr(sub_info->path, "..")) {
++	     strncmp(sub_info->path, "/run/current-system/systemd/lib/", 32)) ||
++	     strstr(sub_info->path, "..")) {
  		printk(KERN_ALERT "grsec: denied exec of usermode helper binary %.950s located outside of /sbin and system library paths\n", sub_info->path);
  		retval = -EPERM;
  		goto fail;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.13.nix b/pkgs/os-specific/linux/kernel/linux-3.13.nix
index 05a4f55d0203..361106bf0654 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.13.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.13.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.13.5";
+  version = "3.13.6";
   extraMeta.branch = "3.13";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "03yggix59k2i2lf0m3kkqslcvvfcg19xx96ywbrfkfbb7vplw67w";
+    sha256 = "10j1rc63y0rcrnc2rx8jyczqg42gcbijd83qqd795qrrp5wnf7qw";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.4.nix b/pkgs/os-specific/linux/kernel/linux-3.4.nix
index a7bfee210ad8..294f616242d4 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.4.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.4.81";
+  version = "3.4.83";
   extraMeta.branch = "3.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "17m8b9wcsz8ryakhk8v85iknylkjlbsx69wkj1rbvqi2f1sjihx5";
+    sha256 = "1jammd31cgzymaqd2qwrm1shx5xwpaxmpnv658fix275fn35a8gb";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index ae226f0908b8..dd1998147602 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -38,7 +38,7 @@ in {
 
 let
   inherit (stdenv.lib)
-    hasAttr getAttr optional optionalString maintainers platforms;
+    hasAttr getAttr optional optionalString optionalAttrs maintainers platforms;
 
   installkernel = writeTextFile { name = "installkernel"; executable=true; text = ''
     #!${stdenv.shell} -e
@@ -73,9 +73,7 @@ let
 
       installsFirmware = (config.isEnabled "FW_LOADER") &&
         (isModular || (config.isDisabled "FIRMWARE_IN_KERNEL"));
-    in {
-      outputs = if isModular then [ "out" "dev" ] else null;
-
+    in (optionalAttrs isModular { outputs = [ "out" "dev" ]; }) // {
       passthru = {
         inherit version modDirVersion config kernelPatches;
       };
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index e63ff168a61e..2d1fb6e2818b 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -81,22 +81,22 @@ rec {
   grsecurity_3_0_3_2_55 =
     { name = "grsecurity-3.0-3.2.55";
       patch = fetchurl {
-        url = http://grsecurity.net/stable/grsecurity-3.0-3.2.55-201403022154.patch;
-        sha256 = "0pqp8mfj4zbgb94c7g6ykh0amlwlilxjiqsyc6smmwwbg6klgvkr";
+        url = http://grsecurity.net/stable/grsecurity-3.0-3.2.55-201403172027.patch;
+        sha256 = "1ik8xa9xgy9ghlb66rz04rdj64c8914vpv847zld7zhhih90lfm8";
       };
       features.grsecurity = true;
       # The grsec kernel patch seems to include the apparmor patches as of 3.0-3.2.55
       features.apparmor = true;
     };
 
-  grsecurity_3_0_3_13_5 =
-    { name = "grsecurity-3.0-3.13.5";
+  grsecurity_3_0_3_13_6 =
+    { name = "grsecurity-3.0-3.13.6";
       patch = fetchurl {
-        url = http://grsecurity.net/test/grsecurity-3.0-3.13.5-201403031445.patch;
-        sha256 = "0b22jbm9swghhj7a9c07z5yprk88bgp0iv3c8xmfqqyy0yighq1l";
+        url = http://grsecurity.net/test/grsecurity-3.0-3.13.6-201403172032.patch;
+        sha256 = "18gr6r11gv015y6nb2zvv3z8kb4zv9gadhlcdii6il0c2y4bsrsb";
       };
       features.grsecurity = true;
-      # The grsec kernel patch seems to include the apparmor patches as of 3.0-3.13.5
+      # The grsec kernel patch seems to include the apparmor patches as of 3.0-3.13.6
       features.apparmor = true;
     };
 
diff --git a/pkgs/os-specific/linux/ktap/default.nix b/pkgs/os-specific/linux/ktap/default.nix
index 542096733595..a82804cb8379 100644
--- a/pkgs/os-specific/linux/ktap/default.nix
+++ b/pkgs/os-specific/linux/ktap/default.nix
@@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A lightweight script-based dynamic tracing tool for Linux.";
     homepage    = "http://www.ktap.org";
-    platforms   = stdenv.lib.platforms.linux;
     license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/os-specific/linux/lttng-modules/default.nix b/pkgs/os-specific/linux/lttng-modules/default.nix
index b9cc34345dff..1673472036f3 100644
--- a/pkgs/os-specific/linux/lttng-modules/default.nix
+++ b/pkgs/os-specific/linux/lttng-modules/default.nix
@@ -23,9 +23,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Linux kernel modules for LTTng tracing";
     homepage = http://lttng.org/;
-    # TODO: Add "mit" to the license list once the license attr set vs string
-    # decision has been made. (Having "mit" there breaks hydra evaluation.)
-    license = with licenses; [ lgpl21 gpl2 ];
+    # TODO license = with licenses; [ lgpl21 gpl2 mit ];
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
   };
diff --git a/pkgs/os-specific/linux/plymouth/default.nix b/pkgs/os-specific/linux/plymouth/default.nix
index bf3da1954676..4c51c4fea6cb 100644
--- a/pkgs/os-specific/linux/plymouth/default.nix
+++ b/pkgs/os-specific/linux/plymouth/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     description = "A graphical boot animation";
     license = licenses.gpl2;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/procps-ng/default.nix b/pkgs/os-specific/linux/procps-ng/default.nix
index 0b3389f903a8..cd8a8eaec133 100644
--- a/pkgs/os-specific/linux/procps-ng/default.nix
+++ b/pkgs/os-specific/linux/procps-ng/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, ncurses }:
 
 stdenv.mkDerivation {
-  name = "procps-ng-3.3.9";
+  name = "procps-3.3.9";
 
   src = fetchurl {
     url = mirror://sourceforge/procps-ng/procps-ng-3.3.9.tar.xz;
diff --git a/pkgs/os-specific/linux/spl/3_12-compat.patch b/pkgs/os-specific/linux/spl/3_12-compat.patch
new file mode 100644
index 000000000000..b196098b7df2
--- /dev/null
+++ b/pkgs/os-specific/linux/spl/3_12-compat.patch
@@ -0,0 +1,429 @@
+commit c3d9c0df3ee8d43db22815ebbfbe8b803fa46e46
+Author: Richard Yao <ryao@gentoo.org>
+Date:   Tue Nov 5 11:35:54 2013 -0500
+
+    Linux 3.12 compat: New shrinker API
+    
+    torvalds/linux@24f7c6 introduced a new shrinker API while
+    torvalds/linux@a0b021 dropped support for the old shrinker API.
+    This patch adds support for the new shrinker API by wrapping
+    the old one with the new one.
+    
+    This change also reorganizes the autotools checks on the shrinker
+    API such that the configure script will fail early if an unknown
+    API is encountered in the future.
+    
+    Support for the set_shrinker() API which was used by Linux 2.6.22
+    and older has been dropped.  As a general rule compatibility is
+    only maintained back to Linux 2.6.26.
+    
+    Signed-off-by: Richard Yao <ryao@gentoo.org>
+    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+    Closes zfsonlinux/zfs#1732
+    Closes zfsonlinux/zfs#1822
+    Closes #293
+    Closes #307
+
+diff --git a/config/spl-build.m4 b/config/spl-build.m4
+index b0e3348..7d744db 100644
+--- a/config/spl-build.m4
++++ b/config/spl-build.m4
+@@ -27,8 +27,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
+ 	SPL_AC_TYPE_ATOMIC64_XCHG
+ 	SPL_AC_TYPE_UINTPTR_T
+ 	SPL_AC_2ARGS_REGISTER_SYSCTL
+-	SPL_AC_SET_SHRINKER
+-	SPL_AC_3ARGS_SHRINKER_CALLBACK
++	SPL_AC_SHRINKER_CALLBACK
+ 	SPL_AC_PATH_IN_NAMEIDATA
+ 	SPL_AC_TASK_CURR
+ 	SPL_AC_CTL_UNNUMBERED
+@@ -885,37 +884,18 @@ AC_DEFUN([SPL_AC_2ARGS_REGISTER_SYSCTL],
+ 	])
+ ])
+ 
+-dnl #
+-dnl # 2.6.23 API change
+-dnl # Old set_shrinker API replaced with register_shrinker
+-dnl #
+-AC_DEFUN([SPL_AC_SET_SHRINKER], [
+-	AC_MSG_CHECKING([whether set_shrinker() available])
+-	SPL_LINUX_TRY_COMPILE([
+-		#include <linux/mm.h>
+-	],[
+-		return set_shrinker(DEFAULT_SEEKS, NULL);
+-	],[
+-		AC_MSG_RESULT([yes])
+-		AC_DEFINE(HAVE_SET_SHRINKER, 1,
+-		          [set_shrinker() available])
+-	],[
+-		AC_MSG_RESULT([no])
+-	])
+-])
+-
+-dnl #
+-dnl # 2.6.35 API change,
+-dnl # Add context to shrinker callback
+-dnl #
+-AC_DEFUN([SPL_AC_3ARGS_SHRINKER_CALLBACK],
+-	[AC_MSG_CHECKING([whether shrinker callback wants 3 args])
++AC_DEFUN([SPL_AC_SHRINKER_CALLBACK],[
+ 	tmp_flags="$EXTRA_KCFLAGS"
+ 	EXTRA_KCFLAGS="-Werror"
++	dnl #
++	dnl # 2.6.23 to 2.6.34 API change
++	dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask)
++	dnl #
++	AC_MSG_CHECKING([whether old 2-argument shrinker exists])
+ 	SPL_LINUX_TRY_COMPILE([
+ 		#include <linux/mm.h>
+ 
+-		int shrinker_cb(struct shrinker *, int, unsigned int);
++		int shrinker_cb(int nr_to_scan, gfp_t gfp_mask);
+ 	],[
+ 		struct shrinker cache_shrinker = {
+ 			.shrink = shrinker_cb,
+@@ -924,10 +904,86 @@ AC_DEFUN([SPL_AC_3ARGS_SHRINKER_CALLBACK],
+ 		register_shrinker(&cache_shrinker);
+ 	],[
+ 		AC_MSG_RESULT(yes)
+-		AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
+-		          [shrinker callback wants 3 args])
++		AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1,
++			[old shrinker callback wants 2 args])
+ 	],[
+ 		AC_MSG_RESULT(no)
++		dnl #
++		dnl # 2.6.35 - 2.6.39 API change
++		dnl # ->shrink(struct shrinker *,
++		dnl #          int nr_to_scan, gfp_t gfp_mask)
++		dnl #
++		AC_MSG_CHECKING([whether old 3-argument shrinker exists])
++		SPL_LINUX_TRY_COMPILE([
++			#include <linux/mm.h>
++
++			int shrinker_cb(struct shrinker *, int nr_to_scan,
++					gfp_t gfp_mask);
++		],[
++			struct shrinker cache_shrinker = {
++				.shrink = shrinker_cb,
++				.seeks = DEFAULT_SEEKS,
++			};
++			register_shrinker(&cache_shrinker);
++		],[
++			AC_MSG_RESULT(yes)
++			AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1,
++				[old shrinker callback wants 3 args])
++		],[
++			AC_MSG_RESULT(no)
++			dnl #
++			dnl # 3.0 - 3.11 API change
++			dnl # ->shrink(struct shrinker *,
++			dnl #          struct shrink_control *sc)
++			dnl #
++			AC_MSG_CHECKING(
++				[whether new 2-argument shrinker exists])
++			SPL_LINUX_TRY_COMPILE([
++				#include <linux/mm.h>
++
++				int shrinker_cb(struct shrinker *,
++						struct shrink_control *sc);
++			],[
++				struct shrinker cache_shrinker = {
++					.shrink = shrinker_cb,
++					.seeks = DEFAULT_SEEKS,
++				};
++				register_shrinker(&cache_shrinker);
++			],[
++				AC_MSG_RESULT(yes)
++				AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1,
++					[new shrinker callback wants 2 args])
++			],[
++				AC_MSG_RESULT(no)
++				dnl #
++				dnl # 3.12 API change,
++				dnl # ->shrink() is logically split in to
++				dnl # ->count_objects() and ->scan_objects()
++				dnl #
++				AC_MSG_CHECKING(
++				    [whether ->count_objects callback exists])
++				SPL_LINUX_TRY_COMPILE([
++					#include <linux/mm.h>
++
++					unsigned long shrinker_cb(
++						struct shrinker *,
++						struct shrink_control *sc);
++				],[
++					struct shrinker cache_shrinker = {
++						.count_objects = shrinker_cb,
++						.scan_objects = shrinker_cb,
++						.seeks = DEFAULT_SEEKS,
++					};
++					register_shrinker(&cache_shrinker);
++				],[
++					AC_MSG_RESULT(yes)
++					AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK,
++						1, [->count_objects exists])
++				],[
++					AC_MSG_ERROR(error)
++				])
++			])
++		])
+ 	])
+ 	EXTRA_KCFLAGS="$tmp_flags"
+ ])
+diff --git a/include/linux/mm_compat.h b/include/linux/mm_compat.h
+index cb1bef9..37c9b08 100644
+--- a/include/linux/mm_compat.h
++++ b/include/linux/mm_compat.h
+@@ -148,107 +148,167 @@ extern shrink_icache_memory_t shrink_icache_memory_fn;
+ #endif /* HAVE_SHRINK_ICACHE_MEMORY */
+ 
+ /*
+- * Linux 2.6. - 2.6. Shrinker API Compatibility.
++ * Due to frequent changes in the shrinker API the following
++ * compatibility wrappers should be used.  They are as follows:
++ *
++ * SPL_SHRINKER_DECLARE is used to declare the shrinker which is
++ * passed to spl_register_shrinker()/spl_unregister_shrinker().  Use
++ * shrinker_name to set the shrinker variable name, shrinker_callback
++ * to set the callback function, and seek_cost to define the cost of
++ * reclaiming an object.
++ *
++ *   SPL_SHRINKER_DECLARE(shrinker_name, shrinker_callback, seek_cost);
++ *
++ * SPL_SHRINKER_CALLBACK_FWD_DECLARE is used when a forward declaration
++ * of the shrinker callback function is required.  Only the callback
++ * function needs to be passed.
++ *
++ *   SPL_SHRINKER_CALLBACK_FWD_DECLARE(shrinker_callback);
++ *
++ * SPL_SHRINKER_CALLBACK_WRAPPER is used to declare the callback function
++ * which is registered with the shrinker.  This function will call your
++ * custom shrinker which must use the following prototype.  Notice the
++ * leading __'s, these must be appended to the callback_function name.
++ *
++ *   int  __shrinker_callback(struct shrinker *, struct shrink_control *)
++ *   SPL_SHRINKER_CALLBACK_WRAPPER(shrinker_callback);a
++ *
++ *
++ * Example:
++ *
++ * SPL_SHRINKER_CALLBACK_FWD_DECLARE(my_shrinker_fn);
++ * SPL_SHRINKER_DECLARE(my_shrinker, my_shrinker_fn, 1);
++ *
++ * static int
++ * __my_shrinker_fn(struct shrinker *shrink, struct shrink_control *sc)
++ * {
++ *	if (sc->nr_to_scan) {
++ *		...scan objects in the cache and reclaim them...
++ *	}
++ *
++ *	...calculate number of objects in the cache...
++ *
++ *	return (number of objects in the cache);
++ * }
++ * SPL_SHRINKER_CALLBACK_WRAPPER(my_shrinker_fn);
+  */
+-#ifdef HAVE_SET_SHRINKER
+-typedef struct spl_shrinker {
+-	struct shrinker *shrinker;
+-	shrinker_t fn;
+-	int seeks;
+-} spl_shrinker_t;
+-
+-static inline void
+-spl_register_shrinker(spl_shrinker_t *ss)
+-{
+-	ss->shrinker = set_shrinker(ss->seeks, ss->fn);
+-}
+ 
+-static inline void
+-spl_unregister_shrinker(spl_shrinker_t *ss)
+-{
+-	remove_shrinker(ss->shrinker);
+-}
++#define	spl_register_shrinker(x)	register_shrinker(x)
++#define	spl_unregister_shrinker(x)	unregister_shrinker(x)
+ 
+-# define SPL_SHRINKER_DECLARE(s, x, y)                                 \
+-	static spl_shrinker_t s = {                                    \
+-		.shrinker = NULL,                                      \
+-		.fn = x,                                               \
+-		.seeks = y                                             \
+-	}
+-
+-# define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)                         \
+-	static int fn(int, unsigned int)
+-# define SPL_SHRINKER_CALLBACK_WRAPPER(fn)                             \
+-static int                                                             \
+-fn(int nr_to_scan, unsigned int gfp_mask)                              \
+-{                                                                      \
+-	struct shrink_control sc;                                      \
+-                                                                       \
+-        sc.nr_to_scan = nr_to_scan;                                    \
+-        sc.gfp_mask = gfp_mask;                                        \
+-                                                                       \
+-	return __ ## fn(NULL, &sc);                                    \
++/*
++ * Linux 2.6.23 - 2.6.34 Shrinker API Compatibility.
++ */
++#if defined(HAVE_2ARGS_OLD_SHRINKER_CALLBACK)
++#define	SPL_SHRINKER_DECLARE(s, x, y)					\
++static struct shrinker s = {						\
++	.shrink = x,							\
++	.seeks = y							\
+ }
+ 
+-#else
++#define	SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)				\
++static int fn(int nr_to_scan, unsigned int gfp_mask)
+ 
+-# define spl_register_shrinker(x)	register_shrinker(x)
+-# define spl_unregister_shrinker(x)	unregister_shrinker(x)
+-# define SPL_SHRINKER_DECLARE(s, x, y)                                 \
+-	static struct shrinker s = {                                   \
+-		.shrink = x,                                           \
+-		.seeks = y                                             \
+-	}
++#define	SPL_SHRINKER_CALLBACK_WRAPPER(fn)				\
++static int								\
++fn(int nr_to_scan, unsigned int gfp_mask)				\
++{									\
++	struct shrink_control sc;					\
++									\
++	sc.nr_to_scan = nr_to_scan;					\
++	sc.gfp_mask = gfp_mask;						\
++									\
++	return (__ ## fn(NULL, &sc));					\
++}
+ 
+ /*
+- * Linux 2.6. - 2.6. Shrinker API Compatibility.
++ * Linux 2.6.35 to 2.6.39 Shrinker API Compatibility.
+  */
+-# if defined(HAVE_SHRINK_CONTROL_STRUCT)
+-#  define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)                        \
+-	static int fn(struct shrinker *, struct shrink_control *)
+-#  define SPL_SHRINKER_CALLBACK_WRAPPER(fn)                            \
+-static int                                                             \
+-fn(struct shrinker *shrink, struct shrink_control *sc) {               \
+-	return __ ## fn(shrink, sc);                                   \
++#elif defined(HAVE_3ARGS_SHRINKER_CALLBACK)
++#define	SPL_SHRINKER_DECLARE(s, x, y)					\
++static struct shrinker s = {						\
++	.shrink = x,							\
++	.seeks = y							\
++}
++
++#define	SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)				\
++static int fn(struct shrinker *, int, unsigned int)
++
++#define	SPL_SHRINKER_CALLBACK_WRAPPER(fn)				\
++static int								\
++fn(struct shrinker *shrink, int nr_to_scan, unsigned int gfp_mask)	\
++{									\
++	struct shrink_control sc;					\
++									\
++	sc.nr_to_scan = nr_to_scan;					\
++	sc.gfp_mask = gfp_mask;						\
++									\
++	return (__ ## fn(shrink, &sc));					\
+ }
+ 
+ /*
+- * Linux 2.6. - 2.6. Shrinker API Compatibility.
++ * Linux 3.0 to 3.11 Shrinker API Compatibility.
+  */
+-# elif defined(HAVE_3ARGS_SHRINKER_CALLBACK)
+-#  define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)                       \
+-	static int fn(struct shrinker *, int, unsigned int)
+-#  define SPL_SHRINKER_CALLBACK_WRAPPER(fn)                           \
+-static int                                                            \
+-fn(struct shrinker *shrink, int nr_to_scan, unsigned int gfp_mask)    \
+-{                                                                     \
+-	struct shrink_control sc;                                     \
+-                                                                      \
+-        sc.nr_to_scan = nr_to_scan;                                   \
+-        sc.gfp_mask = gfp_mask;                                       \
+-                                                                      \
+-	return __ ## fn(shrink, &sc);                                 \
++#elif defined(HAVE_2ARGS_NEW_SHRINKER_CALLBACK)
++#define	SPL_SHRINKER_DECLARE(s, x, y)					\
++static struct shrinker s = {						\
++	.shrink = x,							\
++	.seeks = y							\
++}
++
++#define	SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)				\
++static int fn(struct shrinker *, struct shrink_control *)
++
++#define	SPL_SHRINKER_CALLBACK_WRAPPER(fn)				\
++static int								\
++fn(struct shrinker *shrink, struct shrink_control *sc)			\
++{									\
++	return (__ ## fn(shrink, sc));					\
+ }
+ 
+ /*
+- * Linux 2.6. - 2.6. Shrinker API Compatibility.
++ * Linux 3.12 and later Shrinker API Compatibility.
+  */
+-# else
+-#  define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)                       \
+-	static int fn(int, unsigned int)
+-#  define SPL_SHRINKER_CALLBACK_WRAPPER(fn)                           \
+-static int                                                            \
+-fn(int nr_to_scan, unsigned int gfp_mask)                             \
+-{                                                                     \
+-	struct shrink_control sc;                                     \
+-                                                                      \
+-        sc.nr_to_scan = nr_to_scan;                                   \
+-        sc.gfp_mask = gfp_mask;                                       \
+-                                                                      \
+-	return __ ## fn(NULL, &sc);                                   \
++#elif defined(HAVE_SPLIT_SHRINKER_CALLBACK)
++#define	SPL_SHRINKER_DECLARE(s, x, y)					\
++static struct shrinker s = {						\
++	.count_objects = x ## _count_objects,				\
++	.scan_objects = x ## _scan_objects,				\
++	.seeks = y							\
+ }
+ 
+-# endif
+-#endif /* HAVE_SET_SHRINKER */
++#define	SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn)				\
++static unsigned long fn ## _count_objects(struct shrinker *,		\
++    struct shrink_control *);						\
++static unsigned long fn ## _scan_objects(struct shrinker *,		\
++    struct shrink_control *)
++
++#define	SPL_SHRINKER_CALLBACK_WRAPPER(fn)				\
++static unsigned long							\
++fn ## _count_objects(struct shrinker *shrink, struct shrink_control *sc)\
++{									\
++	int __ret__;							\
++									\
++	sc->nr_to_scan = 0;						\
++	__ret__ = __ ## fn(NULL, sc);					\
++									\
++	/* Errors may not be returned and must be converted to zeros */	\
++	return ((__ret__ < 0) ? 0 : __ret__);				\
++}									\
++									\
++static unsigned long							\
++fn ## _scan_objects(struct shrinker *shrink, struct shrink_control *sc)	\
++{									\
++	int __ret__;							\
++									\
++	__ret__ = __ ## fn(NULL, sc);					\
++	return ((__ret__ < 0) ? SHRINK_STOP : __ret__);			\
++}
++#else
++/*
++ * Linux 2.x to 2.6.22, or a newer shrinker API has been introduced.
++ */
++#error "Unknown shrinker callback"
++#endif
+ 
+ #endif /* SPL_MM_COMPAT_H */
diff --git a/pkgs/os-specific/linux/spl/3_13-compat-1.patch b/pkgs/os-specific/linux/spl/3_13-compat-1.patch
new file mode 100644
index 000000000000..40946931c802
--- /dev/null
+++ b/pkgs/os-specific/linux/spl/3_13-compat-1.patch
@@ -0,0 +1,61 @@
+From 3e96de17d723d6f6c9e2fd04b059b50d4e0bbef0 Mon Sep 17 00:00:00 2001
+From: Richard Yao <ryao@gentoo.org>
+Date: Thu, 8 Aug 2013 04:30:55 -0400
+Subject: [PATCH] Linux 3.13 compat: Remove unused flags variable from
+ __cv_init()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GCC 4.8.1 complained about an unused flags variable when building
+against Linux 2.6.26.8:
+
+/var/tmp/portage/sys-kernel/spl-9999/work/spl-9999/module/spl/../../module/spl/spl-condvar.c:
+In function ‘__cv_init’:
+/var/tmp/portage/sys-kernel/spl-9999/work/spl-9999/module/spl/../../module/spl/spl-condvar.c:39:6:
+error: variable ‘flags’ set but not used
+[-Werror=unused-but-set-variable]
+  int flags = KM_SLEEP;
+        ^
+	cc1: all warnings being treated as errors
+
+Additionally, the superfluous code uses a preempt_count variable that is
+no longer available on Linux 3.13. Deleting the unnecessary code fixes a
+Linux 3.13 compatibility issue.
+
+Signed-off-by: Richard Yao <ryao@gentoo.org>
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #312
+---
+ module/spl/spl-condvar.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/module/spl/spl-condvar.c b/module/spl/spl-condvar.c
+index 283648a..8236412 100644
+--- a/module/spl/spl-condvar.c
++++ b/module/spl/spl-condvar.c
+@@ -36,8 +36,6 @@
+ void
+ __cv_init(kcondvar_t *cvp, char *name, kcv_type_t type, void *arg)
+ {
+-	int flags = KM_SLEEP;
+-
+ 	SENTRY;
+ 	ASSERT(cvp);
+ 	ASSERT(name == NULL);
+@@ -51,12 +49,6 @@
+ 	atomic_set(&cvp->cv_refs, 1);
+ 	cvp->cv_mutex = NULL;
+ 
+-        /* We may be called when there is a non-zero preempt_count or
+-	 * interrupts are disabled is which case we must not sleep.
+-	 */
+-        if (current_thread_info()->preempt_count || irqs_disabled())
+-		flags = KM_NOSLEEP;
+-
+ 	SEXIT;
+ }
+ EXPORT_SYMBOL(__cv_init);
+-- 
+1.8.5.5
+
diff --git a/pkgs/os-specific/linux/spl/3_13-compat-2.patch b/pkgs/os-specific/linux/spl/3_13-compat-2.patch
new file mode 100644
index 000000000000..1f487f042f81
--- /dev/null
+++ b/pkgs/os-specific/linux/spl/3_13-compat-2.patch
@@ -0,0 +1,168 @@
+From 50a0749eba31e821a7edf286f1e3b149f7d13c59 Mon Sep 17 00:00:00 2001
+From: Richard Yao <ryao@gentoo.org>
+Date: Mon, 25 Nov 2013 11:22:33 -0500
+Subject: [PATCH] Linux 3.13 compat: Pass NULL for new delegated inode argument
+
+This check was originally added for SLES10, a093c6a, to check for
+a 'struct vfsmount *' argument which they added.  However, since
+SLES10 is based on a 2.6.16 kernel which is no longer supported
+this functionality was dropped.  The checks were refactored to
+support Linux 3.13 without concern for historical versions.
+
+Signed-off-by: Richard Yao <ryao@gentoo.org>
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #312
+---
+ config/spl-build.m4    | 52 ++++++++++++++++++++++++++++++++++++++++----------
+ module/spl/spl-vnode.c | 22 ++++++++++++---------
+ 2 files changed, 55 insertions(+), 19 deletions(-)
+
+diff --git a/config/spl-build.m4 b/config/spl-build.m4
+index 7d744db..8426780 100644
+--- a/config/spl-build.m4
++++ b/config/spl-build.m4
+@@ -1842,41 +1842,73 @@ AC_DEFUN([SPL_AC_SET_FS_PWD_WITH_CONST],
+ 	EXTRA_KCFLAGS="$tmp_flags"
+ ])
+ 
+-dnl #
+-dnl # SLES API change, never adopted in mainline,
+-dnl # Third 'struct vfsmount *' argument removed.
+-dnl #
+ AC_DEFUN([SPL_AC_2ARGS_VFS_UNLINK],
+ 	[AC_MSG_CHECKING([whether vfs_unlink() wants 2 args])
+ 	SPL_LINUX_TRY_COMPILE([
+ 		#include <linux/fs.h>
+ 	],[
+-		vfs_unlink(NULL, NULL);
++		vfs_unlink((struct inode *) NULL, (struct dentry *) NULL);
+ 	],[
+ 		AC_MSG_RESULT(yes)
+ 		AC_DEFINE(HAVE_2ARGS_VFS_UNLINK, 1,
+ 		          [vfs_unlink() wants 2 args])
+ 	],[
+ 		AC_MSG_RESULT(no)
++		dnl #
++		dnl # Linux 3.13 API change
++		dnl # Added delegated inode
++		dnl #
++		AC_MSG_CHECKING([whether vfs_unlink() wants 3 args])
++		SPL_LINUX_TRY_COMPILE([
++			#include <linux/fs.h>
++		],[
++			vfs_unlink((struct inode *) NULL,
++				(struct dentry *) NULL,
++				(struct inode **) NULL);
++		],[
++			AC_MSG_RESULT(yes)
++			AC_DEFINE(HAVE_3ARGS_VFS_UNLINK, 1,
++				  [vfs_unlink() wants 3 args])
++		],[
++			AC_MSG_ERROR(no)
++		])
++
+ 	])
+ ])
+ 
+-dnl #
+-dnl # SLES API change, never adopted in mainline,
+-dnl # Third and sixth 'struct vfsmount *' argument removed.
+-dnl #
+ AC_DEFUN([SPL_AC_4ARGS_VFS_RENAME],
+ 	[AC_MSG_CHECKING([whether vfs_rename() wants 4 args])
+ 	SPL_LINUX_TRY_COMPILE([
+ 		#include <linux/fs.h>
+ 	],[
+-		vfs_rename(NULL, NULL, NULL, NULL);
++		vfs_rename((struct inode *) NULL, (struct dentry *) NULL,
++			(struct inode *) NULL, (struct dentry *) NULL);
+ 	],[
+ 		AC_MSG_RESULT(yes)
+ 		AC_DEFINE(HAVE_4ARGS_VFS_RENAME, 1,
+ 		          [vfs_rename() wants 4 args])
+ 	],[
+ 		AC_MSG_RESULT(no)
++		dnl #
++		dnl # Linux 3.13 API change
++		dnl # Added delegated inode
++		dnl #
++		AC_MSG_CHECKING([whether vfs_rename() wants 5 args])
++		SPL_LINUX_TRY_COMPILE([
++			#include <linux/fs.h>
++		],[
++			vfs_rename((struct inode *) NULL,
++				(struct dentry *) NULL,
++				(struct inode *) NULL,
++				(struct dentry *) NULL,
++				(struct inode **) NULL);
++		],[
++			AC_MSG_RESULT(yes)
++			AC_DEFINE(HAVE_5ARGS_VFS_RENAME, 1,
++				  [vfs_rename() wants 5 args])
++		],[
++			AC_MSG_ERROR(no)
++		])
+ 	])
+ ])
+ 
+diff --git a/module/spl/spl-vnode.c b/module/spl/spl-vnode.c
+index 0784ff2..5496067 100644
+--- a/module/spl/spl-vnode.c
++++ b/module/spl/spl-vnode.c
+@@ -334,7 +334,11 @@
+ 		if (inode)
+ 			ihold(inode);
+ 
++#ifdef HAVE_2ARGS_VFS_UNLINK
+ 		rc = vfs_unlink(parent.dentry->d_inode, dentry);
++#else
++		rc = vfs_unlink(parent.dentry->d_inode, dentry, NULL);
++#endif /* HAVE_2ARGS_VFS_UNLINK */
+ exit1:
+ 		dput(dentry);
+ 	} else {
+@@ -412,10 +416,10 @@
+ 
+ #ifdef HAVE_4ARGS_VFS_RENAME
+ 	rc = vfs_rename(old_dir->d_inode, old_dentry,
+-			new_dir->d_inode, new_dentry);
++	    new_dir->d_inode, new_dentry);
+ #else
+-	rc = vfs_rename(old_dir->d_inode, old_dentry, oldnd.nd_mnt,
+-			new_dir->d_inode, new_dentry, newnd.nd_mnt);
++	rc = vfs_rename(old_dir->d_inode, old_dentry,
++	    new_dir->d_inode, new_dentry, NULL);
+ #endif /* HAVE_4ARGS_VFS_RENAME */
+ exit4:
+ 	unlock_rename(new_dir, old_dir);
+@@ -478,9 +482,9 @@
+                 if (inode)
+                         atomic_inc(&inode->i_count);
+ #ifdef HAVE_2ARGS_VFS_UNLINK
+-                rc = vfs_unlink(nd.nd_dentry->d_inode, dentry);
++		rc = vfs_unlink(nd.nd_dentry->d_inode, dentry);
+ #else
+-                rc = vfs_unlink(nd.nd_dentry->d_inode, dentry, nd.nd_mnt);
++		rc = vfs_unlink(nd.nd_dentry->d_inode, dentry, NULL);
+ #endif /* HAVE_2ARGS_VFS_UNLINK */
+ exit2:
+                 dput(dentry);
+@@ -571,11 +575,11 @@
+                 SGOTO(exit5, rc);
+ 
+ #ifdef HAVE_4ARGS_VFS_RENAME
+-        rc = vfs_rename(old_dir->d_inode, old_dentry,
+-                        new_dir->d_inode, new_dentry);
++	rc = vfs_rename(old_dir->d_inode, old_dentry,
++	    new_dir->d_inode, new_dentry);
+ #else
+-        rc = vfs_rename(old_dir->d_inode, old_dentry, oldnd.nd_mnt,
+-                        new_dir->d_inode, new_dentry, newnd.nd_mnt);
++	rc = vfs_rename(old_dir->d_inode, old_dentry,
++	    new_dir->d_inode, new_dentry, NULL);
+ #endif /* HAVE_4ARGS_VFS_RENAME */
+ exit5:
+         dput(new_dentry);
+-- 
+1.8.5.5
+
diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix
index ee264f67127a..1d70a76a001c 100644
--- a/pkgs/os-specific/linux/spl/default.nix
+++ b/pkgs/os-specific/linux/spl/default.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     sha256 = "196scl8q0bkkak6m0p1l1fz254cgsizqm73bf9wk3iynamq7qmrw";
   };
 
-  patches = [ ./install_prefix.patch ];
+  patches = [ ./install_prefix.patch ./3_12-compat.patch ./3_13-compat-1.patch ./3_13-compat-2.patch ];
 
   buildInputs = [ perl autoconf automake libtool ];
 
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
     ./autogen.sh
 
     substituteInPlace ./module/spl/spl-generic.c --replace /usr/bin/hostid hostid
-    substituteInPlace ./module/spl/spl-module.c  --replace /bin/mknod mknod 
+    substituteInPlace ./module/spl/spl-module.c  --replace /bin/mknod mknod
 
     substituteInPlace ./module/spl/spl-generic.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:${gawk}:/bin"
     substituteInPlace ./module/splat/splat-vnode.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
@@ -40,6 +40,6 @@ stdenv.mkDerivation {
     homepage = http://zfsonlinux.org/;
     platforms = stdenv.lib.platforms.linux;
     license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+    maintainers = with stdenv.lib.maintainers; [ jcumming wizeman ];
   };
 }
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index 2c2ed582083f..caa69a9e3a8a 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -1,11 +1,14 @@
 { stdenv, fetchurl, pkgconfig, intltool, gperf, libcap, dbus, kmod
 , xz, pam, acl, cryptsetup, libuuid, m4, utillinux
 , glib, kbd, libxslt, coreutils, libgcrypt, sysvtools, docbook_xsl
-, kexectools
+, kexectools, libmicrohttpd
+, python ? null, pythonSupport ? false
 }:
 
 assert stdenv.isLinux;
 
+assert pythonSupport -> python != null;
+
 stdenv.mkDerivation rec {
   version = "203";
   name = "systemd-${version}";
@@ -25,7 +28,8 @@ stdenv.mkDerivation rec {
   buildInputs =
     [ pkgconfig intltool gperf libcap dbus.libs kmod xz pam acl
       /* cryptsetup */ libuuid m4 glib libxslt libgcrypt docbook_xsl
-    ];
+      libmicrohttpd
+    ] ++ stdenv.lib.optional pythonSupport python;
 
   configureFlags =
     [ "--localstatedir=/var"
diff --git a/pkgs/os-specific/linux/udisks/1-default.nix b/pkgs/os-specific/linux/udisks/1-default.nix
index b53af52755fa..19cfec9f0657 100644
--- a/pkgs/os-specific/linux/udisks/1-default.nix
+++ b/pkgs/os-specific/linux/udisks/1-default.nix
@@ -3,11 +3,11 @@
 , libxslt, docbook_xsl, utillinux }:
 
 stdenv.mkDerivation rec {
-  name = "udisks-1.0.4";
+  name = "udisks-1.0.5";
 
   src = fetchurl {
     url = "http://hal.freedesktop.org/releases/${name}.tar.gz";
-    sha256 = "1xgqifddwaavmjc8c30i0mdffyirsld7c6qhfyjw7f9khwv8jjw5";
+    sha256 = "0wbg3jrv8limdgvcygf4dqin3y6d30y9pcmmk711vq571vmq5v7j";
   };
 
   patches = [ ./purity.patch ./no-pci-db.patch ];
@@ -28,7 +28,11 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
 
-  configureFlags = "--localstatedir=/var --enable-lvm2";
+  configureFlags = [
+    "--localstatedir=/var"
+    "--enable-lvm2"
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+  ];
 
   meta = {
     homepage = http://www.freedesktop.org/wiki/Software/udisks;
diff --git a/pkgs/os-specific/linux/udisks/2-default.nix b/pkgs/os-specific/linux/udisks/2-default.nix
index 537b17550da1..6c9b743fe177 100644
--- a/pkgs/os-specific/linux/udisks/2-default.nix
+++ b/pkgs/os-specific/linux/udisks/2-default.nix
@@ -4,11 +4,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "udisks-2.1.1";
+  name = "udisks-2.1.3";
 
   src = fetchurl {
     url = "http://udisks.freedesktop.org/releases/${name}.tar.bz2";
-    sha256 = "1yw6h3l13y796adwgj6m4j3hijv58lgpf98mq24nn9da73zhjfq1";
+    sha256 = "0bb3403pa23j317b7z9ikdigr6ll5cl93l4hiy4afjgfa7b2zjaw";
   };
 
   patches = [ ./force-path.patch ];
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     "--localstatedir=/var"
-    "--with-systemdsystemunitdir=$(out)/etc/systemd/systemd"
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
     "--with-udevdir=$(out)/lib/udev"
   ];
 
diff --git a/pkgs/os-specific/linux/wpa_supplicant/default.nix b/pkgs/os-specific/linux/wpa_supplicant/default.nix
index bd2caed265f2..5ee25ea976ac 100644
--- a/pkgs/os-specific/linux/wpa_supplicant/default.nix
+++ b/pkgs/os-specific/linux/wpa_supplicant/default.nix
@@ -38,18 +38,24 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
 
-  patches = [ ./libnl.patch ];
+  patches = [ ./libnl.patch
+    # remove this patch after wpa_supplicant 2.1
+    (fetchurl {
+      url ="http://projects.archlinux.org/svntogit/packages.git/plain/trunk/0001-Revert-OpenSSL-Do-not-accept-SSL-Client-certificate-.patch?h=packages/wpa_supplicant";
+      sha256 = "0x1wl2nbl7v9kv80qvysfjhhg5a7lmgygv1y723flps6y8ngm19w";
+    })
+  ];
 
   postInstall = ''
     mkdir -p $out/share/man/man5 $out/share/man/man8
-    cp -v doc/docbook/*.5 $out/share/man/man5/
-    cp -v doc/docbook/*.8 $out/share/man/man8/
+    cp -v "doc/docbook/"*.5 $out/share/man/man5/
+    cp -v "doc/docbook/"*.8 $out/share/man/man8/
     mkdir -p $out/etc/dbus-1/system.d $out/share/dbus-1/system-services $out/etc/systemd/system
-    cp -v dbus/*service $out/share/dbus-1/system-services
-    sed -e "s@/sbin/wpa_supplicant@$out&@" -i $out/share/dbus-1/system-services/*
+    cp -v "dbus/"*service $out/share/dbus-1/system-services
+    sed -e "s@/sbin/wpa_supplicant@$out&@" -i "$out/share/dbus-1/system-services/"*
     cp -v dbus/dbus-wpa_supplicant.conf $out/etc/dbus-1/system.d
-    cp -v systemd/*.service $out/etc/systemd/system
-  ''; # */
+    cp -v "systemd/"*.service $out/etc/systemd/system
+  '';
 
   meta = {
     homepage = http://hostap.epitest.fi/wpa_supplicant/;
diff --git a/pkgs/os-specific/linux/zfs/3.13-compat.patch b/pkgs/os-specific/linux/zfs/3.13-compat.patch
new file mode 100644
index 000000000000..f89d38f72acc
--- /dev/null
+++ b/pkgs/os-specific/linux/zfs/3.13-compat.patch
@@ -0,0 +1,43 @@
+From 729210564a5325e190fc4fba22bf17bacf957ace Mon Sep 17 00:00:00 2001
+From: Richard Yao <ryao@gentoo.org>
+Date: Mon, 25 Nov 2013 12:21:21 -0500
+Subject: [PATCH] Properly ignore bdi_setup_and_register return value
+
+This broke compilation against Linux 3.13 and GCC 4.7.3.
+
+Signed-off-by: Richard Yao <ryao@gentoo.org>
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #1906
+---
+ config/kernel-bdi-setup-and-register.m4 | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/config/kernel-bdi-setup-and-register.m4 b/config/kernel-bdi-setup-and-register.m4
+index 4196091..cb8ed67 100644
+--- a/config/kernel-bdi-setup-and-register.m4
++++ b/config/kernel-bdi-setup-and-register.m4
+@@ -1,12 +1,14 @@
+ dnl #
+ dnl # 2.6.34 API change
+-dnl # The bdi_setup_and_register() helper function is avilable and
++dnl # The bdi_setup_and_register() helper function is available and
+ dnl # exported by the kernel.  This is a trivial helper function but
+ dnl # using it significantly simplifies the code surrounding setting
+ dnl # up and tearing down the bdi structure.
+ dnl #
+ AC_DEFUN([ZFS_AC_KERNEL_BDI_SETUP_AND_REGISTER],
+ 	[AC_MSG_CHECKING([whether bdi_setup_and_register() is available])
++	tmp_flags="$EXTRA_KCFLAGS"
++	EXTRA_KCFLAGS="-Wno-unused-result"
+ 	ZFS_LINUX_TRY_COMPILE_SYMBOL([
+ 		#include <linux/backing-dev.h>
+ 	], [
+@@ -18,4 +20,5 @@ AC_DEFUN([ZFS_AC_KERNEL_BDI_SETUP_AND_REGISTER],
+ 	], [
+ 		AC_MSG_RESULT(no)
+ 	])
++	EXTRA_KCFLAGS="$tmp_flags"
+ ])
+-- 
+1.8.5.5
+
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index 67ed1312826a..f8f3c9ed3165 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "18b5f18k8mwb17r5ippsilmp1a2sqjw9fwn0z82159dkhsadg33b";
   };
 
-  patches = [ ./mount_zfs_prefix.patch ./nix-build.patch ];
+  patches = [ ./mount_zfs_prefix.patch ./nix-build.patch ./libblkid-1db7b9b.patch ./gcc-4.8.patch ./3.13-compat.patch ];
 
   buildInputs = [ spl perl autoconf automake libtool zlib libuuid coreutils ];
 
@@ -45,6 +45,6 @@ stdenv.mkDerivation {
     homepage = http://zfsonlinux.org/;
     license = stdenv.lib.licenses.cddl;
     platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+    maintainers = with stdenv.lib.maintainers; [ jcumming wizeman ];
   };
 }
diff --git a/pkgs/os-specific/linux/zfs/gcc-4.8.patch b/pkgs/os-specific/linux/zfs/gcc-4.8.patch
new file mode 100644
index 000000000000..341360163761
--- /dev/null
+++ b/pkgs/os-specific/linux/zfs/gcc-4.8.patch
@@ -0,0 +1,114 @@
+commit 0f62f3f9abc4bfa0bcafee9bfa3d55e91dcb371d
+Author: Brian Behlendorf <behlendorf1@llnl.gov>
+Date:   Tue Jan 14 09:39:13 2014 -0800
+
+    Disable GCCs aggressive loop optimization
+    
+    GCC >+ 4.8's aggressive loop optimization breaks some of the iterators
+    over the dn_blkptr[] pseudo-array in dnode_phys. Since dn_blkptr[] is
+    defined as a single-element array, GCC believes an iterator can only
+    access index 0 and will unroll the loop into a single iteration.
+    
+    One way to resolve the issue would be to cast the array to a pointer
+    and fix all the iterators that might break.  The only loop where it
+    is known to cause a problem is this loop in dmu_objset_write_ready():
+    
+        for (i = 0; i < dnp->dn_nblkptr; i++)
+                bp->blk_fill += dnp->dn_blkptr[i].blk_fill;
+    
+    In the common case where dn_nblkptr is 3, the loop is only executed a
+    single time and "i" is equal to 1 following the loop.
+    
+    The specific breakage caused by this problem is that the blk_fill of
+    root block pointers wouldn't be set properly when more than one blkptr
+    is in use (when no indrect blocks are needed).
+    
+    The simple reproducing sequence is:
+    
+    zpool create tank /tank.img
+    zdb -ddddd tank 0
+    
+    Notice that "fill=31", however, there are two L0 indirect blocks with
+    "F=31" and "F=5". The fill count should be 36 rather than 31. This
+    problem causes an assert to be hit in a simple "zdb tank" when built
+    with --enable-debug.
+    
+    However, this approach was not taken because we need to be absolutely
+    sure we catch all instances of this unwanted optimization.  Therefore,
+    the build system has been updated to detect if GCC supports the
+    aggressive loop optimization.  If it does the optimization will be
+    explicitly disabled using the -fno-aggressive-loop-optimization option.
+    
+    Original-fix-by: Tim Chase <tim@chase2k.com>
+    Signed-off-by: Tim Chase <tim@chase2k.com>
+    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+    Closes #2010
+    Closes #2051
+
+diff --git a/config/Rules.am b/config/Rules.am
+index e3fa5b5..24f9426 100644
+--- a/config/Rules.am
++++ b/config/Rules.am
+@@ -1,8 +1,10 @@
+ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h
+ 
+ AM_LIBTOOLFLAGS = --silent
+-AM_CFLAGS  = -Wall -Wstrict-prototypes
+-AM_CFLAGS += -fno-strict-aliasing ${NO_UNUSED_BUT_SET_VARIABLE} ${DEBUG_CFLAGS}
++AM_CFLAGS  = ${DEBUG_CFLAGS} -Wall -Wstrict-prototypes
++AM_CFLAGS += ${NO_UNUSED_BUT_SET_VARIABLE}
++AM_CFLAGS += ${NO_AGGRESSIVE_LOOP_OPTIMIZATIONS}
++AM_CFLAGS += -fno-strict-aliasing
+ AM_CPPFLAGS  = -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT
+ AM_CPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64
+ AM_CPPFLAGS += -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\"
+diff --git a/config/always-no-aggressive-loop-optimizations.m4 b/config/always-no-aggressive-loop-optimizations.m4
+new file mode 100644
+index 0000000..8f2115a
+--- /dev/null
++++ b/config/always-no-aggressive-loop-optimizations.m4
+@@ -0,0 +1,20 @@
++dnl #
++dnl # Check if gcc supports -fno-aggressive-loop-optimizations
++dnl #
++AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_NO_AGGRESSIVE_LOOP_OPTIMIZATIONS], [
++	AC_MSG_CHECKING([for -fno-aggressive-loop-optimizations support])
++
++	saved_flags="$CFLAGS"
++	CFLAGS="$CFLAGS -fno-aggressive-loop-optimizations"
++
++	AC_RUN_IFELSE([AC_LANG_PROGRAM([], [])], [
++		NO_AGGRESSIVE_LOOP_OPTIMIZATIONS=-fno-aggressive-loop-optimizations
++		AC_MSG_RESULT([yes])
++	], [
++		NO_AGGRESSIVE_LOOP_OPTIMIZATIONS=
++		AC_MSG_RESULT([no])
++	])
++
++	CFLAGS="$saved_flags"
++	AC_SUBST([NO_AGGRESSIVE_LOOP_OPTIMIZATIONS])
++])
+diff --git a/config/kernel.m4 b/config/kernel.m4
+index cbf0ca3..62a9b42 100644
+--- a/config/kernel.m4
++++ b/config/kernel.m4
+@@ -104,6 +104,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
+ 	dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other
+ 	dnl # compiler options are added by the kernel build system.
+ 	KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE"
++	KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_AGGRESSIVE_LOOP_OPTIMIZATIONS"
+ 	KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL"
+ 	KERNELCPPFLAGS="$KERNELCPPFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\""
+ 
+diff --git a/config/zfs-build.m4 b/config/zfs-build.m4
+index 005185b..477b916 100644
+--- a/config/zfs-build.m4
++++ b/config/zfs-build.m4
+@@ -62,6 +62,7 @@ AC_DEFUN([ZFS_AC_DEBUG_DMU_TX], [
+ 
+ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
+ 	ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE
++	ZFS_AC_CONFIG_ALWAYS_NO_AGGRESSIVE_LOOP_OPTIMIZATIONS
+ ])
+ 
+ AC_DEFUN([ZFS_AC_CONFIG], [
diff --git a/pkgs/os-specific/linux/zfs/libblkid-1db7b9b.patch b/pkgs/os-specific/linux/zfs/libblkid-1db7b9b.patch
new file mode 100644
index 000000000000..894bf395ce85
--- /dev/null
+++ b/pkgs/os-specific/linux/zfs/libblkid-1db7b9b.patch
@@ -0,0 +1,118 @@
+commit 1db7b9be75a225cedb3b7a60028ca5695e5b8346
+Author: Richard Yao <ryao@gentoo.org>
+Date:   Wed Aug 28 16:17:47 2013 -0400
+
+    Fix libblkid support
+    
+    libblkid support is dormant because the autotools check is broken and
+    liblkid identifies ZFS vdevs as "zfs_member", not "zfs". We fix that
+    with a few changes:
+    
+    First, we fix the libblkid autotools check to do a few things:
+    
+    1. Make a 64MB file, which is the minimum size ZFS permits.
+    2. Make 4 fake uberblock entries to make libblkid's check succeed.
+    3. Return 0 upon success to make autotools use the success case.
+    4. Include stdlib.h to avoid implicit declration of free().
+    5. Check for "zfs_member", not "zfs"
+    6. Make --with-blkid disable autotools check (avoids Gentoo sandbox violation)
+    7. Pass '-lblkid' correctly using LIBS not LDFLAGS.
+    
+    Second, we change the libblkid support to scan for "zfs_member", not
+    "zfs".
+    
+    This makes --with-blkid work on Gentoo.
+    
+    Signed-off-by: Richard Yao <ryao@gentoo.org>
+    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+    Issue #1751
+
+diff --git a/config/user-libblkid.m4 b/config/user-libblkid.m4
+index 276587f..2dd2623 100644
+--- a/config/user-libblkid.m4
++++ b/config/user-libblkid.m4
+@@ -22,26 +22,45 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [
+ 		[with_blkid=check])
+ 
+ 	LIBBLKID=
+-	AS_IF([test "x$with_blkid" != xno],
++	AS_IF([test "x$with_blkid" = xyes],
++	[
++		AC_SUBST([LIBBLKID], ["-lblkid"])
++		AC_DEFINE([HAVE_LIBBLKID], 1,
++			[Define if you have libblkid])
++	])
++
++	AS_IF([test "x$with_blkid" = xcheck],
+ 	[
+ 		AC_CHECK_LIB([blkid], [blkid_get_cache],
+ 		[
+ 			AC_MSG_CHECKING([for blkid zfs support])
+ 
+ 			ZFS_DEV=`mktemp`
+-			dd if=/dev/zero of=$ZFS_DEV bs=1024k count=8 \
++			truncate -s 64M $ZFS_DEV
++			echo -en "\x0c\xb1\xba\0\0\0\0\0" | \
++				dd of=$ZFS_DEV bs=1k count=8 \
++				seek=128 conv=notrunc &>/dev/null \
+ 				>/dev/null 2>/dev/null
+ 			echo -en "\x0c\xb1\xba\0\0\0\0\0" | \
+ 				dd of=$ZFS_DEV bs=1k count=8 \
+ 				seek=132 conv=notrunc &>/dev/null \
+ 				>/dev/null 2>/dev/null
++			echo -en "\x0c\xb1\xba\0\0\0\0\0" | \
++				dd of=$ZFS_DEV bs=1k count=8 \
++				seek=136 conv=notrunc &>/dev/null \
++				>/dev/null 2>/dev/null
++			echo -en "\x0c\xb1\xba\0\0\0\0\0" | \
++				dd of=$ZFS_DEV bs=1k count=8 \
++				seek=140 conv=notrunc &>/dev/null \
++				>/dev/null 2>/dev/null
+ 
+-			saved_LDFLAGS="$LDFLAGS"
+-			LDFLAGS="-lblkid"
++			saved_LIBS="$LIBS"
++			LIBS="-lblkid"
+ 
+ 			AC_RUN_IFELSE([AC_LANG_PROGRAM(
+ 			[
+ 				#include <stdio.h>
++				#include <stdlib.h>
+ 				#include <blkid/blkid.h>
+ 			],
+ 			[
+@@ -58,10 +77,10 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [
+ 					return 2;
+ 				}
+ 
+-				if (strcmp(value, "zfs")) {
++				if (strcmp(value, "zfs_member")) {
+ 					free(value);
+ 					blkid_put_cache(cache);
+-					return 3;
++					return 0;
+ 				}
+ 
+ 				free(value);
+@@ -82,7 +101,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [
+ 					[--with-blkid given but unavailable])])
+ 			])
+ 
+-			LDFLAGS="$saved_LDFLAGS"
++			LIBS="$saved_LIBS"
+ 		],
+ 		[
+ 			AS_IF([test "x$with_blkid" != xcheck],
+diff --git a/lib/libzfs/libzfs_import.c b/lib/libzfs/libzfs_import.c
+index 53609f2..d1fa98e 100644
+--- a/lib/libzfs/libzfs_import.c
++++ b/lib/libzfs/libzfs_import.c
+@@ -965,7 +965,7 @@ zpool_find_import_blkid(libzfs_handle_t *hdl, pool_list_t *pools)
+ 		goto err_blkid2;
+ 	}
+ 
+-	err = blkid_dev_set_search(iter, "TYPE", "zfs");
++	err = blkid_dev_set_search(iter, "TYPE", "zfs_member");
+ 	if (err != 0) {
+ 		(void) zfs_error_fmt(hdl, EZFS_BADCACHE,
+ 		    dgettext(TEXT_DOMAIN, "blkid_dev_set_search() %d"), err);
diff --git a/pkgs/servers/gpsd/0001-Import-LD_LIBRARY_PATH-to-allow-running-scons-check-.patch b/pkgs/servers/gpsd/0001-Import-LD_LIBRARY_PATH-to-allow-running-scons-check-.patch
new file mode 100644
index 000000000000..3a38340f43a3
--- /dev/null
+++ b/pkgs/servers/gpsd/0001-Import-LD_LIBRARY_PATH-to-allow-running-scons-check-.patch
@@ -0,0 +1,25 @@
+From d7e56abcae8bcb85dc935e94418a2f0e9956941b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com>
+Date: Mon, 17 Feb 2014 20:52:50 +0000
+Subject: [PATCH 1/2] Import LD_LIBRARY_PATH to allow running 'scons check'
+ without 'chrpath'
+
+---
+ SConstruct | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/SConstruct b/SConstruct
+index 14e2f59..86b94bc 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -215,6 +215,7 @@ import_env = (
+     'PKG_CONFIG_LIBDIR',      # Pass more environment variables to pkg-config (required for crossbuilds)
+     'STAGING_DIR',     # Required by the OpenWRT and CeroWrt builds.
+     'STAGING_PREFIX',  # Required by the OpenWRT and CeroWrt builds.
++    'LD_LIBRARY_PATH', # Allows running 'scons check' without 'chrpath'
+     )
+ envs = {}
+ for var in import_env:
+-- 
+1.9.0
+
diff --git a/pkgs/servers/gpsd/0002-Import-XML_CATALOG_FILES-to-be-able-to-validate-the-.patch b/pkgs/servers/gpsd/0002-Import-XML_CATALOG_FILES-to-be-able-to-validate-the-.patch
new file mode 100644
index 000000000000..f12d7a52ba0c
--- /dev/null
+++ b/pkgs/servers/gpsd/0002-Import-XML_CATALOG_FILES-to-be-able-to-validate-the-.patch
@@ -0,0 +1,28 @@
+From aed93b6ada5b9b76b85d11d9bad732ca005295af Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com>
+Date: Sat, 15 Mar 2014 15:08:01 +0100
+Subject: [PATCH 2/2] Import XML_CATALOG_FILES to be able to validate the
+ manual
+
+In nixos/nixpkgs, 'xmlto' depends on $XML_CATALOG_FILES to be able to
+validate XML documents. Because without it, it'll try to go online to
+download DTD's and builders don't have network access...
+---
+ SConstruct | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/SConstruct b/SConstruct
+index 86b94bc..a0b3d25 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -216,6 +216,7 @@ import_env = (
+     'STAGING_DIR',     # Required by the OpenWRT and CeroWrt builds.
+     'STAGING_PREFIX',  # Required by the OpenWRT and CeroWrt builds.
+     'LD_LIBRARY_PATH', # Allows running 'scons check' without 'chrpath'
++    'XML_CATALOG_FILES', # Enables validating the manual with 'xmlto' using nix build system
+     )
+ envs = {}
+ for var in import_env:
+-- 
+1.9.0
+
diff --git a/pkgs/servers/gpsd/default.nix b/pkgs/servers/gpsd/default.nix
index 25051167ca51..a52ca2b6871b 100644
--- a/pkgs/servers/gpsd/default.nix
+++ b/pkgs/servers/gpsd/default.nix
@@ -1,54 +1,87 @@
-{ fetchurl, stdenv, pythonPackages, pkgconfig, dbus, dbus_glib
+{ fetchurl, stdenv, scons, pythonFull, pkgconfig, dbus, dbus_glib
 , ncurses, libX11, libXt, libXpm, libXaw, libXext, makeWrapper
 , libusb1, docbook_xml_dtd_412, docbook_xsl, bc
-, libxslt, xmlto, gpsdUser ? "gpsd" }:
+, libxslt, xmlto, gpsdUser ? "gpsd", gpsdGroup ? "dialout"
+}:
+
+# TODO: the 'xgps' program doesn't work: "ImportError: No module named gobject"
+# TODO: put the X11 deps behind a guiSupport parameter for headless support
 
 stdenv.mkDerivation rec {
-  name = "gpsd-2.95";
+  name = "gpsd-3.10";
 
   src = fetchurl {
-    url = "http://download.berlios.de/gpsd/${name}.tar.gz";
-    sha256 = "1bjhyjg561kwp6zc2wg58njdvpnsj5yaa2slz8g3ga1176jl68w3";
+    url = "http://download-mirror.savannah.gnu.org/releases/gpsd/${name}.tar.gz";
+    sha256 = "0823hl5zgwnbgm0fq3i4z34lv76cpj0k6m0zjiygiyrxrz0w4vvh";
   };
 
-  nativeBuildInputs = [ makeWrapper pkgconfig docbook_xml_dtd_412 docbook_xsl
-    xmlto bc pythonPackages.wrapPython ];
+  nativeBuildInputs = [
+    scons makeWrapper pkgconfig docbook_xml_dtd_412 docbook_xsl xmlto bc
+    pythonFull
+  ];
 
-  pythonPath = [ pythonPackages.curses ];
+  buildInputs = [
+    pythonFull dbus dbus_glib ncurses libX11 libXt libXpm libXaw libXext
+    libxslt libusb1
+  ];
 
-  buildInputs = [ pythonPackages.python dbus dbus_glib ncurses libX11 libXt
-    libXpm libXaw libXext libxslt libusb1 ];
+  patches = [
+    ./0001-Import-LD_LIBRARY_PATH-to-allow-running-scons-check-.patch
+    ./0002-Import-XML_CATALOG_FILES-to-be-able-to-validate-the-.patch
+  ];
 
-  configureFlags = "--enable-static --enable-dbus --enable-gpsd-user=${gpsdUser}";
+  # - leapfetch=no disables going online at build time to fetch leap-seconds
+  #   info. See <gpsd-src>/build.txt for more info.
+  # - chrpath=no stops the build from using 'chrpath' (which we don't have).
+  #   'chrpath' is used to be able to run the tests from the source tree, but
+  #   we use $LD_LIBRARY_PATH instead.
+  buildPhase = ''
+    patchShebangs .
+    mkdir -p "$out"
+    sed -e "s|python_lib_dir = .*|python_lib_dir = \"$out/lib/${pythonFull.python.libPrefix}/site-packages\"|" -i SConstruct
+    scons prefix="$out" leapfetch=no gpsd_user=${gpsdUser} gpsd_group=${gpsdGroup} \
+        systemd=yes udevdir="$out/lib/udev" chrpath=no
+  '';
 
   doCheck = true;
 
-  postInstall = "wrapPythonPrograms";
+  checkPhase = ''
+    export LD_LIBRARY_PATH="$PWD"
+    scons check
+  '';
+
+  # TODO: the udev rules file and the hotplug script need fixes to work on NixOS
+  installPhase = ''
+    scons install
+    mkdir -p "$out/lib/udev/rules.d"
+    scons udev-install
+  '';
 
-  meta = {
-    description = "`gpsd', a GPS service daemon";
+  postInstall = "wrapPythonPrograms";
 
+  meta = with stdenv.lib; {
+    description = "GPS service daemon";
     longDescription = ''
-      gpsd is a service daemon that monitors one or more GPSes
-      attached to a host computer through serial or USB ports, making
-      all data on the location/course/velocity of the sensors
-      available to be queried on TCP port 2947 of the host computer.
-      With gpsd, multiple GPS client applications (such as
-      navigational and wardriving software) can share access to GPSes
-      without contention or loss of data.  Also, gpsd responds to
-      queries with a format that is substantially easier to parse than
-      the NMEA 0183 emitted by most GPSes.  The gpsd distribution
-      includes a linkable C service library, a C++ wrapper class, and
-      a Python module that developers of gpsd-aware applications can
-      use to encapsulate all communication with gpsd.
+      gpsd is a service daemon that monitors one or more GPSes or AIS
+      receivers attached to a host computer through serial or USB ports,
+      making all data on the location/course/velocity of the sensors
+      available to be queried on TCP port 2947 of the host computer. With
+      gpsd, multiple location-aware client applications (such as navigational
+      and wardriving software) can share access to receivers without
+      contention or loss of data. Also, gpsd responds to queries with a
+      format that is substantially easier to parse than the NMEA 0183 emitted
+      by most GPSes. The gpsd distribution includes a linkable C service
+      library, a C++ wrapper class, and a Python module that developers of
+      gpsd-aware applications can use to encapsulate all communication with
+      gpsd. Third-party client bindings for Java and Perl also exist.
 
       Besides gpsd itself, the project provides auxiliary tools for
-      diagnostic monitoring and profiling of GPSes and feeding
-      GPS-aware applications GPS logs for diagnostic purposes.
+      diagnostic monitoring and profiling of receivers and feeding
+      location-aware applications GPS/AIS logs for diagnostic purposes.
     '';
-
-    homepage = http://gpsd.berlios.de/;
-
+    homepage = http://catb.org/gpsd/;
     license = "BSD-style";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
   };
 }
diff --git a/pkgs/servers/http/lighttpd/default.nix b/pkgs/servers/http/lighttpd/default.nix
index 4a50acd3379f..899914b6446d 100644
--- a/pkgs/servers/http/lighttpd/default.nix
+++ b/pkgs/servers/http/lighttpd/default.nix
@@ -1,22 +1,26 @@
 { stdenv, fetchurl, pkgconfig, pcre, libxml2, zlib, attr, bzip2, which, file
 , openssl, enableMagnet ? false, lua5 ? null
+, enableMysql ? false, mysql ? null
 }:
 
 assert enableMagnet -> lua5 != null;
+assert enableMysql -> mysql != null;
 
 stdenv.mkDerivation rec {
-  name = "lighttpd-1.4.34";
+  name = "lighttpd-1.4.35";
 
   src = fetchurl {
     url = "http://download.lighttpd.net/lighttpd/releases-1.4.x/${name}.tar.xz";
-    sha256 = "1dzgz3gkfyn97s4dm896yjanlhqzzsz38dhjdgla06xgynca1hdl";
+    sha256 = "18rh7xyx69xbwl20znnjma1dq5fay0ygjjvpn3gaa7dxrir9nghi";
   };
 
   buildInputs = [ pkgconfig pcre libxml2 zlib attr bzip2 which file openssl ]
-             ++ stdenv.lib.optional enableMagnet lua5;
+             ++ stdenv.lib.optional enableMagnet lua5
+             ++ stdenv.lib.optional enableMysql mysql;
 
   configureFlags = [ "--with-openssl" ]
-                ++ stdenv.lib.optional enableMagnet "--with-lua";
+                ++ stdenv.lib.optional enableMagnet "--with-lua"
+                ++ stdenv.lib.optional enableMysql "--with-mysql";
 
   preConfigure = ''
     sed -i "s:/usr/bin/file:${file}/bin/file:g" configure
diff --git a/pkgs/servers/http/winstone/default.nix b/pkgs/servers/http/winstone/default.nix
new file mode 100644
index 000000000000..8991a220a76d
--- /dev/null
+++ b/pkgs/servers/http/winstone/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "winstone-${version}";
+  version = "0.9.10";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/winstone/${name}.jar";
+    sha256 = "17xvq3yk95335c6ag1bmbmxlvh7gqq35ifi64r2l6rnvrf6pqyan";
+  };
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    cp $src $out/lib/winstone.jar
+  '';
+
+  meta = {
+    homepage = "http://winstone.sourceforge.net/";
+    description = "A simple Java Servlet container.";
+    license = stdenv.lib.licenses.cddl;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.rickynils ];
+  };
+}
diff --git a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
index cce63fe250c6..3ba11d41b1bd 100644
--- a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
+++ b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
@@ -1,6 +1,6 @@
-diff -ur dovecot-2.2.2-orig/src/auth/main.c dovecot-2.2.2/src/auth/main.c
---- dovecot-2.2.2-orig/src/auth/main.c	2013-03-13 15:26:46.000000000 +0100
-+++ dovecot-2.2.2/src/auth/main.c	2013-05-20 20:23:58.126024535 +0200
+diff -ur dovecot-2.2.12-orig/src/auth/main.c dovecot-2.2.12/src/auth/main.c
+--- dovecot-2.2.12-orig/src/auth/main.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/auth/main.c	2014-03-14 09:28:17.642334838 +0100
 @@ -193,7 +193,7 @@
  	mod_set.debug = global_auth_settings->debug;
  	mod_set.filter_callback = auth_module_filter;
@@ -19,10 +19,10 @@ diff -ur dovecot-2.2.2-orig/src/auth/main.c dovecot-2.2.2/src/auth/main.c
  					  &mod_set);
  	module_dir_init(modules);
  }
-diff -ur dovecot-2.2.2-orig/src/config/all-settings.c dovecot-2.2.2/src/config/all-settings.c
---- dovecot-2.2.2-orig/src/config/all-settings.c	2013-05-15 12:20:55.000000000 +0200
-+++ dovecot-2.2.2/src/config/all-settings.c	2013-05-21 00:31:46.624073562 +0200
-@@ -766,7 +766,7 @@
+diff -ur dovecot-2.2.12-orig/src/config/all-settings.c dovecot-2.2.12/src/config/all-settings.c
+--- dovecot-2.2.12-orig/src/config/all-settings.c	2014-02-11 23:31:37.000000000 +0100
++++ dovecot-2.2.12/src/config/all-settings.c	2014-03-14 09:32:08.907608311 +0100
+@@ -773,7 +773,7 @@
  	.last_valid_gid = 0,
  
  	.mail_plugins = "",
@@ -31,18 +31,19 @@ diff -ur dovecot-2.2.2-orig/src/config/all-settings.c dovecot-2.2.2/src/config/a
  
  	.mail_log_prefix = "%s(%u): ",
  
-@@ -3274,7 +3274,7 @@
+@@ -3304,7 +3304,7 @@
  	.base_dir = PKG_RUNDIR,
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
 +	.mail_plugin_dir = "/var/lib/dovecot/modules",
+ 	.auth_socket_path = "auth-userdb",
  	.doveadm_socket_path = "doveadm-server",
  	.doveadm_worker_count = 0,
- 	.doveadm_port = 0,
-diff -ur dovecot-2.2.2-orig/src/config/config-parser.c dovecot-2.2.2/src/config/config-parser.c
---- dovecot-2.2.2-orig/src/config/config-parser.c	2013-02-04 22:05:42.000000000 +0100
-+++ dovecot-2.2.2/src/config/config-parser.c	2013-05-20 20:23:58.106024534 +0200
+Only in dovecot-2.2.12/src/config: all-settings.c.orig
+diff -ur dovecot-2.2.12-orig/src/config/config-parser.c dovecot-2.2.12/src/config/config-parser.c
+--- dovecot-2.2.12-orig/src/config/config-parser.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/config/config-parser.c	2014-03-14 09:28:17.645334840 +0100
 @@ -990,7 +990,7 @@
  
  	memset(&mod_set, 0, sizeof(mod_set));
@@ -52,9 +53,9 @@ diff -ur dovecot-2.2.2-orig/src/config/config-parser.c dovecot-2.2.2/src/config/
  	module_dir_init(modules);
  
  	i_array_init(&new_roots, 64);
-diff -ur dovecot-2.2.2-orig/src/dict/main.c dovecot-2.2.2/src/dict/main.c
---- dovecot-2.2.2-orig/src/dict/main.c	2013-02-04 22:05:42.000000000 +0100
-+++ dovecot-2.2.2/src/dict/main.c	2013-05-20 20:23:58.101024534 +0200
+diff -ur dovecot-2.2.12-orig/src/dict/main.c dovecot-2.2.12/src/dict/main.c
+--- dovecot-2.2.12-orig/src/dict/main.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/dict/main.c	2014-03-14 09:28:17.645334840 +0100
 @@ -61,7 +61,7 @@
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
  	mod_set.require_init_funcs = TRUE;
@@ -64,22 +65,23 @@ diff -ur dovecot-2.2.2-orig/src/dict/main.c dovecot-2.2.2/src/dict/main.c
  	module_dir_init(modules);
  
  	/* Register only after loading modules. They may contain SQL drivers,
-diff -ur dovecot-2.2.2-orig/src/doveadm/doveadm-settings.c dovecot-2.2.2/src/doveadm/doveadm-settings.c
---- dovecot-2.2.2-orig/src/doveadm/doveadm-settings.c	2013-04-07 19:13:06.000000000 +0200
-+++ dovecot-2.2.2/src/doveadm/doveadm-settings.c	2013-05-20 20:23:58.399024539 +0200
-@@ -76,7 +76,7 @@
+diff -ur dovecot-2.2.12-orig/src/doveadm/doveadm-settings.c dovecot-2.2.12/src/doveadm/doveadm-settings.c
+--- dovecot-2.2.12-orig/src/doveadm/doveadm-settings.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/doveadm/doveadm-settings.c	2014-03-14 09:32:56.540087069 +0100
+@@ -77,7 +77,7 @@
  	.base_dir = PKG_RUNDIR,
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
 +	.mail_plugin_dir = "/var/lib/dovecot/modules",
+ 	.auth_socket_path = "auth-userdb",
  	.doveadm_socket_path = "doveadm-server",
  	.doveadm_worker_count = 0,
- 	.doveadm_port = 0,
-diff -ur dovecot-2.2.2-orig/src/lib-fs/fs-api.c dovecot-2.2.2/src/lib-fs/fs-api.c
---- dovecot-2.2.2-orig/src/lib-fs/fs-api.c	2013-04-18 16:07:26.000000000 +0200
-+++ dovecot-2.2.2/src/lib-fs/fs-api.c	2013-05-20 20:23:58.099024534 +0200
-@@ -82,7 +82,7 @@
+Only in dovecot-2.2.12/src/doveadm: doveadm-settings.c.orig
+diff -ur dovecot-2.2.12-orig/src/lib-fs/fs-api.c dovecot-2.2.12/src/lib-fs/fs-api.c
+--- dovecot-2.2.12-orig/src/lib-fs/fs-api.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/lib-fs/fs-api.c	2014-03-14 09:28:17.646334843 +0100
+@@ -89,7 +89,7 @@
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
  	mod_set.ignore_missing = TRUE;
  
@@ -88,10 +90,11 @@ diff -ur dovecot-2.2.2-orig/src/lib-fs/fs-api.c dovecot-2.2.2/src/lib-fs/fs-api.
  					     module_name, &mod_set);
  	module_dir_init(fs_modules);
  
-diff -ur dovecot-2.2.2-orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.2.2/src/lib-ssl-iostream/iostream-ssl.c
---- dovecot-2.2.2-orig/src/lib-ssl-iostream/iostream-ssl.c	2013-04-09 22:45:19.000000000 +0200
-+++ dovecot-2.2.2/src/lib-ssl-iostream/iostream-ssl.c	2013-05-20 20:23:58.089024534 +0200
-@@ -28,7 +28,7 @@
+Only in dovecot-2.2.12/src/lib-fs: fs-api.c.orig
+diff -ur dovecot-2.2.12-orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.2.12/src/lib-ssl-iostream/iostream-ssl.c
+--- dovecot-2.2.12-orig/src/lib-ssl-iostream/iostream-ssl.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/lib-ssl-iostream/iostream-ssl.c	2014-03-14 09:28:17.646334843 +0100
+@@ -30,7 +30,7 @@
  	memset(&mod_set, 0, sizeof(mod_set));
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
  	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
@@ -100,10 +103,11 @@ diff -ur dovecot-2.2.2-orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.2.2/sr
  
  	ssl_vfuncs = module_get_symbol(ssl_module, "ssl_vfuncs");
  	if (ssl_vfuncs == NULL) {
-diff -ur dovecot-2.2.2-orig/src/lib-storage/mail-storage-settings.c dovecot-2.2.2/src/lib-storage/mail-storage-settings.c
---- dovecot-2.2.2-orig/src/lib-storage/mail-storage-settings.c	2013-05-15 12:20:00.000000000 +0200
-+++ dovecot-2.2.2/src/lib-storage/mail-storage-settings.c	2013-05-20 20:23:57.858024531 +0200
-@@ -260,7 +260,7 @@
+Only in dovecot-2.2.12/src/lib-ssl-iostream: iostream-ssl.c.orig
+diff -ur dovecot-2.2.12-orig/src/lib-storage/mail-storage-settings.c dovecot-2.2.12/src/lib-storage/mail-storage-settings.c
+--- dovecot-2.2.12-orig/src/lib-storage/mail-storage-settings.c	2014-02-11 23:23:37.000000000 +0100
++++ dovecot-2.2.12/src/lib-storage/mail-storage-settings.c	2014-03-14 09:28:17.646334843 +0100
+@@ -262,7 +262,7 @@
  	.last_valid_gid = 0,
  
  	.mail_plugins = "",
@@ -112,3 +116,4 @@ diff -ur dovecot-2.2.2-orig/src/lib-storage/mail-storage-settings.c dovecot-2.2.
  
  	.mail_log_prefix = "%s(%u): ",
  
+Only in dovecot-2.2.12/src/lib-storage: mail-storage-settings.c.orig
diff --git a/pkgs/servers/mail/dovecot/2.2.x.nix b/pkgs/servers/mail/dovecot/2.2.x.nix
index 06635e33954f..2b1aca3e9269 100644
--- a/pkgs/servers/mail/dovecot/2.2.x.nix
+++ b/pkgs/servers/mail/dovecot/2.2.x.nix
@@ -2,13 +2,13 @@
 , inotifyTools }:
 
 stdenv.mkDerivation rec {
-  name = "dovecot-2.2.6";
+  name = "dovecot-2.2.12";
 
   buildInputs = [perl systemd openssl pam bzip2 zlib openldap inotifyTools];
 
   src = fetchurl {
     url = "http://dovecot.org/releases/2.2/${name}.tar.gz";
-    sha256 = "1rfnsg0a57cv02pl68h3jhbd5v3071a75bvf9gs95fd41g72n9v2";
+    sha256 = "0mlcwgrxfwy1fqfk3wwbh1h9f0jddg4rnj612ckj1zv5asp1rppk";
   };
 
   preConfigure = ''
diff --git a/pkgs/servers/memcached/default.nix b/pkgs/servers/memcached/default.nix
index ef77c3191cab..b45bef0cce8c 100644
--- a/pkgs/servers/memcached/default.nix
+++ b/pkgs/servers/memcached/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, cyrus_sasl, libevent}:
 
-stdenv.mkDerivation {
-  name = "memcached-1.4.15";
+stdenv.mkDerivation rec {
+  name = "memcached-1.4.17";
 
   src = fetchurl {
-    url = http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz;
-    sha256 = "1d7205cp49s379fdy2qz1gz2a5v4nnv18swzmvbascbmgamj35qn";
+    url = "http://memcached.org/files/${name}.tar.gz";
+    sha1 = "2b4fc706d39579cf355e3358cfd27b44d40bd79c";
   };
 
   buildInputs = [cyrus_sasl libevent];
diff --git a/pkgs/servers/openafs-client/default.nix b/pkgs/servers/openafs-client/default.nix
index ba0b80fc61e8..47c8c12edef6 100644
--- a/pkgs/servers/openafs-client/default.nix
+++ b/pkgs/servers/openafs-client/default.nix
@@ -4,11 +4,11 @@
 assert stdenv.isLinux;
 
 stdenv.mkDerivation {
-  name = "openafs-1.6.1-${kernel.version}";
+  name = "openafs-1.6.6-${kernel.version}";
 
   src = fetchurl {
-    url = http://www.openafs.org/dl/openafs/1.6.1/openafs-1.6.1-src.tar.bz2;
-    sha256 = "1c7mid0dwl2x0sikr70bi5cs881y6pa4dfwkdmr3jscvx3wgfpnh";
+    url = http://www.openafs.org/dl/openafs/1.6.6/openafs-1.6.6-src.tar.bz2;
+    sha256 = "0xfa64hvz0avp89zgz8ksmp24s6ns0z3103m4mspshhhdlikypk3";
   };
 
   buildInputs = [ autoconf automake flex yacc ncurses perl which ];
@@ -41,6 +41,5 @@ stdenv.mkDerivation {
     license = stdenv.lib.licenses.ipl10;
     platforms = stdenv.lib.platforms.linux;
     maintainers = stdenv.lib.maintainers.z77z;
-    broken = true;
   };
 }
diff --git a/pkgs/servers/search/solr/default.nix b/pkgs/servers/search/solr/default.nix
new file mode 100644
index 000000000000..443e7af71ad7
--- /dev/null
+++ b/pkgs/servers/search/solr/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "solr-${version}";
+  version = "4.7.0";
+
+  src = fetchurl {
+    url = "mirror://apache/lucene/solr/${version}/solr-${version}.tgz";
+    sha256 = "0qm3pnhpfqjxdl0xiwffrcchp79q3ja5w5d278bkkxglc2y1y4xc";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    cp dist/${name}.war $out/lib/solr.war
+    cp -r example/lib/ext $out/lib/ext
+  '';
+
+  meta = {
+    homepage = "https://lucene.apache.org/solr/";
+    description = ''
+      Open source enterprise search platform from the Apache Lucene project
+    '';
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.rickynils ];
+  };
+
+}
diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix
index 13c878888e29..274fc89f94d0 100644
--- a/pkgs/servers/serfdom/default.nix
+++ b/pkgs/servers/serfdom/default.nix
@@ -1,80 +1,105 @@
-{ stdenv, fetchurl, fetchgit, go, lib }:
+{ stdenv, fetchurl, fetchgit, fetchhg, go, lib }:
 
 let
   goDeps = [
     {
-      dir    = "github.com/hashicorp";
-      name   = "serf";
-      rev    = "21113c8207d8e02b7ff738c9be80fcaabf67251d";
-      sha256 = "10lmgb0caffp0x02nriahyfq9p6qkhr8carfq38m8cjxqxs2v0nk";
+      dir     = "github.com/hashicorp";
+      name    = "serf";
+      rev     = "c5b41a9d1d261135117a8d501d3293efade3cc74";
+      sha256  = "a314d3c13fb370842a8f7c6650abfa907b51172a09c64f9184a240fab05b43df";
+      fetcher = git;
     }
     {
-      dir    = "github.com/armon";
-      name   = "go-metrics";
-      rev    = "8ceaed1d0bc3a25db6e65e79ee4f895013313c17";
-      sha256 = "1yzajmx26br4812m9gz4v7qj6fcmhg4a9jz9l3i20hh2x06srmpg";
+      dir     = "github.com/armon";
+      name    = "go-metrics";
+      rev     = "e12c3591b520e819e8234bd585d592774f2b2ad5";
+      sha256  = "79476efefb68876fcad7e71e76d95f4a7eece2cfcdc5a9c10f998af3178230ba";
+      fetcher = git;
     }
     {
-      dir    = "github.com/hashicorp";
-      name   = "logutils";
-      rev    = "8e0820fe7ac5eb2b01626b1d99df47c5449eb2d8";
-      sha256 = "184lnn7x1v3xvj6zz1rg9s0252wkkd59kij2iyrrm7y80bym2jys";
+      dir     = "github.com/hashicorp";
+      name    = "logutils";
+      rev     = "8e0820fe7ac5eb2b01626b1d99df47c5449eb2d8";
+      sha256  = "184lnn7x1v3xvj6zz1rg9s0252wkkd59kij2iyrrm7y80bym2jys";
+      fetcher = git;
     }
     {
-      dir    = "github.com/hashicorp";
-      name   = "memberlist";
-      rev    = "825ad4aca57c7323e8dadde149bfdec9d9621ffe";
-      sha256 = "0mm0hm2kncafq5ml58ki7ilh3b47ni0w19n50ilahhhm4lsfry7z";
+      dir     = "github.com/hashicorp";
+      name    = "memberlist";
+      rev     = "d5be01d1f4d75b086eba4ae808f2767c08cbbf73";
+      sha256  = "4ab2b610d439e96c169d9caf9ac0e009d71d3ef9a2fd2c812870b71eb6b27dfc";
+      fetcher = git;
     }
     {
-      dir    = "github.com/ugorji";
-      name   = "go";
-      rev    = "cdeae7b76625959e4164eab9eb303087a794f2cc";
-      sha256 = "0pcjlbhp6vxnksy12rav6c8bvi2v010407l5hibxqdvnampvhlkb";
+      dir     = "github.com/ugorji";
+      name    = "go";
+      rev     = "71c2886f5a673a35f909803f38ece5810165097b";
+      sha256  = "128853bcc5f114c300772cbce316b55e84206fa56705c5b9cc94c1693b11ee94";
+      fetcher = git;
     }
     {
-      dir    = "github.com/mitchellh";
-      name   = "cli";
-      rev    = "69f0b65ce53b27f729b1b807b88dc88007f41dd3";
-      sha256 = "0hnnqd8vg5ca2hglkrj141ba2akdh7crl2lsrgz8d6ipw6asszx3";
+      dir     = "github.com/mitchellh";
+      name    = "cli";
+      rev     = "69f0b65ce53b27f729b1b807b88dc88007f41dd3";
+      sha256  = "0hnnqd8vg5ca2hglkrj141ba2akdh7crl2lsrgz8d6ipw6asszx3";
+      fetcher = git;
     }
     {
-      dir    = "github.com/armon";
-      name   = "mdns";
-      rev    = "17be83de467449f38a8395c30534a9cf0c03e5ea";
-      sha256 = "1fhb6vldclgdx9aqqh1gl87cl5sw3nbq9b7mibkljhbk3cdajyxn";
+      dir     = "github.com/armon";
+      name    = "mdns";
+      rev     = "8be7e3ac4e941555169a99d01abcabd3c982d87a";
+      sha256  = "87cd3a0ada3b094ee8fc4c4742158e0d051cde893da1ea320158a47d6254f69d";
+      fetcher = git;
     }
     {
-      dir    = "github.com/miekg";
-      name   = "dns";
-      rev    = "5eec7f362c392f0a7eaadea69b13667d665feb82";
-      sha256 = "0irlzhd78qmn3lyfbkxmwajv0mm6jp6x0cg7hb9hyj6d01ynlv09";
+      dir     = "github.com/miekg";
+      name    = "dns";
+      rev     = "7ebb4c59b39d5984952a355086606dd91f6cfe86";
+      sha256  = "8418ad2d27e607cef1dc0003471416294443e467f2de9df135e3a2ab411e2512";
+      fetcher = git;
     }
     {
-      dir    = "github.com/mitchellh";
-      name   = "mapstructure";
-      rev    = "57bb2fa7a7e00b26c80e4c4b0d4f15a210d94039";
-      sha256 = "13lvd5vw8y6h5zl3samkrb7237kk778cky7k7ys1cm46mfd957zy";
+      dir     = "github.com/mitchellh";
+      name    = "mapstructure";
+      rev     = "57bb2fa7a7e00b26c80e4c4b0d4f15a210d94039";
+      sha256  = "13lvd5vw8y6h5zl3samkrb7237kk778cky7k7ys1cm46mfd957zy";
+      fetcher = git;
+    }
+    {
+      dir     = "github.com/ryanuber";
+      name    = "columnize";
+      rev     = "d066e113d6e13232f45bda646a915dffeee7f1a4";
+      sha256  = "2aaec396a223fc4b45117a595e74c0a874bd5cd9604c742b8c4747436b4721e9";
+      fetcher = git;
+    }
+    {
+      dir     = "code.google.com/p";
+      name    = "go.net";
+      rev     = "89dbba2db2d4";
+      sha256  = "0168inai10nkdrz4g0rjlj8b5v34mv135v8bhyvh501vnqql50jn";
+      fetcher = hg;
     }
   ];
+  git = desc: fetchgit { url = "https://${desc.dir}/${desc.name}";
+                         inherit (desc) rev sha256; };
+  hg = desc: fetchhg { url = "https://${desc.dir}/${desc.name}";
+                       tag = desc.rev;
+                       inherit (desc) sha256; };
   createGoPathCmds =
     lib.concatStrings
       (map (desc:
-            let
-              fetched = fetchgit { url = "https://${desc.dir}/${desc.name}";
-                                   inherit (desc) rev sha256; };
-            in ''
+            let fetched = desc.fetcher desc; in ''
               mkdir -p $GOPATH/src/${desc.dir}
               ln -s ${fetched} $GOPATH/src/${desc.dir}/${desc.name}
             '') goDeps);
 in
   stdenv.mkDerivation rec {
-    version = "0.4.1";
+    version = "0.5.0";
     name = "serfdom-${version}";
 
     src = fetchurl {
       url = "https://github.com/hashicorp/serf/archive/v${version}.tar.gz";
-      sha256 = "0f4fxhw2r31ks9rs9h3wx9lsymnp8szk0gzggvibwhl2bm6kn6d8";
+      sha256 = "1p2cpkdx0gck1ypxc98im7gsv3275avpkizhsif3nxvl1xd8g1qp";
     };
 
     buildInputs = [ go ];
diff --git a/pkgs/servers/sql/postgresql/9.3.x.nix b/pkgs/servers/sql/postgresql/9.3.x.nix
index 7f6e2d25d187..3b5c820c94d1 100644
--- a/pkgs/servers/sql/postgresql/9.3.x.nix
+++ b/pkgs/servers/sql/postgresql/9.3.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, zlib, readline }:
+{ stdenv, fetchurl, zlib, readline, libossp_uuid }:
 
 let version = "9.3.3"; in
 
@@ -10,12 +10,17 @@ stdenv.mkDerivation rec {
     sha256 = "e925d8abe7157bd8bece6b7c0dd0c343d87a2b4336f85f4681ce596af99c3879";
   };
 
-  buildInputs = [ zlib readline ];
+  buildInputs = [ zlib readline libossp_uuid ];
 
   enableParallelBuilding = true;
 
   makeFlags = [ "world" ];
 
+  configureFlags =
+    ''
+      --with-ossp-uuid
+    '';
+
   patches = [ ./disable-resolve_symlinks.patch ./less-is-more.patch ];
 
   installTargets = [ "install-world" ];
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 6e74af5fce52..f1cf34b160c6 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -12,12 +12,6 @@ let lib = import ../../../lib; in lib.makeOverridable (
 , extraBuildInputs ? []
 }:
 
-if ! builtins ? langVersion then
-
-  abort "This version of Nixpkgs requires Nix >= 1.2, please upgrade!"
-
-else
-
 let
 
   allowUnfree = config.allowUnfree or true && builtins.getEnv "HYDRA_DISALLOW_UNFREE" != "1";
diff --git a/pkgs/tools/graphics/pfstools/default.nix b/pkgs/tools/graphics/pfstools/default.nix
index 9b0a83725eaa..fbd1778faefd 100644
--- a/pkgs/tools/graphics/pfstools/default.nix
+++ b/pkgs/tools/graphics/pfstools/default.nix
@@ -2,11 +2,11 @@
 freeglut, bzip2, libX11, libpng, expat, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "pfstools-1.8.3";
+  name = "pfstools-1.8.5";
 
   src = fetchurl {
     url = "mirror://sourceforge/pfstools/${name}.tar.gz";
-    sha256 = "1j3pzwpxvsx9220176bfjallc73jyda61xqkvnmlxqfd3n7ycgx1";
+    sha256 = "01kk2r8afrb3vrhm8abfjdhhan97lzpapc4n8w1mpdp3kv9miy9c";
   };
 
   configureFlags = "--with-moc=${qt4}/bin/moc";
diff --git a/pkgs/tools/misc/apt-offline/default.nix b/pkgs/tools/misc/apt-offline/default.nix
new file mode 100644
index 000000000000..219cb2139f58
--- /dev/null
+++ b/pkgs/tools/misc/apt-offline/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, bash, buildPythonPackage }:
+
+buildPythonPackage rec {
+  version = "1.3";
+  name = "apt-offline-${version}";
+
+  src = fetchurl {
+    #url = "https://alioth.debian.org/frs/download.php/file/3855/${name}.tar.gz";
+    # The above URL has two problems: it requires one to be logged in, and it
+    # uses a CA that curl doesn't know about.  Instead, we use this mirror:
+    url = "http://www.falsifian.org/a/cFi5/${name}.tar.gz";
+    sha256 = "1sp7ai2abzhbg9y84700qziybphvpzl2nk3mz1d1asivzyjvxlxy";
+  };
+
+  buildInputs = [ ];
+
+  doCheck = false;
+
+  # Requires python-qt4 (feel free to get it working).
+  preFixup = ''rm "$out/bin/apt-offline-gui"'';
+
+  meta = with stdenv.lib; {
+    description = "offline APT package manager";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.falsifian ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/autorandr/default.nix b/pkgs/tools/misc/autorandr/default.nix
index 2c7505260a69..960d85ab6be6 100644
--- a/pkgs/tools/misc/autorandr/default.nix
+++ b/pkgs/tools/misc/autorandr/default.nix
@@ -16,6 +16,7 @@ in
     src = fetchgit {
       inherit rev;
       url = "https://github.com/wertarbyte/autorandr.git";
+      sha256 = "1x8agg6mf5jr0imw7dznr8kxyw970bf252bda9q7b0z4yksya2zd"; 
     };
 
     patchPhase = ''
diff --git a/pkgs/tools/misc/colord/default.nix b/pkgs/tools/misc/colord/default.nix
index 525c3ba9f2c4..a744adbe05c1 100644
--- a/pkgs/tools/misc/colord/default.nix
+++ b/pkgs/tools/misc/colord/default.nix
@@ -12,7 +12,11 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  configureFlags = "--with-udevrulesdir=$out/lib/udev/rules.d --with-systemdsystemunitdir=$out/lib/udev/rules.d --disable-bash-completion";
+  configureFlags = [
+    "--with-udevrulesdir=$out/lib/udev/rules.d"
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+    "--disable-bash-completion"
+  ];
 
   buildInputs = [ glib polkit pkgconfig intltool gusb libusb1 lcms2 sqlite systemd dbus gobjectIntrospection
                   bashCompletion ];
diff --git a/pkgs/tools/misc/fasd/default.nix b/pkgs/tools/misc/fasd/default.nix
new file mode 100644
index 000000000000..77d1d58c30c2
--- /dev/null
+++ b/pkgs/tools/misc/fasd/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, pandoc, ... } :
+
+let
+  rev = "287af2b80e0829b08dc6329b4fe8d8e5594d64b0";
+in
+stdenv.mkDerivation {
+
+  name = "fasd-1.0.1";
+
+  src = fetchgit {
+    url = "https://github.com/clvv/fasd.git";
+    inherit rev;
+    sha256 = "0kv9iyfdf916x0gab9fzs4vmsnkaqmb6kh4xna485nqij89xzkgs";
+  };
+
+  installPhase = ''
+    PREFIX=$out make install
+  '';
+
+  meta = {
+    homepage = "https://github.com/clvv/fasd";
+    description = "quick command-line access to files and directories for POSIX shells";
+    license = "free";
+
+    longDescription = ''
+      Fasd is a command-line productivity booster.
+      Fasd offers quick access to files and directories for POSIX shells. It is
+      inspired by tools like autojump, z and v. Fasd keeps track of files and
+      directories you have accessed, so that you can quickly reference them in the
+      command line.
+    '';
+
+    platforms = stdenv.lib.platforms.all;
+  };
+}
+
+
diff --git a/pkgs/tools/misc/system-config-printer/default.nix b/pkgs/tools/misc/system-config-printer/default.nix
index b0da497c322e..51cb1d22a49e 100644
--- a/pkgs/tools/misc/system-config-printer/default.nix
+++ b/pkgs/tools/misc/system-config-printer/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   configureFlags =
     [ "--with-udev-rules"
-      "--with-systemdsystemunitdir=$(out)/etc/systemd/systemd"
+      "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
     ];
 
   postInstall =
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index 5bf9e755ae90..3edce28151ea 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, python, zip }:
 
 let
-  version = "2014.03.07.1";
+  version = "2014.03.12";
 in
 stdenv.mkDerivation rec {
   name = "youtube-dl-${version}";
 
   src = fetchurl {
     url = "http://youtube-dl.org/downloads/${version}/${name}.tar.gz";
-    sha256 = "1yhjb5gk6l3y5p5fw246pww5yq661sr02zs17pqyxxbs2gx9kr4p";
+    sha256 = "1fap7mx2bmfr1jv7v5n2khl72mbasnzlasqd8gi654cl9xp12p5x";
   };
 
   buildInputs = [ python ];
@@ -28,6 +28,6 @@ stdenv.mkDerivation rec {
     description = "Command-line tool to download videos from YouTube.com and other sites";
 
     platforms = with stdenv.lib.platforms; linux ++ darwin;
-    maintainers = with stdenv.lib.maintainers; [ bluescreen303 simons ];
+    maintainers = with stdenv.lib.maintainers; [ bluescreen303 simons phreedom ];
   };
 }
diff --git a/pkgs/tools/networking/easyrsa/default.nix b/pkgs/tools/networking/easyrsa/default.nix
index 99cfb92a18b6..bb59bb5b165e 100644
--- a/pkgs/tools/networking/easyrsa/default.nix
+++ b/pkgs/tools/networking/easyrsa/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   # Make sane defaults and patch default config vars
   postInstall = ''
-    for prog in $(find "$out/share/easy-rsa" -executable); do
+    for prog in $(find "$out/share/easy-rsa" -executable -type f); do
       makeWrapper "$prog" "$out/bin/$(basename $prog)" \
         --set EASY_RSA "$out/share/easy-rsa" \
         --set OPENSSL "${openssl}/bin/openssl" \
diff --git a/pkgs/tools/networking/haproxy/default.nix b/pkgs/tools/networking/haproxy/default.nix
index e4a32e14260c..42760da5d4ae 100644
--- a/pkgs/tools/networking/haproxy/default.nix
+++ b/pkgs/tools/networking/haproxy/default.nix
@@ -29,9 +29,9 @@ stdenv.mkDerivation rec {
     homepage = http://haproxy.1wt.eu;
     maintainers = [ stdenv.lib.maintainers.garbas ];
     platforms = stdenv.lib.platforms.linux;
-    license = [
+    /* TODO license = [
        stdenv.lib.licenses.gpl2
        stdenv.lib.licenses.lgpl21
-    ];
+    ];*/
   };
 }
diff --git a/pkgs/tools/networking/isync/default.nix b/pkgs/tools/networking/isync/default.nix
index 86986ed9b954..ed01ccacd797 100644
--- a/pkgs/tools/networking/isync/default.nix
+++ b/pkgs/tools/networking/isync/default.nix
@@ -1,14 +1,13 @@
 { fetchurl, stdenv, openssl, pkgconfig, db }:
 
 stdenv.mkDerivation rec {
-  name = "isync-1.0.6";
+  name = "isync-1.1.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/isync/${name}.tar.gz";
-    sha256 = "0bv3hw6mc9xi55q6lpyz1w3dyrk6rlxa8ny2x1b44mrnbrx7chz5";
+    sha256 = "51f5618c239013fb770f98ae269f24ee417214efaaf7e22821b4a27cf9a9213c";
   };
 
-  patches = [ ./isync-recursice-imap.patch ]; # usefull patch to enable subfolders listing
   buildInputs = [ openssl pkgconfig db ];
 
   meta = {
diff --git a/pkgs/tools/networking/network-manager-applet/default.nix b/pkgs/tools/networking/network-manager-applet/default.nix
index 4d2dff22d114..6db55ada1929 100644
--- a/pkgs/tools/networking/network-manager-applet/default.nix
+++ b/pkgs/tools/networking/network-manager-applet/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
     ln -s ${networkmanager_openconnect}/libexec/* $out/libexec/
     wrapProgram "$out/bin/nm-applet" \
       --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \
-      --prefix XDG_DATA_DIRS : "${gsettings_desktop_schemas}/share:$out/share" \
+      --prefix XDG_DATA_DIRS : "${gsettings_desktop_schemas}/share:${gnome3.gtk}/share:$out/share" \
       --set GCONF_CONFIG_SOURCE "xml::~/.gconf" \
       --prefix PATH ":" "${gnome3.gconf}/bin"
   '';
diff --git a/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix b/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix
new file mode 100644
index 000000000000..748f41c90538
--- /dev/null
+++ b/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchgit, makeWrapper,  coreutils, gawk, utillinux }:
+
+stdenv.mkDerivation rec {
+  name = "openvpn-learnaddress-19b03c3";
+
+  src = fetchgit {
+    url = https://gist.github.com/4058733.git;
+    rev = "19b03c3beb0190df46ea07bf4b68244acb8eae80";
+    sha256 = "16pcyvyhwsx34i0cjkkx906lmrwdd9gvznvqdwlad4ha8l8f8z42";
+  };
+
+  buildInputs = [ makeWrapper coreutils gawk utillinux ];
+
+  installPhase = ''
+    install -Dm555 ovpn-learnaddress $out/libexec/openvpn/openvpn-learnaddress
+
+    wrapProgram $out/libexec/openvpn/openvpn-learnaddress \
+        --prefix PATH : ${coreutils}/bin:${gawk}/bin:${utillinux}/bin
+  '';
+
+  meta = {
+    description = "Openvpn learn-address script to manage a hosts-like file";
+    homepage = https://gist.github.com/offlinehacker/4058733/;
+    maintainers = [ stdenv.lib.maintainers.offline ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
index 8796dbd076e7..76a4a0eae62d 100644
--- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
+++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
@@ -67,7 +67,7 @@ buildPythonPackage {
 
     homepage = http://allmydata.org/;
 
-    license = [ lib.licenses.gpl2Plus /* or */ "TGPPLv1+" ];
+    # TODO license = [ lib.licenses.gpl2Plus /* or */ "TGPPLv1+" ];
 
     maintainers = [ lib.maintainers.simons  ];
     platforms = lib.platforms.gnu;  # arbitrary choice
diff --git a/pkgs/tools/networking/socat/2.x.nix b/pkgs/tools/networking/socat/2.x.nix
index 885f2d005d8a..74b9b1bdf6aa 100644
--- a/pkgs/tools/networking/socat/2.x.nix
+++ b/pkgs/tools/networking/socat/2.x.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A utility for bidirectional data transfer between two independent data channels";
     homepage = http://www.dest-unreach.org/socat/;
+    repositories.git = git://repo.or.cz/socat.git;
     platforms = stdenv.lib.platforms.linux;
     license = stdenv.lib.licenses.gpl2;
     maintainers = stdenv.lib.maintainers.eelco;
diff --git a/pkgs/tools/networking/socat/default.nix b/pkgs/tools/networking/socat/default.nix
index 8e2f9449090c..7da82796b1cf 100644
--- a/pkgs/tools/networking/socat/default.nix
+++ b/pkgs/tools/networking/socat/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, openssl }:
 
 stdenv.mkDerivation rec {
-  name = "socat-1.7.2.3";
+  name = "socat-1.7.2.4";
 
   src = fetchurl {
     url = "http://www.dest-unreach.org/socat/download/${name}.tar.bz2";
-    sha256 = "1l5ajqwfpxy35mvqlihzncmfngn61k7in51wkvd8q4vvmxaar605";
+    sha256 = "028yjka2zr6j1i8pmfmvzqki8ajczdl1hnry1x31xbbg3j83jxsb";
   };
 
   buildInputs = [ openssl ];
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A utility for bidirectional data transfer between two independent data channels";
     homepage = http://www.dest-unreach.org/socat/;
+    repositories.git = git://repo.or.cz/socat.git;
     platforms = stdenv.lib.platforms.linux;
     license = stdenv.lib.licenses.gpl2;
     maintainers = stdenv.lib.maintainers.eelco;
diff --git a/pkgs/tools/package-management/rpm/default.nix b/pkgs/tools/package-management/rpm/default.nix
index 9a96baf5fe00..7997603a706c 100644
--- a/pkgs/tools/package-management/rpm/default.nix
+++ b/pkgs/tools/package-management/rpm/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchurl, cpio, zlib, bzip2, file, elfutils, nspr, nss, popt, db4, xz, python }:
+{ stdenv, fetchurl, cpio, zlib, bzip2, file, elfutils, nspr, nss, popt, db, xz, python }:
 
 stdenv.mkDerivation rec {
-  name = "rpm-4.7.2";
+  name = "rpm-4.11.2";
 
   src = fetchurl {
-    url = "http://rpm.org/releases/rpm-4.7.x/${name}.tar.bz2";
-    sha1 = "07b90f653775329ea726ce0005c4c82f56167ca0";
+    url = "http://rpm.org/releases/rpm-4.11.x/${name}.tar.bz2";
+    sha256 = "1m2859js0dwg26sg2mnbkpzhvx303b12kx26az74cf5k6bk8sgs0";
   };
 
-  buildInputs = [ cpio zlib bzip2 file nspr nss popt db4 xz python ];
+  buildInputs = [ cpio zlib bzip2 file nspr nss popt db xz python ];
 
   # Note: we don't add elfutils to buildInputs, since it provides a
   # bad `ld' and other stuff.
@@ -18,10 +18,10 @@ stdenv.mkDerivation rec {
   
   configureFlags = "--with-external-db --without-lua --enable-python";
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://www.rpm.org/;
-    license = "GPLv2";
+    license = licenses.gpl2;
     description = "The RPM Package Manager";
-    maintainers = stdenv.lib.maintainers.mornfall;
+    maintainers = with maintainers; [ mornfall ];
   };
 }
diff --git a/pkgs/tools/security/cb0cat/default.nix b/pkgs/tools/security/cb0cat/default.nix
index 251c91260561..0f84cfa6ebc7 100644
--- a/pkgs/tools/security/cb0cat/default.nix
+++ b/pkgs/tools/security/cb0cat/default.nix
@@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "cryptographic tool based on the CBEAMr0 sponge function";
     homepage    = "https://www.cblnk.com";
-    platforms   = stdenv.lib.platforms.unix;
     license     = stdenv.lib.licenses.bsd3;
+    platforms   = stdenv.lib.platforms.unix;
     maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/security/ccid/default.nix b/pkgs/tools/security/ccid/default.nix
index 4be2393eed5d..fdcd15a4b825 100644
--- a/pkgs/tools/security/ccid/default.nix
+++ b/pkgs/tools/security/ccid/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pcsclite, pkgconfig, libusb1, perl }:
 stdenv.mkDerivation rec {
-  version = "1.4.14";
+  version = "1.4.15";
   name = "ccid-${version}";
 
   src = fetchurl {
     url = "http://ftp.de.debian.org/debian/pool/main/c/ccid/ccid_${version}.orig.tar.bz2";
-    sha256 = "0inibkhzk4ghg85jkysscjrzshmxfdzz6b54dqj182l0isn082y5";
+    sha256 = "02lrdmqlw2ilbmgcpi2h7w741p025c10frxdn5w3wnzi8qi1hdjl";
   };
 
   patchPhase = ''
diff --git a/pkgs/tools/security/duo-unix/default.nix b/pkgs/tools/security/duo-unix/default.nix
new file mode 100644
index 000000000000..a7cd61d7f67e
--- /dev/null
+++ b/pkgs/tools/security/duo-unix/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pam, openssl, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "duo-unix";
+  version = "1.9.7";
+
+  src = fetchurl {
+    url    = "https://dl.duosecurity.com/duo_unix-${version}.tar.gz";
+    sha256 = "090kx9nixlhvy5nw0ywqmi7yhd4nz7wvdv38cpkgrspkridfl07j";
+  };
+
+  buildInputs = [ pam openssl zlib ];
+  configureFlags =
+    [ "--with-pam=$(out)/lib/security"
+      "--prefix=$(out)"
+      "--sysconfdir=$(out)/etc/duo"
+    ];
+
+  meta = {
+    description = "Duo Security Unix login integration";
+    homepage    = "https://duosecurity.com";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/pkgs/tools/security/nmap/default.nix b/pkgs/tools/security/nmap/default.nix
index 1b2e940540d4..a6452cdb89b4 100644
--- a/pkgs/tools/security/nmap/default.nix
+++ b/pkgs/tools/security/nmap/default.nix
@@ -4,7 +4,8 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "nmap-6.40";
+  name = "nmap-${version}";
+  version = "6.40";
 
   src = fetchurl {
     url = "http://nmap.org/dist/${name}.tar.bz2";
@@ -21,8 +22,11 @@ stdenv.mkDerivation rec {
   buildInputs =
     [ libpcap libX11 gtk pkgconfig openssl python pygtk makeWrapper pysqlite ];
 
-  meta = with stdenv.lib; {
-    platforms = platforms.linux;
-    maintainers = maintainers.mornfall;
+  meta = {
+    description = "A free and open source utility for network discovery and security auditing.";
+    homepage    = "http://www.nmap.org";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ mornfall thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/security/pcsclite/default.nix b/pkgs/tools/security/pcsclite/default.nix
index 18fa10451536..d069c183842a 100644
--- a/pkgs/tools/security/pcsclite/default.nix
+++ b/pkgs/tools/security/pcsclite/default.nix
@@ -5,20 +5,17 @@ stdenv.mkDerivation rec {
   name = "pcsclite-${version}";
 
   src = fetchurl {
-    url = "http://ftp.de.debian.org/debian/pool/main/p/pcsc-lite/pcsc-lite_${version}.orig.tar.bz2";
+    url = "https://alioth.debian.org/frs/download.php/file/3963/pcsc-lite-${version}.tar.bz2";
     sha256 = "04i63zi9ayg38z3cahp6gf3rgx23w17bmcpdccm2hvaj63blnz30";
   };
 
   # The OS should care on preparing the drivers into this location
   configureFlags = [
     "--enable-usbdropdir=/var/lib/pcsc/drivers"
-    "--with-systemdsystemunitdir=$out/lib/systemd/system" # probably
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+    "--enable-confdir=$(out)/etc"
   ];
 
-  preConfigure = ''
-    configureFlags="$configureFlags --enable-confdir=$out/etc"
-  '';
-
   buildInputs = [ udev dbus_libs perl ];
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/tools/system/logcheck/default.nix b/pkgs/tools/system/logcheck/default.nix
index 7d15ade348cf..208ff837b346 100644
--- a/pkgs/tools/system/logcheck/default.nix
+++ b/pkgs/tools/system/logcheck/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   _name   = "logcheck";
-  version = "1.3.15";
+  version = "1.3.16";
   name    = "${_name}-${version}";
 
   src = fetchurl {
-    url = "mirror://debian/pool/main/l/${_name}/${_name}_${version}.tar.gz";
-    sha256 = "1rdrs12hkm5i5yyz89a6cwhf4fzjkbcd4q4zy6sk148aji9lg6xj";
+    url = "mirror://debian/pool/main/l/${_name}/${_name}_${version}.tar.xz";
+    sha256 = "1rmq4s2fj86226ncw2kdjvjbi29375gd7vdq62fsbjxm4m6nzsiy";
   };
 
   preConfigure = ''
diff --git a/pkgs/tools/text/podiff/default.nix b/pkgs/tools/text/podiff/default.nix
index fc9e3785cf3e..ccfeabaa73bd 100644
--- a/pkgs/tools/text/podiff/default.nix
+++ b/pkgs/tools/text/podiff/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     homepage = http://puszcza.gnu.org.ua/software/podiff;
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/text/uni2ascii/default.nix b/pkgs/tools/text/uni2ascii/default.nix
index 0f54644eba56..c81e02b43995 100644
--- a/pkgs/tools/text/uni2ascii/default.nix
+++ b/pkgs/tools/text/uni2ascii/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     similar ASCII characters, e.g. by stripping diacritics.
     '';
     maintainers = [ "cillian.deroiste@gmail.com" ];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 6239c6548258..66ad9006c233 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -434,6 +434,8 @@ let
 
   analog = callPackage ../tools/admin/analog {};
 
+  apt-offline = callPackage ../tools/misc/apt-offline { };
+
   archivemount = callPackage ../tools/filesystems/archivemount { };
 
   arandr = callPackage ../tools/X11/arandr { };
@@ -584,6 +586,10 @@ let
 
   enca = callPackage ../tools/text/enca { };
 
+  fasd = callPackage ../tools/misc/fasd {
+    inherit (haskellPackages) pandoc;
+  };
+
   fop = callPackage ../tools/typesetting/fop { };
 
   mcrl = callPackage ../tools/misc/mcrl { };
@@ -849,6 +855,8 @@ let
 
   dtach = callPackage ../tools/misc/dtach { };
 
+  duo-unix = callPackage ../tools/security/duo-unix { };
+
   duplicity = callPackage ../tools/backup/duplicity {
     inherit (pythonPackages) boto lockfile;
     gnupg = gnupg1;
@@ -1004,7 +1012,8 @@ let
 
   g500-control = callPackage ../tools/misc/g500-control { };
 
-  gawk = lowPrio (callPackage ../tools/text/gawk { });
+  gawk = callPackage ../tools/text/gawk { };
+
   gawkInteractive = appendToName "interactive"
     (gawk.override { readlineSupport = true; });
 
@@ -1518,6 +1527,8 @@ let
     inherit (pythonPackages) pysqlite;
   };
 
+  notbit = callPackage ../applications/networking/notbit { };
+
   nss_pam_ldapd = callPackage ../tools/networking/nss-pam-ldapd {};
 
   ntfs3g = callPackage ../tools/filesystems/ntfs-3g { };
@@ -1583,9 +1594,9 @@ let
       pam = if stdenv.isLinux then pam else null;
     };
 
-  openssh_hpn = lowPrio (pkgs.appendToName "hpn" (openssh.override { hpnSupport = true; }));
+  openssh_hpn = pkgs.appendToName "with-hpn" (openssh.override { hpnSupport = true; });
 
-  openssh_with_kerberos = lowPrio (pkgs.appendToName "with-kerberos" (openssh.override { withKerberos = true; }));
+  openssh_with_kerberos = pkgs.appendToName "with-kerberos" (openssh.override { withKerberos = true; });
 
   opensp = callPackage ../tools/text/sgml/opensp { };
 
@@ -1593,6 +1604,8 @@ let
 
   openvpn = callPackage ../tools/networking/openvpn { };
 
+  openvpn_learnaddress = callPackage ../tools/networking/openvpn/openvpn_learnaddress.nix { };
+
   optipng = callPackage ../tools/graphics/optipng { };
 
   oslrd = callPackage ../tools/networking/oslrd { };
@@ -1865,6 +1878,8 @@ let
   sg3_utils = callPackage ../tools/system/sg3_utils { };
 
   sharutils = callPackage ../tools/archivers/sharutils { };
+  
+  shotwell = callPackage ../applications/graphics/shotwell { };
 
   shebangfix = callPackage ../tools/misc/shebangfix { };
 
@@ -1901,6 +1916,8 @@ let
     inherit (pkgsi686Linux.xlibs) libX11;
   };
 
+  solr = callPackage ../servers/search/solr { };
+
   sparsehash = callPackage ../development/libraries/sparsehash { };
 
   stardict = callPackage ../applications/misc/stardict/stardict.nix {
@@ -2726,6 +2743,7 @@ let
   haskellPackages_ghc763_profiling    = recurseIntoAttrs (haskell.packages_ghc763.profiling);
   haskellPackages_ghc763              = recurseIntoAttrs (haskell.packages_ghc763.highPrio);
   # Reasonably current HEAD snapshot.
+  haskellPackages_ghc781 = haskell.packages_ghc781;
   haskellPackages_ghcHEAD = haskell.packages_ghcHEAD;
 
   haxe = callPackage ../development/compilers/haxe { };
@@ -2802,12 +2820,12 @@ let
 
   jdkdistro = installjdk: pluginSupport:
     assert supportsJDK;
-    (if pluginSupport then appendToName "plugin" else x: x)
+    (if pluginSupport then appendToName "with-plugin" else x: x)
       (callPackage ../development/compilers/jdk/jdk6-linux.nix { });
 
   oraclejdk7distro = installjdk: pluginSupport:
     assert supportsJDK;
-    (if pluginSupport then appendToName "plugin" else x: x)
+    (if pluginSupport then appendToName "with-plugin" else x: x)
       (callPackage ../development/compilers/jdk/jdk7-linux.nix { inherit installjdk; });
 
   jikes = callPackage ../development/compilers/jikes { };
@@ -2870,7 +2888,7 @@ let
 
   nvidia_cg_toolkit = callPackage ../development/compilers/nvidia-cg-toolkit { };
 
-  ocaml = ocaml_3_12_1;
+  ocaml = ocamlPackages.ocaml;
 
   ocaml_3_08_0 = callPackage ../development/compilers/ocaml/3.08.0.nix { };
 
@@ -2951,24 +2969,30 @@ let
 
     mlgmp =  callPackage ../development/ocaml-modules/mlgmp { };
 
-    ocaml_batteries = callPackage ../development/ocaml-modules/batteries {
-      camomile = camomile_0_8_2;
-    };
+    ocaml_batteries = callPackage ../development/ocaml-modules/batteries { };
 
     ocaml_cryptgps = callPackage ../development/ocaml-modules/cryptgps { };
 
+    ocaml_data_notation = callPackage ../development/ocaml-modules/odn { };
+
     ocaml_expat = callPackage ../development/ocaml-modules/expat { };
 
     ocamlgraph = callPackage ../development/ocaml-modules/ocamlgraph { };
 
     ocaml_http = callPackage ../development/ocaml-modules/http { };
 
+    ocamlify = callPackage ../development/tools/ocaml/ocamlify { };
+
     ocaml_lwt = callPackage ../development/ocaml-modules/lwt { };
 
+    ocamlmod = callPackage ../development/tools/ocaml/ocamlmod { };
+
     ocaml_mysql = callPackage ../development/ocaml-modules/mysql { };
 
     ocamlnet = callPackage ../development/ocaml-modules/ocamlnet { };
 
+    ocaml_oasis = callPackage ../development/tools/ocaml/oasis { };
+
     ocaml_pcre = callPackage ../development/ocaml-modules/pcre {
       inherit pcre;
     };
@@ -2991,6 +3015,8 @@ let
 
     ocaml_typeconv = callPackage ../development/ocaml-modules/typeconv { };
 
+    ocaml_typeconv_3_0_5 = callPackage ../development/ocaml-modules/typeconv/3.0.5.nix { };
+
     ocaml_sexplib = callPackage ../development/ocaml-modules/sexplib { };
 
     ocaml_extlib = callPackage ../development/ocaml-modules/extlib { };
@@ -3002,7 +3028,7 @@ let
     opam = opam_1_1;
   };
 
-  ocamlPackages = recurseIntoAttrs ocamlPackages_3_12_1;
+  ocamlPackages = recurseIntoAttrs ocamlPackages_4_01_0;
   ocamlPackages_3_10_0 = mkOcamlPackages ocaml_3_10_0 pkgs.ocamlPackages_3_10_0;
   ocamlPackages_3_11_2 = mkOcamlPackages ocaml_3_11_2 pkgs.ocamlPackages_3_11_2;
   ocamlPackages_3_12_1 = mkOcamlPackages ocaml_3_12_1 pkgs.ocamlPackages_3_12_1;
@@ -3678,6 +3704,8 @@ let
 
   jikespg = callPackage ../development/tools/parsing/jikespg { };
 
+  jenkins = callPackage ../development/tools/continuous-integration/jenkins { };
+
   lcov = callPackage ../development/tools/analysis/lcov { };
 
   leiningen = callPackage ../development/tools/build-managers/leiningen { };
@@ -4209,9 +4237,7 @@ let
 
   geoclue2 = callPackage ../development/libraries/geoclue/2.0.nix {};
 
-  geoip = builderDefsPackage ../development/libraries/geoip {
-    inherit zlib;
-  };
+  geoip = callPackage ../development/libraries/geoip { };
 
   geoipjava = callPackage ../development/libraries/java/geoipjava { };
 
@@ -4586,7 +4612,6 @@ let
   judy = callPackage ../development/libraries/judy { };
 
   keybinder = callPackage ../development/libraries/keybinder {
-    inherit (gnome2) gnome_common;
     automake = automake111x;
     lua = lua5_1;
   };
@@ -5005,7 +5030,11 @@ let
 
   libpaper = callPackage ../development/libraries/libpaper { };
 
-  libproxy = callPackage ../development/libraries/libproxy { };
+  libproxy = callPackage ../development/libraries/libproxy {
+    stdenv = if stdenv.isDarwin
+      then overrideGCC stdenv gcc
+      else stdenv;
+  };
 
   libpseudo = callPackage ../development/libraries/libpseudo { };
 
@@ -6061,6 +6090,8 @@ let
   ack = perlPackages.ack;
 
   perlcritic = perlPackages.PerlCritic;
+  
+  planetary_annihilation = callPackage ../games/planetaryannihilation { };
 
 
   ### DEVELOPMENT / PYTHON MODULES
@@ -6076,7 +6107,6 @@ let
   # regardless.
   python26Packages = import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = python26;
   };
 
@@ -6084,31 +6114,26 @@ let
 
   python33Packages = recurseIntoAttrs (import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = python33;
   });
 
-  python34Packages = import ./python-packages.nix {
+  python34Packages = recurseIntoAttrs (import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = python34;
-  };
+  });
 
   python32Packages = import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = python32;
   };
 
   python27Packages = recurseIntoAttrs (import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = python27;
   });
 
   pypyPackages = recurseIntoAttrs (import ./python-packages.nix {
     inherit pkgs;
-    inherit (lib) lowPrio;
     python = pypy;
   });
 
@@ -6466,6 +6491,8 @@ let
 
   vsftpd = callPackage ../servers/ftp/vsftpd { };
 
+  winstone = callPackage ../servers/http/winstone { };
+
   xinetd = callPackage ../servers/xinetd { };
 
   xorg = recurseIntoAttrs (import ../servers/x11/xorg/default.nix {
@@ -6566,6 +6593,8 @@ let
 
   cryopid = callPackage ../os-specific/linux/cryopid { };
 
+  criu = callPackage ../os-specific/linux/criu { };
+
   cryptsetup = callPackage ../os-specific/linux/cryptsetup { };
 
   cramfsswap = callPackage ../os-specific/linux/cramfsswap { };
@@ -6745,7 +6774,7 @@ let
   })) (args: grsecurityOverrider args));
 
   linux_3_13_grsecurity = lowPrio (lib.overrideDerivation (linux_3_13.override (args: {
-    kernelPatches = args.kernelPatches ++ [ kernelPatches.grsecurity_3_0_3_13_5 kernelPatches.grsec_path ];
+    kernelPatches = args.kernelPatches ++ [ kernelPatches.grsecurity_3_0_3_13_6 kernelPatches.grsec_path ];
     argsOverride = {
       modDirVersion = "${linux_3_13.modDirVersion}-grsec";
     };
@@ -7067,9 +7096,11 @@ let
 
   prayer = callPackage ../servers/prayer { };
 
-  procps = callPackage ../os-specific/linux/procps { };
+  procps = procps-ng;
+
+  procps-old = lowPrio (callPackage ../os-specific/linux/procps { });
 
-  "procps-ng" = callPackage ../os-specific/linux/procps-ng { };
+  procps-ng = callPackage ../os-specific/linux/procps-ng { };
 
   qemu_kvm = lowPrio (qemu.override { x86Only = true; });
 
@@ -7426,6 +7457,8 @@ let
 
   vistafonts = callPackage ../data/fonts/vista-fonts { };
 
+  wqy_microhei = callPackage ../data/fonts/wqy-microhei { };
+
   wqy_zenhei = callPackage ../data/fonts/wqy-zenhei { };
 
   xhtml1 = callPackage ../data/sgml+xml/schemas/xml-dtd/xhtml1 { };
@@ -7476,11 +7509,9 @@ let
 
   antiword = callPackage ../applications/office/antiword {};
 
-  ardour = callPackage ../applications/audio/ardour {
-    inherit (gnome) libgnomecanvas libgnomecanvasmm;
-  };
+  ardour = ardour3;
 
-  ardour3 =  lowPrio (callPackage ../applications/audio/ardour/ardour3.nix {
+  ardour3 =  lowPrio (callPackage ../applications/audio/ardour {
     inherit (gnome) libgnomecanvas libgnomecanvasmm;
   });
 
@@ -7638,6 +7669,7 @@ let
   comical = callPackage ../applications/graphics/comical { };
 
   conkeror = callPackage ../applications/networking/browsers/conkeror { };
+
   conkerorWrapper = wrapFirefox {
     browser = conkeror;
     browserName = "conkeror";
@@ -7781,6 +7813,8 @@ let
 
     cua = callPackage ../applications/editors/emacs-modes/cua { };
 
+    darcsum = callPackage ../applications/editors/emacs-modes/darcsum { };
+
     # ecb = callPackage ../applications/editors/emacs-modes/ecb { };
 
     jabber = callPackage ../applications/editors/emacs-modes/jabber { };
@@ -7998,7 +8032,7 @@ let
     inherit (gnome) libIDL;
   };
 
-  firefox13Wrapper = lowPrio (wrapFirefox { browser = firefox13Pkgs.firefox; });
+  firefox13Wrapper = wrapFirefox { browser = firefox13Pkgs.firefox; };
 
   firefoxPkgs = callPackage ../applications/networking/browsers/firefox {
     inherit (gnome) libIDL;
@@ -8453,7 +8487,7 @@ let
     guiSupport = false; # use mercurialFull to get hgk GUI
   };
 
-  mercurialFull = lowPrio (appendToName "full" (pkgs.mercurial.override { guiSupport = true; }));
+  mercurialFull = appendToName "full" (pkgs.mercurial.override { guiSupport = true; });
 
   merkaartor = callPackage ../applications/misc/merkaartor { };
 
@@ -8605,6 +8639,8 @@ let
     rake         = rake_10_1_0;
   };
 
+  synfigstudio = callPackage ../applications/graphics/synfigstudio { };
+
   msmtp = callPackage ../applications/networking/msmtp { };
 
   imapfilter = callPackage ../applications/networking/mailreaders/imapfilter.nix {
@@ -8937,11 +8973,11 @@ let
     sasl = cyrus_sasl;
   };
 
-  subversionClient = lowPrio (appendToName "client" (subversion.override {
+  subversionClient = appendToName "client" (subversion.override {
     bdbSupport = false;
     perlBindings = true;
     pythonBindings = true;
-  }));
+  });
 
   surf = callPackage ../applications/misc/surf {
     libsoup = gnome.libsoup;
@@ -9151,6 +9187,8 @@ let
 
   vlc = callPackage ../applications/video/vlc { };
 
+  vmpk = callPackage ../applications/audio/vmpk { };
+
   vnstat = callPackage ../applications/networking/vnstat { };
 
   vorbisTools = callPackage ../applications/audio/vorbis-tools { };
@@ -9213,7 +9251,7 @@ let
     , icon ? "${browser}/lib/${browser.name}/icons/mozicon128.png" }:
     let
       cfg = stdenv.lib.attrByPath [ browserName ] {} config;
-      enableAdobeFlash = cfg.enableAdobeFlash or true;
+      enableAdobeFlash = cfg.enableAdobeFlash or false;
       enableGnash = cfg.enableGnash or false;
     in
     import ../applications/networking/browsers/firefox/wrapper.nix {
@@ -10507,13 +10545,13 @@ let
   wineStable = callPackage_i686 ../misc/emulators/wine/stable.nix {
     bison = bison2;
   };
+
   wineUnstable = lowPrio (callPackage_i686 ../misc/emulators/wine/unstable.nix {
     bison = bison2;
   });
+
   wine = wineStable;
 
-  # winetricks is a shell script with no binary components. Safe to just use the current platforms
-  # build instead of the i686 specific build.
   winetricks = callPackage ../misc/emulators/wine/winetricks.nix {
     inherit (gnome2) zenity;
   };
diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix
index 0856bf503780..2d4bdea6006d 100644
--- a/pkgs/top-level/haskell-defaults.nix
+++ b/pkgs/top-level/haskell-defaults.nix
@@ -23,6 +23,15 @@
       cabalInstall = self.cabalInstall_1_18_0_3.override { Cabal = null; };
     };
 
+  ghc781Prefs =
+    self : self.haskellPlatformArgs_future self // {
+      haskellPlatform = null;
+      extensibleExceptions = self.extensibleExceptions_0_1_1_4;
+      cabalInstall_1_18_0_3 = self.cabalInstall_1_18_0_3.override { Cabal = null; };
+      cabalInstall = self.cabalInstall_1_18_0_3.override { Cabal = null; };
+      binary_0_7_1_0 = null;
+    };
+
   ghc763Prefs =
     self : self.haskellPlatformArgs_2013_2_0_0 self // {
       haskellPlatform = self.haskellPlatform_2013_2_0_0;
@@ -395,6 +404,12 @@
                prefFun = ghc763Prefs;
              };
 
+  packages_ghc781 =
+    packages { ghcPath = ../development/compilers/ghc/7.8.1.nix;
+               ghcBinary = ghc742Binary;
+               prefFun = ghc781Prefs;
+             };
+
   # Reasonably current HEAD snapshot. Should *always* be lowPrio.
   packages_ghcHEAD =
     packages { ghcPath = ../development/compilers/ghc/head.nix;
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index bbf7658a8429..247d8649ed62 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -526,6 +526,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   adjunctions = callPackage ../development/libraries/haskell/adjunctions {};
 
+  aes = callPackage ../development/libraries/haskell/aes {};
+
   aeson = callPackage ../development/libraries/haskell/aeson {
     blazeBuilder = if (pkgs.stdenv.lib.versionOlder ghc.version "7.6") then self.blazeBuilder else null;
   };
@@ -699,6 +701,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   bytestringMmap = callPackage ../development/libraries/haskell/bytestring-mmap {};
 
+  bytestringShow = callPackage ../development/libraries/haskell/bytestring-show {};
+
   bytestringTrie = callPackage ../development/libraries/haskell/bytestring-trie {};
 
   bytestringProgress = callPackage ../development/libraries/haskell/bytestring-progress {};
@@ -754,6 +758,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   checkers = callPackage ../development/libraries/haskell/checkers {};
 
+  chell = callPackage ../development/libraries/haskell/chell {};
+
+  chellQuickcheck = callPackage ../development/libraries/haskell/chell-quickcheck {};
+
   chunkedData = callPackage ../development/libraries/haskell/chunked-data {};
 
   citeprocHs = callPackage ../development/libraries/haskell/citeproc-hs {};
@@ -941,24 +949,12 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
   dice = callPackage ../development/libraries/haskell/dice {};
 
   diagrams = callPackage ../development/libraries/haskell/diagrams/diagrams.nix {};
-  diagramsCairo = callPackage ../development/libraries/haskell/diagrams/cairo.nix {
-    lens = self.lens_3_10_2;
-  };
-  diagramsCore = callPackage ../development/libraries/haskell/diagrams/core.nix {
-    lens = self.lens_3_10_2;
-  };
-  diagramsContrib = callPackage ../development/libraries/haskell/diagrams/contrib.nix {
-    lens = self.lens_3_10_2;
-  };
-  diagramsLib = callPackage ../development/libraries/haskell/diagrams/lib.nix {
-    lens = self.lens_3_10_2;
-  };
-  diagramsPostscript = callPackage ../development/libraries/haskell/diagrams/postscript.nix {
-     lens = self.lens_3_10_2;
-  };
-  diagramsSvg = callPackage ../development/libraries/haskell/diagrams/svg.nix {
-    lens = self.lens_3_10_2;
-  };
+  diagramsCairo = callPackage ../development/libraries/haskell/diagrams/cairo.nix {};
+  diagramsCore = callPackage ../development/libraries/haskell/diagrams/core.nix {};
+  diagramsContrib = callPackage ../development/libraries/haskell/diagrams/contrib.nix {};
+  diagramsLib = callPackage ../development/libraries/haskell/diagrams/lib.nix {};
+  diagramsPostscript = callPackage ../development/libraries/haskell/diagrams/postscript.nix {};
+  diagramsSvg = callPackage ../development/libraries/haskell/diagrams/svg.nix {};
 
   Diff = callPackage ../development/libraries/haskell/Diff {};
 
@@ -1008,6 +1004,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   DSH = callPackage ../development/libraries/haskell/DSH {};
 
+  dsp = callPackage ../development/libraries/haskell/dsp {};
+
   dstring = callPackage ../development/libraries/haskell/dstring {};
 
   dualTree = callPackage ../development/libraries/haskell/dual-tree {};
@@ -1125,9 +1123,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   foldl = callPackage ../development/libraries/haskell/foldl {};
 
-  forceLayout = callPackage ../development/libraries/haskell/force-layout {
-    lens = self.lens_3_10_2;
-  };
+  forceLayout = callPackage ../development/libraries/haskell/force-layout {};
 
   free = callPackage ../development/libraries/haskell/free {};
 
@@ -1155,6 +1151,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
     cabal = self.cabal.override { enableLibraryProfiling = false; }; # pkg cannot be built with profiling enabled
   };
 
+  ghcjsDom = callPackage ../development/libraries/haskell/ghcjs-codemirror {};
+
+  ghcjsCodemirror = callPackage ../development/libraries/haskell/ghcjs-codemirror {};
+
   ghcMod = callPackage ../development/libraries/haskell/ghc-mod {
     inherit (pkgs) emacs;
   };
@@ -1266,6 +1266,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   happstackLite = callPackage ../development/libraries/haskell/happstack/happstack-lite.nix {};
 
+  happstackFastCGI = callPackage ../development/libraries/haskell/happstack/happstack-fastcgi.nix {};
+
   hashable_1_1_2_5 = callPackage ../development/libraries/haskell/hashable/1.1.2.5.nix {};
   hashable_1_2_1_0 = callPackage ../development/libraries/haskell/hashable/1.2.1.0.nix {};
   hashable = self.hashable_1_2_1_0;
@@ -1391,6 +1393,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   hoauth = callPackage ../development/libraries/haskell/hoauth {};
 
+  hoauth2 = callPackage ../development/libraries/haskell/hoauth2 {};
+
   hoodle = callPackage ../applications/graphics/hoodle {};
 
   hoodleBuilder = callPackage ../development/libraries/haskell/hoodle-builder {};
@@ -1584,9 +1588,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   leksahServer = callPackage ../development/libraries/haskell/leksah/leksah-server.nix {};
 
-  lens_3_10_2 = callPackage ../development/libraries/haskell/lens/3.10.2.nix {};
-  lens_4_0_5 = callPackage ../development/libraries/haskell/lens/4.0.5.nix {};
-  lens = self.lens_4_0_5;
+  lens = callPackage ../development/libraries/haskell/lens {};
 
   lensAeson = callPackage ../development/libraries/haskell/lens-aeson {};
 
@@ -1596,6 +1598,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   lenses = callPackage ../development/libraries/haskell/lenses {};
 
+  leveldbHaskell = callPackage ../development/libraries/haskell/leveldb-haskell {};
+
   libffi = callPackage ../development/libraries/haskell/libffi {
     libffi = pkgs.libffi;
   };
@@ -1648,6 +1652,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   lushtags = callPackage ../development/libraries/haskell/lushtags {};
 
+  lzmaEnumerator = callPackage ../development/libraries/haskell/lzma-enumerator {};
+
   maccatcher = callPackage ../development/libraries/haskell/maccatcher {};
 
   markdownUnlit = callPackage ../development/libraries/haskell/markdown-unlit {};
@@ -1857,6 +1863,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   operational = callPackage ../development/libraries/haskell/operational {};
 
+  options = callPackage ../development/libraries/haskell/options {};
+
   optparseApplicative = callPackage ../development/libraries/haskell/optparse-applicative {};
 
   pathPieces = callPackage ../development/libraries/haskell/path-pieces {};
@@ -1903,6 +1911,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   pathtype = callPackage ../development/libraries/haskell/pathtype {};
 
+  pbkdf = callPackage ../development/libraries/haskell/pbkdf {};
+
   pcap = callPackage ../development/libraries/haskell/pcap {};
 
   pcapEnumerator = callPackage ../development/libraries/haskell/pcap-enumerator {};
@@ -2153,6 +2163,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   scottyHastache = callPackage ../development/libraries/haskell/scotty-hastache {};
 
+  scrypt = callPackage ../development/libraries/haskell/scrypt {};
+
   securemem = callPackage ../development/libraries/haskell/securemem {};
 
   sendfile = callPackage ../development/libraries/haskell/sendfile {};
@@ -2197,6 +2209,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   snapServer = callPackage ../development/libraries/haskell/snap/server.nix {};
 
+  snowball = callPackage ../development/libraries/haskell/snowball {};
+
   socks = callPackage ../development/libraries/haskell/socks {};
 
   sparse = callPackage ../development/libraries/haskell/sparse {};
@@ -2373,6 +2387,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   terminalProgressBar = callPackage ../development/libraries/haskell/terminal-progress-bar {};
 
+  terminalSize = callPackage ../development/libraries/haskell/terminal-size {};
+
   terminfo_0_3_2_6 = callPackage ../development/libraries/haskell/terminfo/0.3.2.6.nix { inherit (pkgs) ncurses; };
   terminfo_0_4_0_0 = callPackage ../development/libraries/haskell/terminfo/0.4.0.0.nix { inherit (pkgs) ncurses; };
   terminfo = self.terminfo_0_4_0_0;
@@ -2522,10 +2538,16 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   vacuumCairo = callPackage ../development/libraries/haskell/vacuum-cairo {};
 
+  vado = callPackage ../development/libraries/haskell/vado {};
+
   vault = callPackage ../development/libraries/haskell/vault {};
 
+  vcsgui = callPackage ../development/libraries/haskell/vcsgui {};
+
   vcsRevision = callPackage ../development/libraries/haskell/vcs-revision {};
 
+  vcswrapper = callPackage ../development/libraries/haskell/vcswrapper {};
+
   Vec = callPackage ../development/libraries/haskell/Vec {};
 
   vect = callPackage ../development/libraries/haskell/vect {};
@@ -2568,6 +2590,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.finalReturn x
 
   waiTest = callPackage ../development/libraries/haskell/wai-test {};
 
+  waiWebsockets = callPackage ../development/libraries/haskell/wai-websockets {};
+
   warp = callPackage ../development/libraries/haskell/warp {};
 
   warpTls = callPackage ../development/libraries/haskell/warp-tls {};
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index c463fb9f83b2..d5cd011bbaea 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -9415,6 +9415,17 @@ let self = _self // overrides; _self = with self; {
     doCheck = false;
   };
 
+  X11Protocol = buildPerlPackage rec {
+    name = "X11-Protocol-0.56";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SM/SMCCAM/${name}.tar.gz";
+      sha256 = "1dq89bh6fqv7l5mbffqcismcljpq5f869bx7g8lg698zgindv5ny";
+    };
+    buildInputs = [pkgs.x11];
+    NIX_CFLAGS_LINK = "-lX11";
+    doCheck = false; # requires an X server
+  };
+
   X11GUITest = buildPerlPackage rec {
     name = "X11-GUITest-0.21";
     src = fetchurl {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 450e2c01e44b..ab605199e7f9 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1,24 +1,38 @@
-{ pkgs, python, lowPrio }:
+{ pkgs, python }:
+  with pkgs.lib;
 
 let
-isPy26 = python.majorVersion == "2.6";
-isPy27 = python.majorVersion == "2.7";
-optional = pkgs.lib.optional;
-optionals = pkgs.lib.optionals;
-modules = python.modules or { readline = null; sqlite3 = null; curses = null; curses_panel = null; ssl = null; crypt = null; };
+  isPy26 = python.majorVersion == "2.6";
+  isPy27 = python.majorVersion == "2.7";
+  isPy33 = python.majorVersion == "3.3";
+  isPy34 = python.majorVersion == "3.4";
+  isPyPy = python.executable == "pypy";
+
+  # Unique python version identifier
+  pythonName =
+    if isPy26 then "python26" else
+    if isPy27 then "python27" else
+    if isPy33 then "python33" else
+    if isPy34 then "python34" else
+    if isPyPy then "pypy" else "";
+
+  modules = python.modules or { readline = null; sqlite3 = null; curses = null; curses_panel = null; ssl = null; crypt = null; };
 
 pythonPackages = modules // import ./python-packages-generated.nix {
   inherit pkgs python;
   inherit (pkgs) stdenv fetchurl;
   self = pythonPackages;
-} // rec {
+} //
 
-  inherit python;
-  inherit (pkgs) fetchurl fetchsvn fetchgit stdenv;
+# Python packages for all python versions
+rec {
+
+  inherit python isPy26 isPy27 isPy33 isPy34 isPyPy pythonName;
+  inherit (pkgs) fetchurl fetchsvn fetchgit stdenv unzip;
 
   # helpers
 
-  callPackage = pkgs.lib.callPackageWith (pkgs // pythonPackages);
+  callPackage = callPackageWith (pkgs // pythonPackages);
 
   # global distutils config used by buildPythonPackage
   distutils-cfg = callPackage ../development/python-modules/distutils-cfg { };
@@ -256,7 +270,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
     buildInputs = [
       pkgs.which
-      pkgs.unzip
       pythonPackages.coverage
       pythonPackages.mock
       pythonPackages.tissue
@@ -376,7 +389,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha1 = "fa4aec08e59fa5964197f59ba42408d64031675b";
     };
 
-    buildInputs = [ pkgs.unzip pkgs.sqlite ];
+    buildInputs = [ pkgs.sqlite ];
 
     # python: double free or corruption (fasttop): 0x0000000002fd4660 ***
     doCheck = false;
@@ -426,8 +439,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "192174mys40m0bwk6l5jlfnzps0xi81sxm34cqms6dc3c454pbyx";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     # error: invalid command 'test'
     doCheck = false;
 
@@ -557,7 +568,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://beets.radbox.org;
       description = "Music tagger and library organizer";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.iElectric ];
     };
   };
@@ -578,7 +589,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = https://github.com/Sheeprider/BitBucket-api;
       description = "Python library to interact with BitBucket REST API";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -591,8 +602,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "1i1p3rkj4ad108f23xyib34r4rcy571gy65paml6fk77knh0k66p";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     # error: invalid command 'test'
     doCheck = false;
 
@@ -772,7 +781,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
    meta = {
       homepage = "http://www.buildout.org";
       description = "A software build and configuration system";
-      license = pkgs.lib.licenses.zpt21;
+      license = licenses.zpt21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -787,7 +796,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
    meta = {
       homepage = "http://www.buildout.org";
       description = "A software build and configuration system";
-      license = pkgs.lib.licenses.zpt21;
+      license = licenses.zpt21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -808,7 +817,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
    meta = {
       homepage = "http://www.buildout.org";
       description = "A software build and configuration system";
-      license = pkgs.lib.licenses.zpt21;
+      license = licenses.zpt21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -986,7 +995,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Simple, lightweight, and easily extensible STOMP message broker";
       homepage = http://code.google.com/p/coilmq/;
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   });
 
@@ -1028,7 +1037,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Autogenerate Colander schemas based on SQLAlchemy models.";
       homepage = https://github.com/stefanofontanelli/ColanderAlchemy;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -1047,7 +1056,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Config file reading, writing and validation.";
       homepage = http://pypi.python.org/pypi/configobj;
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   });
@@ -1107,7 +1116,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Code coverage measurement for python";
       homepage = http://nedbatchelder.com/code/coverage/;
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
     };
   };
 
@@ -1284,7 +1293,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "9c0b8efe9d43b460f8cf049fa46ce14d";
     };
 
-    buildInputs = [ pkgs.unzip pytest ];
+    buildInputs = [ pytest ];
     propagatedBuildInputs = [ execnet ];
 
     meta = {
@@ -1311,7 +1320,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "139yfm9yz9k33kgqw4khsljs10rkhhxyywbq9i82bh2r31cil1pp";
     };
 
-    buildInputs = [ pkgs.unzip pythonPackages.mock ];
+    buildInputs = [ pythonPackages.mock ];
 
     # couple of failing tests
     doCheck = false;
@@ -1495,6 +1504,49 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       platforms = stdenv.lib.platforms.all;
     };
   };
+  
+  urllib3 = buildPythonPackage rec {
+    name = "urllib3-1.8";
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/u/urllib3/${name}.tar.gz";
+      sha256 = "0pdigfxkq8mhzxxsn6isx8c4h9azqywr1k18yanwyxyj8cdzm28s";
+    };
+    
+    preConfigure = ''
+      substituteInPlace test-requirements.txt --replace 'nose==1.3' 'nose'
+    '';
+    
+    checkPhase = ''
+      nosetests --cover-min-percentage 70
+    '';
+
+    buildInputs = [ coverage tornado mock nose ];
+
+    meta = with stdenv.lib; {
+      description = "A Python library for Dropbox's HTTP-based Core and Datastore APIs";
+      homepage = https://www.dropbox.com/developers/core/docs;
+      license = licenses.mit;
+    };
+  };
+
+  
+  dropbox = buildPythonPackage rec {
+    name = "dropbox-2.0.0";
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/d/dropbox/${name}.zip";
+      sha256 = "1bi2z1lql6ryylfflmizhqn98ab55777vn7n5krhqz40pdcjilkx";
+    };
+
+    propagatedBuildInputs = [ urllib3 mock setuptools ];
+
+    meta = with stdenv.lib; {
+      description = "A Python library for Dropbox's HTTP-based Core and Datastore APIs";
+      homepage = https://www.dropbox.com/developers/core/docs;
+      license = licenses.mit;
+    };
+  };
 
 
   evdev = buildPythonPackage rec {
@@ -1564,8 +1616,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "be885ccd9612966bb81839670d2da099";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     meta = {
       description = "rapid multi-Python deployment";
       license = stdenv.lib.licenses.gpl2;
@@ -1933,7 +1983,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "a6728117cad24749ddb39d2827cd9033";
     };
 
-    buildInputs = [ pkgs.unzip webtest ];
+    buildInputs = [ webtest ];
     propagatedBuildInputs = [ jinja2 pyramid ];
 
     meta = {
@@ -2068,7 +2118,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "36aa2c96dec4cfeea57f54da2b733eb9";
     };
 
-    buildInputs = [ pkgs.unzip zope_interface zope_location zope_schema ];
+    buildInputs = [ zope_interface zope_location zope_schema ];
 
     meta = {
       maintainers = [ stdenv.lib.maintainers.iElectric ];
@@ -2345,7 +2395,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     };
 
     propagatedBuildInputs = with pkgs; [
-      pyGtkGlade libtorrentRasterbar twisted Mako chardet pyxdg pyopenssl
+      pyGtkGlade libtorrentRasterbar twisted Mako chardet pyxdg pyopenssl modules.curses
     ];
 
     postInstall = ''
@@ -2745,7 +2795,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "code checking using pep8 and pyflakes.";
       homepage = http://pypi.python.org/pypi/flake8;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   });
@@ -2975,7 +3025,32 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       maintainers = [ maintainers.bjornfor ];
     };
   };
+  
+  
+  gevent-socketio = buildPythonPackage rec {
+    name = "gevent-socketio-0.3.6";
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/g/gevent-socketio/${name}.tar.gz";
+      sha256 = "1zra86hg2l1jcpl9nsnqagy3nl3akws8bvrbpgdxk15x7ywllfak";
+    };
+
+    buildInputs = [ versiontools gevent-websocket mock pytest ];
+    propagatedBuildInputs = [ gevent ];
+
+  };
+  
+  gevent-websocket = buildPythonPackage rec {
+    name = "gevent-websocket-0.9.3";
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/g/gevent-websocket/${name}.tar.gz";
+      sha256 = "07rqwfpbv13mk6gg8mf0bmvcf6siyffjpgai1xd8ky7r801j4xb4";
+    };
 
+    propagatedBuildInputs = [ gevent ];
+
+  };
 
   genzshcomp = buildPythonPackage {
     name = "genzshcomp-0.5.1";
@@ -3037,7 +3112,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
     src = fetchurl {
       url = "https://github.com/nicolargo/glances/archive/v${meta.version}.tar.gz";
-      sha256 = "0g2yg9qf7qgjwv13x0rx51rzhn99pcmjpb3vk0g3gmmdsqyqi0d6";
+      sha256 = "19pin04whc1z4gmwv2rqa7mh08d6007r8dyrhihnxj0v35ghp5i0";
     };
 
     buildInputs = [ pkgs.hddtemp ];
@@ -3051,7 +3126,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     '';
 
     meta = {
-      version = "1.7.1";
+      version = "1.7.4";
       homepage = "http://nicolargo.github.io/glances/";
       description = "Cross-platform curses-based monitoring tool";
     };
@@ -3137,12 +3212,12 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
   hetzner = buildPythonPackage rec {
     name = "hetzner-${version}";
-    version = "0.6.0";
+    version = "0.7.0";
 
     src = fetchurl {
       url = "https://github.com/RedMoonStudios/hetzner/archive/"
           + "v${version}.tar.gz";
-      sha256 = "1cgi77f453ahw3ad6hvqwbyp6fwnh90rlzfgl9cp79wg58wyar4w";
+      sha256 = "1ldbhwy6yk18frv6n9znvdsrqfnpch4mfvc70jrpq3f9fw236src";
     };
 
     # not there yet, but coming soon.
@@ -3223,7 +3298,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://code.google.com/p/httplib2;
       description = "A comprehensive HTTP client library";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -3285,7 +3360,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Google's IP address manipulation library";
       homepage = http://code.google.com/p/ipaddr-py/;
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   };
 
@@ -3319,7 +3394,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://github.com/davidhalter/jedi";
       description = "An autocompletion tool for Python that can be used for text editors.";
-      license = pkgs.lib.licenses.lgpl3Plus;
+      license = licenses.lgpl3Plus;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   });
@@ -3381,7 +3456,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     };
 
     buildInputs =
-      [ pkgs.unzip fs gdata python_keyczar mock pyasn1 pycrypto pytest ];
+      [ fs gdata python_keyczar mock pyasn1 pycrypto pytest ];
   };
 
   kitchen = buildPythonPackage (rec {
@@ -3409,7 +3484,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://code.google.com/p/pylast/;
       description = "A python interface to last.fm (and compatibles)";
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   };
 
@@ -3694,7 +3769,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "McCabe checker, plugin for flake8";
       homepage = "https://github.com/flintwork/mccabe";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   });
@@ -3797,7 +3872,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       version = "0.9";
       description = ''Man-in-the-middle proxy'';
       homepage = "http://mitmproxy.org/";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -3875,8 +3950,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       export LC_ALL="en_US.UTF-8"
     '';
 
-    buildInputs = [ pkgs.unzip ];
-
     propagatedBuildInputs = [ argparse jinja2 six modules.readline ] ++
                             (optionals isPy26 [ importlib ordereddict ]);
 
@@ -3901,7 +3974,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://bmc.github.com/munkres/;
       description = "Munkres algorithm for the Assignment Problem";
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
       maintainers = [ stdenv.lib.maintainers.iElectric ];
     };
   };
@@ -3918,7 +3991,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://alastair/python-musicbrainz-ngs;
       description = "Python bindings for musicbrainz NGS webservice";
-      license = pkgs.lib.licenses.bsd2;
+      license = licenses.bsd2;
       maintainers = [ stdenv.lib.maintainers.iElectric ];
     };
   };
@@ -4087,7 +4160,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       version = "0.9";
       description = ''Man-in-the-middle proxy'';
       homepage = "https://github.com/cortesi/netlib";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -4133,12 +4206,12 @@ pythonPackages = modules // import ./python-packages-generated.nix {
   });
 
   nose = buildPythonPackage rec {
-    version = "1.3.0";
+    version = "1.3.1";
     name = "nose-${version}";
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/n/nose/${name}.tar.gz";
-      sha256 = "0q2j9zz39h3liwbp6lb94kl3sxb9z9rbwh5dzyccyxfy4lrwqqsf";
+      sha256 = "1fmn5b7v183ym793ghrbh76b27aww9qv0lhl7dz31f9xmf3kn9w5";
     };
 
     buildInputs = [ coverage ];
@@ -4165,7 +4238,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "0lgrfgp3sq8xi8d9grrg0z8jsyk0wl8a3rxw31hb7vdncin5b7n5";
     };
 
-    buildInputs = [ pkgs.unzip ];
     propagatedBuildInputs = [ nose ];
 
     meta = {
@@ -4233,7 +4305,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "1kh4spwgqxm534qlzzf2ijchckvs0pwjxl1irhicjmlg7mybnfvx";
     };
 
-    patches = pkgs.lib.singleton (fetchurl {
+    patches = singleton (fetchurl {
       name = "libnotify07.patch";
       url = "http://pkgs.fedoraproject.org/cgit/notify-python.git/plain/"
           + "libnotify07.patch?id2=289573d50ae4838a1658d573d2c9f4c75e86db0c";
@@ -4346,7 +4418,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://github.com/simplegeo/python-oauth2";
       description = "library for OAuth version 1.0";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
       platforms = stdenv.lib.platforms.linux;
     };
@@ -4611,7 +4683,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "http://pep8.readthedocs.org/";
       description = "Python style guide checker";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -4660,8 +4732,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "0kdc4rg47k1qkq22inghd50xlxjdkfcilym8mxff8wy4h091xykw";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     propagatedBuildInputs = [ pytz ];
 
     meta = {
@@ -4704,7 +4774,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "56b6614499aacb7d6b5983c4914daea7";
     };
 
-    buildInputs = [ pkgs.freetype pkgs.libjpeg pkgs.unzip pkgs.zlib pkgs.libtiff pkgs.libwebp ];
+    buildInputs = [ pkgs.freetype pkgs.libjpeg pkgs.zlib pkgs.libtiff pkgs.libwebp ];
 
     # NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
     preConfigure = ''
@@ -4763,7 +4833,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A library to manipulate gettext files (po and mo files)";
       homepage = "http://bitbucket.org/izi/polib/";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -4887,7 +4957,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Allows to get the public suffix of a domain name";
       homepage = "http://pypi.python.org/pypi/publicsuffix/";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -5140,7 +5210,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://launchpad.net/pyflakes";
       description = "A simple program which checks Python source files for errors.";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -5155,7 +5225,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
     patchPhase = let
       libs = [ pkgs.mesa pkgs.xlibs.libX11 pkgs.freetype pkgs.fontconfig ];
-      paths = pkgs.lib.concatStringsSep "," (map (l: "\"${l}/lib\"") libs);
+      paths = concatStringsSep "," (map (l: "\"${l}/lib\"") libs);
     in "sed -i -e 's|directories\.extend.*lib[^]]*|&,${paths}|' pyglet/lib.py";
 
     doCheck = false;
@@ -5200,7 +5270,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://launchpad.net/pygpgme";
       description = "A Python wrapper for the GPGME library.";
-      license = pkgs.lib.licenses.lgpl21;
+      license = licenses.lgpl21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   };
@@ -5225,7 +5295,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = https://github.com/seb-m/pyinotify/wiki;
       description = "Monitor filesystems events on Linux platforms with inotify";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -5255,7 +5325,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "http://fedoraproject.org/wiki/Pykickstart";
       description = "Read and write Fedora kickstart files";
-      license = pkgs.lib.licenses.gpl2Plus;
+      license = licenses.gpl2Plus;
     };
   };
 
@@ -5268,7 +5338,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "0ldkm8xws91j7zbvpqb413hvdz8r66bslr451q3qc0xi8cnmydfq";
     };
 
-    buildInputs = [ pkgs.unzip pkgs.libiodbc ];
+    buildInputs = [ pkgs.libiodbc ];
 
     meta = with stdenv.lib; {
       description = "Python ODBC module to connect to almost any database";
@@ -5312,7 +5382,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sed -i -e '
         s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
       ' tests/test__ped_ped.py
-    '' + pkgs.lib.optionalString stdenv.isi686 ''
+    '' + optionalString stdenv.isi686 ''
       # remove some integers in this test case which overflow on 32bit systems
       sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
         tests/test__ped_ped.py
@@ -5582,11 +5652,11 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
 
   pyserial = buildPythonPackage rec {
-    name = "pyserial-2.6";
+    name = "pyserial-2.7";
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/p/pyserial/${name}.tar.gz";
-      md5 = "cde799970b7c1ce1f7d6e9ceebe64c98";
+      sha256 = "3542ec0838793e61d6224e27ff05e8ce4ba5a5c5cc4ec5c6a3e8d49247985477";
     };
 
     doCheck = false;
@@ -5606,7 +5676,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "c57cba33626ac4b1e3d1974923d59232";
     };
 
-    buildInputs = [ pkgs.unzip ];
     meta = {
       homepage    = "https://code.google.com/p/pysphere/";
       license     = "BSD";
@@ -5811,7 +5880,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "1r127fa354ppb667f4acxlzwxixap1jgzjrr790bw8mcpxv2hqaa";
     };
 
-    buildInputs = [ pkgs.unzip pkgs.pyrex ];
+    buildInputs = [ pkgs.pyrex ];
     propagatedBuildInputs = [ pkgs.libyaml ];
 
     meta = {
@@ -5838,7 +5907,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
 
   reportlab =
-   let freetype = pkgs.lib.overrideDerivation pkgs.freetype (args: { configureFlags = "--enable-static --enable-shared"; });
+   let freetype = overrideDerivation pkgs.freetype (args: { configureFlags = "--enable-static --enable-shared"; });
    in buildPythonPackage rec {
     name = "reportlab-2.5";
 
@@ -6044,7 +6113,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     # error: invalid command 'test'
     #doCheck = false;
 
-    buildInputs = [ unittest2 pkgs.unzip ];
+    buildInputs = [ unittest2 ];
     propagatedBuildInputs = [ robotframework lxml ];
 
     meta = with stdenv.lib; {
@@ -6636,7 +6705,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Joyent SmartDataCenter CloudAPI connector using http-signature authentication via Requests";
       homepage = https://github.com/atl/py-smartdc;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -6822,7 +6891,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = https://github.com/crosspop/sqlalchemy-imageattach;
       description = "SQLAlchemy extension for attaching images to entity objects";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -6868,7 +6937,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A client for Etsy's node-js statsd server";
       homepage = https://github.com/WoLpH/python-statsd;
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
     };
   };
 
@@ -6888,7 +6957,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "Lightweight and extensible STOMP messaging client";
       homepage = http://bitbucket.org/hozn/stompclient;
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   });
 
@@ -6907,7 +6976,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A streaming protocol for test results";
       homepage = https://launchpad.net/subunit;
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   };
 
@@ -7025,7 +7094,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A set of extensions to the Python standard library's unit testing framework";
       homepage = http://pypi.python.org/pypi/testtools;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -7045,7 +7114,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges.";
       homepage = https://code.google.com/p/mimeparse/;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -7065,7 +7134,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges.";
       homepage = https://code.google.com/p/mimeparse/;
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
     };
   };
 
@@ -7176,7 +7245,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://github.com/alejandrogomez/turses";
       description = "A Twitter client for the console.";
-      license = pkgs.lib.licenses.gpl3;
+      license = licenses.gpl3;
       maintainers = [ stdenv.lib.maintainers.garbas ];
       platforms = stdenv.lib.platforms.linux;
     };
@@ -7193,7 +7262,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = "https://github.com/tweepy/tweepy";
       description = "Twitter library for python";
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
       maintainers = [ stdenv.lib.maintainers.garbas ];
       platforms = stdenv.lib.platforms.linux;
     };
@@ -7227,7 +7296,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
         and licensed under the MIT license.
       '';
 
-      license = pkgs.lib.licenses.mit;
+      license = licenses.mit;
 
       maintainers = [ ];
     };
@@ -7296,7 +7365,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       description = "A full-featured console (xterm et al.) user interface library";
       homepage = http://excess.org/urwid;
       repositories.git = git://github.com/wardi/urwid.git;
-      license = pkgs.lib.licenses.lgpl21;
+      license = licenses.lgpl21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
   });
@@ -7455,7 +7524,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     # XXX: skipping two tests fails in python2.6
     doCheck = ! isPy26;
 
-    buildInputs = [ pkgs.unzip ] ++ optionals isPy26 [ pythonPackages.ordereddict unittest2 ];
+    buildInputs = optionals isPy26 [ pythonPackages.ordereddict unittest2 ];
 
     propagatedBuildInputs = [
       nose
@@ -7496,7 +7565,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
 
   wokkel = buildPythonPackage (rec {
     url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz";
-    name = pkgs.lib.nameFromURL url ".tar";
+    name = nameFromURL url ".tar";
     src = fetchurl {
       inherit url;
       sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml";
@@ -7719,7 +7788,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "eff24d7918099a3e899ee63a9c31bee6";
     };
 
-    buildInputs = [ pkgs.unzip zope_interface ];
+    buildInputs = [ zope_interface ];
 
     meta = {
         maintainers = [ stdenv.lib.maintainers.goibhniu ];
@@ -7735,8 +7804,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "4ff0ddbf64c45bfcc3189e35f4214ded";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     propagatedBuildInputs = [ zope_interface ];
 
     meta = {
@@ -7811,8 +7878,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "c6ac80e6887de4108a383f349fbdf332";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     meta = {
         maintainers = [ stdenv.lib.maintainers.goibhniu ];
     };
@@ -8048,7 +8113,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "8b317b41244fc2e67f2f286890ba59a0";
     };
 
-    buildInputs = [ pkgs.unzip sqlalchemy zope_testing zope_interface setuptools ];
+    buildInputs = [ sqlalchemy zope_testing zope_interface setuptools ];
     propagatedBuildInputs = [ sqlalchemy transaction ];
 
     meta = {
@@ -8070,7 +8135,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "01c30c342c6a18002a762bd5d320a6e9";
     };
 
-    buildInputs = [ pkgs.unzip ];
     propagatedBuildInputs = [ zope_interface zope_exceptions zope_location ];
 
     meta = {
@@ -8091,8 +8155,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "1d689abad000419891494b30dd7d8190";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     propagatedBuildInputs = [ zope_interface zope_exceptions zope_testing six ] ++ optional (!python.is_py3k or false) subunit;
 
     # a test is failing
@@ -8115,8 +8177,6 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       md5 = "eaad8fc7bbef126f9f8616b074ec00aa";
     };
 
-    buildInputs = [ pkgs.unzip ];
-
     propagatedBuildInputs = [ zope_location zope_security zope_publisher ];
 
     meta = {
@@ -8205,7 +8265,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       sha256 = "0ri6gj883k042xaxa2d5ymmhbw2bfcxdzhh4bz7700ibxwxxj62h";
     };
 
-    buildInputs = [ pkgs.unzip unittest2 nose mock ];
+    buildInputs = [ unittest2 nose mock ];
     propagatedBuildInputs = [ modules.curses libarchive ];
 
     # tests are still failing
@@ -8232,7 +8292,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       url = "http://pypi.python.org/packages/source/p/pyzmq/pyzmq-13.0.0.zip";
       md5 = "fa2199022e54a393052d380c6e1a0934";
     };
-    buildInputs = [ pkgs.unzip pkgs.zeromq3 ];
+    buildInputs = [ pkgs.zeromq3 ];
     propagatedBuildInputs = [  ];
     doCheck = false;
   };
@@ -8415,7 +8475,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://pypi.python.org/pypi/Unidecode/;
       description = "ASCII transliterations of Unicode text";
-      license = pkgs.lib.licenses.gpl2;
+      license = licenses.gpl2;
       maintainers = [ stdenv.lib.maintainers.iElectric ];
     };
   };
@@ -8437,6 +8497,16 @@ pythonPackages = modules // import ./python-packages-generated.nix {
       maintainers = [ stdenv.lib.maintainers.rickynils ];
     };
   };
+  
+  versiontools = buildPythonPackage rec {
+    name = "versiontools-1.9.1";
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/v/versiontools/${name}.tar.gz";
+      sha256 = "1xhl6kl7f4srgnw6zw4lr8j2z5vmrbaa83nzn2c9r2m1hwl36sd9";
+    };
+
+  };
 
   graphite_web = buildPythonPackage rec {
     name = "graphite-web-${version}";
@@ -8577,7 +8647,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = https://code.google.com/p/gdata-python-client/;
       description = "Python client library for Google data APIs";
-      license = pkgs.lib.licenses.asl20;
+      license = licenses.asl20;
     };
   };
 
@@ -8597,7 +8667,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://imapclient.freshfoo.com/;
       description = "Easy-to-use, Pythonic and complete IMAP client library";
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
     };
   };
 
@@ -8614,17 +8684,17 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://pythonhosted.org/Logbook/;
       description = "A logging replacement for Python";
-      license = pkgs.lib.licenses.bsd3;
+      license = licenses.bsd3;
     };
   };
 
   libvirt = pkgs.stdenv.mkDerivation rec {
     name = "libvirt-python-${version}";
-    version = "1.2.0";
+    version = "1.2.2";
 
     src = fetchurl {
       url = "http://libvirt.org/sources/python/${name}.tar.gz";
-      sha256 = "0azml1yv9iqnpj4sdg1wwsa70q7kb06lv85p63qwyd8vrd0y7rrg";
+      sha256 = "0fccpyppz79kbbnzwdgsiza3cxq7jlnnp1dqi33gc4305dk9vmwl";
     };
 
     buildInputs = [ python pkgs.pkgconfig pkgs.libvirt lxml ];
@@ -8636,7 +8706,7 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     meta = {
       homepage = http://www.libvirt.org/;
       description = "libvirt Python bindings";
-      license = "LGPLv2";
+      license = pkgs.lib.licenses.lgpl2;
     };
   };
 
@@ -8711,8 +8781,11 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     };
   };
 
-# python2.7 specific eggs
-} // pkgs.lib.optionalAttrs (python.majorVersion == "2.7") {
+# python2.7 specific packages
+} // optionalAttrs isPy27 (
+  with pythonPackages;
+
+{
 
   pypi2nix = pythonPackages.buildPythonPackage rec {
     rev = "04a68d8577acbceb88bdf51b1231a9dbdead7003";
@@ -8733,4 +8806,4 @@ pythonPackages = modules // import ./python-packages-generated.nix {
     };
   };
 
-}; in pythonPackages
+}); in pythonPackages