summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/spotify/default.nix10
-rw-r--r--pkgs/applications/audio/xmms/alsa.patch1475
-rw-r--r--pkgs/applications/audio/xmms/default.nix21
-rw-r--r--pkgs/applications/editors/emacs-modes/emacs-w3m/default.nix2
-rw-r--r--pkgs/applications/graphics/graphicsmagick/1.3.7.nix1
-rw-r--r--pkgs/applications/graphics/graphicsmagick/default.nix1
-rw-r--r--pkgs/applications/misc/adobe-reader/default.nix6
-rw-r--r--pkgs/applications/misc/goldendict/default.nix31
-rw-r--r--pkgs/applications/misc/goldendict/goldendict-paths.diff10
-rw-r--r--pkgs/applications/misc/ikiwiki/default.nix4
-rw-r--r--pkgs/applications/misc/truecrypt/default.nix10
-rw-r--r--pkgs/applications/networking/browsers/firefox/10.0.nix (renamed from pkgs/applications/networking/browsers/firefox/8.0.nix)8
-rw-r--r--pkgs/applications/networking/browsers/firefox/11.0.nix180
-rw-r--r--pkgs/applications/networking/browsers/links2/default.nix65
-rw-r--r--pkgs/applications/networking/browsers/links2/src-for-default.nix9
-rw-r--r--pkgs/applications/networking/browsers/links2/src-info-for-default.nix4
-rw-r--r--pkgs/applications/networking/browsers/links2/stdenv.nix41
-rw-r--r--pkgs/applications/networking/esniper/default.nix8
-rw-r--r--pkgs/applications/networking/esniper/fix-build-with-latest-curl.patch10
-rw-r--r--pkgs/applications/networking/remote/rdesktop/default.nix4
-rw-r--r--pkgs/applications/networking/skype/default.nix6
-rw-r--r--pkgs/applications/office/hledger-interest/default.nix4
-rw-r--r--pkgs/applications/science/logic/hol_light/default.nix6
-rw-r--r--pkgs/applications/video/MPlayer/default.nix1
-rw-r--r--pkgs/applications/video/dvswitch/default.nix14
-rw-r--r--pkgs/applications/window-managers/icewm/default.nix20
-rw-r--r--pkgs/build-support/make-startupitem/default.nix34
-rw-r--r--pkgs/build-support/vm/rpm/rpm-closure.pl5
-rw-r--r--pkgs/development/compilers/ghc/7.4.1.nix44
-rw-r--r--pkgs/development/compilers/ghc/head.nix6
-rw-r--r--pkgs/development/compilers/idris/default.nix6
-rw-r--r--pkgs/development/compilers/uhc/default.nix4
-rw-r--r--pkgs/development/interpreters/guile/default.nix4
-rw-r--r--pkgs/development/interpreters/racket/default.nix4
-rw-r--r--pkgs/development/interpreters/ruby/generated.nix198
-rw-r--r--pkgs/development/interpreters/ruby/ruby-18.nix4
-rw-r--r--pkgs/development/libraries/aspell/dictionaries.nix1
-rw-r--r--pkgs/development/libraries/cppnetlib/default.nix40
-rw-r--r--pkgs/development/libraries/ffmpeg/default.nix4
-rw-r--r--pkgs/development/libraries/glib/1.2.x.nix12
-rw-r--r--pkgs/development/libraries/glib/gcc34.patch20
-rw-r--r--pkgs/development/libraries/gmp/4.3.2.nix (renamed from pkgs/development/libraries/gmp/4.nix)0
-rw-r--r--pkgs/development/libraries/gmp/5.0.3.nix (renamed from pkgs/development/libraries/gmp/default.nix)6
-rw-r--r--pkgs/development/libraries/gtk+/1.2.x.nix12
-rw-r--r--pkgs/development/libraries/haskell/Chart/default.nix10
-rw-r--r--pkgs/development/libraries/haskell/GLFW/default.nix19
-rw-r--r--pkgs/development/libraries/haskell/GLURaw/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/GLUT/2.3.0.0.nix21
-rw-r--r--pkgs/development/libraries/haskell/Graphalyze/default.nix3
-rw-r--r--pkgs/development/libraries/haskell/HaskellForMaths/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/OpenGL/2.5.0.0.nix21
-rw-r--r--pkgs/development/libraries/haskell/OpenGLRaw/default.nix4
-rwxr-xr-xpkgs/development/libraries/haskell/ansi-wl-pprint/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/binary/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/bitarray/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/blaze-builder/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/bytestring-lexing/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/cabal-file-th/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/citeproc-hs/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/clientsession/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/cmdargs/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/containers-deepseq/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/crypto-api/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/data-object-yaml/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/deepseq/1.3.0.0.nix16
-rw-r--r--pkgs/development/libraries/haskell/email-validate/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/explicit-exception/default.nix20
-rw-r--r--pkgs/development/libraries/haskell/extensible-exceptions/0.1.1.4.nix16
-rw-r--r--pkgs/development/libraries/haskell/fast-logger/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/filepath/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/gd/default.nix19
-rw-r--r--pkgs/development/libraries/haskell/ghc-mod/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hackage-db/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hakyll/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/happstack/happstack-util.nix4
-rw-r--r--pkgs/development/libraries/haskell/hastache/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/highlighting-kate/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/hjsmin/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hledger-chart/default.nix3
-rw-r--r--pkgs/development/libraries/haskell/hledger-lib/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hledger-web/default.nix12
-rw-r--r--pkgs/development/libraries/haskell/hledger/default.nix12
-rw-r--r--pkgs/development/libraries/haskell/hmatrix/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/http-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ieee754/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/language-javascript/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/mime-mail/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/multiarg/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/neither/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/network/2.3.0.10.nix18
-rw-r--r--pkgs/development/libraries/haskell/nixos-types/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pandoc-types/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pandoc/default.nix21
-rw-r--r--pkgs/development/libraries/haskell/parsimony/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/persistent-sqlite/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/pool-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/skein/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/socks/default.nix18
-rw-r--r--pkgs/development/libraries/haskell/string-combinators/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/system-fileio/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/system-filepath/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/temporary/default.nix17
-rw-r--r--pkgs/development/libraries/haskell/test-framework-hunit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework/0.4.2.2.nix (renamed from pkgs/development/libraries/haskell/test-framework/default.nix)4
-rw-r--r--pkgs/development/libraries/haskell/test-framework/0.5.nix25
-rw-r--r--pkgs/development/libraries/haskell/texmath/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/vector-algorithms/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/vty/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/web-routes/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/xhtml/3000.2.0.5.nix17
-rw-r--r--pkgs/development/libraries/haskell/xml-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yap/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-default/default.nix23
-rw-r--r--pkgs/development/libraries/haskell/zlib-bindings/default.nix4
-rw-r--r--pkgs/development/libraries/libbsd/default.nix24
-rw-r--r--pkgs/development/libraries/libdevil/default.nix25
-rw-r--r--pkgs/development/libraries/libdevil/ftbfs-libpng15.patch31
-rw-r--r--pkgs/development/libraries/libjpeg-turbo/default.nix6
-rw-r--r--pkgs/development/libraries/libnatspec/default.nix19
-rw-r--r--pkgs/development/libraries/libvpx/default.nix12
-rw-r--r--pkgs/development/libraries/lzo/default.nix22
-rw-r--r--pkgs/development/libraries/qhull/default.nix4
-rw-r--r--pkgs/development/libraries/v8/default.nix4
-rw-r--r--pkgs/development/libraries/x264/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/cmake/default.nix2
-rw-r--r--pkgs/development/tools/haskell/cabal-ghci/default.nix4
-rw-r--r--pkgs/development/tools/haskell/cabal2nix/default.nix4
-rw-r--r--pkgs/development/tools/haskell/hlint/default.nix4
-rw-r--r--pkgs/development/tools/misc/help2man/default.nix40
-rw-r--r--pkgs/development/tools/misc/pkgconfig/default.nix1
-rw-r--r--pkgs/development/tools/parsing/happy/1.18.9.nix21
-rw-r--r--pkgs/development/tools/pydb/default.nix (renamed from pkgs/tools/pydb/default.nix)0
-rw-r--r--pkgs/development/web/nodejs/default.nix4
-rw-r--r--pkgs/games/oilrush/default.nix74
-rw-r--r--pkgs/misc/emulators/generator/default.nix13
-rw-r--r--pkgs/misc/emulators/generator/soundcard.patch20
-rw-r--r--pkgs/os-specific/linux/broadcom-sta/default.nix14
-rw-r--r--pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch11
-rw-r--r--pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch13
-rw-r--r--pkgs/os-specific/linux/frandom/default.nix44
-rw-r--r--pkgs/os-specific/linux/i7z/default.nix40
-rw-r--r--pkgs/os-specific/linux/microcode/converter.nix29
-rw-r--r--pkgs/os-specific/linux/microcode/intel.nix28
-rw-r--r--pkgs/os-specific/linux/wpa_supplicant/default.nix5
-rw-r--r--pkgs/os-specific/windows/mingwrt/default.nix6
-rw-r--r--pkgs/os-specific/windows/pthread-w32/default.nix53
-rw-r--r--pkgs/os-specific/windows/w32api/default.nix13
-rw-r--r--pkgs/servers/nosql/redis/default.nix22
-rw-r--r--pkgs/servers/sql/mysql55/default.nix2
-rw-r--r--pkgs/servers/x11/xorg/default.nix6
-rw-r--r--pkgs/servers/x11/xorg/tarballs-7.6.list2
-rw-r--r--pkgs/tools/X11/bumblebee/config.patch30
-rw-r--r--pkgs/tools/X11/bumblebee/default.nix136
-rw-r--r--pkgs/tools/X11/bumblebee/xopts.patch11
-rw-r--r--pkgs/tools/X11/bumblebee/xorg.conf.nvidia49
-rw-r--r--pkgs/tools/X11/virtualgl/default.nix15
-rw-r--r--pkgs/tools/X11/virtualgl/fixturbopath.patch16
-rw-r--r--pkgs/tools/admin/analog/default.nix38
-rw-r--r--pkgs/tools/archivers/unzip/default.nix20
-rw-r--r--pkgs/tools/archivers/zip/default.nix8
-rw-r--r--pkgs/tools/archivers/zip/natspec-gentoo.patch.bz2bin0 -> 1914 bytes
-rw-r--r--pkgs/tools/backup/duplicity/default.nix10
-rw-r--r--pkgs/tools/graphics/enblend-enfuse/default.nix15
-rw-r--r--pkgs/tools/misc/cowsay/default.nix18
-rw-r--r--pkgs/tools/misc/fontforge/default.nix7
-rw-r--r--pkgs/tools/networking/openssh/default.nix8
-rw-r--r--pkgs/tools/system/hardlink/default.nix37
-rw-r--r--pkgs/tools/typesetting/tex/auctex/default.nix (renamed from pkgs/misc/tex/auctex/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/dblatex/default.nix (renamed from pkgs/misc/tex/dblatex/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/disser/default.nix (renamed from pkgs/misc/tex/disser/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/latex2html/default.nix (renamed from pkgs/misc/tex/latex2html/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/lazylist/builder.sh (renamed from pkgs/misc/tex/lazylist/builder.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/lazylist/default.nix (renamed from pkgs/misc/tex/lazylist/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/lkproof/default.nix (renamed from pkgs/misc/tex/lkproof/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/animatedot.sh (renamed from pkgs/misc/tex/nix/animatedot.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/copy-includes.pl (renamed from pkgs/misc/tex/nix/copy-includes.pl)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/default.nix (renamed from pkgs/misc/tex/nix/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/dot2pdf.sh (renamed from pkgs/misc/tex/nix/dot2pdf.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/dot2ps.sh (renamed from pkgs/misc/tex/nix/dot2ps.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/find-includes.pl (renamed from pkgs/misc/tex/nix/find-includes.pl)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/find-lhs2tex-includes.sh (renamed from pkgs/misc/tex/nix/find-lhs2tex-includes.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/lhs2tex.sh (renamed from pkgs/misc/tex/nix/lhs2tex.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/nix/run-latex.sh (renamed from pkgs/misc/tex/nix/run-latex.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/pgf/1.x.nix (renamed from pkgs/misc/tex/pgf/1.x.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/pgf/2.x.nix (renamed from pkgs/misc/tex/pgf/2.x.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/polytable/builder.sh (renamed from pkgs/misc/tex/polytable/builder.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/polytable/default.nix (renamed from pkgs/misc/tex/polytable/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/tetex/default.nix (renamed from pkgs/misc/tex/tetex/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/tetex/environment.patch (renamed from pkgs/misc/tex/tetex/environment.patch)0
-rw-r--r--pkgs/tools/typesetting/tex/tetex/getline.patch (renamed from pkgs/misc/tex/tetex/getline.patch)0
-rw-r--r--pkgs/tools/typesetting/tex/tetex/setup-hook.sh (renamed from pkgs/misc/tex/tetex/setup-hook.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/tex4ht/default.nix (renamed from pkgs/misc/tex/tex4ht/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/aggregate.nix (renamed from pkgs/misc/tex/texlive/aggregate.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/beamer.nix (renamed from pkgs/misc/tex/texlive/beamer.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/cm-super.nix (renamed from pkgs/misc/tex/texlive/cm-super.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/context.nix (renamed from pkgs/misc/tex/texlive/context.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/default.nix (renamed from pkgs/misc/tex/texlive/default.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/extra.nix (renamed from pkgs/misc/tex/texlive/extra.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/moderncv.nix (renamed from pkgs/misc/tex/texlive/moderncv.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/pgf.nix (renamed from pkgs/misc/tex/texlive/pgf.nix)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/setup-hook.sh (renamed from pkgs/misc/tex/texlive/setup-hook.sh)0
-rw-r--r--pkgs/tools/typesetting/tex/texlive/xcolor.nix (renamed from pkgs/misc/tex/texlive/xcolor.nix)0
-rw-r--r--pkgs/top-level/all-packages.nix217
-rw-r--r--pkgs/top-level/haskell-packages.nix137
-rw-r--r--pkgs/top-level/release.nix25
208 files changed, 2219 insertions, 2182 deletions
diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix
index 38eb51b93db..4711d0f29ea 100644
--- a/pkgs/applications/audio/spotify/default.nix
+++ b/pkgs/applications/audio/spotify/default.nix
@@ -2,7 +2,7 @@
 
 assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
 
-let version = "0.6.2.291"; in
+let version = "0.6.6.10"; in
 
 stdenv.mkDerivation {
   name = "spotify-${version}";
@@ -10,13 +10,13 @@ stdenv.mkDerivation {
   src =
     if stdenv.system == "i686-linux" then 
       fetchurl {
-        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.gcccc1f5.116-1_i386.deb";
-        sha256 = "164ka9xry9nbnv77w71kzi7bjidlmccw8wnn4fyzavi8pbrpmj08";
+        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.gbd39032.58-1_i386.deb";
+        sha256 = "184wvw2jqihw7bbmd7pgz51nkzvk777imz9pvknv52mggai61523";
       }
     else if stdenv.system == "x86_64-linux" then 
       fetchurl {
-        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.gcccc1f5.116-1_amd64.deb";
-        sha256 = "08snnpqd5ldiqv98pwx3fjrhdlwp4arbgda9xnsy92wfk0s85lv8";
+        url = "http://repository.spotify.com/pool/non-free/s/spotify/spotify-client-qt_${version}.gbd39032.58-1_amd64.deb";
+        sha256 = "0qy4dgcl4y8ymqk8i9vgabik7mq0niqpbkwl3sk8z66znax4am4c";
       }
     else throw "Spotify not supported on this platform.";
 
diff --git a/pkgs/applications/audio/xmms/alsa.patch b/pkgs/applications/audio/xmms/alsa.patch
deleted file mode 100644
index 62cf7354fd2..00000000000
--- a/pkgs/applications/audio/xmms/alsa.patch
+++ /dev/null
@@ -1,1475 +0,0 @@
-diff -rc xmms-1.2.10-orig/Output/alsa/alsa.h xmms-1.2.10/Output/alsa/alsa.h
-*** xmms-1.2.10-orig/Output/alsa/alsa.h	2004-01-11 17:27:26.000000000 +0100
---- xmms-1.2.10/Output/alsa/alsa.h	2006-01-27 00:28:49.000000000 +0100
-***************
-*** 50,57 ****
-  	char *mixer_device;
-  	int buffer_time;
-  	int period_time;
-  	gboolean debug;
-- 	gboolean mmap;
-  	struct
-  	{
-  		int left, right;
---- 50,57 ----
-  	char *mixer_device;
-  	int buffer_time;
-  	int period_time;
-+ 	int thread_buffer_time;
-  	gboolean debug;
-  	struct
-  	{
-  		int left, right;
-***************
-*** 65,72 ****
-  void alsa_about(void);
-  void alsa_configure(void);
-  int alsa_get_mixer(snd_mixer_t **mixer, int card);
-- snd_mixer_elem_t* alsa_get_mixer_elem(snd_mixer_t *mixer, char *name, int index);
-- int alsa_setup_mixer(void);
-  void alsa_save_config(void);
-  
-  void alsa_get_volume(int *l, int *r);
---- 65,70 ----
-diff -rc xmms-1.2.10-orig/Output/alsa/audio.c xmms-1.2.10/Output/alsa/audio.c
-*** xmms-1.2.10-orig/Output/alsa/audio.c	2004-01-28 00:09:39.000000000 +0100
---- xmms-1.2.10/Output/alsa/audio.c	2006-01-27 00:28:49.000000000 +0100
-***************
-*** 17,52 ****
-   *  You should have received a copy of the GNU General Public License
-   *  along with this program; if not, write to the Free Software
-   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-   */
-  
-  #include "alsa.h"
-  #include <ctype.h>
-  #include <libxmms/xconvert.h>
-  
-  static snd_pcm_t		*alsa_pcm 	    = NULL;
-- static snd_pcm_status_t		*alsa_status 	    = NULL;
-- static snd_pcm_channel_area_t   *areas              = NULL;
-  
-  static snd_output_t		*logs 		    = NULL;
-  
-! static int 			 alsa_bps 	    = 0;
-! static guint64			 alsa_total_written = 0;
-  
-  /* Set/Get volume */
-  static snd_mixer_elem_t 	*pcm_element 	    = NULL;
-  static snd_mixer_t 		*mixer 		    = NULL;
-  
-! static gboolean mmap, force_start, going, paused;
-  
-! static gpointer buffer;
-  
-- static int alsa_can_pause;
-  
-  struct snd_format {
-  	unsigned int rate;
-  	unsigned int channels;
-  	snd_pcm_format_t format;
-  	AFormat xmms_format;
-  };
-  
-  static struct snd_format *inputf = NULL;
---- 17,72 ----
-   *  You should have received a copy of the GNU General Public License
-   *  along with this program; if not, write to the Free Software
-   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+  *
-+  *
-+  *  CHANGES
-+  *
-+  *  2005.01.05  Takashi Iwai <tiwai@suse.de>
-+  *	Impelemented the multi-threaded mode with an audio-thread.
-+  *	Many fixes and cleanups.
-   */
-  
-  #include "alsa.h"
-  #include <ctype.h>
-+ #include <pthread.h>
-  #include <libxmms/xconvert.h>
-  
-  static snd_pcm_t		*alsa_pcm 	    = NULL;
-  
-  static snd_output_t		*logs 		    = NULL;
-  
-! static guint64			 alsa_total_written = 0;	/* input bytes */
-! static guint64			 alsa_hw_written    = 0;	/* output bytes */
-! static gint			 output_time_offset = 0;
-! 
-! /* device buffer/period sizes in bytes */
-! static int hw_buffer_size, hw_period_size;		/* in output bytes */
-! static int hw_buffer_size_in, hw_period_size_in;	/* in input bytes */
-  
-  /* Set/Get volume */
-  static snd_mixer_elem_t 	*pcm_element 	    = NULL;
-  static snd_mixer_t 		*mixer 		    = NULL;
-  
-! static gboolean going, paused;
-  
-! static gboolean alsa_can_pause;
-! 
-! /* for audio thread */
-! static pthread_t audio_thread;		/* audio loop thread */
-! static int thread_buffer_size;		/* size of intermediate buffer in bytes */
-! static char *thread_buffer;		/* audio intermediate buffer */
-! static int rd_index, wr_index;		/* current read/write position in int-buffer */
-! static gboolean pause_request;		/* pause status currently requested */
-! static gint flush_request;		/* flush status (time) currently requested */
-  
-  
-  struct snd_format {
-  	unsigned int rate;
-  	unsigned int channels;
-  	snd_pcm_format_t format;
-  	AFormat xmms_format;
-+ 	int sample_bits;
-+ 	int bps;
-  };
-  
-  static struct snd_format *inputf = NULL;
-***************
-*** 54,61 ****
-  static struct snd_format *outputf = NULL;
-  
-  static int alsa_setup(struct snd_format *f);
-! static void alsa_mmap_audio(char *data, int length);
-! static void alsa_write_audio(gpointer data, int length);
-  
-  static struct snd_format * snd_format_from_xmms(AFormat fmt, int rate, int channels);
-  
---- 74,80 ----
-  static struct snd_format *outputf = NULL;
-  
-  static int alsa_setup(struct snd_format *f);
-! static void alsa_write_audio(char *data, int length);
-  
-  static struct snd_format * snd_format_from_xmms(AFormat fmt, int rate, int channels);
-  
-***************
-*** 71,92 ****
-  } format_table[] =
-  {{FMT_S16_LE, SND_PCM_FORMAT_S16_LE},
-   {FMT_S16_BE, SND_PCM_FORMAT_S16_BE},
-!  {FMT_S16_NE,
-! #ifdef WORDS_BIGENDIAN
-!   SND_PCM_FORMAT_S16_BE
-! #else
-!   SND_PCM_FORMAT_S16_LE
-! #endif
-!  },
-   {FMT_U16_LE, SND_PCM_FORMAT_U16_LE},
-   {FMT_U16_BE, SND_PCM_FORMAT_U16_BE},
-!  {FMT_U16_NE,
-! #ifdef WORDS_BIGENDIAN
-!   SND_PCM_FORMAT_U16_BE
-! #else
-!   SND_PCM_FORMAT_U16_LE
-! #endif
-!  },
-   {FMT_U8, SND_PCM_FORMAT_U8},
-   {FMT_S8, SND_PCM_FORMAT_S8},
-  };
---- 90,99 ----
-  } format_table[] =
-  {{FMT_S16_LE, SND_PCM_FORMAT_S16_LE},
-   {FMT_S16_BE, SND_PCM_FORMAT_S16_BE},
-!  {FMT_S16_NE, SND_PCM_FORMAT_S16},
-   {FMT_U16_LE, SND_PCM_FORMAT_U16_LE},
-   {FMT_U16_BE, SND_PCM_FORMAT_U16_BE},
-!  {FMT_U16_NE, SND_PCM_FORMAT_U16},
-   {FMT_U8, SND_PCM_FORMAT_U8},
-   {FMT_S8, SND_PCM_FORMAT_S8},
-  };
-***************
-*** 106,281 ****
-  	}
-  }
-  
-! int alsa_playing(void)
-! {
-! 	if (!going || paused)
-! 		return FALSE;
-! 
-! 	return(snd_pcm_state(alsa_pcm) == SND_PCM_STATE_RUNNING);
-! }
-! 
-! static void xrun_recover(void)
-! {
-! 	int err;
-! 
-! 	if (alsa_cfg.debug)
-! 	{
-! 		snd_pcm_status_alloca(&alsa_status);
-! 		if ((err = snd_pcm_status(alsa_pcm, alsa_status)) < 0)
-! 			g_warning("xrun_recover(): snd_pcm_status() failed");
-! 		else
-! 		{
-! 			printf("Status:\n");
-! 			snd_pcm_status_dump(alsa_status, logs);
-! 		}
-! 	}
-! 
-! 	if (snd_pcm_state(alsa_pcm) == SND_PCM_STATE_XRUN)
-! 	{
-! 		if ((err = snd_pcm_prepare(alsa_pcm)) < 0)
-! 			g_warning("xrun_recover(): snd_pcm_prepare() failed.");
-! 	}
-! }
-! 
-! static snd_pcm_sframes_t alsa_get_avail(void)
-! {
-! 	snd_pcm_sframes_t ret;
-! 	if ((ret = snd_pcm_avail_update(alsa_pcm)) == -EPIPE)
-! 		xrun_recover();
-! 	else if (ret < 0)
-! 	{
-! 		g_warning("alsa_get_avail(): snd_pcm_avail_update() failed: %s",
-! 			  snd_strerror(-ret));
-! 		return 0;
-! 	}
-! 	else
-! 		return ret;
-! 	if ((ret = snd_pcm_avail_update(alsa_pcm)) < 0)
-! 	{
-! 		g_warning("alsa_get_avail(): snd_pcm_avail_update() failed: %s",
-! 			  snd_strerror(-ret));
-! 		return 0;
-! 	}
-! 	return ret;
-! }
-! 
-! int alsa_free(void)
-! {
-! 	if (paused)
-! 		return 0;
-! 	else
-! 	{
-! 		int err;
-! 		if (force_start &&
-! 		    snd_pcm_state(alsa_pcm) == SND_PCM_STATE_PREPARED)
-! 		{
-! 			if ((err = snd_pcm_start(alsa_pcm)) < 0)
-! 				g_warning("alsa_free(): snd_pcm_start() "
-! 					  "failed: %s", snd_strerror(-err));
-! 			else
-! 				debug("Stream started");
-! 		}
-! 		force_start = TRUE;
-! 
-! 		return snd_pcm_frames_to_bytes(alsa_pcm, alsa_get_avail());
-! 	}
-! }
-! 
-! void alsa_pause(short p)
-! {
-! 	debug("alsa_pause");
-! 	if (p)
-! 		paused = TRUE;
-! 
-! 	if (alsa_can_pause)
-! 		snd_pcm_pause(alsa_pcm, p);
-! 	else if (p)
-! 		snd_pcm_drop(alsa_pcm);
-! 
-! 	if (!p)
-! 		paused = FALSE;
-! }
-! 
-! void alsa_close(void)
-! {
-! 	int err, started;
-! 
-! 	debug("Closing device");
-! 
-! 	started = going;
-! 	going = 0;
-! 
-! 	pcm_element = NULL;
-! 
-! 	if (mixer)
-! 	{
-! 		snd_mixer_close(mixer);
-! 		mixer = NULL;
-! 	}
-! 
-! 	if (alsa_pcm != NULL)
-! 	{
-! 		if (started)
-! 			if ((err = snd_pcm_drop(alsa_pcm)) < 0)
-! 				g_warning("alsa_pcm_drop() failed: %s",
-! 					  snd_strerror(-err));
-! 
-! 		if ((err = snd_pcm_close(alsa_pcm)) < 0)
-! 			g_warning("alsa_pcm_close() failed: %s",
-! 				  snd_strerror(-err));
-! 		alsa_pcm = NULL;
-! 	}
-! 
-! 	if (mmap) {
-! 		g_free(buffer);
-! 		buffer = NULL;
-! 
-! 		g_free(areas);
-! 		areas = NULL;
-! 	}
-! 
-! 	xmms_convert_buffers_destroy(convertb);
-! 	convertb = NULL;
-! 	g_free(inputf);
-! 	inputf = NULL;
-! 	g_free(effectf);
-! 	effectf = NULL;
-! 
-! 	alsa_save_config();
-! 
-! 	debug("Device closed");
-! }
-! 
-! static void alsa_reopen(struct snd_format *f)
-! {
-! 	unsigned int tmp = alsa_get_written_time();
-! 
-! 	if (alsa_pcm != NULL)
-! 	{
-! 		snd_pcm_close(alsa_pcm);
-! 		alsa_pcm = NULL;
-! 	}
-! 
-! 	if (mmap) {
-! 		g_free(buffer);
-! 		buffer = NULL;
-! 		
-! 		g_free(areas);
-! 		areas = NULL;
-! 	}
-! 
-! 	if (alsa_setup(f) < 0)
-! 		g_warning("Failed to reopen the audio device");
-! 
-! 	alsa_total_written = tmp;
-! 	snd_pcm_prepare(alsa_pcm);
-! }
-! 
-! void alsa_flush(int time)
-! {
-! 	alsa_total_written = (guint64) time * alsa_bps / 1000;
-! }
-! 
-  static void parse_mixer_name(char *str, char **name, int *index)
-  {
-  	char *end;
---- 113,121 ----
-  	}
-  }
-  
-! /*
-!  * mixer stuff
-!  */
-  static void parse_mixer_name(char *str, char **name, int *index)
-  {
-  	char *end;
-***************
-*** 337,343 ****
-  }
-  	
-  
-! snd_mixer_elem_t* alsa_get_mixer_elem(snd_mixer_t *mixer, char *name, int index)
-  {
-  	snd_mixer_selem_id_t *selem_id;
-  	snd_mixer_elem_t* elem;
---- 177,183 ----
-  }
-  	
-  
-! static snd_mixer_elem_t* alsa_get_mixer_elem(snd_mixer_t *mixer, char *name, int index)
-  {
-  	snd_mixer_selem_id_t *selem_id;
-  	snd_mixer_elem_t* elem;
-***************
-*** 353,359 ****
-  	return elem;
-  }
-  
-! int alsa_setup_mixer(void)
-  {
-  	char *name;
-  	long int a, b;
---- 193,199 ----
-  	return elem;
-  }
-  
-! static int alsa_setup_mixer(void)
-  {
-  	char *name;
-  	long int a, b;
-***************
-*** 406,411 ****
---- 246,260 ----
-  	return 0;
-  }
-  
-+ static void alsa_cleanup_mixer(void)
-+ {
-+ 	pcm_element = NULL;
-+ 	if (mixer) {
-+ 		snd_mixer_close(mixer);
-+ 		mixer = NULL;
-+ 	}
-+ }
-+ 
-  void alsa_get_volume(int *l, int *r)
-  {
-  	static gboolean first = TRUE;
-***************
-*** 461,485 ****
-  }
-  
-  
-  int alsa_get_output_time(void)
-  {
-  	snd_pcm_sframes_t delay;
-! 	ssize_t db = 0;
-  
-! 	if (!going)
-  		return 0;
-  
-! 	if (!snd_pcm_delay(alsa_pcm, &delay))
-! 		db = snd_pcm_frames_to_bytes(alsa_pcm, delay);
-! 	
-! 	if (db < alsa_total_written)
-! 		return ((alsa_total_written - db) * 1000 / alsa_bps);
-! 	return 0;
-  }
-  
-  int alsa_get_written_time(void)
-  {
-! 	return (alsa_total_written * 1000 / alsa_bps);
-  }
-  
-  #define STEREO_ADJUST(type, type2, endian)					\
---- 310,512 ----
-  }
-  
-  
-+ /*
-+  * audio stuff
-+  */
-+ 
-+ int alsa_playing(void)
-+ {
-+ 	if (!going || paused || alsa_pcm == NULL)
-+ 		return FALSE;
-+ 
-+ 	return(snd_pcm_state(alsa_pcm) == SND_PCM_STATE_RUNNING);
-+ }
-+ 
-+ 
-+ /* handle generic errors */
-+ static int alsa_handle_error(int err)
-+ {
-+ 	switch (err) {
-+ 	case -EPIPE: /* XRUN */
-+ 		if (alsa_cfg.debug) {
-+ 			snd_pcm_status_t *alsa_status;
-+ 			snd_pcm_status_alloca(&alsa_status);
-+ 			if (snd_pcm_status(alsa_pcm, alsa_status) < 0)
-+ 				g_warning("xrun_recover(): snd_pcm_status() failed");
-+ 			else {
-+ 				printf("Status:\n");
-+ 				snd_pcm_status_dump(alsa_status, logs);
-+ 			}
-+ 		}
-+ 		return snd_pcm_prepare(alsa_pcm);
-+ 
-+ 	case -ESTRPIPE: /* suspend */
-+ 		while ((err = snd_pcm_resume(alsa_pcm)) == -EAGAIN)
-+ 			sleep(1);	/* wait until suspend flag is released */
-+ 		if (err < 0) {
-+ 			g_warning("suspend_recover(): snd_pcm_resume() failed.");
-+ 			return snd_pcm_prepare(alsa_pcm);
-+ 		}
-+ 		break;
-+ 	}
-+ 
-+ 	return err;
-+ }
-+ 
-+ /* update and get the available space on h/w buffer (in frames) */
-+ static snd_pcm_sframes_t alsa_get_avail(void)
-+ {
-+ 	snd_pcm_sframes_t ret;
-+ 
-+ 	if (alsa_pcm == NULL)
-+ 		return 0;
-+ 
-+ 	while ((ret = snd_pcm_avail_update(alsa_pcm)) < 0) {
-+ 		ret = alsa_handle_error(ret);
-+ 		if (ret < 0) {
-+ 			g_warning("alsa_get_avail(): snd_pcm_avail_update() failed: %s",
-+ 				  snd_strerror(-ret));
-+ 			return 0;
-+ 		}
-+ 	}
-+ 	return ret;
-+ }
-+ 
-+ /* do pause operation */
-+ static void alsa_do_pause(gboolean p)
-+ {
-+ 	if (paused == p)
-+ 		return;
-+ 
-+ 	if (alsa_pcm) {
-+ 		if (alsa_can_pause) {
-+ 			snd_pcm_pause(alsa_pcm, p);
-+ 		} else if (p) {
-+ 			snd_pcm_drop(alsa_pcm);
-+ 			snd_pcm_prepare(alsa_pcm);
-+ 		}
-+ 	}
-+ 	paused = p;
-+ }
-+ 
-+ void alsa_pause(short p)
-+ {
-+ 	debug("alsa_pause");
-+ 	pause_request = p;
-+ }
-+ 
-+ /* close PCM and release associated resources */
-+ static void alsa_close_pcm(void)
-+ {
-+ 	if (alsa_pcm) {
-+ 		int err;
-+ 		snd_pcm_drop(alsa_pcm);
-+ 		if ((err = snd_pcm_close(alsa_pcm)) < 0)
-+ 			g_warning("alsa_pcm_close() failed: %s",
-+ 				  snd_strerror(-err));
-+ 		alsa_pcm = NULL;
-+ 	}
-+ }
-+ 
-+ /* reopen ALSA PCM */
-+ static int alsa_reopen(struct snd_format *f)
-+ {
-+ 	/* remember the current position */
-+ 	output_time_offset += (alsa_hw_written * 1000) / outputf->bps;
-+ 	alsa_hw_written = 0;
-+ 
-+ 	alsa_close_pcm();
-+ 
-+ 	return alsa_setup(f);
-+ }
-+ 
-+ /* do flush (drop) operation */
-+ static void alsa_do_flush(int time)
-+ {
-+ 	if (alsa_pcm) {
-+ 		snd_pcm_drop(alsa_pcm);
-+ 		snd_pcm_prepare(alsa_pcm);
-+ 	}
-+ 	/* correct the offset */
-+ 	output_time_offset = time;
-+ 	alsa_total_written = (guint64) time * inputf->bps / 1000;
-+ 	rd_index = wr_index = alsa_hw_written = 0;
-+ }
-+ 
-+ void alsa_flush(int time)
-+ {
-+ 	flush_request = time;
-+ 	while (flush_request != -1)
-+ 		xmms_usleep(10000);
-+ }
-+ 
-+ void alsa_close(void)
-+ {
-+ 	if (! going)
-+ 		return;
-+ 
-+ 	debug("Closing device");
-+ 
-+ 	going = 0;
-+ 
-+ 	pthread_join(audio_thread, NULL);
-+ 
-+ 	alsa_cleanup_mixer();
-+ 
-+ 	xmms_convert_buffers_destroy(convertb);
-+ 	convertb = NULL;
-+ 	g_free(inputf);
-+ 	inputf = NULL;
-+ 	g_free(effectf);
-+ 	effectf = NULL;
-+ 	g_free(outputf);
-+ 	outputf = NULL;
-+ 
-+ 	alsa_save_config();
-+ 
-+ 	if (alsa_cfg.debug)
-+ 		snd_output_close(logs);
-+ 	debug("Device closed");
-+ }
-+ 
-+ /* return the size of audio data filled in the audio thread buffer */
-+ static int get_thread_buffer_filled(void)
-+ {
-+ 	int filled = wr_index - rd_index;
-+ 	if (filled >= 0)
-+ 		return filled;
-+ 	return thread_buffer_size + filled;
-+ }
-+ 
-+ /* get the free space on buffer */
-+ int alsa_free(void)
-+ {
-+ 	return thread_buffer_size - get_thread_buffer_filled() - 1;
-+ }
-+ 
-  int alsa_get_output_time(void)
-  {
-  	snd_pcm_sframes_t delay;
-! 	guint64 bytes = 0;
-  
-! 	if (!going || alsa_pcm == NULL)
-  		return 0;
-  
-! 	if (!snd_pcm_delay(alsa_pcm, &delay)) {
-! 		bytes = snd_pcm_frames_to_bytes(alsa_pcm, delay);
-! 		if (alsa_hw_written < bytes)
-! 			bytes = 0;
-! 		else
-! 			bytes = alsa_hw_written - bytes;
-! 	}
-! 	return output_time_offset + (bytes * 1000) / outputf->bps;
-  }
-  
-  int alsa_get_written_time(void)
-  {
-! 	if (!going)
-! 		return 0;
-! 	return (alsa_total_written * 1000) / inputf->bps;
-  }
-  
-  #define STEREO_ADJUST(type, type2, endian)					\
-***************
-*** 584,636 ****
-  }
-  
-  
-! void alsa_write(gpointer data, int length)
-  {
-! 	EffectPlugin *ep;
-  
-  	if (paused)
-  		return;
-  
-! 	force_start = FALSE;
-! 
-! 	if (effects_enabled() && (ep = get_current_effect_plugin()))
-! 	{
-! 		int new_freq = inputf->rate;
-! 		int new_chn = inputf->channels;
-! 		AFormat f = inputf->xmms_format;
-  		
-! 		if (ep->query_format)
-! 		{
-! 			ep->query_format(&f, &new_freq, &new_chn);
-! 			
-! 			if (f != effectf->xmms_format ||
-! 			    new_freq != effectf->rate ||
-! 			    new_chn != effectf->channels)
-! 			{
-! 				debug("Changing audio format for effect plugin");
-! 
-! 				g_free(effectf);
-! 				effectf = snd_format_from_xmms(f, new_freq,
-! 							       new_chn);
-! 				alsa_reopen(effectf);
-! 			}
-! 			
-! 		}
-  	
-  		length = ep->mod_samples(&data, length,
-  					 inputf->xmms_format,
-  					 inputf->rate,
-  					 inputf->channels);
-  	}
-- 	else if (effectf)
-- 	{
-- 		g_free(effectf);
-- 		effectf = NULL;
-- 		effectf = snd_format_from_xmms(inputf->xmms_format,
-- 					       inputf->rate,
-- 					       inputf->channels);
-- 		alsa_reopen(inputf);
-- 	}
-  
-  	if (alsa_convert_func != NULL)
-  		length = alsa_convert_func(convertb, &data, length);
---- 611,657 ----
-  }
-  
-  
-! /* transfer data to audio h/w; length is given in bytes
-!  *
-!  * data can be modified via effect plugin, rate conversion or
-!  * software volume before passed to audio h/w
-!  */
-! static void alsa_do_write(gpointer data, int length)
-  {
-! 	EffectPlugin *ep = NULL;
-! 	int new_freq;
-! 	int new_chn;
-! 	AFormat f;
-  
-  	if (paused)
-  		return;
-  
-! 	new_freq = inputf->rate;
-! 	new_chn = inputf->channels;
-! 	f = inputf->xmms_format;
-  		
-! 	if (effects_enabled() && (ep = get_current_effect_plugin()) &&
-! 	    ep->query_format)
-! 		ep->query_format(&f, &new_freq, &new_chn);
-  	
-+ 	if (f != effectf->xmms_format || new_freq != effectf->rate ||
-+ 	    new_chn != effectf->channels) {
-+ 		debug("Changing audio format for effect plugin");
-+ 		g_free(effectf);
-+ 		effectf = snd_format_from_xmms(f, new_freq, new_chn);
-+ 		if (alsa_reopen(effectf) < 0) {
-+ 			/* fatal error... */
-+ 			alsa_close();
-+ 			return;
-+ 		}
-+ 	}
-+ 
-+ 	if (ep) {
-  		length = ep->mod_samples(&data, length,
-  					 inputf->xmms_format,
-  					 inputf->rate,
-  					 inputf->channels);
-  	}
-  
-  	if (alsa_convert_func != NULL)
-  		length = alsa_convert_func(convertb, &data, length);
-***************
-*** 644,656 ****
-  	if (alsa_cfg.soft_volume)
-  		volume_adjust(data, length, outputf->xmms_format, outputf->channels);
-  
-! 	if (mmap)
-! 		alsa_mmap_audio(data, length);
-! 	else
-! 		alsa_write_audio(data, length);
-  }
-  
-! static void alsa_write_audio(gpointer data, int length)
-  {
-  	snd_pcm_sframes_t written_frames;
-  
---- 665,693 ----
-  	if (alsa_cfg.soft_volume)
-  		volume_adjust(data, length, outputf->xmms_format, outputf->channels);
-  
-! 	alsa_write_audio(data, length);
-  }
-  
-! /* write callback */
-! void alsa_write(gpointer data, int length)
-! {
-! 	int cnt;
-! 	char *src = (char *)data;
-! 
-! 	alsa_total_written += length;
-! 	while (length > 0) {
-! 		int wr;
-! 		cnt = MIN(length, thread_buffer_size - wr_index);
-! 		memcpy(thread_buffer + wr_index, src, cnt);
-! 		wr = (wr_index + cnt) % thread_buffer_size;
-! 		wr_index = wr;
-! 		length -= cnt;
-! 		src += cnt;
-! 	}
-! }
-! 
-! /* transfer data to audio h/w via normal write */
-! static void alsa_write_audio(char *data, int length)
-  {
-  	snd_pcm_sframes_t written_frames;
-  
-***************
-*** 663,735 ****
-  		{
-  			int written = snd_pcm_frames_to_bytes(alsa_pcm,
-  							      written_frames);
-- 			alsa_total_written += written;
-  			length -= written;
-! 			data = (char*) data + written;
-  		}
-! 		else if (written_frames == -EPIPE)
-! 			xrun_recover();
-! 		else
-! 		{
-! 			g_warning("alsa_write_audio(): write error: %s",
-! 				  snd_strerror(-written_frames));
-! 			break;
-  		}
-  	}
-  }
-  
-! static void alsa_mmap_audio(char *data, int length)
-  {
-! 	int cnt = 0, err;
-! 	snd_pcm_uframes_t offset, frames, frame;
-! 	const snd_pcm_channel_area_t *chan_areas = areas;
-! 	int channel_offset = 0, channel;
-! 	ssize_t sample_size, offset_bytes, step;
-! 
-! 	alsa_get_avail();
-  
-! 	while (length > 0)
-! 	{
-! 		frames = snd_pcm_bytes_to_frames(alsa_pcm, length);
-! 		if ((err = snd_pcm_mmap_begin(alsa_pcm, &chan_areas, &offset, &frames) < 0))
-! 			g_warning("alsa_mmap_audio(): snd_pcm_mmap_begin() "
-! 				  "failed: %s", snd_strerror(-err));
-! 
-! 		cnt = snd_pcm_frames_to_bytes(alsa_pcm, frames);
-! 
-! 		sample_size = snd_pcm_samples_to_bytes(alsa_pcm, 1);
-! 		step = chan_areas[0].step / 8;
-! 		offset_bytes = offset * step;
-  
-! 		for (frame = 0; frame < frames; frame++)
-! 		{
-! 			for (channel = 0; channel < outputf->channels; channel++)
-! 			{
-! 				char *ptr = chan_areas[channel].addr;
-! 				memcpy(ptr + chan_areas[channel].first / 8 +
-! 				       offset_bytes,
-! 				       data + channel_offset, sample_size);
-! 				channel_offset += sample_size;
-  			}
-! 			offset_bytes += step;
-  		}
-- 			
-- 		err = snd_pcm_mmap_commit(alsa_pcm, offset, frames);
-- 		if (err == -EPIPE)
-- 			xrun_recover();
-- 		else if (err < 0)
-- 			g_warning("alsa_mmap_audio(): snd_pcm_mmap_commit() "
-- 				  "failed: %s", snd_strerror(-err));
-- 		else if (err != frames)
-- 			g_warning("alsa_mmap_audio(): snd_pcm_mmap_commit "
-- 				  "returned %d, expected %d", err, (int)frames);
-- 		
-- 		alsa_total_written += cnt;
-- 		
-- 		length -= cnt;
-  	}
-  }
-  
-  int alsa_open(AFormat fmt, int rate, int nch)
-  {
-  	debug("Opening device");
---- 700,785 ----
-  		{
-  			int written = snd_pcm_frames_to_bytes(alsa_pcm,
-  							      written_frames);
-  			length -= written;
-! 			data += written;
-! 			alsa_hw_written += written;
-  		}
-! 		else {
-! 			int err = alsa_handle_error((int)written_frames);
-! 			if (err < 0) {
-! 				g_warning("alsa_write_audio(): write error: %s",
-! 					  snd_strerror(-err));
-! 				break;
-! 			}
-  		}
-  	}
-  }
-  
-! /* transfer audio data from thread buffer to h/w */
-! static void alsa_write_out_thread_data(void)
-  {
-! 	gint length, cnt, avail;
-  
-! 	length = MIN(hw_period_size_in, get_thread_buffer_filled());
-! 	avail = snd_pcm_frames_to_bytes(alsa_pcm, alsa_get_avail());
-! 	length = MIN(length, avail);
-! 	while (length > 0) {
-! 		int rd;
-! 		cnt = MIN(length, thread_buffer_size - rd_index);
-! 		alsa_do_write(thread_buffer + rd_index, cnt);
-! 		rd = (rd_index + cnt) % thread_buffer_size;
-! 		rd_index = rd;
-! 		length -= cnt;
-! 	}
-! }
-  
-! /* audio thread loop */
-! /* FIXME: proper lock? */
-! static void *alsa_loop(void *arg)
-! {
-! 	int npfds = snd_pcm_poll_descriptors_count(alsa_pcm);
-! 	struct pollfd *pfds;
-! 	unsigned short *revents;
-! 
-! 	if (npfds <= 0)
-! 		goto _error;
-! 	pfds = alloca(sizeof(*pfds) * npfds);
-! 	revents = alloca(sizeof(*revents) * npfds);
-! 	while (going && alsa_pcm) {
-! 		if (! paused && get_thread_buffer_filled() > hw_period_size_in) {
-! 			snd_pcm_poll_descriptors(alsa_pcm, pfds, npfds);
-! 			if (poll(pfds, npfds, 10) > 0) { 
-! 				/* need to check revents.  poll() with dmix returns
-! 				 * a postive value even if no data is available
-! 				 */
-! 				int i;
-! 				snd_pcm_poll_descriptors_revents(alsa_pcm, pfds, npfds, revents);
-! 				for (i = 0; i < npfds; i++)
-! 					if (revents[i] & POLLOUT) {
-! 						alsa_write_out_thread_data();
-! 						break;
-! 					}
-  			}
-! 		} else
-! 			xmms_usleep(10000);
-! 
-! 		if (pause_request != paused)
-! 			alsa_do_pause(pause_request);
-! 
-! 		if (flush_request != -1) {
-! 			alsa_do_flush(flush_request);
-! 			flush_request = -1;
-  		}
-  	}
-+ 
-+  _error:
-+ 	alsa_close_pcm();
-+ 	g_free(thread_buffer);
-+ 	thread_buffer = NULL;
-+ 	pthread_exit(NULL);
-  }
-  
-+ /* open callback */
-  int alsa_open(AFormat fmt, int rate, int nch)
-  {
-  	debug("Opening device");
-***************
-*** 739,746 ****
-  	if (alsa_cfg.debug)
-  		snd_output_stdio_attach(&logs, stdout, 0);
-  
-- 	mmap = alsa_cfg.mmap;
-- 
-  	if (alsa_setup(inputf) < 0)
-  	{
-  		alsa_close();
---- 789,794 ----
-***************
-*** 751,763 ****
-  
-  	convertb = xmms_convert_buffers_new();
-  	
-! 	alsa_total_written = 0;
-  	going = TRUE;
-  	paused = FALSE;
-- 	force_start = FALSE;
-- 	
-- 	snd_pcm_prepare(alsa_pcm);
-  	
-  	return 1;
-  }
-  
---- 799,823 ----
-  
-  	convertb = xmms_convert_buffers_new();
-  	
-! 	output_time_offset = 0;
-! 	alsa_total_written = alsa_hw_written = 0;
-  	going = TRUE;
-  	paused = FALSE;
-  	
-+ 	thread_buffer_size = (guint64)alsa_cfg.thread_buffer_time * inputf->bps / 1000;
-+ 	if (thread_buffer_size < hw_buffer_size)
-+ 		thread_buffer_size = hw_buffer_size * 2;
-+ 	if (thread_buffer_size < 8192)
-+ 		thread_buffer_size = 8192;
-+ 	thread_buffer_size += hw_buffer_size;
-+ 	thread_buffer_size -= thread_buffer_size % hw_period_size;
-+ 	thread_buffer = g_malloc0(thread_buffer_size);
-+ 	wr_index = rd_index = 0;
-+ 	pause_request = FALSE;
-+ 	flush_request = -1;
-+ 
-+ 	pthread_create(&audio_thread, NULL, alsa_loop, NULL);
-+ 
-  	return 1;
-  }
-  
-***************
-*** 787,792 ****
---- 847,854 ----
-  
-  	f->rate = rate;
-  	f->channels = channels;
-+ 	f->sample_bits = snd_pcm_format_physical_width(f->format);
-+ 	f->bps = (rate * f->sample_bits * channels) >> 3;
-  
-  	return f;
-  }
-***************
-*** 806,812 ****
-  	int err;
-  	snd_pcm_hw_params_t *hwparams;
-  	snd_pcm_sw_params_t *swparams;
-! 	int alsa_buffer_time, bits_per_sample;
-  	unsigned int alsa_period_time;
-  	snd_pcm_uframes_t alsa_buffer_size, alsa_period_size;
-  
---- 868,874 ----
-  	int err;
-  	snd_pcm_hw_params_t *hwparams;
-  	snd_pcm_sw_params_t *swparams;
-! 	int alsa_buffer_time;
-  	unsigned int alsa_period_time;
-  	snd_pcm_uframes_t alsa_buffer_size, alsa_period_size;
-  
-***************
-*** 816,824 ****
-  	alsa_stereo_convert_func = NULL;
-  	alsa_frequency_convert_func = NULL;
-  
-! 	outputf = snd_format_from_xmms(effectf->xmms_format,
-! 				       effectf->rate,
-! 				       effectf->channels);
-  
-  	debug("Opening device: %s", alsa_cfg.pcm_device);
-  	/* FIXME: Can snd_pcm_open() return EAGAIN? */
---- 878,885 ----
-  	alsa_stereo_convert_func = NULL;
-  	alsa_frequency_convert_func = NULL;
-  
-! 	g_free(outputf);
-! 	outputf = snd_format_from_xmms(f->xmms_format, f->rate, f->channels);
-  
-  	debug("Opening device: %s", alsa_cfg.pcm_device);
-  	/* FIXME: Can snd_pcm_open() return EAGAIN? */
-***************
-*** 829,838 ****
-  		g_warning("alsa_setup(): Failed to open pcm device (%s): %s",
-  			  alsa_cfg.pcm_device, snd_strerror(-err));
-  		alsa_pcm = NULL;
-  		return -1;
-  	}
-- 	snd_pcm_nonblock(alsa_pcm, FALSE);
-  
-  	if (alsa_cfg.debug)
-  	{
-  		snd_pcm_info_t *info;
---- 890,903 ----
-  		g_warning("alsa_setup(): Failed to open pcm device (%s): %s",
-  			  alsa_cfg.pcm_device, snd_strerror(-err));
-  		alsa_pcm = NULL;
-+ 		g_free(outputf);
-+ 		outputf = NULL;
-  		return -1;
-  	}
-  
-+ 	/* doesn't care about non-blocking */
-+ 	/* snd_pcm_nonblock(alsa_pcm, 0); */
-+ 	
-  	if (alsa_cfg.debug)
-  	{
-  		snd_pcm_info_t *info;
-***************
-*** 856,872 ****
-  		return -1;
-  	}
-  
-! 	if (mmap &&
-! 	    (err = snd_pcm_hw_params_set_access(alsa_pcm, hwparams,
-! 						SND_PCM_ACCESS_MMAP_INTERLEAVED)) < 0)
-! 	{
-! 		g_message("alsa_setup(): Cannot set mmap'ed mode: %s. "
-! 			  "falling back to direct write", snd_strerror(-err));
-! 		mmap = 0;
-! 	}
-! 
-! 	if (!mmap &&
-! 	    (err = snd_pcm_hw_params_set_access(alsa_pcm, hwparams,
-  						SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
-  	{
-  		g_warning("alsa_setup(): Cannot set direct write mode: %s",
---- 921,927 ----
-  		return -1;
-  	}
-  
-! 	if ((err = snd_pcm_hw_params_set_access(alsa_pcm, hwparams,
-  						SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
-  	{
-  		g_warning("alsa_setup(): Cannot set direct write mode: %s",
-***************
-*** 894,910 ****
-  				break;
-  			}
-  		}
-! 		if (outputf->format != effectf->format)
-  		{
-  			outputf->xmms_format =
-  				format_from_alsa(outputf->format);
-  			debug("Converting format from %d to %d",
-! 			      effectf->xmms_format, outputf->xmms_format);
-  			if (outputf->xmms_format < 0)
-  				return -1;
-  			alsa_convert_func =
-  				xmms_convert_get_func(outputf->xmms_format,
-! 						      effectf->xmms_format);
-  			if (alsa_convert_func == NULL)
-  				return -1;
-  		}
---- 949,965 ----
-  				break;
-  			}
-  		}
-! 		if (outputf->format != f->format)
-  		{
-  			outputf->xmms_format =
-  				format_from_alsa(outputf->format);
-  			debug("Converting format from %d to %d",
-! 			      f->xmms_format, outputf->xmms_format);
-  			if (outputf->xmms_format < 0)
-  				return -1;
-  			alsa_convert_func =
-  				xmms_convert_get_func(outputf->xmms_format,
-! 						      f->xmms_format);
-  			if (alsa_convert_func == NULL)
-  				return -1;
-  		}
-***************
-*** 918,931 ****
-  	}
-  
-  	snd_pcm_hw_params_set_channels_near(alsa_pcm, hwparams, &outputf->channels);
-! 	if (outputf->channels != effectf->channels)
-  	{
-  		debug("Converting channels from %d to %d",
-! 		      effectf->channels, outputf->channels);
-  		alsa_stereo_convert_func =
-  			xmms_convert_get_channel_func(outputf->xmms_format,
-  						      outputf->channels,
-! 						      effectf->channels);
-  		if (alsa_stereo_convert_func == NULL)
-  			return -1;
-  	}
---- 973,986 ----
-  	}
-  
-  	snd_pcm_hw_params_set_channels_near(alsa_pcm, hwparams, &outputf->channels);
-! 	if (outputf->channels != f->channels)
-  	{
-  		debug("Converting channels from %d to %d",
-! 		      f->channels, outputf->channels);
-  		alsa_stereo_convert_func =
-  			xmms_convert_get_channel_func(outputf->xmms_format,
-  						      outputf->channels,
-! 						      f->channels);
-  		if (alsa_stereo_convert_func == NULL)
-  			return -1;
-  	}
-***************
-*** 936,945 ****
-  		g_warning("alsa_setup(): No usable samplerate available.");
-  		return -1;
-  	}
-! 	if (outputf->rate != effectf->rate)
-  	{
-  		debug("Converting samplerate from %d to %d",
-! 		      effectf->rate, outputf->rate);
-  		alsa_frequency_convert_func =
-  			xmms_convert_get_frequency_func(outputf->xmms_format,
-  							outputf->channels);
---- 991,1000 ----
-  		g_warning("alsa_setup(): No usable samplerate available.");
-  		return -1;
-  	}
-! 	if (outputf->rate != f->rate)
-  	{
-  		debug("Converting samplerate from %d to %d",
-! 		      f->rate, outputf->rate);
-  		alsa_frequency_convert_func =
-  			xmms_convert_get_frequency_func(outputf->xmms_format,
-  							outputf->channels);
-***************
-*** 947,960 ****
-  			return -1;
-  	}
-  
-! 	alsa_buffer_time = alsa_cfg.buffer_time * 1000;
-! 	if ((err = snd_pcm_hw_params_set_buffer_time_near(alsa_pcm, hwparams,
-! 							  &alsa_buffer_time, 0)) < 0)
-! 	{
-! 		g_warning("alsa_setup(): Set buffer time failed: %s.",
-! 			  snd_strerror(-err));
-! 		return -1;
-! 	}
-  
-  	alsa_period_time = alsa_cfg.period_time * 1000;
-  	if ((err = snd_pcm_hw_params_set_period_time_near(alsa_pcm, hwparams,
---- 1002,1009 ----
-  			return -1;
-  	}
-  
-! 	outputf->sample_bits = snd_pcm_format_physical_width(outputf->format);
-! 	outputf->bps = (outputf->rate * outputf->sample_bits * outputf->channels) >> 3;
-  
-  	alsa_period_time = alsa_cfg.period_time * 1000;
-  	if ((err = snd_pcm_hw_params_set_period_time_near(alsa_pcm, hwparams,
-***************
-*** 965,970 ****
---- 1014,1028 ----
-  		return -1;
-  	}
-  
-+ 	alsa_buffer_time = alsa_cfg.buffer_time * 1000;
-+ 	if ((err = snd_pcm_hw_params_set_buffer_time_near(alsa_pcm, hwparams,
-+ 							  &alsa_buffer_time, 0)) < 0)
-+ 	{
-+ 		g_warning("alsa_setup(): Set buffer time failed: %s.",
-+ 			  snd_strerror(-err));
-+ 		return -1;
-+ 	}
-+ 
-  	if (snd_pcm_hw_params(alsa_pcm, hwparams) < 0)
-  	{
-  		if (alsa_cfg.debug)
-***************
-*** 1011,1037 ****
-  		snd_pcm_dump(alsa_pcm, logs);
-  	}
-  
-! 	bits_per_sample = snd_pcm_format_physical_width(outputf->format);
-! 	alsa_bps = (outputf->rate * bits_per_sample * outputf->channels) >> 3;
-! 
-! 	if (mmap)
-! 	{
-! 		int chn;
-! 		buffer = g_malloc(alsa_period_size * bits_per_sample / 8 * outputf->channels);
-! 		areas = g_malloc0(outputf->channels * sizeof(snd_pcm_channel_area_t));
-! 		
-! 		for (chn = 0; chn < outputf->channels; chn++)
-! 		{
-! 			areas[chn].addr = buffer;
-! 			areas[chn].first = chn * bits_per_sample;
-! 			areas[chn].step = outputf->channels * bits_per_sample;
-! 		}
-  	}
-  
-  	debug("Device setup: buffer time: %i, size: %i.", alsa_buffer_time,
-! 	      snd_pcm_frames_to_bytes(alsa_pcm, alsa_buffer_size));
-  	debug("bits per sample: %i; frame size: %i; Bps: %i",
-! 	      bits_per_sample, snd_pcm_frames_to_bytes(alsa_pcm, 1), alsa_bps);
-  
-  	return 0;
-  }
---- 1069,1096 ----
-  		snd_pcm_dump(alsa_pcm, logs);
-  	}
-  
-! 	hw_buffer_size = snd_pcm_frames_to_bytes(alsa_pcm, alsa_buffer_size);
-! 	hw_period_size = snd_pcm_frames_to_bytes(alsa_pcm, alsa_period_size);
-! 	if (inputf->bps != outputf->bps) {
-! 		int align = (inputf->sample_bits * inputf->channels) / 8;
-! 		hw_buffer_size_in = ((guint64)hw_buffer_size * inputf->bps +
-! 				     outputf->bps/2) / outputf->bps;
-! 		hw_period_size_in = ((guint64)hw_period_size * inputf->bps +
-! 				     outputf->bps/2) / outputf->bps;
-! 		hw_buffer_size_in -= hw_buffer_size_in % align;
-! 		hw_period_size_in -= hw_period_size_in % align;
-! 	} else {
-! 		hw_buffer_size_in = hw_buffer_size;
-! 		hw_period_size_in = hw_period_size;
-  	}
-  
-  	debug("Device setup: buffer time: %i, size: %i.", alsa_buffer_time,
-! 	      hw_buffer_size);
-! 	debug("Device setup: period time: %i, size: %i.", alsa_period_time,
-! 	      hw_period_size);
-  	debug("bits per sample: %i; frame size: %i; Bps: %i",
-! 	      snd_pcm_format_physical_width(outputf->format),
-! 	      snd_pcm_frames_to_bytes(alsa_pcm, 1), outputf->bps);
-  
-  	return 0;
-  }
-diff -rc xmms-1.2.10-orig/Output/alsa/configure.c xmms-1.2.10/Output/alsa/configure.c
-*** xmms-1.2.10-orig/Output/alsa/configure.c	2004-01-28 00:09:39.000000000 +0100
---- xmms-1.2.10/Output/alsa/configure.c	2006-01-27 00:28:49.000000000 +0100
-***************
-*** 20,27 ****
-  #include <stdio.h>
-  
-  static GtkWidget *configure_win = NULL;
-! static GtkWidget *buffer_time_spin, *period_time_spin;
-! static GtkWidget *mmap_button, *mixer_card_spin, *softvolume_toggle_button;
-  
-  static GtkWidget *devices_combo, *mixer_devices_combo;
-  
---- 20,27 ----
-  #include <stdio.h>
-  
-  static GtkWidget *configure_win = NULL;
-! static GtkWidget *buffer_time_spin, *period_time_spin, *thread_buffer_time_spin;
-! static GtkWidget *mixer_card_spin, *softvolume_toggle_button;
-  
-  static GtkWidget *devices_combo, *mixer_devices_combo;
-  
-***************
-*** 36,42 ****
-  	alsa_cfg.pcm_device = GET_CHARS(GTK_COMBO(devices_combo)->entry);
-  	alsa_cfg.buffer_time = GET_SPIN_INT(buffer_time_spin);
-  	alsa_cfg.period_time = GET_SPIN_INT(period_time_spin);
-! 	alsa_cfg.mmap = GET_TOGGLE(mmap_button);
-  	alsa_cfg.soft_volume = GET_TOGGLE(softvolume_toggle_button);
-  	alsa_cfg.mixer_card = GET_SPIN_INT(mixer_card_spin);
-  	alsa_cfg.mixer_device = GET_CHARS(GTK_COMBO(mixer_devices_combo)->entry);
---- 36,42 ----
-  	alsa_cfg.pcm_device = GET_CHARS(GTK_COMBO(devices_combo)->entry);
-  	alsa_cfg.buffer_time = GET_SPIN_INT(buffer_time_spin);
-  	alsa_cfg.period_time = GET_SPIN_INT(period_time_spin);
-! 	alsa_cfg.thread_buffer_time = GET_SPIN_INT(thread_buffer_time_spin);
-  	alsa_cfg.soft_volume = GET_TOGGLE(softvolume_toggle_button);
-  	alsa_cfg.mixer_card = GET_SPIN_INT(mixer_card_spin);
-  	alsa_cfg.mixer_device = GET_CHARS(GTK_COMBO(mixer_devices_combo)->entry);
-***************
-*** 51,57 ****
-  	
-  	xmms_cfg_write_int(cfgfile, "ALSA", "buffer_time", alsa_cfg.buffer_time);
-  	xmms_cfg_write_int(cfgfile, "ALSA", "period_time", alsa_cfg.period_time);
-! 	xmms_cfg_write_boolean(cfgfile,"ALSA","mmap",alsa_cfg.mmap);
-  	xmms_cfg_write_string(cfgfile,"ALSA","pcm_device", alsa_cfg.pcm_device);
-  	xmms_cfg_write_int(cfgfile, "ALSA", "mixer_card", alsa_cfg.mixer_card);
-  	xmms_cfg_write_string(cfgfile,"ALSA","mixer_device", alsa_cfg.mixer_device);
---- 51,57 ----
-  	
-  	xmms_cfg_write_int(cfgfile, "ALSA", "buffer_time", alsa_cfg.buffer_time);
-  	xmms_cfg_write_int(cfgfile, "ALSA", "period_time", alsa_cfg.period_time);
-! 	xmms_cfg_write_int(cfgfile, "ALSA", "thread_buffer_time", alsa_cfg.thread_buffer_time);
-  	xmms_cfg_write_string(cfgfile,"ALSA","pcm_device", alsa_cfg.pcm_device);
-  	xmms_cfg_write_int(cfgfile, "ALSA", "mixer_card", alsa_cfg.mixer_card);
-  	xmms_cfg_write_string(cfgfile,"ALSA","mixer_device", alsa_cfg.mixer_device);
-***************
-*** 212,219 ****
-  	GtkWidget *dev_vbox, *adevice_frame, *adevice_box;
-  	GtkWidget *mixer_frame, *mixer_box, *mixer_card_box;
-  	GtkWidget *buffer_frame, *buffer_vbox, *buffer_table;
-! 	GtkWidget *buffer_time_label, *period_time_label;
-! 	GtkObject *buffer_time_adj, *period_time_adj, *mixer_card_adj;
-  	GtkWidget *bbox, *ok, *cancel;
-  	
-  	if (configure_win)
---- 212,219 ----
-  	GtkWidget *dev_vbox, *adevice_frame, *adevice_box;
-  	GtkWidget *mixer_frame, *mixer_box, *mixer_card_box;
-  	GtkWidget *buffer_frame, *buffer_vbox, *buffer_table;
-! 	GtkWidget *buffer_time_label, *period_time_label, *thread_buffer_time_label;
-! 	GtkObject *buffer_time_adj, *period_time_adj, *thread_buffer_time_adj, *mixer_card_adj;
-  	GtkWidget *bbox, *ok, *cancel;
-  	
-  	if (configure_win)
-***************
-*** 312,318 ****
-  	
-  	gtk_container_set_border_width(GTK_CONTAINER(buffer_vbox), 5);
-  
-! 	buffer_table = gtk_table_new(2, 2, FALSE);
-  	gtk_table_set_row_spacings(GTK_TABLE(buffer_table), 5);
-  	gtk_table_set_col_spacings(GTK_TABLE(buffer_table), 5);
-  	gtk_box_pack_start(GTK_BOX(buffer_vbox), buffer_table, FALSE, FALSE, 0);
---- 312,318 ----
-  	
-  	gtk_container_set_border_width(GTK_CONTAINER(buffer_vbox), 5);
-  
-! 	buffer_table = gtk_table_new(2, 3, FALSE);
-  	gtk_table_set_row_spacings(GTK_TABLE(buffer_table), 5);
-  	gtk_table_set_col_spacings(GTK_TABLE(buffer_table), 5);
-  	gtk_box_pack_start(GTK_BOX(buffer_vbox), buffer_table, FALSE, FALSE, 0);
-***************
-*** 345,354 ****
-  	gtk_table_attach(GTK_TABLE(buffer_table), period_time_spin,
-  			 1, 2, 1, 2, 0, 0, 0, 0);
-  	
-! 	mmap_button = gtk_check_button_new_with_label(_("Mmap mode"));
-! 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(mmap_button),
-! 				     alsa_cfg.mmap);
-! 	gtk_box_pack_start(GTK_BOX(buffer_vbox), mmap_button, FALSE, FALSE, 0);
-  	
-  	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buffer_frame,
-  				 gtk_label_new(_("Advanced settings")));
---- 345,363 ----
-  	gtk_table_attach(GTK_TABLE(buffer_table), period_time_spin,
-  			 1, 2, 1, 2, 0, 0, 0, 0);
-  	
-! 	thread_buffer_time_label = gtk_label_new(_("Thread buffer time (ms):"));
-! 	gtk_label_set_justify(GTK_LABEL(thread_buffer_time_label), GTK_JUSTIFY_LEFT);
-! 	gtk_misc_set_alignment(GTK_MISC(thread_buffer_time_label), 0, 0.5);
-! 	gtk_table_attach(GTK_TABLE(buffer_table), thread_buffer_time_label,
-! 			 0, 1, 2, 3, GTK_FILL, 0, 0, 0);
-! 	thread_buffer_time_adj = gtk_adjustment_new(alsa_cfg.thread_buffer_time,
-! 						    1000, 1000000, 100, 100, 100);
-! 	thread_buffer_time_spin = gtk_spin_button_new(GTK_ADJUSTMENT(thread_buffer_time_adj),
-! 						      8, 0);
-! 	
-! 	gtk_widget_set_usize(thread_buffer_time_spin, 60, -1);
-! 	gtk_table_attach(GTK_TABLE(buffer_table), thread_buffer_time_spin,
-! 			 1, 2, 2, 3, 0, 0, 0, 0);
-  	
-  	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buffer_frame,
-  				 gtk_label_new(_("Advanced settings")));
-diff -rc xmms-1.2.10-orig/Output/alsa/init.c xmms-1.2.10/Output/alsa/init.c
-*** xmms-1.2.10-orig/Output/alsa/init.c	2004-01-11 17:27:26.000000000 +0100
---- xmms-1.2.10/Output/alsa/init.c	2006-01-27 00:28:49.000000000 +0100
-***************
-*** 29,36 ****
-  	memset(&alsa_cfg, 0, sizeof (alsa_cfg));
-  	alsa_cfg.buffer_time = 500;
-  	alsa_cfg.period_time = 50;
-  	alsa_cfg.debug = 0;
-- 	alsa_cfg.mmap = 1;
-  	alsa_cfg.vol.left = 100;
-  	alsa_cfg.vol.right = 100;
-  
---- 29,36 ----
-  	memset(&alsa_cfg, 0, sizeof (alsa_cfg));
-  	alsa_cfg.buffer_time = 500;
-  	alsa_cfg.period_time = 50;
-+ 	alsa_cfg.thread_buffer_time = 3000;
-  	alsa_cfg.debug = 0;
-  	alsa_cfg.vol.left = 100;
-  	alsa_cfg.vol.right = 100;
-  
-***************
-*** 44,51 ****
-  	xmms_cfg_read_int(cfgfile, "ALSA", "mixer_card", &alsa_cfg.mixer_card);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "buffer_time", &alsa_cfg.buffer_time);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "period_time", &alsa_cfg.period_time);
-! 	xmms_cfg_read_boolean(cfgfile, "ALSA", "mmap", &alsa_cfg.mmap);
-! 	xmms_cfg_read_int(cfgfile, "ALSA", "period_time", &alsa_cfg.period_time);
-  	xmms_cfg_read_boolean(cfgfile, "ALSA", "soft_volume",
-  			      &alsa_cfg.soft_volume);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "volume_left", &alsa_cfg.vol.left);
---- 44,50 ----
-  	xmms_cfg_read_int(cfgfile, "ALSA", "mixer_card", &alsa_cfg.mixer_card);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "buffer_time", &alsa_cfg.buffer_time);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "period_time", &alsa_cfg.period_time);
-! 	xmms_cfg_read_int(cfgfile, "ALSA", "thread_buffer_time", &alsa_cfg.thread_buffer_time);
-  	xmms_cfg_read_boolean(cfgfile, "ALSA", "soft_volume",
-  			      &alsa_cfg.soft_volume);
-  	xmms_cfg_read_int(cfgfile, "ALSA", "volume_left", &alsa_cfg.vol.left);
diff --git a/pkgs/applications/audio/xmms/default.nix b/pkgs/applications/audio/xmms/default.nix
deleted file mode 100644
index 6152e325bb6..00000000000
--- a/pkgs/applications/audio/xmms/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{stdenv, fetchurl, alsaLib, esound, libogg, libvorbis, glib, gtk}:
-
-stdenv.mkDerivation {
-  name = "xmms-1.2.10";
-  
-  src = fetchurl {
-    url = http://nixos.org/tarballs/xmms-1.2.10.tar.bz2;
-    md5 = "03a85cfc5e1877a2e1f7be4fa1d3f63c";
-  };
-
-  # Patch borrowed from SuSE 10.0 to fix pause/continue on ALSA.
-  patches = [./alsa.patch];
-
-  buildInputs = [alsaLib esound libogg libvorbis glib gtk];
-
-  meta = {
-    description = "A music player very similar to Winamp";
-    homepage = http://www.xmms.org;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/emacs-w3m/default.nix b/pkgs/applications/editors/emacs-modes/emacs-w3m/default.nix
index 2e182170b19..a7ff4e624a1 100644
--- a/pkgs/applications/editors/emacs-modes/emacs-w3m/default.nix
+++ b/pkgs/applications/editors/emacs-modes/emacs-w3m/default.nix
@@ -1,6 +1,6 @@
 { fetchcvs, stdenv, emacs, w3m, imagemagick, texinfo, autoconf }:
 
-let date = "2009-07-09"; in
+let date = "2012-01-15"; in
 stdenv.mkDerivation rec {
   name = "emacs-w3m-cvs${date}";
 
diff --git a/pkgs/applications/graphics/graphicsmagick/1.3.7.nix b/pkgs/applications/graphics/graphicsmagick/1.3.7.nix
index 0d33cc757b9..291d61d5f6f 100644
--- a/pkgs/applications/graphics/graphicsmagick/1.3.7.nix
+++ b/pkgs/applications/graphics/graphicsmagick/1.3.7.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     homepage = http://www.graphicsmagick.org;
     description = "Swiss army knife of image processing";
     license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/graphics/graphicsmagick/default.nix b/pkgs/applications/graphics/graphicsmagick/default.nix
index 980413bc8f8..0636903d329 100644
--- a/pkgs/applications/graphics/graphicsmagick/default.nix
+++ b/pkgs/applications/graphics/graphicsmagick/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     homepage = http://www.graphicsmagick.org;
     description = "Swiss army knife of image processing";
     license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/misc/adobe-reader/default.nix b/pkgs/applications/misc/adobe-reader/default.nix
index e56982a6680..25bce4203ee 100644
--- a/pkgs/applications/misc/adobe-reader/default.nix
+++ b/pkgs/applications/misc/adobe-reader/default.nix
@@ -3,13 +3,13 @@
 assert stdenv.system == "i686-linux";
 
 stdenv.mkDerivation {
-  name = "adobe-reader-9.4.2-1";
+  name = "adobe-reader-9.4.7-1";
   
   builder = ./builder.sh;
   
   src = fetchurl {
-    url = http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/9.4.2/enu/AdbeRdr9.4.2-1_i486linux_enu.tar.bz2;
-    sha256 = "0xm8ngr7lslhxli9ly1g2w7ichip88vpf7lfx1ma0liaw4m2gv0h";
+    url = http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/9.4.7/enu/AdbeRdr9.4.7-1_i486linux_enu.tar.bz2;
+    sha256 = "0bzx1rcwc9bi5jkh8f8hjb354zxlvvx37lhm0l2r0mjxj8fimfb5";
   };
 
   # !!! Adobe Reader contains copies of OpenSSL, libcurl, and libicu.
diff --git a/pkgs/applications/misc/goldendict/default.nix b/pkgs/applications/misc/goldendict/default.nix
new file mode 100644
index 00000000000..881f5339bdf
--- /dev/null
+++ b/pkgs/applications/misc/goldendict/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, qt4, libXtst, libvorbis, phonon, hunspell }:
+stdenv.mkDerivation rec {
+  name = "goldendict-1.0.1";
+  src = fetchurl {
+    url = "mirror://sourceforge/goldendict/${name}-src.tar.bz2";
+    sha256 = "19p99dd5jgs0k66sy30vck7ymqj6dv1lh6w8xw18zczdll2h9yxk";
+  };
+  buildInputs = [ qt4 libXtst libvorbis phonon hunspell ];
+  unpackPhase = ''
+    mkdir ${name}-src
+    cd ${name}-src
+    tar xf ${src}
+  '';
+  patches = [ ./goldendict-paths.diff ];
+  patchFlags = "-p 0";
+  configurePhase = ''
+    qmake
+  '';
+  installPhase = ''
+    make INSTALL_ROOT="$out" install
+    rm -rf "$out/share/app-install"
+  '';
+
+  meta = {
+    homepage = http://goldendict.org/;
+    description = "a feature-rich dictionary lookup program";
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.astsmtl ];
+  };
+}
diff --git a/pkgs/applications/misc/goldendict/goldendict-paths.diff b/pkgs/applications/misc/goldendict/goldendict-paths.diff
new file mode 100644
index 00000000000..6682911dbe4
--- /dev/null
+++ b/pkgs/applications/misc/goldendict/goldendict-paths.diff
@@ -0,0 +1,10 @@
+--- goldendict.pro~	2010-12-27 22:52:21.000000000 +0100
++++ goldendict.pro	2010-12-27 22:52:21.000000000 +0100
+@@ -63,2 +63,2 @@
+-    isEmpty( PREFIX ):PREFIX = /usr/local
+-    DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/apps/goldendict/\\\"
++    isEmpty( PREFIX ):PREFIX = /
++    DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/goldendict/\\\"
+@@ -66 +66 @@
+-    locale.path = $$PREFIX/share/apps/goldendict/locale/
++    locale.path = $$PREFIX/share/goldendict/locale/
diff --git a/pkgs/applications/misc/ikiwiki/default.nix b/pkgs/applications/misc/ikiwiki/default.nix
index fc800dc2222..feb507c8732 100644
--- a/pkgs/applications/misc/ikiwiki/default.nix
+++ b/pkgs/applications/misc/ikiwiki/default.nix
@@ -13,14 +13,14 @@ assert monotoneSupport -> (monotone != null);
 
 let
   name = "ikiwiki";
-  version = "3.20120109";
+  version = "3.20120115";
 in
 stdenv.mkDerivation {
   name = "${name}-${version}";
 
   src = fetchurl {
     url = "http://ftp.de.debian.org/debian/pool/main/i/ikiwiki/${name}_${version}.tar.gz";
-    sha256 = "0a47135c039f3dfd62162dd3b250397fcdab2dbb4bf4cf0433099f6e48d6f3e8";
+    sha256 = "3145372b3d86068f90348a96f9daf3a3b438d747be0e977358d82ee752499c1f";
   };
 
   buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
diff --git a/pkgs/applications/misc/truecrypt/default.nix b/pkgs/applications/misc/truecrypt/default.nix
index 906817fe5a2..bd719753451 100644
--- a/pkgs/applications/misc/truecrypt/default.nix
+++ b/pkgs/applications/misc/truecrypt/default.nix
@@ -40,17 +40,17 @@ library, use the 'NOGUI' parameter:
    $ make NOGUI=1
 */
 
-{ fetchurl, stdenv, pkgconfig, fuse, wxGTK, devicemapper,
+{ fetchurl, stdenv, pkgconfig, nasm, fuse, wxGTK, devicemapper,
   wxGUI ? true
 }:
 
 stdenv.mkDerivation {
-  name = "truecrypt-6.3a";
+  name = "truecrypt-7.1";
   builder = ./builder.sh;
 
   src = fetchurl {
-    url = http://www.sfr-fresh.com/unix/misc/TrueCrypt_6.3a_Source.tar.gz;
-    sha256 = "1vwnzay9gjlldqbdb20rhq2arhyzhdy347qc00hkpqmv2b8z070y";
+    url = http://fossies.org/unix/misc/TrueCrypt-7.1-Source.tar.gz;
+    sha256 = "1x6rdxcvklb3zpmgfc3mg5h71gzki1q55ljkzjab2vzkf9n5v0cl";
   };
 
   pkcs11h = fetchurl {
@@ -68,7 +68,7 @@ stdenv.mkDerivation {
     sha256 = "5ae6a4f32ca737e02def3bf314c9842fb89be82bf00b6f4022a97d8d565522b8";
   };
 
-  buildInputs = [ pkgconfig fuse devicemapper wxGTK ]; 
+  buildInputs = [ pkgconfig fuse devicemapper wxGTK nasm ]; 
   makeFlags = if (wxGUI) then "" else "NOGUI=1";
 
   meta = {
diff --git a/pkgs/applications/networking/browsers/firefox/8.0.nix b/pkgs/applications/networking/browsers/firefox/10.0.nix
index 823d6e0cbd2..79869b324b9 100644
--- a/pkgs/applications/networking/browsers/firefox/8.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/10.0.nix
@@ -15,14 +15,14 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
 
 rec {
 
-  firefoxVersion = "8.0.1";
+  firefoxVersion = "10.0";
   
-  xulVersion = "8.0.1"; # this attribute is used by other packages
+  xulVersion = "10.0"; # this attribute is used by other packages
 
   
   src = fetchurl {
     url = "http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2";
-    sha1 = "0dd207c5cee9d53114c55aa23eeca36b754bc128";
+    sha1 = "cbf1fb0efe0a3a2b2dafaa324b136736e93de70c";
   };
   
   commonConfigureFlags =
@@ -139,7 +139,7 @@ rec {
       [ "--enable-application=browser"
         "--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}"
         "--enable-chrome-format=jar"
-	"--disable-elf-hack"
+        "--disable-elf-hack"
       ]
       ++ commonConfigureFlags
       ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding";
diff --git a/pkgs/applications/networking/browsers/firefox/11.0.nix b/pkgs/applications/networking/browsers/firefox/11.0.nix
new file mode 100644
index 00000000000..fd72b51f5b5
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox/11.0.nix
@@ -0,0 +1,180 @@
+{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
+, libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs
+, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
+, yasm, mesa, sqlite, unzip
+
+, # If you want the resulting program to call itself "Firefox" instead
+  # of "Shiretoko" or whatever, enable this option.  However, those
+  # binaries may not be distributed without permission from the
+  # Mozilla Foundation, see
+  # http://www.mozilla.org/foundation/trademarks/.
+  enableOfficialBranding ? false
+}:
+
+assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
+
+rec {
+
+  firefoxVersion = "11.0b1";
+  
+  xulVersion = "11.0"; # this attribute is used by other packages
+
+  
+  src = fetchurl {
+    url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/${firefoxVersion}-candidates/build1/source/firefox-${firefoxVersion}.source.tar.bz2";
+    sha256 = "1f9p2jmjvhmb23wmvj84jj22wd9g803k6pdjm8glwmkzwnva8x1b";
+  };
+  
+  commonConfigureFlags =
+    [ "--enable-optimize"
+      "--disable-debug"
+      "--enable-strip"
+      "--with-system-jpeg"
+      "--with-system-zlib"
+      "--with-system-bz2"
+      #"--with-system-nspr" # <-- There are links to nspr 4.9.0, but no file...
+      # "--with-system-nss"
+      # "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support"
+      "--enable-system-cairo"
+      "--enable-system-sqlite"
+      "--disable-crashreporter"
+      "--disable-tests"
+      "--disable-necko-wifi" # maybe we want to enable this at some point
+      "--disable-installer" 
+      "--disable-updater"
+    ];
+
+
+  xulrunner = stdenv.mkDerivation rec {
+    name = "xulrunner-${xulVersion}";
+    
+    inherit src;
+
+    buildInputs =
+      [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
+        python dbus dbus_glib pango freetype fontconfig xlibs.libXi
+        xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
+        alsaLib nspr /* nss */ libnotify xlibs.pixman yasm mesa
+        xlibs.libXScrnSaver xlibs.scrnsaverproto
+        xlibs.libXext xlibs.xextproto sqlite unzip
+      ];
+
+    configureFlags =
+      [ "--enable-application=xulrunner"
+        "--disable-javaxpcom"
+      ] ++ commonConfigureFlags;
+
+    enableParallelBuilding = true;
+      
+    # Hack to work around make's idea of -lbz2 dependency
+    preConfigure =
+      ''
+        find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
+          stdenv.lib.concatStringsSep ":" 
+            (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
+        }' ';'
+
+        export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
+      '';
+
+    # !!! Temporary hack.
+    preBuild =
+      ''
+        export NIX_ENFORCE_PURITY=
+      '';
+
+    installFlags = "SKIP_GRE_REGISTRATION=1";
+
+    postInstall = ''
+      # Fix some references to /bin paths in the Xulrunner shell script.
+      substituteInPlace $out/bin/xulrunner \
+          --replace /bin/pwd "$(type -tP pwd)" \
+          --replace /bin/ls "$(type -tP ls)"
+
+      # Fix run-mozilla.sh search
+      libDir=$(cd $out/lib && ls -d xulrunner-[0-9]*)
+      echo libDir: $libDir
+      test -n "$libDir"
+      cd $out/bin
+      mv xulrunner ../lib/$libDir/
+
+      for i in $out/lib/$libDir/*; do 
+          file $i;
+          if file $i | grep executable &>/dev/null; then 
+              echo -e '#! /bin/sh\n"'"$i"'" "$@"' > "$out/bin/$(basename "$i")";
+              chmod a+x "$out/bin/$(basename "$i")";
+          fi;
+      done;
+      for i in $out/lib/$libDir/{xpcshell,plugin-container,*.so}; do
+              patchelf --set-rpath "$(patchelf --print-rpath "$i"):$out/lib/$libDir" $i || true
+      done;
+      rm -f $out/bin/run-mozilla.sh
+    ''; # */
+
+    meta = {
+      description = "Mozilla Firefox XUL runner";
+      homepage = http://www.mozilla.com/en-US/firefox/;
+    };
+
+    passthru = { inherit gtk; version = xulVersion; };
+  };
+
+
+  firefox = stdenv.mkDerivation rec {
+    name = "firefox-${firefoxVersion}";
+
+    inherit src;
+
+    enableParallelBuilding = true;
+      
+    buildInputs =
+      [ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python
+        dbus dbus_glib pango freetype fontconfig alsaLib nspr libnotify
+        xlibs.pixman yasm mesa sqlite file unzip
+      ];
+
+    propagatedBuildInputs = [xulrunner];
+
+    configureFlags =
+      [ "--enable-application=browser"
+        "--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}"
+        "--enable-chrome-format=jar"
+	"--disable-elf-hack"
+      ]
+      ++ commonConfigureFlags
+      ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding";
+
+    # Hack to work around make's idea of -lbz2 dependency
+    preConfigure =
+      ''
+        find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
+          stdenv.lib.concatStringsSep ":" 
+            (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
+        }' ';'
+      '';
+
+    postInstall =
+      ''
+        ln -s ${xulrunner}/lib/xulrunner-${xulrunner.version} $(echo $out/lib/firefox-*)/xulrunner
+        for j in $out/bin/*; do 
+	    i="$(readlink "$j")";
+            file $i;
+            if file $i | grep executable &>/dev/null; then 
+	        rm "$out/bin/$(basename "$i")"
+                echo -e '#! /bin/sh\nexec "'"$i"'" "$@"' > "$out/bin/$(basename "$i")"
+                chmod a+x "$out/bin/$(basename "$i")"
+            fi;
+        done;
+      ''; # */
+
+    meta = {
+      description = "Mozilla Firefox - the browser, reloaded";
+      homepage = http://www.mozilla.com/en-US/firefox/;
+    };
+
+    passthru = {
+      inherit gtk xulrunner nspr;
+      isFirefox3Like = true;
+    };
+  };
+}
diff --git a/pkgs/applications/networking/browsers/links2/default.nix b/pkgs/applications/networking/browsers/links2/default.nix
index 587a51509d6..4e5a3658730 100644
--- a/pkgs/applications/networking/browsers/links2/default.nix
+++ b/pkgs/applications/networking/browsers/links2/default.nix
@@ -1,33 +1,44 @@
-a :  
-let 
-  s = import ./src-for-default.nix;
-  buildInputs = with a; [
-    libpng libjpeg bzip2 zlib libtiff
-    libX11 libXau xproto gpm
-    openssl libXt pkgconfig
-  ];
-in
-rec {
-  src = a.fetchUrlFromSrcInfo s;
+{ stdenv, fetchurl
+, gpm, openssl, pkgconfig # Misc.
+, libpng, libjpeg, libtiff # graphic formats
+, bzip2, zlib, xz # Transfer encodings
+, enableFB ? true
+, enableDirectFB ? false, directfb
+, enableX11 ? true, libX11, libXt, libXau # GUI support
+}:
 
-  inherit (s) name;
-  inherit buildInputs;
-  configureFlags = [
-    "--enable-graphics"
-    "--with-ssl"
-    "--with-x"
-    "--with-fb"
-    ];
+stdenv.mkDerivation rec {
+  version = "2.5";
+  name = "links2-${version}";
+
+  src = fetchurl {
+    url = "${meta.homepage}/download/links-${version}.tar.bz2";
+    sha256 = "1wlmj8s6bxgznh0pnawihyvhffzryciz3lkagcxhf7fp64zz5izm";
+  };
+
+  buildInputs =
+    [ libpng libjpeg libtiff gpm openssl xz bzip2 zlib ]
+    ++ stdenv.lib.optionals enableX11 [ libX11 libXau libXt ]
+    ++ stdenv.lib.optional enableDirectFB [ directfb ];
+
+  buildNativeInputs = [ pkgconfig ];
+
+  configureFlags = [ "--with-ssl" ]
+    ++ stdenv.lib.optional (enableX11 || enableFB || enableDirectFB) "--enable-graphics"
+    ++ stdenv.lib.optional enableX11 "--with-x"
+    ++ stdenv.lib.optional enableFB "--with-fb"
+    ++ stdenv.lib.optional enableDirectFB "--with-directfb";
+
+  crossAttrs = {
+    preConfigure = ''
+      export CC=$crossConfig-gcc
+    '';
+  };
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
   meta = {
+    homepage = http://links.twibright.com/;
     description = "A small browser with some graphics support";
-    maintainers = [
-      a.lib.maintainers.raskin
-    ];
-    platforms = with a.lib.platforms; 
-      linux;
+    maintainers = with stdenv.lib.maintainers; [ raskin urkud viric ];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/networking/browsers/links2/src-for-default.nix b/pkgs/applications/networking/browsers/links2/src-for-default.nix
deleted file mode 100644
index 7e7da1a4641..00000000000
--- a/pkgs/applications/networking/browsers/links2/src-for-default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-rec {
-   version="2.2";
-   name="links2-2.2";
-   hash="188y37rw4s9brl55ncc12q1b45w0caxcnsq1gqyby9byw1sawnq9";
-   url="http://links.twibright.com/download/links-${version}.tar.gz";
-   advertisedUrl="http://links.twibright.com/download/links-2.2.tar.gz";
-  
-  
-}
diff --git a/pkgs/applications/networking/browsers/links2/src-info-for-default.nix b/pkgs/applications/networking/browsers/links2/src-info-for-default.nix
deleted file mode 100644
index b678b251298..00000000000
--- a/pkgs/applications/networking/browsers/links2/src-info-for-default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  downloadPage = "http://links.twibright.com/download.php";
-  baseName = "links2";
-}
diff --git a/pkgs/applications/networking/browsers/links2/stdenv.nix b/pkgs/applications/networking/browsers/links2/stdenv.nix
deleted file mode 100644
index 923d0aff0f5..00000000000
--- a/pkgs/applications/networking/browsers/links2/stdenv.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ stdenv, fetchurl, libpng, libjpeg, bzip2, zlib, libtiff,  gpm, openssl, pkgconfig, directfb 
-, enableX11 ? true, libX11, libXau, xproto, libXt }:
-
-let
-  version="2.2";
-  name="links2-2.2";
-  hash="188y37rw4s9brl55ncc12q1b45w0caxcnsq1gqyby9byw1sawnq9";
-  url="http://links.twibright.com/download/links-${version}.tar.gz";
-  advertisedUrl="http://links.twibright.com/download/links-2.2.tar.gz";
-in
-
-stdenv.mkDerivation {
-  inherit name;
-
-  src = fetchurl {
-    inherit url;
-    sha256 = hash;
-  };
-
-  buildInputs = [ libpng libjpeg bzip2 zlib libtiff  gpm openssl pkgconfig directfb ]
-    ++ stdenv.lib.optionals enableX11 [ libX11 libXau xproto libXt ];
-
-  configureFlags = [
-    "--enable-graphics"
-    "--with-ssl"
-    "--with-fb"
-    ] ++ stdenv.lib.optional enableX11 "--with-x";
-
-  crossAttrs = {
-    preConfigure = ''
-      export CC=$crossConfig-gcc
-    '';
-  };
-
-  meta = {
-    description = "A small browser with some graphics support";
-    maintainers = [
-      stdenv.lib.maintainers.viric
-    ];
-  };
-}
diff --git a/pkgs/applications/networking/esniper/default.nix b/pkgs/applications/networking/esniper/default.nix
index 4c153fa6ff5..dda0755a738 100644
--- a/pkgs/applications/networking/esniper/default.nix
+++ b/pkgs/applications/networking/esniper/default.nix
@@ -1,17 +1,15 @@
 { stdenv, fetchurl, openssl, curl }:
 
 stdenv.mkDerivation {
-  name = "esniper-2.26.0";
+  name = "esniper-2.27.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/esniper/esniper-2-26-0.tgz";
-    sha256 = "5fd9a0f4b27b98deca303cd3d16c1ed060e05a165a40b2f4a9f8546db5e3877d";
+    url = "mirror://sourceforge/esniper/esniper-2-27-0.tgz";
+    sha256 = "0ca9946395be8958d3eb28c9abc4a1a4d4c9134e4b6b3c3816f4631e3be25c02";
   };
 
   buildInputs = [openssl curl];
 
-  patches = [ ./fix-build-with-latest-curl.patch ];
-
   postInstall = ''
     sed -e  "2i export PATH=\"$out/bin:\$PATH\"" <"frontends/snipe" >"$out/bin/snipe"
     chmod 555 "$out/bin/snipe"
diff --git a/pkgs/applications/networking/esniper/fix-build-with-latest-curl.patch b/pkgs/applications/networking/esniper/fix-build-with-latest-curl.patch
deleted file mode 100644
index 81005fd3ebe..00000000000
--- a/pkgs/applications/networking/esniper/fix-build-with-latest-curl.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- esniper-2-26-0/http.c	2011-08-09 21:05:59.000000000 +0200
-+++ esniper/http.c	2011-08-10 00:24:43.000000000 +0200
-@@ -28,7 +28,6 @@
- #include "esniper.h"
- #include <ctype.h>
- #include <curl/curl.h>
--#include <curl/types.h>
- #include <curl/easy.h>
- #include <stdlib.h>
- #include <string.h>
diff --git a/pkgs/applications/networking/remote/rdesktop/default.nix b/pkgs/applications/networking/remote/rdesktop/default.nix
index cceb70b74fb..c8c72160b34 100644
--- a/pkgs/applications/networking/remote/rdesktop/default.nix
+++ b/pkgs/applications/networking/remote/rdesktop/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation (rec {
   pname = "rdesktop";
-  version = "1.7.0";
+  version = "1.7.1";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${name}.tar.gz";
-    sha256 = "0x2hnzvm0smnanin28n4mvzx9chpj2qnjfrxy307x21mgw6l5q1v";
+    sha256 = "0yc4xz95w40m8ailpjgqp9h7bkc758vp0dlq4nj1pvr3xfnl7sni";
   };
 
   buildInputs = [openssl libX11];
diff --git a/pkgs/applications/networking/skype/default.nix b/pkgs/applications/networking/skype/default.nix
index 1eef323ae05..f94d7e125f6 100644
--- a/pkgs/applications/networking/skype/default.nix
+++ b/pkgs/applications/networking/skype/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, alsaLib, libXv, libXi, libXrender, libXrandr, zlib, glib
 , libXext, libX11, libXScrnSaver, libSM, qt4, libICE, freetype, fontconfig
-, pulseaudio }:
+, pulseaudio, usePulseAudio, lib }:
 
 assert stdenv.system == "i686-linux";
 
@@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
     sha256 = "157ba3ci12bq0nv2m8wlsab45ib5sccqagyna8nixnhqw9q72sxm";
   };
 
-  buildInputs = [
+  buildInputs = 
+    lib.optional usePulseAudio pulseaudio ++ [
     alsaLib
-    pulseaudio
     stdenv.glibc 
     stdenv.gcc.gcc
     libXv
diff --git a/pkgs/applications/office/hledger-interest/default.nix b/pkgs/applications/office/hledger-interest/default.nix
index 5f61138f6ec..a400730878e 100644
--- a/pkgs/applications/office/hledger-interest/default.nix
+++ b/pkgs/applications/office/hledger-interest/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hledger-interest";
-  version = "1.3";
-  sha256 = "1sgnl3vv38cmgxv3xag3c78j1955xxwdmr5xr3f8rc78np6d0wnz";
+  version = "1.4";
+  sha256 = "0lm4jcxcig3yxzhbnka1q54fvshn5b9d91a5a2mbmkzbwhzjj0lg";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [ hledgerLib mtl time ];
diff --git a/pkgs/applications/science/logic/hol_light/default.nix b/pkgs/applications/science/logic/hol_light/default.nix
index 0e688e71a2e..88f3f788376 100644
--- a/pkgs/applications/science/logic/hol_light/default.nix
+++ b/pkgs/applications/science/logic/hol_light/default.nix
@@ -9,11 +9,11 @@ let
 in
 
 stdenv.mkDerivation {
-  name = "hol_light-20120109";
+  name = "hol_light-20120129";
   src = fetchsvn {
     url = http://hol-light.googlecode.com/svn/trunk;
-    rev = "118";
-    sha256 = "97e72dad731338328c031421512c26d440a989ea083f3ae34820eb8413aff495";
+    rev = "122";
+    sha256 = "d837ba5fe941af9595540691ba4be34e58174ba9a9c7e1ce57620e5cd4385769";
   };
 
   buildInputs = [ ocaml findlib camlp5 ];
diff --git a/pkgs/applications/video/MPlayer/default.nix b/pkgs/applications/video/MPlayer/default.nix
index 0566b4bbe29..a594bd4e2c6 100644
--- a/pkgs/applications/video/MPlayer/default.nix
+++ b/pkgs/applications/video/MPlayer/default.nix
@@ -166,5 +166,6 @@ stdenv.mkDerivation rec {
     homepage = "http://mplayerhq.hu";
     license = "GPL";
     maintainers = [ stdenv.lib.maintainers.eelco stdenv.lib.maintainers.urkud ];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/video/dvswitch/default.nix b/pkgs/applications/video/dvswitch/default.nix
index 097bf4f49f4..8803fe0a786 100644
--- a/pkgs/applications/video/dvswitch/default.nix
+++ b/pkgs/applications/video/dvswitch/default.nix
@@ -1,5 +1,6 @@
-{ stdenv, fetchurl, alsaLib, boost, cmake, gtkmm, libXau, libXdmcp,
-  libXv, libav, pixman, libpthreadstubs, pkgconfig }:
+{ stdenv, fetchurl, alsaLib, boost, cmake, gtkmm, libXau, libXdmcp
+, libXv, libav, pixman, libpthreadstubs, pkgconfig 
+}:
 
 stdenv.mkDerivation rec {
   name = "dvswitch-${version}";
@@ -15,13 +16,12 @@ stdenv.mkDerivation rec {
     libpthreadstubs pixman pkgconfig
   ];
 
-  installPhase = "
-    mkdir -p $out
-    cp src/dv* $out/
-  ";
+  patchPhase = ''
+    sed -e "s@prefix /usr/local@prefix $out@" -i CMakeLists.txt
+  '';
 
   meta =  with stdenv.lib; {
-    description = "digital video mixer intended for interactive live mixing of several incoming DV video streams";
+    description = "interactive live video mixer for DV streams";
     homepage = "http://dvswitch.alioth.debian.org";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.goibhniu ];
diff --git a/pkgs/applications/window-managers/icewm/default.nix b/pkgs/applications/window-managers/icewm/default.nix
index 632bc50c869..0b541d8104d 100644
--- a/pkgs/applications/window-managers/icewm/default.nix
+++ b/pkgs/applications/window-managers/icewm/default.nix
@@ -1,29 +1,35 @@
-{ stdenv, fetchurl, gettext, libjpeg, libtiff, libungif, libpng, imlib
-, xlibs, automake, pkgconfig, gtk }:
+{ stdenv, fetchurl, gettext, libjpeg, libtiff, libungif, libpng, freetype
+, fontconfig, xlibs, automake, pkgconfig, gdk_pixbuf }:
 
 stdenv.mkDerivation rec {
-  name = "icewm-1.3.6";
+  name = "icewm-1.3.7";
 
   buildInputs =
-    [ gettext libjpeg libtiff libungif libpng imlib
+    [ gettext libjpeg libtiff libungif libpng
       xlibs.libX11 xlibs.libXft xlibs.libXext xlibs.libXinerama xlibs.libXrandr
-      pkgconfig gtk
+      xlibs.libICE xlibs.libSM freetype fontconfig
+      pkgconfig gdk_pixbuf
     ];
 
   src = fetchurl {
     url = "mirror://sourceforge/icewm/${name}.tar.gz";
-    sha256 = "1pr7rc10rddwvy4ncng4mf5fpxd1nqjsw34xba9ngsg32rg57b91";
+    sha256 = "0yw813d8amrl0n1fvdiyznxah92wcylj9kj1qhjc6h73d827h6na";
   };
 
   NIX_LDFLAGS = "-lfontconfig";
 
   # The fuloong2f is not supported by 1.3.6 still
+  #
+  # Don't know whether 1.3.7 supports fuloong2f and don't know how to test it
+  # on x86_64 hardware. So I left this 'cp' -- urkud
+
   preConfigure = ''
-    cp ${automake}/share/automake*/config.{sub,guess} .
+    cp -v ${automake}/share/automake*/config.{sub,guess} .
   '';
 
   meta = {
     description = "A window manager for the X Window System";
     homepage = http://www.icewm.org/;
+    platforms = stdenv.lib.platforms.unix;
   };
 }
diff --git a/pkgs/build-support/make-startupitem/default.nix b/pkgs/build-support/make-startupitem/default.nix
new file mode 100644
index 00000000000..07cdee600d4
--- /dev/null
+++ b/pkgs/build-support/make-startupitem/default.nix
@@ -0,0 +1,34 @@
+# given a pakcage with a $name.desktop file, makes a copy
+# as autostart item.
+
+{stdenv, lib}:
+{ name     # name of the desktop file (without .desktop)
+, package  # package where the desktop file resides in
+, after ? null
+, condition ? null
+, phase ? "2"
+}:
+
+# the builder requires that
+#   $package/share/applications/$name.desktop
+# exists as file.
+
+stdenv.mkDerivation {
+  name = "autostart-${name}";
+  priority = 5;
+
+  buildCommand = ''
+    ensureDir $out/share/autostart
+    target=${name}.desktop
+    cp ${package}/share/applications/${name}.desktop $target
+    chmod +rw $target
+    echo "X-KDE-autostart-phase=${phase}" >> $target
+    ${lib.optionalString (after != null) ''echo "${after}" >> $target''}
+    ${lib.optionalString (condition != null) ''echo "${condition}" >> $target''}
+    cp $target $out/share/autostart
+  '';
+
+  # this will automatically put 'package' in the environment when you
+  # put its startup item in there.
+  propagatedBuildInputs = [ package ];
+}
\ No newline at end of file
diff --git a/pkgs/build-support/vm/rpm/rpm-closure.pl b/pkgs/build-support/vm/rpm/rpm-closure.pl
index 2ef59dcbdef..94da0a20adc 100644
--- a/pkgs/build-support/vm/rpm/rpm-closure.pl
+++ b/pkgs/build-support/vm/rpm/rpm-closure.pl
@@ -76,8 +76,9 @@ for (my $i = 0; $i < scalar(@packagesFiles); $i++) {
             my $earlierPkg = $pkgs{$pkg->{name}};
             print STDERR "WARNING: duplicate occurrence of package $pkg->{name}\n";
             #   <version epoch="0" ver="1.28.0" rel="2.el6"/>
-            if (rpmvercmp($pkg->{'version'}->{ver}, $earlierPkg->{'version'}->{ver}) >= 0) {
-                print STDERR "WARNING: replaced package $pkg->{name} with newer one\n";
+            my $cmp = rpmvercmp($pkg->{'version'}->{ver}, $earlierPkg->{'version'}->{ver});
+            if ($cmp > 0 || ($cmp == 0 && rpmvercmp($pkg->{'version'}->{rel}, $earlierPkg->{'version'}->{rel})>0)) {
+                print STDERR "WARNING: replaced package $pkg->{name} (".$earlierPkg->{'version'}->{ver}." ".$earlierPkg->{'version'}->{rel}.") with newer one (".$pkg->{'version'}->{ver}." ".$pkg->{'version'}->{rel}.")\n";
                 $pkg->{urlPrefix} = $urlPrefixes[$i];
                 $pkgs{$pkg->{name}} = $pkg;
             }
diff --git a/pkgs/development/compilers/ghc/7.4.1.nix b/pkgs/development/compilers/ghc/7.4.1.nix
new file mode 100644
index 00000000000..9a554a467d8
--- /dev/null
+++ b/pkgs/development/compilers/ghc/7.4.1.nix
@@ -0,0 +1,44 @@
+{stdenv, fetchurl, ghc, perl, gmp, ncurses, darwinInstallNameToolUtility}:
+
+stdenv.mkDerivation rec {
+  version = "7.4.1";
+  name = "ghc-${version}";
+
+  src = fetchurl {
+    url = "http://haskell.org/ghc/dist/${version}/${name}-src.tar.bz2";
+    sha256 = "0ycscsagyy9n796a59q6761s6ar50d8inibvnrcp96siksj0j73j";
+  };
+
+  buildInputs = [ghc perl gmp ncurses] ++
+    (if stdenv.isDarwin then [darwinInstallNameToolUtility] else []);
+
+  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"
+  '';
+
+  preConfigure = ''
+    echo "${buildMK}" > mk/build.mk
+    sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
+  '';
+
+  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
+    ];
+    platforms = ghc.meta.platforms;
+  };
+
+}
diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix
index 0d3301df60a..0a08cc3a4e7 100644
--- a/pkgs/development/compilers/ghc/head.nix
+++ b/pkgs/development/compilers/ghc/head.nix
@@ -1,13 +1,13 @@
 {stdenv, fetchurl, ghc, perl, gmp, ncurses, darwinInstallNameToolUtility}:
 
 stdenv.mkDerivation rec {
-  version = "7.4.0.20111219";
+  version = "7.4.0.20120126";
 
   name = "ghc-${version}";
 
   src = fetchurl {
-    url = "http://haskell.org/ghc/dist/7.4.1-rc1/${name}-src.tar.bz2";
-    sha256 = "11imfag07wr9s5vf12yh6bz4hjfbw20i1c7n8py9fa4vx7va676n";
+    url = "http://haskell.org/ghc/dist/7.4.1-rc2/${name}-src.tar.bz2";
+    sha256 = "0arnvzhwjzk2z3m2891b4z13p4v1c84f31jgyj13a1fbfpylgs64";
   };
 
   buildInputs = [ghc perl gmp ncurses] ++
diff --git a/pkgs/development/compilers/idris/default.nix b/pkgs/development/compilers/idris/default.nix
index 56d5060662b..4e491ffde0d 100644
--- a/pkgs/development/compilers/idris/default.nix
+++ b/pkgs/development/compilers/idris/default.nix
@@ -3,8 +3,8 @@
 
 cabal.mkDerivation (self: {
   pname = "idris";
-  version = "0.9.0";
-  sha256 = "03zbdcl3v90zv0ibzq9fa8z2qrrdsilh5m509mczwrcmlzbzsmrl";
+  version = "0.9.1";
+  sha256 = "1yvw15750mqrvq1kd7bsk3ldq3s0z947c4f93pv7008gq5im4cvr";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [ binary epic haskeline mtl parsec transformers ];
@@ -12,7 +12,7 @@ cabal.mkDerivation (self: {
   noHaddock = true;
   meta = {
     homepage = "http://www.idris-lang.org/";
-    description = "Dependently Typed Functional Programming Language";
+    description = "Functional Programming Language with Dependent Types";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
     maintainers = [
diff --git a/pkgs/development/compilers/uhc/default.nix b/pkgs/development/compilers/uhc/default.nix
index 75ca05f8569..8cd0a2e7944 100644
--- a/pkgs/development/compilers/uhc/default.nix
+++ b/pkgs/development/compilers/uhc/default.nix
@@ -3,7 +3,7 @@
 }:
 
 let
-  revision = "2399";
+  revision = "2426";
 in
 stdenv.mkDerivation {
   name = "uhc-svn-${revision}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   src = fetchsvn {
      url = "https://subversion.cs.uu.nl/repos/project.UHC.pub/trunk/EHC";
      rev = revision;
-     sha256 = "f4e87dbf95f90b021994b0840f27e042dd4e785df7efedcf567f3e2c7ce32621";
+     sha256 = "06963edb673697f3eac357eccdc6d4bf7fbe7b9b92a96e3e329a4caf53f85c4c";
   };
 
   propagatedBuildInputs = [mtl network binary fgl syb];
diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix
index ffdb957963a..e228154522b 100644
--- a/pkgs/development/interpreters/guile/default.nix
+++ b/pkgs/development/interpreters/guile/default.nix
@@ -7,11 +7,11 @@
  else stdenv.mkDerivation)
 
 rec {
-  name = "guile-2.0.3";
+  name = "guile-2.0.5";
 
   src = fetchurl {
     url = "mirror://gnu/guile/${name}.tar.xz";
-    sha256 = "14rhlpxxa4v5y3gl992l7lnd5qnqawx0a84idnwq0w2qviwcvsyj";
+    sha256 = "1lycm10x316jzlv1nyag7x9gisn4d3dz8jcmbi6lbdn0z6a9skc2";
   };
 
   buildNativeInputs = [ makeWrapper gawk pkgconfig ];
diff --git a/pkgs/development/interpreters/racket/default.nix b/pkgs/development/interpreters/racket/default.nix
index 81a8c8ec696..db92e0fa55b 100644
--- a/pkgs/development/interpreters/racket/default.nix
+++ b/pkgs/development/interpreters/racket/default.nix
@@ -4,12 +4,12 @@
 
 stdenv.mkDerivation rec {
   pname = "racket";
-  version = "5.2";
+  version = "5.2.1";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "http://download.racket-lang.org/installers/${version}/${pname}/${name}-src-unix.tgz";
-    sha256 = "1viz2hq1q1wyw9jmnssg5sbgglh05fwqkhyhfbak9lb6nfbhlg5w";
+    sha256 = "1v5kvp7vfi4a4bn08jlaga441amlfxpjw9dm6vc1fazwzd72m539";
   };
 
   # Various racket executables do run-time searches for these.
diff --git a/pkgs/development/interpreters/ruby/generated.nix b/pkgs/development/interpreters/ruby/generated.nix
index 1fea718aeb5..92641f1ca44 100644
--- a/pkgs/development/interpreters/ruby/generated.nix
+++ b/pkgs/development/interpreters/ruby/generated.nix
@@ -3,24 +3,28 @@
 g: # Get dependencies from patched gems
 {
   aliases = {
-    actionmailer = g.actionmailer_3_2_0;
-    actionpack = g.actionpack_3_2_0;
-    activemodel = g.activemodel_3_2_0;
-    activerecord = g.activerecord_3_2_0;
-    activeresource = g.activeresource_3_2_0;
-    activesupport = g.activesupport_3_2_0;
+    ZenTest = g.ZenTest_4_5_0;
+    actionmailer = g.actionmailer_3_2_1;
+    actionpack = g.actionpack_3_2_1;
+    activemodel = g.activemodel_3_2_1;
+    activerecord = g.activerecord_3_2_1;
+    activeresource = g.activeresource_3_2_1;
+    activesupport = g.activesupport_3_2_1;
     arel = g.arel_3_0_0;
     atoulme_Antwrap = g.atoulme_Antwrap_0_7_1;
+    autotest_rails = g.autotest_rails_4_1_1;
     builder = g.builder_3_0_0;
     buildr = g.buildr_1_4_6;
     bundler = g.bundler_1_0_21;
+    childprocess = g.childprocess_0_3_0;
     diff_lcs = g.diff_lcs_1_1_3;
     erubis = g.erubis_2_7_0;
+    ffi = g.ffi_1_0_11;
     highline = g.highline_1_5_1;
     hike = g.hike_1_2_1;
     hoe = g.hoe_2_3_3;
     i18n = g.i18n_0_6_0;
-    journey = g.journey_1_0_0;
+    journey = g.journey_1_0_1;
     json = g.json_1_6_5;
     json_pure = g.json_pure_1_6_5;
     mail = g.mail_2_4_1;
@@ -35,19 +39,20 @@ g: # Get dependencies from patched gems
     rack_cache = g.rack_cache_1_1;
     rack_ssl = g.rack_ssl_1_3_2;
     rack_test = g.rack_test_0_6_1;
-    rails = g.rails_3_2_0;
-    railties = g.railties_3_2_0;
+    rails = g.rails_3_2_1;
+    railties = g.railties_3_2_1;
     rake = g.rake_0_9_2_2;
-    rb_fsevent = g.rb_fsevent_0_4_3_1;
+    rb_fsevent = g.rb_fsevent_0_9_0;
     rdoc = g.rdoc_3_12;
-    rjb = g.rjb_1_3_8;
+    rjb = g.rjb_1_3_9;
     rspec = g.rspec_2_1_0;
     rspec_core = g.rspec_core_2_1_0;
     rspec_expectations = g.rspec_expectations_2_1_0;
     rspec_mocks = g.rspec_mocks_2_1_0;
     rubyforge = g.rubyforge_2_0_4;
-    rubyzip = g.rubyzip_0_9_4;
-    sass = g.sass_3_1_12;
+    rubyzip = g.rubyzip_0_9_5;
+    sass = g.sass_3_1_13;
+    selenium_webdriver = g.selenium_webdriver_2_18_0;
     sprockets = g.sprockets_2_1_2;
     thor = g.thor_0_14_6;
     tilt = g.tilt_1_3_3;
@@ -55,73 +60,101 @@ g: # Get dependencies from patched gems
     tzinfo = g.tzinfo_0_3_31;
     xml_simple = g.xml_simple_1_0_12;
   };
-  gem_nix_args = [ ''buildr'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ];
+  gem_nix_args = [ ''autotest-rails'' ''buildr'' ''nix'' ''rails'' ''rake'' ''rb-fsevent'' ''sass'' ''selenium-webdriver'' ];
   gems = {
-    actionmailer_3_2_0 = {
+    ZenTest_4_5_0 = {
+      basename = ''ZenTest'';
+      meta = {
+        description = ''ZenTest provides 4 different tools: zentest, unit_diff, autotest, and multiruby'';
+        homepage = ''http://www.zenspider.com/ZSS/Products/ZenTest/'';
+        longDescription = ''ZenTest provides 4 different tools: zentest, unit_diff, autotest, and
+multiruby.
+
+ZenTest scans your target and unit-test code and writes your missing
+code based on simple naming rules, enabling XP at a much quicker
+pace. ZenTest only works with Ruby and Test::Unit. Nobody uses this
+tool anymore but it is the package namesake, so it stays.
+
+unit_diff is a command-line filter to diff expected results from
+actual results and allow you to quickly see exactly what is wrong.
+
+autotest is a continous testing facility meant to be used during
+development. As soon as you save a file, autotest will run the
+corresponding dependent tests.
+
+multiruby runs anything you want on multiple versions of ruby. Great
+for compatibility checking! Use multiruby_setup to manage your
+installed versions.'';
+      };
+      name = ''ZenTest-4.5.0'';
+      requiredGems = [  ];
+      sha256 = ''05iam95wqafz4c890b17w7ahp9i4jbz4hsw6304p9zbsaq7d7h1h'';
+    };
+    actionmailer_3_2_1 = {
       basename = ''actionmailer'';
       meta = {
         description = ''Email composition, delivery, and receiving framework (part of Rails).'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''Email on Rails. Compose, deliver, receive, and test emails using the familiar controller/view pattern. First-class support for multipart email and attachments.'';
       };
-      name = ''actionmailer-3.2.0'';
+      name = ''actionmailer-3.2.1'';
       requiredGems = [ g.mail_2_4_1 ];
-      sha256 = ''0fhvdbxw93y00awz4xfkyzn78zfca210zwqx7xvaizipaq5rs8d6'';
+      sha256 = ''02xxyz3r3cfhiynx73y2ybabdhf9x9vxfqj215p8477w6cm2sh47'';
     };
-    actionpack_3_2_0 = {
+    actionpack_3_2_1 = {
       basename = ''actionpack'';
       meta = {
         description = ''Web-flow and rendering framework putting the VC in MVC (part of Rails).'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''Web apps on Rails. Simple, battle-tested conventions for building and testing MVC web applications. Works with any Rack-compatible server.'';
       };
-      name = ''actionpack-3.2.0'';
-      requiredGems = [ g.activemodel_3_2_0 g.rack_cache_1_1 g.rack_test_0_6_1 g.journey_1_0_0 g.sprockets_2_1_2 g.erubis_2_7_0 ];
-      sha256 = ''08fghqa01x6bkcnyik36jaxdd6jp05sh1mnxgqaw4snjwrl5b4ki'';
+      name = ''actionpack-3.2.1'';
+      requiredGems = [ g.activemodel_3_2_1 g.rack_cache_1_1 g.rack_test_0_6_1 g.journey_1_0_1 g.sprockets_2_1_2 g.erubis_2_7_0 ];
+      sha256 = ''0yz5h8c4m1a8590kdsx2akg3jmbrsjf9wbd950lv19c3sm3sahzx'';
     };
-    activemodel_3_2_0 = {
+    activemodel_3_2_1 = {
       basename = ''activemodel'';
       meta = {
         description = ''A toolkit for building modeling frameworks (part of Rails).'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''A toolkit for building modeling frameworks like Active Record and Active Resource. Rich support for attributes, callbacks, validations, observers, serialization, internationalization, and testing.'';
       };
-      name = ''activemodel-3.2.0'';
+      name = ''activemodel-3.2.1'';
       requiredGems = [ g.builder_3_0_0 ];
-      sha256 = ''1785g6b1daqncgsyc1kjwhxypx6xk9m3pw5vhipfv2bvygan3y9z'';
+      sha256 = ''1m639mdhkjwxw7szl3r7ay4s8yjwbh2sfjyv2d4wrkiq4wpz694m'';
     };
-    activerecord_3_2_0 = {
+    activerecord_3_2_1 = {
       basename = ''activerecord'';
       meta = {
         description = ''Object-relational mapper framework (part of Rails).'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.'';
       };
-      name = ''activerecord-3.2.0'';
+      name = ''activerecord-3.2.1'';
       requiredGems = [ g.arel_3_0_0 g.tzinfo_0_3_31 ];
-      sha256 = ''065yyv3y1wkzm3ykdxd43hmz3q4gadc9qb3psjydqalgii0dr1ww'';
+      sha256 = ''0xch76nqfgyx750z89lsxkvgshci1y49f4h7xmgiq9nmr4gfxxmv'';
     };
-    activeresource_3_2_0 = {
+    activeresource_3_2_1 = {
       basename = ''activeresource'';
       meta = {
         description = ''REST modeling framework (part of Rails).'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''REST on Rails. Wrap your RESTful web app with Ruby classes and work with them like Active Record models.'';
       };
-      name = ''activeresource-3.2.0'';
+      name = ''activeresource-3.2.1'';
       requiredGems = [  ];
-      sha256 = ''0lklbgmf1in8cm3w1xl9nxc5yjr9a884fjslyjca42kc7j90mbr7'';
+      sha256 = ''0fvsi8kikmp287dym3s4y1np9s0sxm0q65kx0idgsp9bi89wpl0d'';
     };
-    activesupport_3_2_0 = {
+    activesupport_3_2_1 = {
       basename = ''activesupport'';
       meta = {
         description = ''A toolkit of support libraries and Ruby core extensions extracted from the Rails framework.'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Rich support for multibyte strings, internationalization, time zones, and testing.'';
       };
-      name = ''activesupport-3.2.0'';
+      name = ''activesupport-3.2.1'';
       requiredGems = [ g.i18n_0_6_0 g.multi_json_1_0_4 ];
-      sha256 = ''07x0jl4fnjgiblffbwmjnqzly765l55y9zmyad8divcaa1qjqwmb'';
+      sha256 = ''0ajkzsa7467jp7lxgjcsl94nqkvw9d0h492rypljs0f8f1fn744v'';
     };
     arel_3_0_0 = {
       basename = ''arel'';
@@ -160,9 +193,21 @@ database compatibility and query generation.'';
 	check out Buildr!'';
       };
       name = ''atoulme-Antwrap-0.7.1'';
-      requiredGems = [ g.rjb_1_3_8 ];
+      requiredGems = [ g.rjb_1_3_9 ];
       sha256 = ''0r9jy2asyma8h0878nhjfbi00qvb4yapc8glngvmkkj21zbx2mfy'';
     };
+    autotest_rails_4_1_1 = {
+      basename = ''autotest_rails'';
+      meta = {
+        description = ''This is an autotest plugin to provide rails support'';
+        homepage = ''https://github.com/seattlerb/autotest-rails'';
+        longDescription = ''This is an autotest plugin to provide rails support. It provides basic
+rails support and extra plugins for migrations and fixtures.'';
+      };
+      name = ''autotest-rails-4.1.1'';
+      requiredGems = [ g.ZenTest_4_5_0 ];
+      sha256 = ''09i6mpxibs8yfdcr53nazlxq94yswahz9gdjqdz9srfshcccqbal'';
+    };
     builder_2_1_2 = {
       basename = ''builder'';
       meta = {
@@ -217,6 +262,17 @@ for those one-off tasks, with a language that's a joy to use.
       requiredGems = [  ];
       sha256 = ''0lcxz75vvgqib43wxzv6021qs5d7bxhnds4j4q27hzqs982cn0s6'';
     };
+    childprocess_0_3_0 = {
+      basename = ''childprocess'';
+      meta = {
+        description = ''This gem aims at being a simple and reliable solution for controlling external programs running in the background on any Ruby / OS combination.'';
+        homepage = ''http://github.com/jarib/childprocess'';
+        longDescription = ''This gem aims at being a simple and reliable solution for controlling external programs running in the background on any Ruby / OS combination.'';
+      };
+      name = ''childprocess-0.3.0'';
+      requiredGems = [ g.ffi_1_0_11 ];
+      sha256 = ''1bvx6nkc1m24wjjybk943x1vjr51c98l0pwj73hj1r237307jyb4'';
+    };
     diff_lcs_1_1_2 = {
       basename = ''diff_lcs'';
       meta = {
@@ -276,6 +332,21 @@ is the MIT license.'';
       requiredGems = [  ];
       sha256 = ''1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3'';
     };
+    ffi_1_0_11 = {
+      basename = ''ffi'';
+      meta = {
+        description = ''Ruby-FFI is a ruby extension for programmatically loading dynamic libraries, binding functions within them, and calling those functions from Ruby code'';
+        homepage = ''http://wiki.github.com/ffi/ffi'';
+        longDescription = ''Ruby-FFI is a ruby extension for programmatically loading dynamic
+libraries, binding functions within them, and calling those functions
+from Ruby code. Moreover, a Ruby-FFI extension works without changes
+on Ruby and JRuby. Discover why should you write your next extension
+using Ruby-FFI here[http://wiki.github.com/ffi/ffi/why-use-ffi].'';
+      };
+      name = ''ffi-1.0.11'';
+      requiredGems = [  ];
+      sha256 = ''177v6bwslyb7n961nw11i8x9j43k796s11bs98kynl58n0a3n99b'';
+    };
     highline_1_5_1 = {
       basename = ''highline'';
       meta = {
@@ -339,16 +410,16 @@ See class rdoc for help. Hint: ri Hoe'';
       requiredGems = [  ];
       sha256 = ''1pgmfhmh2wv409g7kla30mkp8jpslvp25vcmmim1figl87wpn3j0'';
     };
-    journey_1_0_0 = {
+    journey_1_0_1 = {
       basename = ''journey'';
       meta = {
         description = ''Journey is a router'';
         homepage = ''http://github.com/tenderlove/journey'';
         longDescription = ''Journey is a router.  It routes requests.'';
       };
-      name = ''journey-1.0.0'';
+      name = ''journey-1.0.1'';
       requiredGems = [  ];
-      sha256 = ''0xphcsxksy0m78j1mphzp0lyj7bgrabdnlgs18lrkwivs0gryhdd'';
+      sha256 = ''1fccxnc9ji6j2p1avfph701b0lf2rzsksyipfavhv8kjwlzvsglx'';
     };
     json_1_6_5 = {
       basename = ''json'';
@@ -554,27 +625,27 @@ request helpers feature.'';
       requiredGems = [  ];
       sha256 = ''0hq5q8fjhbb7szzrj7k0l21z025c4qsxqzd5qmgivikhymw10ws0'';
     };
-    rails_3_2_0 = {
+    rails_3_2_1 = {
       basename = ''rails'';
       meta = {
         description = ''Full-stack web application framework.'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.'';
       };
-      name = ''rails-3.2.0'';
-      requiredGems = [ g.activesupport_3_2_0 g.actionpack_3_2_0 g.activerecord_3_2_0 g.activeresource_3_2_0 g.actionmailer_3_2_0 g.railties_3_2_0 g.bundler_1_0_21 ];
-      sha256 = ''10jc4ri60ivd5z54k0i4l1pdqbmswwhh05ydca7axpd9d1ss1jzh'';
+      name = ''rails-3.2.1'';
+      requiredGems = [ g.activesupport_3_2_1 g.actionpack_3_2_1 g.activerecord_3_2_1 g.activeresource_3_2_1 g.actionmailer_3_2_1 g.railties_3_2_1 g.bundler_1_0_21 ];
+      sha256 = ''0fx5pmywvh0s263dd6qv34rbc4qxnla5qzh8r30zrip24j6w0nr5'';
     };
-    railties_3_2_0 = {
+    railties_3_2_1 = {
       basename = ''railties'';
       meta = {
         description = ''Tools for creating, working with, and running Rails applications.'';
         homepage = ''http://www.rubyonrails.org'';
         longDescription = ''Rails internals: application bootup, plugins, generators, and rake tasks.'';
       };
-      name = ''railties-3.2.0'';
+      name = ''railties-3.2.1'';
       requiredGems = [ g.thor_0_14_6 g.rack_ssl_1_3_2 g.rdoc_3_12 ];
-      sha256 = ''0zwdjj6kfgpslqywyhc171pfp9zc26hs4z0fx0hysyvvc961qhb3'';
+      sha256 = ''13ya1jryzz8s1j1vh1qw44y282vjjk72nf3a6dzsna9z8yx4278h'';
     };
     rake_0_8_7 = {
       basename = ''rake'';
@@ -598,16 +669,16 @@ request helpers feature.'';
       requiredGems = [  ];
       sha256 = ''19n4qp5gzbcqy9ajh56kgwqv9p9w2hnczhyvaqz0nlvk9diyng6q'';
     };
-    rb_fsevent_0_4_3_1 = {
+    rb_fsevent_0_9_0 = {
       basename = ''rb_fsevent'';
       meta = {
         description = ''Very simple &amp; usable FSEvents API'';
         homepage = ''http://rubygems.org/gems/rb-fsevent'';
         longDescription = ''FSEvents API with Signals catching (without RubyCocoa)'';
       };
-      name = ''rb-fsevent-0.4.3.1'';
+      name = ''rb-fsevent-0.9.0'';
       requiredGems = [  ];
-      sha256 = ''043w4695j7f9n0hawy9y0yci36linivsbp23v52v2qg64ji7hsiw'';
+      sha256 = ''1sk7y6bxq8p4vh2cv4zk320xlxrbs15n2knyyvdd1bj89wmmiryy'';
     };
     rdoc_3_12 = {
       basename = ''rdoc'';
@@ -636,7 +707,7 @@ See RDoc for a description of RDoc's markup and basic use.'';
       requiredGems = [  ];
       sha256 = ''0jhj1y84yzdr11li784m255jvc191vs8d3zck21rfqv4z4zpifz6'';
     };
-    rjb_1_3_8 = {
+    rjb_1_3_9 = {
       basename = ''rjb'';
       meta = {
         description = ''Ruby Java bridge'';
@@ -644,9 +715,9 @@ See RDoc for a description of RDoc's markup and basic use.'';
         longDescription = ''RJB is a bridge program that connect between Ruby and Java with Java Native Interface.
 '';
       };
-      name = ''rjb-1.3.8'';
+      name = ''rjb-1.3.9'';
       requiredGems = [  ];
-      sha256 = ''0cwc3zh9ydwzvc176vjin7jpf8riisyjdwbywrmvc426kjyrrwwr'';
+      sha256 = ''0iimwg22jacbidc43lngqndbnvgv4f9zppxzy008gi88pqgargsd'';
     };
     rspec_2_1_0 = {
       basename = ''rspec'';
@@ -738,7 +809,17 @@ See RDoc for a description of RDoc's markup and basic use.'';
       requiredGems = [  ];
       sha256 = ''1lc67ssqyz49rm1jms5sdvy6x41h070razxlmvj4j5q6w3qixx41'';
     };
-    sass_3_1_12 = {
+    rubyzip_0_9_5 = {
+      basename = ''rubyzip'';
+      meta = {
+        description = ''rubyzip is a ruby module for reading and writing zip files'';
+        homepage = ''http://github.com/aussiegeek/rubyzip'';
+      };
+      name = ''rubyzip-0.9.5'';
+      requiredGems = [  ];
+      sha256 = ''1744bds6lc46d1kjfgapf34p2574s70hcyz63877qkry4db2jb54'';
+    };
+    sass_3_1_13 = {
       basename = ''sass'';
       meta = {
         description = ''A powerful but elegant CSS compiler that makes CSS fun again.'';
@@ -749,9 +830,20 @@ See RDoc for a description of RDoc's markup and basic use.'';
       command line tool or a web-framework plugin.
 '';
       };
-      name = ''sass-3.1.12'';
+      name = ''sass-3.1.13'';
       requiredGems = [  ];
-      sha256 = ''10n2aic53290xsa3y3d63523s8xc78w5q5gqpns6cbljkdwb0ndy'';
+      sha256 = ''0x07yckw9c4d59713midk2n85d3h88fcp147p8nai88gbvrm8b63'';
+    };
+    selenium_webdriver_2_18_0 = {
+      basename = ''selenium_webdriver'';
+      meta = {
+        description = ''The next generation developer focused tool for automated testing of webapps'';
+        homepage = ''http://selenium.googlecode.com'';
+        longDescription = ''WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.'';
+      };
+      name = ''selenium-webdriver-2.18.0'';
+      requiredGems = [ g.rubyzip_0_9_5 g.childprocess_0_3_0 ];
+      sha256 = ''17am2b6bjv62s02n1bfmhg9wz5n7sppzh7dx1llp28ivj2hdfbg9'';
     };
     sprockets_2_1_2 = {
       basename = ''sprockets'';
diff --git a/pkgs/development/interpreters/ruby/ruby-18.nix b/pkgs/development/interpreters/ruby/ruby-18.nix
index fcd57205dcf..ad89fae057b 100644
--- a/pkgs/development/interpreters/ruby/ruby-18.nix
+++ b/pkgs/development/interpreters/ruby/ruby-18.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   
   src = fetchurl {
     url = "ftp://ftp.ruby-lang.org/pub/ruby/1.8/${name}.tar.gz";
-    sha256 = "0qf50wa1ziziagnxarj8z6yrsivrhchq1j9017ff3z2z7d31l9kc";
+    sha256 = "0b4n9d1idmsl47cq3mw6zhi94yp048ljlfgg9qdblbkvnd7arp1g";
   };
 
   # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds.
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
   passthru = rec {
     majorVersion = "1.8";
     minorVersion = "7";
-    patchLevel = "330";
+    patchLevel = "357";
     libPath = "lib/ruby/${majorVersion}";
     gemPath = "lib/ruby/gems/${majorVersion}";
   };
diff --git a/pkgs/development/libraries/aspell/dictionaries.nix b/pkgs/development/libraries/aspell/dictionaries.nix
index 3bd1d82e0b5..90a9469ee54 100644
--- a/pkgs/development/libraries/aspell/dictionaries.nix
+++ b/pkgs/development/libraries/aspell/dictionaries.nix
@@ -22,6 +22,7 @@ let
 
       meta = {
         description = "Aspell dictionary for ${fullName}";
+        platforms = stdenv.lib.platforms.all;
       };
     };
 
diff --git a/pkgs/development/libraries/cppnetlib/default.nix b/pkgs/development/libraries/cppnetlib/default.nix
new file mode 100644
index 00000000000..3eab580c6a8
--- /dev/null
+++ b/pkgs/development/libraries/cppnetlib/default.nix
@@ -0,0 +1,40 @@
+{stdenv, fetchurl, cmake, openssl, boost}:
+
+stdenv.mkDerivation rec {
+  name = "cpp-netlib-0.9.2";
+
+  src = fetchurl {
+    url = "https://github.com/downloads/cpp-netlib/cpp-netlib/${name}.tar.bz2";
+    sha256 = "0llmiyp9l7byavwdyb7vpks27yfv3g85170bm81paps748bcyb1p";
+  };
+
+  buildInputs = [ cmake boost openssl ];
+
+  /* Tests fail to build ...
+    https://github.com/cpp-netlib/cpp-netlib/issues/85
+
+    Once working, we could do:
+    checkTarget = "test";
+    doCheck = true;
+  */
+
+  preConfigure = ''
+    sed -i /test/d CMakeLists.txt
+  '';
+
+  /* The build phase just builds examples. That's at least some testing.
+     That's how to install the lib - copy the headers. */
+  installPhase = ''
+    # We are at sourcepath/build
+    mkdir -p $out/include
+    cp -R ../boost $out/include/
+    mkdir -p $out/lib
+    cp -R libs/network/src/*.a $out/lib/
+  '';
+
+  meta = {
+    homepage = http://cpp-netlib.github.com/;
+    description = "Provides application layer network support at boost style";
+    license = "boost";
+  };
+}
diff --git a/pkgs/development/libraries/ffmpeg/default.nix b/pkgs/development/libraries/ffmpeg/default.nix
index b77b52a5e65..38f12f779b6 100644
--- a/pkgs/development/libraries/ffmpeg/default.nix
+++ b/pkgs/development/libraries/ffmpeg/default.nix
@@ -18,11 +18,11 @@ assert xvidSupport -> xvidcore != null;
 assert faacSupport -> faac != null;
 
 stdenv.mkDerivation rec {
-  name = "ffmpeg-0.8.1";
+  name = "ffmpeg-0.10";
   
   src = fetchurl {
     url = "http://www.ffmpeg.org/releases/${name}.tar.bz2";
-    sha256 = "0vdq6bmrsi55p1l3dddiwyqsspb3l5dgqb87lysf5cz3sjxcfw2v";
+    sha256 = "1ybzw6d5axr807141izvm2yf4pa0hc1zcywj89nsn3qsdnknlna3";
   };
   
   # `--enable-gpl' (as well as the `postproc' and `swscale') mean that
diff --git a/pkgs/development/libraries/glib/1.2.x.nix b/pkgs/development/libraries/glib/1.2.x.nix
deleted file mode 100644
index 8aa5005b617..00000000000
--- a/pkgs/development/libraries/glib/1.2.x.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{stdenv, fetchurl}:
-
-stdenv.mkDerivation {
-  name = "glib-1.2.10";
-  src = fetchurl {
-    url = ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz;
-    md5 = "6fe30dad87c77b91b632def29dd69ef9";
-  };
-  # Patch for gcc 3.4 compatibility.  Based on
-  # http://cvs.openpkg.org/chngview?cn=16208.
-  patches = [./gcc34.patch];
-}
diff --git a/pkgs/development/libraries/glib/gcc34.patch b/pkgs/development/libraries/glib/gcc34.patch
deleted file mode 100644
index 13d35c82209..00000000000
--- a/pkgs/development/libraries/glib/gcc34.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -rc glib-orig/glib.h glib-1.2.10/glib.h
-*** glib-orig/glib.h	2001-02-27 04:44:38.000000000 +0100
---- glib-1.2.10/glib.h	2004-09-22 10:22:01.000000000 +0200
-***************
-*** 272,278 ****
-  /* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with
-   * macros, so we can refer to them as strings unconditionally.
-   */
-! #ifdef	__GNUC__
-  #define	G_GNUC_FUNCTION		__FUNCTION__
-  #define	G_GNUC_PRETTY_FUNCTION	__PRETTY_FUNCTION__
-  #else	/* !__GNUC__ */
---- 272,278 ----
-  /* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with
-   * macros, so we can refer to them as strings unconditionally.
-   */
-! #if   defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
-  #define	G_GNUC_FUNCTION		__FUNCTION__
-  #define	G_GNUC_PRETTY_FUNCTION	__PRETTY_FUNCTION__
-  #else	/* !__GNUC__ */
diff --git a/pkgs/development/libraries/gmp/4.nix b/pkgs/development/libraries/gmp/4.3.2.nix
index d25b6941153..d25b6941153 100644
--- a/pkgs/development/libraries/gmp/4.nix
+++ b/pkgs/development/libraries/gmp/4.3.2.nix
diff --git a/pkgs/development/libraries/gmp/default.nix b/pkgs/development/libraries/gmp/5.0.3.nix
index a633177c128..8c3d24d2d11 100644
--- a/pkgs/development/libraries/gmp/default.nix
+++ b/pkgs/development/libraries/gmp/5.0.3.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, m4, cxx ? true }:
 
 stdenv.mkDerivation rec {
-  name = "gmp-5.0.2";
+  name = "gmp-5.0.3";
 
   src = fetchurl {
     url = "mirror://gnu/gmp/${name}.tar.bz2";
-    sha256 = "0a2ch2kpbzrsf3c1pfc6sph87hk2xmwa6np3sn2rzsflzmvdphnv";
+    sha256 = "dcafe9989c7f332b373e1f766af8e9cd790fc802fdec422a1910a6ef783480e3";
   };
 
   buildNativeInputs = [ m4 ];
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
     homepage = http://gmplib.org/;
     license = "LGPLv3+";
 
-    maintainers = [ stdenv.lib.maintainers.ludo ];
+    maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons ];
     platforms = stdenv.lib.platforms.all;
   };
 }
diff --git a/pkgs/development/libraries/gtk+/1.2.x.nix b/pkgs/development/libraries/gtk+/1.2.x.nix
deleted file mode 100644
index 9f6d8b7881e..00000000000
--- a/pkgs/development/libraries/gtk+/1.2.x.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{stdenv, fetchurl, x11, glib}:
-
-stdenv.mkDerivation {
-  name = "gtk+-1.2.10";
-
-  src = fetchurl {
-    url = ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz;
-    md5 = "4d5cb2fc7fb7830e4af9747a36bfce20";
-  };
-
-  propagatedBuildInputs = [x11 glib];
-}
diff --git a/pkgs/development/libraries/haskell/Chart/default.nix b/pkgs/development/libraries/haskell/Chart/default.nix
index daf15c0cb2e..1976472da23 100644
--- a/pkgs/development/libraries/haskell/Chart/default.nix
+++ b/pkgs/development/libraries/haskell/Chart/default.nix
@@ -1,13 +1,13 @@
-{ cabal, cairo, colour, dataAccessor, dataAccessorTemplate, gtk
-, mtl, time
+{ cabal, cairo, colour, dataAccessor, dataAccessorTemplate, mtl
+, time
 }:
 
 cabal.mkDerivation (self: {
   pname = "Chart";
-  version = "0.14";
-  sha256 = "0ji81j4c2by5zyrdhx1s17j6kqsi3ngr9y1zh7hr9wv7jsrj3rf2";
+  version = "0.15";
+  sha256 = "1357gqn2ifalknl85n2z9ysf195dnaxm175rp0kmmzbf4vik9gc4";
   buildDepends = [
-    cairo colour dataAccessor dataAccessorTemplate gtk mtl time
+    cairo colour dataAccessor dataAccessorTemplate mtl time
   ];
   meta = {
     homepage = "http://www.dockerz.net/software/chart.html";
diff --git a/pkgs/development/libraries/haskell/GLFW/default.nix b/pkgs/development/libraries/haskell/GLFW/default.nix
new file mode 100644
index 00000000000..1a9179b9877
--- /dev/null
+++ b/pkgs/development/libraries/haskell/GLFW/default.nix
@@ -0,0 +1,19 @@
+{ cabal, libX11, mesa, OpenGL }:
+
+cabal.mkDerivation (self: {
+  pname = "GLFW";
+  version = "0.5.0.1";
+  sha256 = "1zjxw0fn1am9n4bwqn8jwp14cdgyg1cv5v8rrg2bisggw7wdc4c6";
+  buildDepends = [ OpenGL ];
+  extraLibraries = [ libX11 mesa ];
+  meta = {
+    homepage = "http://haskell.org/haskellwiki/GLFW";
+    description = "A Haskell binding for GLFW";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/GLURaw/default.nix b/pkgs/development/libraries/haskell/GLURaw/default.nix
index 03480856669..1397bea4f2b 100644
--- a/pkgs/development/libraries/haskell/GLURaw/default.nix
+++ b/pkgs/development/libraries/haskell/GLURaw/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "GLURaw";
-  version = "1.1.0.1";
-  sha256 = "0n2yazdk98ia9j65n4ac7k0lnyp9cmz51d344x0jsi0xyfckm0mq";
+  version = "1.2.0.0";
+  sha256 = "06dsazj3zadjahwy926gnjngqg8cb1mhdxh8bg5f3axf3hsvxqp1";
   buildDepends = [ OpenGLRaw ];
   extraLibraries = [ freeglut mesa ];
   meta = {
diff --git a/pkgs/development/libraries/haskell/GLUT/2.3.0.0.nix b/pkgs/development/libraries/haskell/GLUT/2.3.0.0.nix
new file mode 100644
index 00000000000..109ea000b43
--- /dev/null
+++ b/pkgs/development/libraries/haskell/GLUT/2.3.0.0.nix
@@ -0,0 +1,21 @@
+{ cabal, freeglut, libICE, libSM, libXi, libXmu, mesa, OpenGL
+, OpenGLRaw, StateVar, Tensor
+}:
+
+cabal.mkDerivation (self: {
+  pname = "GLUT";
+  version = "2.3.0.0";
+  sha256 = "10rh57w3lx8fs0xy24lqilv5a5sgq57kshydja41r6fq9wdvwp99";
+  buildDepends = [ OpenGL OpenGLRaw StateVar Tensor ];
+  extraLibraries = [ freeglut libICE libSM libXi libXmu mesa ];
+  meta = {
+    homepage = "http://www.haskell.org/haskellwiki/Opengl";
+    description = "A binding for the OpenGL Utility Toolkit";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/Graphalyze/default.nix b/pkgs/development/libraries/haskell/Graphalyze/default.nix
index 8084ada2cd6..cdd071b2b67 100644
--- a/pkgs/development/libraries/haskell/Graphalyze/default.nix
+++ b/pkgs/development/libraries/haskell/Graphalyze/default.nix
@@ -9,6 +9,9 @@ cabal.mkDerivation (self: {
   buildDepends = [
     bktrees extensibleExceptions fgl graphviz pandoc random text time
   ];
+  patchPhase = ''
+    sed -i Graphalyze.cabal -e 's|pandoc == 1.8.\*|pandoc|'
+  '';
   meta = {
     description = "Graph-Theoretic Analysis library";
     license = "unknown";
diff --git a/pkgs/development/libraries/haskell/HaskellForMaths/default.nix b/pkgs/development/libraries/haskell/HaskellForMaths/default.nix
index e55619fb3ab..25143e647bb 100644
--- a/pkgs/development/libraries/haskell/HaskellForMaths/default.nix
+++ b/pkgs/development/libraries/haskell/HaskellForMaths/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "HaskellForMaths";
-  version = "0.4.1";
-  sha256 = "0jwdxz5wqayx196giv7nj5j0k9zw50x555ig6xj00cladvplvh9h";
+  version = "0.4.3";
+  sha256 = "00s502h3pw9i464qn6cn74ihghcnn5gsar891q276ld682m5vdns";
   buildDepends = [ random ];
   meta = {
     homepage = "http://haskellformaths.blogspot.com/";
diff --git a/pkgs/development/libraries/haskell/OpenGL/2.5.0.0.nix b/pkgs/development/libraries/haskell/OpenGL/2.5.0.0.nix
new file mode 100644
index 00000000000..8e616e4e069
--- /dev/null
+++ b/pkgs/development/libraries/haskell/OpenGL/2.5.0.0.nix
@@ -0,0 +1,21 @@
+{ cabal, GLURaw, libX11, mesa, ObjectName, OpenGLRaw, StateVar
+, Tensor
+}:
+
+cabal.mkDerivation (self: {
+  pname = "OpenGL";
+  version = "2.5.0.0";
+  sha256 = "1kpakn5i4aka67mqcpfq9jpl38h409x63zd14y35abpm6h3x8m3j";
+  buildDepends = [ GLURaw ObjectName OpenGLRaw StateVar Tensor ];
+  extraLibraries = [ libX11 mesa ];
+  meta = {
+    homepage = "http://www.haskell.org/haskellwiki/Opengl";
+    description = "A binding for the OpenGL graphics system";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/OpenGLRaw/default.nix b/pkgs/development/libraries/haskell/OpenGLRaw/default.nix
index 3a86955a438..70c25ea9ac6 100644
--- a/pkgs/development/libraries/haskell/OpenGLRaw/default.nix
+++ b/pkgs/development/libraries/haskell/OpenGLRaw/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "OpenGLRaw";
-  version = "1.1.0.2";
-  sha256 = "0d1rjh2vq0w1pzf3vz0mw6p0w43h3sf6034qsi89m4jkx3125fwf";
+  version = "1.2.0.0";
+  sha256 = "1nwk93wlwh7gz2lb1dc88frmwik71g61a7k8xfiib2q5a8a8kf9r";
   extraLibraries = [ mesa ];
   meta = {
     homepage = "http://www.haskell.org/haskellwiki/Opengl";
diff --git a/pkgs/development/libraries/haskell/ansi-wl-pprint/default.nix b/pkgs/development/libraries/haskell/ansi-wl-pprint/default.nix
index 468b35136a3..5730588ab9e 100755
--- a/pkgs/development/libraries/haskell/ansi-wl-pprint/default.nix
+++ b/pkgs/development/libraries/haskell/ansi-wl-pprint/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "ansi-wl-pprint";
-  version = "0.6.3";
-  sha256 = "1cpkfn1ld0sjysksdsxxwwy1b17s4smmzk8y88y9mb81vgwlalkl";
+  version = "0.6.4";
+  sha256 = "0zrhzkmc5ki6q9ac5l16lhnyf9z2raj78gj9n0a7530rcv4ak3k0";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ ansiTerminal ];
diff --git a/pkgs/development/libraries/haskell/binary/default.nix b/pkgs/development/libraries/haskell/binary/default.nix
index 65018a4d5c5..9195e24d529 100644
--- a/pkgs/development/libraries/haskell/binary/default.nix
+++ b/pkgs/development/libraries/haskell/binary/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "binary";
-  version = "0.5.0.2";
-  sha256 = "02qkybh11psmggkqcs7f8kh4izfj44gq1wk23xhv3jbxc7gdxhp0";
+  version = "0.5.1.0";
+  sha256 = "18si0f021447b1kqshar224zyh02gc65z7v82waxcn4igss7gm1a";
   meta = {
     homepage = "http://code.haskell.org/binary/";
     description = "Binary serialisation for Haskell values using lazy ByteStrings";
diff --git a/pkgs/development/libraries/haskell/bitarray/default.nix b/pkgs/development/libraries/haskell/bitarray/default.nix
new file mode 100644
index 00000000000..faf51870ae9
--- /dev/null
+++ b/pkgs/development/libraries/haskell/bitarray/default.nix
@@ -0,0 +1,17 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "bitarray";
+  version = "0.0.1";
+  sha256 = "01ijysisw70zaw70hx851axw48agfamdqj21rzzhdqd2ww6bwchb";
+  meta = {
+    homepage = "http://code.haskell.org/~bkomuves/";
+    description = "Mutable and immutable bit arrays";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/blaze-builder/default.nix b/pkgs/development/libraries/haskell/blaze-builder/default.nix
index a21d9b7c96f..f5835393895 100644
--- a/pkgs/development/libraries/haskell/blaze-builder/default.nix
+++ b/pkgs/development/libraries/haskell/blaze-builder/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "blaze-builder";
-  version = "0.3.0.2";
-  sha256 = "009njfm9g0fs7kg6q9c7qqfl69msw9q3d07xh3xg7layh09khsdb";
+  version = "0.3.1.0";
+  sha256 = "192pqmr6mcjnflqpvp93nycfbdi0ifab8ifvrxvmwbrdkiidvai6";
   buildDepends = [ text ];
   meta = {
     homepage = "http://github.com/meiersi/blaze-builder";
diff --git a/pkgs/development/libraries/haskell/bytestring-lexing/default.nix b/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
index 446a628dd05..05b316f2412 100644
--- a/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
+++ b/pkgs/development/libraries/haskell/bytestring-lexing/default.nix
@@ -2,12 +2,12 @@
 
 cabal.mkDerivation (self: {
   pname = "bytestring-lexing";
-  version = "0.2.1";
-  sha256 = "0pibn4phfp346i6i8zwic5zlbq9lqa6ifyx6bdl3p5c8jy3v23r9";
+  version = "0.4.0";
+  sha256 = "1lww38rab9k8drndqkg306kiq6663i89sq6l1bvjv6cs13acc8wr";
   buildTools = [ alex ];
   meta = {
-    homepage = "http://code.haskell.org/~dons/code/bytestring-lexing";
-    description = "Parse literals efficiently from bytestrings";
+    homepage = "http://code.haskell.org/~wren/";
+    description = "Parse and produce literals efficiently from strict or lazy bytestrings";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
     maintainers = [
diff --git a/pkgs/development/libraries/haskell/cabal-file-th/default.nix b/pkgs/development/libraries/haskell/cabal-file-th/default.nix
index e03c10dea31..37350562eac 100644
--- a/pkgs/development/libraries/haskell/cabal-file-th/default.nix
+++ b/pkgs/development/libraries/haskell/cabal-file-th/default.nix
@@ -4,6 +4,7 @@ cabal.mkDerivation (self: {
   pname = "cabal-file-th";
   version = "0.2.1";
   sha256 = "0nczwicgf6kx3lk5m7wqf1wj6ghn8jfx112dzh7jh4f4xs66nsd1";
+  patchPhase = "sed -i cabal-file-th.cabal -e 's|Cabal >= 1.10 && < 1.13|Cabal|'";
   meta = {
     homepage = "http://github.com/nkpart/cabal-file-th";
     description = "Template Haskell expressions for reading fields from a project's cabal file";
diff --git a/pkgs/development/libraries/haskell/citeproc-hs/default.nix b/pkgs/development/libraries/haskell/citeproc-hs/default.nix
index b09409d28df..d4f1d943088 100644
--- a/pkgs/development/libraries/haskell/citeproc-hs/default.nix
+++ b/pkgs/development/libraries/haskell/citeproc-hs/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "citeproc-hs";
-  version = "0.3.3";
-  sha256 = "0yhzqxrr7jn1h0r2vy1jmlrf0z64qcr2fl37i04rpiwzb3nc16r4";
+  version = "0.3.4";
+  sha256 = "17w6fpmlhbfd8jxxz4s6ybz3dswf0i96fjjbs05ykh4i97rs62nv";
   buildDepends = [
     hsBibutils HTTP json mtl network pandocTypes parsec syb time
     utf8String xml
diff --git a/pkgs/development/libraries/haskell/clientsession/default.nix b/pkgs/development/libraries/haskell/clientsession/default.nix
index 32e88cbf2cf..a59b3b9ef0e 100644
--- a/pkgs/development/libraries/haskell/clientsession/default.nix
+++ b/pkgs/development/libraries/haskell/clientsession/default.nix
@@ -4,14 +4,14 @@
 
 cabal.mkDerivation (self: {
   pname = "clientsession";
-  version = "0.7.3.6";
-  sha256 = "04cvws7h2pm3rk8p2yj1pqkf9vjqq65hxg9sjldg7zhxdjgq1hgc";
+  version = "0.7.4";
+  sha256 = "050mg3rzyld4v2b9v1pc1q563sp7sffiapvr8ks8f46ibl17lvss";
   buildDepends = [
     base64Bytestring cereal cprngAes cryptoApi cryptocipher entropy
     skein tagged
   ];
   meta = {
-    homepage = "http://github.com/snoyberg/clientsession/tree/master";
+    homepage = "http://github.com/yesodweb/clientsession/tree/master";
     description = "Securely store session data in a client-side cookie";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/libraries/haskell/cmdargs/default.nix b/pkgs/development/libraries/haskell/cmdargs/default.nix
index 4e8b236464a..7024b08a672 100644
--- a/pkgs/development/libraries/haskell/cmdargs/default.nix
+++ b/pkgs/development/libraries/haskell/cmdargs/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cmdargs";
-  version = "0.8";
-  sha256 = "0yhjg6rck1aj8gq07i9dcfxyjffxlr4lxnir2brkyahpfx5iyw9k";
+  version = "0.9.2";
+  sha256 = "1c0xy4g9b5jqy51qhgq7djafqz27z6q7ya31pgy186pfgl7604kr";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ transformers ];
diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix
index 38285492dd4..bd8d1632af2 100644
--- a/pkgs/development/libraries/haskell/conduit/default.nix
+++ b/pkgs/development/libraries/haskell/conduit/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "conduit";
-  version = "0.0.4";
-  sha256 = "1sc14nh21ba85azm4my5qnllnlbmsq5j6h1yd1mdsk2z3fb0x5zz";
+  version = "0.1.1.1";
+  sha256 = "0gqkk5q329xbw565xd9xc0pz2ha66jkdbbjgwadvrjw1n52vaqg5";
   buildDepends = [
     liftedBase monadControl text transformers transformersBase
   ];
diff --git a/pkgs/development/libraries/haskell/containers-deepseq/default.nix b/pkgs/development/libraries/haskell/containers-deepseq/default.nix
new file mode 100644
index 00000000000..1e7630a93e8
--- /dev/null
+++ b/pkgs/development/libraries/haskell/containers-deepseq/default.nix
@@ -0,0 +1,17 @@
+{ cabal, deepseq }:
+
+cabal.mkDerivation (self: {
+  pname = "containers-deepseq";
+  version = "0.1.0.1";
+  sha256 = "0l9d7hj66fygpsbjw6wy4l11c9cw739lvkrypapwihav7jzva541";
+  buildDepends = [ deepseq ];
+  meta = {
+    description = "Provide orphan NFData instances for containers as needed. (deprecated)";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/crypto-api/default.nix b/pkgs/development/libraries/haskell/crypto-api/default.nix
index 66204112c16..546392d7087 100644
--- a/pkgs/development/libraries/haskell/crypto-api/default.nix
+++ b/pkgs/development/libraries/haskell/crypto-api/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "crypto-api";
-  version = "0.8";
-  sha256 = "1fwkafb9v2348vr1a4xnlmkgs4kh85az4f3wnrl9cbqwxf3cc328";
+  version = "0.9";
+  sha256 = "11372brnpiqdm6fdfp95wyyl8nvhbagnq0q2bdhn4xsskpnp4hnp";
   buildDepends = [ cereal entropy largeword tagged ];
   meta = {
     homepage = "http://trac.haskell.org/crypto-api/wiki";
diff --git a/pkgs/development/libraries/haskell/data-object-yaml/default.nix b/pkgs/development/libraries/haskell/data-object-yaml/default.nix
index ec24fc554df..54c2a05f8f1 100644
--- a/pkgs/development/libraries/haskell/data-object-yaml/default.nix
+++ b/pkgs/development/libraries/haskell/data-object-yaml/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "data-object-yaml";
-  version = "0.3.4.1";
-  sha256 = "04mpa59gyfkqi5s94ps3qhphw4csiasb3lj6kf6rhhmd5yx52dnp";
+  version = "0.3.4.2";
+  sha256 = "18a9r4wfpb7icjb6nji9iy3abq6sxafmsnfwqpnm1nn2nn3fm1ap";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/deepseq/1.3.0.0.nix b/pkgs/development/libraries/haskell/deepseq/1.3.0.0.nix
new file mode 100644
index 00000000000..e2c9c926aa7
--- /dev/null
+++ b/pkgs/development/libraries/haskell/deepseq/1.3.0.0.nix
@@ -0,0 +1,16 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "deepseq";
+  version = "1.3.0.0";
+  sha256 = "0z2k1rda67nmhv62irjfd642iarj1i9m55l6p47j4cysrszhvqgy";
+  meta = {
+    description = "Deep evaluation of data structures";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/email-validate/default.nix b/pkgs/development/libraries/haskell/email-validate/default.nix
index 10c518611d1..2906b0a9e64 100644
--- a/pkgs/development/libraries/haskell/email-validate/default.nix
+++ b/pkgs/development/libraries/haskell/email-validate/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "email-validate";
-  version = "0.2.7";
-  sha256 = "13zam197ph431f351g8srsxwqchjdwx1c1bizmildsc1zxm2nm3q";
+  version = "0.2.8";
+  sha256 = "04cz1nm1zkb46kdxs43pmkxli2xm5nqlh951nn0mdgy6hqhkpkqd";
   buildDepends = [ parsec ranges ];
   meta = {
     homepage = "http://porg.es/blog/email-address-validation-simpler-faster-more-correct";
diff --git a/pkgs/development/libraries/haskell/explicit-exception/default.nix b/pkgs/development/libraries/haskell/explicit-exception/default.nix
new file mode 100644
index 00000000000..2a95faafaf6
--- /dev/null
+++ b/pkgs/development/libraries/haskell/explicit-exception/default.nix
@@ -0,0 +1,20 @@
+{ cabal, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "explicit-exception";
+  version = "0.1.6";
+  sha256 = "0pgdbaav952bwcmbfwg0fgvc15k57rlnw131bs3pnp8rqdbxfv39";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [ transformers ];
+  meta = {
+    homepage = "http://www.haskell.org/haskellwiki/Exception";
+    description = "Exceptions which are explicit in the type signature";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/extensible-exceptions/0.1.1.4.nix b/pkgs/development/libraries/haskell/extensible-exceptions/0.1.1.4.nix
new file mode 100644
index 00000000000..f217db39bc6
--- /dev/null
+++ b/pkgs/development/libraries/haskell/extensible-exceptions/0.1.1.4.nix
@@ -0,0 +1,16 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "extensible-exceptions";
+  version = "0.1.1.4";
+  sha256 = "1273nqws9ij1rp1bsq5jc7k2jxpqa0svawdbim05lf302y0firbc";
+  meta = {
+    description = "Extensible exceptions";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/fast-logger/default.nix b/pkgs/development/libraries/haskell/fast-logger/default.nix
index 68bc8ca6005..462bf7b5230 100644
--- a/pkgs/development/libraries/haskell/fast-logger/default.nix
+++ b/pkgs/development/libraries/haskell/fast-logger/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "fast-logger";
-  version = "0.0.1";
-  sha256 = "19ff2dhkh62i1ljsl90wnsblzk30dz0yx4kw5gk1hb22md7hakim";
+  version = "0.0.2";
+  sha256 = "1pwxhgcy4lmc63dnr9fihkmiclf60hrnsv8wzbsdg0jcj4qi0zr7";
   buildDepends = [ blazeBuilder ];
   meta = {
     description = "A fast logging system";
diff --git a/pkgs/development/libraries/haskell/filepath/default.nix b/pkgs/development/libraries/haskell/filepath/default.nix
index 6e3362bf42c..3511cddeee2 100644
--- a/pkgs/development/libraries/haskell/filepath/default.nix
+++ b/pkgs/development/libraries/haskell/filepath/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "filepath";
-  version = "1.2.0.1";
-  sha256 = "1fq62kxf68y2952qhipllz049cq52yc3wm4i31v2lg5hdcwbw152";
+  version = "1.3.0.0";
+  sha256 = "1v5affq82b4fypm49d5sradcx4ymgmkac563vfx483pmyl73i5jl";
   meta = {
     homepage = "http://www-users.cs.york.ac.uk/~ndm/filepath/";
     description = "Library for manipulating FilePaths in a cross platform way";
diff --git a/pkgs/development/libraries/haskell/gd/default.nix b/pkgs/development/libraries/haskell/gd/default.nix
new file mode 100644
index 00000000000..42de2748380
--- /dev/null
+++ b/pkgs/development/libraries/haskell/gd/default.nix
@@ -0,0 +1,19 @@
+{ cabal, expat, fontconfig, freetype, gd, libjpeg, libpng, zlib }:
+
+cabal.mkDerivation (self: {
+  pname = "gd";
+  version = "3000.7.1";
+  sha256 = "07rb02jfmz6bw853b6snw1inby9qgaygdmlsid35snc2xn2ylb50";
+  extraLibraries = [
+    expat fontconfig freetype gd libjpeg libpng zlib
+  ];
+  meta = {
+    description = "A Haskell binding to a subset of the GD graphics library";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix
index 945e9ee35e0..2566e098656 100644
--- a/pkgs/development/libraries/haskell/ghc-mod/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "ghc-mod";
-  version = "1.0.6";
-  sha256 = "c075314de03209827a0e59ee3e63a4d21bc8edb024a1e36721eea248805b38ba";
+  version = "1.0.8";
+  sha256 = "1c1236a8829418cae3039c3479875104664827c661b8c7567dd7bdbda12e8bcc";
   buildDepends = [
     attoparsec attoparsecEnumerator ghcPaths hlint regexPosix
   ];
diff --git a/pkgs/development/libraries/haskell/hackage-db/default.nix b/pkgs/development/libraries/haskell/hackage-db/default.nix
index 4cfc1527f92..2afb2108f06 100644
--- a/pkgs/development/libraries/haskell/hackage-db/default.nix
+++ b/pkgs/development/libraries/haskell/hackage-db/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hackage-db";
-  version = "1.0";
-  sha256 = "0y769ssr9jlyzcdr0l8wh5s3ivc3zbp9mf7xy7vnq6mr9hjh7lcw";
+  version = "1.2";
+  sha256 = "1dsm8mp8f6z7jqqgx39xfvl5kql6bbwxk25k435rsb685q9hzpxq";
   buildDepends = [ tar ];
   meta = {
     homepage = "http://github.com/peti/hackage-db";
diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix
index 654d50cdc95..acb75b05ae9 100644
--- a/pkgs/development/libraries/haskell/hakyll/default.nix
+++ b/pkgs/development/libraries/haskell/hakyll/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hakyll";
-  version = "3.2.5.0";
-  sha256 = "1y1dqfbas7ym1jghq3i7zhqcny01paqfrszj0aakg6ys2jjx0m29";
+  version = "3.2.6.0";
+  sha256 = "1yg97kihfxb250vk9dm2v9sh197lc6qjil0j40zgcwpss96xynax";
   buildDepends = [
     binary blazeHtml citeprocHs cryptohash hamlet mtl pandoc parsec
     regexBase regexPcre snapCore snapServer tagsoup time
diff --git a/pkgs/development/libraries/haskell/happstack/happstack-util.nix b/pkgs/development/libraries/haskell/happstack/happstack-util.nix
index faeb174f251..c2af99bafd5 100644
--- a/pkgs/development/libraries/haskell/happstack/happstack-util.nix
+++ b/pkgs/development/libraries/haskell/happstack/happstack-util.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "happstack-util";
-  version = "6.0.2";
-  sha256 = "03qlnclpg72iflry1xlkd0sxqm6nybvx113la9r0cmsnz17y546a";
+  version = "6.0.3";
+  sha256 = "0hqssd5wzir6rxn46q8r3hdp3nl7v5m7w322j39120xpg2bhiphh";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/hastache/default.nix b/pkgs/development/libraries/haskell/hastache/default.nix
index ac9515348db..906df662fa7 100644
--- a/pkgs/development/libraries/haskell/hastache/default.nix
+++ b/pkgs/development/libraries/haskell/hastache/default.nix
@@ -1,10 +1,10 @@
-{ cabal, blazeBuilder, mtl, syb, text, utf8String }:
+{ cabal, blazeBuilder, ieee754, mtl, syb, text, utf8String }:
 
 cabal.mkDerivation (self: {
   pname = "hastache";
-  version = "0.2.4";
-  sha256 = "0881sh3vp5v8kk3rnz9dg2bnis6qy4gx5sr0sqj6xl162sbhf3yv";
-  buildDepends = [ blazeBuilder mtl syb text utf8String ];
+  version = "0.3.3";
+  sha256 = "18ayrfwi3jn3q650m5dm9wx9c7djwc2miz3mxlscd9gzlnrfi772";
+  buildDepends = [ blazeBuilder ieee754 mtl syb text utf8String ];
   meta = {
     homepage = "http://github.com/lymar/hastache";
     description = "Haskell implementation of Mustache templates";
diff --git a/pkgs/development/libraries/haskell/highlighting-kate/default.nix b/pkgs/development/libraries/haskell/highlighting-kate/default.nix
index ecaf46c0b77..a4f7e906a9e 100644
--- a/pkgs/development/libraries/haskell/highlighting-kate/default.nix
+++ b/pkgs/development/libraries/haskell/highlighting-kate/default.nix
@@ -1,12 +1,12 @@
-{ cabal, parsec, regexPcreBuiltin, xhtml }:
+{ cabal, blazeHtml, mtl, parsec, regexPcreBuiltin }:
 
 cabal.mkDerivation (self: {
   pname = "highlighting-kate";
-  version = "0.2.10";
-  sha256 = "0cw89qsslrp4zh47ics7bg79fkqnxpnyz1a9xws0xzd9xmg3zrhh";
+  version = "0.5.0.1";
+  sha256 = "05r8w4366gi64l65k6vyda1cs96ld8i2dgch8r5fmxwiaa8dcs1l";
   isLibrary = true;
   isExecutable = true;
-  buildDepends = [ parsec regexPcreBuiltin xhtml ];
+  buildDepends = [ blazeHtml mtl parsec regexPcreBuiltin ];
   meta = {
     homepage = "http://github.com/jgm/highlighting-kate";
     description = "Syntax highlighting";
diff --git a/pkgs/development/libraries/haskell/hjsmin/default.nix b/pkgs/development/libraries/haskell/hjsmin/default.nix
index f9b823eeb8b..588a6006f7e 100644
--- a/pkgs/development/libraries/haskell/hjsmin/default.nix
+++ b/pkgs/development/libraries/haskell/hjsmin/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hjsmin";
-  version = "0.0.14";
-  sha256 = "16053hnxnr9vsqvasbibjwjdg0jpsl5fwzgy54ac1xkh4rhp3a5i";
+  version = "0.0.15";
+  sha256 = "1bik3bvaz4zjhyx8nyghhs61l14zm71hndfhj4k0xvkw3h6hlj9k";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ blazeBuilder languageJavascript text ];
diff --git a/pkgs/development/libraries/haskell/hledger-chart/default.nix b/pkgs/development/libraries/haskell/hledger-chart/default.nix
index 84b8c33fc21..020a8dfa2af 100644
--- a/pkgs/development/libraries/haskell/hledger-chart/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-chart/default.nix
@@ -11,6 +11,9 @@ cabal.mkDerivation (self: {
   buildDepends = [
     Chart cmdargs colour hledger hledgerLib HUnit safe time
   ];
+  patchPhase = ''
+    sed -i hledger-chart.cabal -e 's|Chart >= 0.11 && < 0.15|Chart|g'
+  '';
   meta = {
     homepage = "http://hledger.org";
     description = "A pie chart image generator for the hledger accounting tool";
diff --git a/pkgs/development/libraries/haskell/hledger-lib/default.nix b/pkgs/development/libraries/haskell/hledger-lib/default.nix
index d8fdbf3f71d..aa17a1a7d92 100644
--- a/pkgs/development/libraries/haskell/hledger-lib/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-lib/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hledger-lib";
-  version = "0.16.1";
-  sha256 = "15imhdkzfnxr72lsghrbsfisc7c2al4jkzcp72yf4hhra4zym1sd";
+  version = "0.17";
+  sha256 = "0dlm3hjbcf48nzz597ag1q9y0phsc09062wvzpmfkhk4hsijpds4";
   buildDepends = [
     cmdargs HUnit mtl parsec regexpr safe split time utf8String
   ];
diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix
index 5b697906f3b..692e57cad94 100644
--- a/pkgs/development/libraries/haskell/hledger-web/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-web/default.nix
@@ -1,6 +1,6 @@
-{ cabal, aesonNative, blazeHtml, cabalFileTh, clientsession
-, cmdargs, dataObject, dataObjectYaml, failure, fileEmbed, hamlet
-, hledger, hledgerLib, HUnit, ioStorage, parsec, regexpr, safe
+{ cabal, aeson, blazeHtml, cabalFileTh, clientsession, cmdargs
+, dataObject, dataObjectYaml, failure, fileEmbed, hamlet, hledger
+, hledgerLib, HUnit, ioStorage, parsec, regexpr, safe
 , shakespeareCss, shakespeareJs, shakespeareText, text, time
 , transformers, wai, waiExtra, warp, yesod, yesodCore, yesodForm
 , yesodJson, yesodStatic
@@ -8,12 +8,12 @@
 
 cabal.mkDerivation (self: {
   pname = "hledger-web";
-  version = "0.16.5";
-  sha256 = "0gqhmyl62jkz156gypzxwj46xrh5as3wrvkwrg04wfmpqrac5n06";
+  version = "0.17";
+  sha256 = "1b5k76p27pvxc91gns3aimy3zcy6m366nnpwzbm214v6ka82imfi";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    aesonNative blazeHtml cabalFileTh clientsession cmdargs dataObject
+    aeson blazeHtml cabalFileTh clientsession cmdargs dataObject
     dataObjectYaml failure fileEmbed hamlet hledger hledgerLib HUnit
     ioStorage parsec regexpr safe shakespeareCss shakespeareJs
     shakespeareText text time transformers wai waiExtra warp yesod
diff --git a/pkgs/development/libraries/haskell/hledger/default.nix b/pkgs/development/libraries/haskell/hledger/default.nix
index e0560855286..6184f551e0c 100644
--- a/pkgs/development/libraries/haskell/hledger/default.nix
+++ b/pkgs/development/libraries/haskell/hledger/default.nix
@@ -1,16 +1,16 @@
-{ cabal, cmdargs, csv, haskeline, hledgerLib, HUnit, mtl, parsec
-, regexpr, safe, split, time, utf8String
+{ cabal, cabalFileTh, cmdargs, csv, haskeline, hledgerLib, HUnit
+, mtl, parsec, regexpr, safe, split, time, utf8String
 }:
 
 cabal.mkDerivation (self: {
   pname = "hledger";
-  version = "0.16.1";
-  sha256 = "182a5qlcxbh9q8hzrmgm99hcgvxjq8j5xq202iff14p1yqv0irs2";
+  version = "0.17";
+  sha256 = "0ah01d10hvz12zwkprk6sb3by8azz9fhm772440arhd7r9fn6232";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    cmdargs csv haskeline hledgerLib HUnit mtl parsec regexpr safe
-    split time utf8String
+    cabalFileTh cmdargs csv haskeline hledgerLib HUnit mtl parsec
+    regexpr safe split time utf8String
   ];
   meta = {
     homepage = "http://hledger.org";
diff --git a/pkgs/development/libraries/haskell/hmatrix/default.nix b/pkgs/development/libraries/haskell/hmatrix/default.nix
index c60c7dc1591..c87e507c485 100644
--- a/pkgs/development/libraries/haskell/hmatrix/default.nix
+++ b/pkgs/development/libraries/haskell/hmatrix/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hmatrix";
-  version = "0.13.0.0";
-  sha256 = "1jlibgg2nrgajw2ny0dq88f5mhrffi7kda9bb8sp9szf4a0kd4wd";
+  version = "0.13.1.0";
+  sha256 = "0pl5z6zsxyvbdfdng77r2c4isq6d4wbyzx2qs9r8rbn6glaxwrmp";
   buildDepends = [ binary storableComplex vector ];
   extraLibraries = [ blas gsl liblapack ];
   configureFlags = "-fvector";
diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix
index bf411f89221..0a4dd110fee 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 = "1.1.2.2";
-  sha256 = "049gidxmrw4zri2zkibl2298glhapzzh1kg001dn563594bbiccz";
+  version = "1.2.0";
+  sha256 = "1s3qrvglhymwvr0cp32mi95dijic40lphhsfr4hm63qjphfc8dpi";
   buildDepends = [
     asn1Data attoparsec attoparsecConduit base64Bytestring blazeBuilder
     blazeBuilderConduit caseInsensitive certificate conduit cprngAes
diff --git a/pkgs/development/libraries/haskell/ieee754/default.nix b/pkgs/development/libraries/haskell/ieee754/default.nix
new file mode 100644
index 00000000000..3a731c62623
--- /dev/null
+++ b/pkgs/development/libraries/haskell/ieee754/default.nix
@@ -0,0 +1,17 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "ieee754";
+  version = "0.7.3";
+  sha256 = "0gq747h15inxbxbgmzmchb9a8p57rhv3bmj69idx5arh0d3whgv0";
+  meta = {
+    homepage = "http://github.com/patperry/hs-ieee754";
+    description = "Utilities for dealing with IEEE floating point numbers";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/language-javascript/default.nix b/pkgs/development/libraries/haskell/language-javascript/default.nix
index 17f57fbe546..66dec535676 100644
--- a/pkgs/development/libraries/haskell/language-javascript/default.nix
+++ b/pkgs/development/libraries/haskell/language-javascript/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "language-javascript";
-  version = "0.4.6";
-  sha256 = "1rqbb44cyvj6iyipi4bzrdd59lk9q1vxh0zvilvc54kqg97y07v6";
+  version = "0.4.7";
+  sha256 = "029ncc7hdw3pi9fbnxd0knz7wy3jpj5wcfqsxzyk5dkwji6d95x1";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ mtl utf8Light ];
diff --git a/pkgs/development/libraries/haskell/mime-mail/default.nix b/pkgs/development/libraries/haskell/mime-mail/default.nix
index db2734c8739..a8b7e733025 100644
--- a/pkgs/development/libraries/haskell/mime-mail/default.nix
+++ b/pkgs/development/libraries/haskell/mime-mail/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "mime-mail";
-  version = "0.4.1.0";
-  sha256 = "1czjxxpv2w8zvwm6nkv0rr47rdl84s5f5xvf3r4kjaw44a6jfgg0";
+  version = "0.4.1.1";
+  sha256 = "01dshc6ysjkab9hl851948l6k0lwgm1fqmyk97zy7wckb252w6y4";
   buildDepends = [ base64Bytestring blazeBuilder random text ];
   meta = {
     homepage = "http://github.com/snoyberg/mime-mail";
diff --git a/pkgs/development/libraries/haskell/multiarg/default.nix b/pkgs/development/libraries/haskell/multiarg/default.nix
new file mode 100644
index 00000000000..5f12e4cee92
--- /dev/null
+++ b/pkgs/development/libraries/haskell/multiarg/default.nix
@@ -0,0 +1,22 @@
+{ cabal, explicitException, QuickCheck, text, transformers
+, utf8String
+}:
+
+cabal.mkDerivation (self: {
+  pname = "multiarg";
+  version = "0.1.0.0";
+  sha256 = "010mph49fq0rdr5dmm4pdlbmfmaaas8wffa9p1cgprs2ic1hnx3g";
+  buildDepends = [
+    explicitException QuickCheck text transformers utf8String
+  ];
+  meta = {
+    homepage = "https://github.com/massysett/multiarg";
+    description = "Combinators to build command line parsers";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/neither/default.nix b/pkgs/development/libraries/haskell/neither/default.nix
index d8a737019fc..e5b3e6a8c48 100644
--- a/pkgs/development/libraries/haskell/neither/default.nix
+++ b/pkgs/development/libraries/haskell/neither/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "neither";
-  version = "0.3.0.1";
-  sha256 = "1vr8zap3vp28dr48s510lfrbfhw5yz25vng6wyk20582lv4j2mz8";
+  version = "0.3.1";
+  sha256 = "1n00v2xs2ghm273barc3bbi67wgpvyihhgl1ij7qczyp9fhqlyfk";
   buildDepends = [ failure transformers ];
   meta = {
     homepage = "http://github.com/snoyberg/neither";
diff --git a/pkgs/development/libraries/haskell/network/2.3.0.10.nix b/pkgs/development/libraries/haskell/network/2.3.0.10.nix
new file mode 100644
index 00000000000..d3e72fa72ed
--- /dev/null
+++ b/pkgs/development/libraries/haskell/network/2.3.0.10.nix
@@ -0,0 +1,18 @@
+{ cabal, parsec }:
+
+cabal.mkDerivation (self: {
+  pname = "network";
+  version = "2.3.0.10";
+  sha256 = "1f1z7wggxl2rzix1r4bhvcdl0fmx2mzkn70iy3w5yl54vmym21bm";
+  buildDepends = [ parsec ];
+  meta = {
+    homepage = "http://github.com/haskell/network";
+    description = "Low-level networking interface";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/nixos-types/default.nix b/pkgs/development/libraries/haskell/nixos-types/default.nix
index 9a1103a2bb8..88506a5377d 100644
--- a/pkgs/development/libraries/haskell/nixos-types/default.nix
+++ b/pkgs/development/libraries/haskell/nixos-types/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "nixos-types";
-  version = "1.2";
-  sha256 = "140qk6wqq87qfk471cnhrg135fnqv0vfmfxh8kj14ar2kxvzrr8w";
+  version = "1.3";
+  sha256 = "0kdi3q316c9irrzwl1vx764f958i5d61v2vc03356sfyy13d19sk";
   buildDepends = [ regexPosix ];
   meta = {
     homepage = "http://github.com/haskell4nix/nixos-types";
diff --git a/pkgs/development/libraries/haskell/pandoc-types/default.nix b/pkgs/development/libraries/haskell/pandoc-types/default.nix
index 6d5720658ce..063fe6f45c5 100644
--- a/pkgs/development/libraries/haskell/pandoc-types/default.nix
+++ b/pkgs/development/libraries/haskell/pandoc-types/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "pandoc-types";
-  version = "1.8.2";
-  sha256 = "04whkqld2pnfz25i9rcq7d4pi9zkn6c1rpz95vdlg9r5xkhhnn3a";
+  version = "1.9.0.2";
+  sha256 = "1rqqchxinjk3njgkp73i92q4iz1cl84p56i2fmgj2zn221r0zhyl";
   buildDepends = [ syb ];
   meta = {
     homepage = "http://johnmacfarlane.net/pandoc";
diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix
index 455baa9ee1d..de998c51b93 100644
--- a/pkgs/development/libraries/haskell/pandoc/default.nix
+++ b/pkgs/development/libraries/haskell/pandoc/default.nix
@@ -1,18 +1,23 @@
-{ cabal, base64Bytestring, citeprocHs, dlist, extensibleExceptions
-, highlightingKate, HTTP, json, mtl, network, pandocTypes, parsec
-, random, syb, tagsoup, texmath, utf8String, xhtml, xml, zipArchive
+{ cabal, ansiTerminal, base64Bytestring, blazeHtml, citeprocHs
+, Diff, extensibleExceptions, highlightingKate, HTTP, HUnit, json
+, mtl, network, pandocTypes, parsec, QuickCheck, random, syb
+, tagsoup, temporary, testFramework, testFrameworkHunit
+, testFrameworkQuickcheck2, texmath, time, utf8String, xml
+, zipArchive, zlib
 }:
 
 cabal.mkDerivation (self: {
   pname = "pandoc";
-  version = "1.8.2.1";
-  sha256 = "0cwly0j2rj46h654iwl04l6jkhk6rrhynqvrdnq47067n9vm60pi";
+  version = "1.9.0.3";
+  sha256 = "1p5054sdvvgl38rr0ajfavr79rwr2l8jdrpzai329ksskkh1acdp";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    base64Bytestring citeprocHs dlist extensibleExceptions
-    highlightingKate HTTP json mtl network pandocTypes parsec random
-    syb tagsoup texmath utf8String xhtml xml zipArchive
+    ansiTerminal base64Bytestring blazeHtml citeprocHs Diff
+    extensibleExceptions highlightingKate HTTP HUnit json mtl network
+    pandocTypes parsec QuickCheck random syb tagsoup temporary
+    testFramework testFrameworkHunit testFrameworkQuickcheck2 texmath
+    time utf8String xml zipArchive zlib
   ];
   configureFlags = "-fhighlighting -fthreaded";
   meta = {
diff --git a/pkgs/development/libraries/haskell/parsimony/default.nix b/pkgs/development/libraries/haskell/parsimony/default.nix
index 70709c978b9..55bc7f74d29 100644
--- a/pkgs/development/libraries/haskell/parsimony/default.nix
+++ b/pkgs/development/libraries/haskell/parsimony/default.nix
@@ -1,10 +1,10 @@
-{ cabal, utf8String }:
+{ cabal, text }:
 
 cabal.mkDerivation (self: {
   pname = "parsimony";
-  version = "1.1";
-  sha256 = "0476zmsjyjf58lh85806baqblq8hjxcrrnqc6ddxxq17lmvsd5ic";
-  buildDepends = [ utf8String ];
+  version = "1.3";
+  sha256 = "0vbayvk989m85qfxxls74rn0v8ylb5l7lywp30sw2wybvi4r08lg";
+  buildDepends = [ text ];
   meta = {
     description = "Monadic parser combinators derived from Parsec";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
new file mode 100644
index 00000000000..0037573cea7
--- /dev/null
+++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
@@ -0,0 +1,22 @@
+{ cabal, dataObject, monadControl, neither, persistent, text
+, transformers
+}:
+
+cabal.mkDerivation (self: {
+  pname = "persistent-sqlite";
+  version = "0.6.2.1";
+  sha256 = "10sqmkd7vnrrpr8phcswbxcvn8vjipgy96nk2jj3g96j3cfwfpk0";
+  buildDepends = [
+    dataObject monadControl neither persistent text transformers
+  ];
+  meta = {
+    homepage = "http://www.yesodweb.com/book/persistent";
+    description = "Backend for the persistent library using sqlite3";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/pool-conduit/default.nix b/pkgs/development/libraries/haskell/pool-conduit/default.nix
index f7d1be2f7d0..339ec70593c 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.0.0";
-  sha256 = "0cbs7swb1ay3l1hlbirys171ybqg887csnp6yiy9biq11q5mhsml";
+  version = "0.0.0.1";
+  sha256 = "1im5fpwadg9hmajay6dkwmlzbp5rzn8hh9wh01iy23jgivkqk2q0";
   buildDepends = [ conduit resourcePool transformers ];
   meta = {
     homepage = "http://www.yesodweb.com/book/persistent";
diff --git a/pkgs/development/libraries/haskell/skein/default.nix b/pkgs/development/libraries/haskell/skein/default.nix
index b1911310e24..844e13c11dc 100644
--- a/pkgs/development/libraries/haskell/skein/default.nix
+++ b/pkgs/development/libraries/haskell/skein/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "skein";
-  version = "0.1.0.4";
-  sha256 = "1m910kvm1ba9cl3ghr6j393xf1lvxb4ms55nipnzc5zg7r2xzh96";
+  version = "0.1.0.5";
+  sha256 = "12hyyydznss802v4pwfcpjr0y7241114a9z82xxq60q8dval8fyb";
   buildDepends = [ cereal cryptoApi tagged ];
   meta = {
     description = "Skein, a family of cryptographic hash functions. Includes Skein-MAC as well.";
diff --git a/pkgs/development/libraries/haskell/socks/default.nix b/pkgs/development/libraries/haskell/socks/default.nix
new file mode 100644
index 00000000000..ab52a72f6ce
--- /dev/null
+++ b/pkgs/development/libraries/haskell/socks/default.nix
@@ -0,0 +1,18 @@
+{ cabal, cereal, network }:
+
+cabal.mkDerivation (self: {
+  pname = "socks";
+  version = "0.4.1";
+  sha256 = "0kapic4rf1cwbqy5f229b69kr1mg9blpr5p5jna8sx5ds2b8jdjn";
+  buildDepends = [ cereal network ];
+  meta = {
+    homepage = "http://github.com/vincenthz/hs-socks";
+    description = "Socks proxy (version 5) implementation";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/string-combinators/default.nix b/pkgs/development/libraries/haskell/string-combinators/default.nix
index 3371c56ceb2..6d04dcf10db 100644
--- a/pkgs/development/libraries/haskell/string-combinators/default.nix
+++ b/pkgs/development/libraries/haskell/string-combinators/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "string-combinators";
-  version = "0.6.0.2";
-  sha256 = "1bsnli6376nq5dmcx8da2fakj7h73plqz6v1myzhkz1f6r3qcjfi";
+  version = "0.6.0.3";
+  sha256 = "18jawxqvcj7zpvb0wf1zln12s03mp6nglhv5ccywrkb5x0r0557j";
   buildDepends = [ baseUnicodeSymbols ];
   meta = {
     homepage = "https://github.com/basvandijk/string-combinators";
diff --git a/pkgs/development/libraries/haskell/system-fileio/default.nix b/pkgs/development/libraries/haskell/system-fileio/default.nix
index 844864ac103..cd514f7ce23 100644
--- a/pkgs/development/libraries/haskell/system-fileio/default.nix
+++ b/pkgs/development/libraries/haskell/system-fileio/default.nix
@@ -2,12 +2,12 @@
 
 cabal.mkDerivation (self: {
   pname = "system-fileio";
-  version = "0.3.3";
-  sha256 = "0z7y99g8ij9ykpxsgdb0addyibvpv2s95i0wpx4yc7mgi8cl50bx";
+  version = "0.3.4";
+  sha256 = "184f5bb3qhag6cwmk0zc2ldkwnkzbv82pv7hy541j8jqqi5wprih";
   buildDepends = [ systemFilepath text time ];
   meta = {
-    homepage = "https://john-millikin.com/software/hs-fileio/";
-    description = "High-level filesystem interaction";
+    homepage = "https://john-millikin.com/software/haskell-filesystem/";
+    description = "Consistent filesystem interaction across GHC versions";
     license = self.stdenv.lib.licenses.mit;
     platforms = self.ghc.meta.platforms;
     maintainers = [
diff --git a/pkgs/development/libraries/haskell/system-filepath/default.nix b/pkgs/development/libraries/haskell/system-filepath/default.nix
index ee42d3415f2..e0ad17c6acb 100644
--- a/pkgs/development/libraries/haskell/system-filepath/default.nix
+++ b/pkgs/development/libraries/haskell/system-filepath/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "system-filepath";
-  version = "0.4.4";
-  sha256 = "16904xwbcy82ghf1bckw8h63pfj9jfbdlqrr8jf91jzl27lqlwxf";
+  version = "0.4.5";
+  sha256 = "18jpn3pyy6dh20xpdlwmhcjvbywjz4vr9fvwcwhylbicrw627ybs";
   buildDepends = [ deepseq text ];
   meta = {
     homepage = "https://john-millikin.com/software/haskell-filesystem/";
diff --git a/pkgs/development/libraries/haskell/temporary/default.nix b/pkgs/development/libraries/haskell/temporary/default.nix
new file mode 100644
index 00000000000..fd31d246004
--- /dev/null
+++ b/pkgs/development/libraries/haskell/temporary/default.nix
@@ -0,0 +1,17 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "temporary";
+  version = "1.1.2.3";
+  sha256 = "1x4jljggbcdq90h578yyvc8z1i9zmlhvqfz2dym8kj8pq4qiwixd";
+  meta = {
+    homepage = "http://www.github.com/batterseapower/temporary";
+    description = "Portable temporary file and directory support for Windows and Unix, based on code from Cabal";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/test-framework-hunit/default.nix b/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
index e196322190d..e280d497bee 100644
--- a/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-hunit";
-  version = "0.2.6";
-  sha256 = "1ivgyh71wwvrrgnk3fp6hsfssvy39jikhjdzr7x68pv1ca7f247r";
+  version = "0.2.7";
+  sha256 = "1c7424i5vnggzncwiwqqwq7ir7kaijif2waqmss5pn6db3gj33fc";
   buildDepends = [ extensibleExceptions HUnit testFramework ];
   meta = {
     homepage = "http://batterseapower.github.com/test-framework/";
diff --git a/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix b/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
index 20d86feaa1b..db70ec18a98 100644
--- a/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-quickcheck";
-  version = "0.2.7";
-  sha256 = "065nazli8vh9dz8xi71gwzlwy81anfd471jhz6hv3m893cc9vvx8";
+  version = "0.2.8";
+  sha256 = "0ca6s7dnrdr9s2gdpfb74lswlj2lj091crk89m3yqjcadchkh3vl";
   buildDepends = [
     deepseq extensibleExceptions QuickCheck random testFramework
   ];
diff --git a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
index e3787bbd057..8e3698ab000 100644
--- a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-quickcheck2";
-  version = "0.2.10";
-  sha256 = "12c37m74idjydxshgms9ib9ii2rpvy4647kra2ards1w2jmnr6w3";
+  version = "0.2.12";
+  sha256 = "08qr2lh1akjy5daxxk1sy59sg94hvv5s5njs9x6lrx648hy7y8iy";
   buildDepends = [
     extensibleExceptions QuickCheck random testFramework
   ];
diff --git a/pkgs/development/libraries/haskell/test-framework/default.nix b/pkgs/development/libraries/haskell/test-framework/0.4.2.2.nix
index 64a45206b6e..4b920133ffd 100644
--- a/pkgs/development/libraries/haskell/test-framework/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework/0.4.2.2.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework";
-  version = "0.4.2.0";
-  sha256 = "0a74ajlmwsajrj06k22zqwnyxqfrpbd9xplf4b1swafp7y952ind";
+  version = "0.4.2.2";
+  sha256 = "1lwdx4z9j5wxbmmlakf6knirdhi0ic6xpmhrj9ipa5ybw2zszakr";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/test-framework/0.5.nix b/pkgs/development/libraries/haskell/test-framework/0.5.nix
new file mode 100644
index 00000000000..6ac60c1df2d
--- /dev/null
+++ b/pkgs/development/libraries/haskell/test-framework/0.5.nix
@@ -0,0 +1,25 @@
+{ cabal, ansiTerminal, ansiWlPprint, extensibleExceptions, hostname
+, random, regexPosix, time, xml
+}:
+
+cabal.mkDerivation (self: {
+  pname = "test-framework";
+  version = "0.5";
+  sha256 = "19zm9xdhyjhqi2ryd2gkwi7m92s88mmiw1b6b91hjfhfw3c1qlzz";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [
+    ansiTerminal ansiWlPprint extensibleExceptions hostname random
+    regexPosix time xml
+  ];
+  meta = {
+    homepage = "http://batterseapower.github.com/test-framework/";
+    description = "Framework for running and organising tests, with HUnit and QuickCheck support";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/texmath/default.nix b/pkgs/development/libraries/haskell/texmath/default.nix
index 032f79ce077..b72c5ceee04 100644
--- a/pkgs/development/libraries/haskell/texmath/default.nix
+++ b/pkgs/development/libraries/haskell/texmath/default.nix
@@ -2,14 +2,14 @@
 
 cabal.mkDerivation (self: {
   pname = "texmath";
-  version = "0.5.0.4";
-  sha256 = "0wi7zix10p73hb8aiyq47d27k5hi0l0ba5p6h7kdbhia9xm5w5w5";
+  version = "0.6.0.1";
+  sha256 = "0q39a83g7kcj9qpnjg0v7pd0b4w9i090nl2s9v8lpv4n46z6cyaq";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ parsec syb xml ];
   meta = {
     homepage = "http://github.com/jgm/texmath";
-    description = "Conversion of LaTeX math formulas to MathML";
+    description = "Conversion of LaTeX math formulas to MathML or OMML";
     license = "GPL";
     platforms = self.ghc.meta.platforms;
     maintainers = [
diff --git a/pkgs/development/libraries/haskell/vector-algorithms/default.nix b/pkgs/development/libraries/haskell/vector-algorithms/default.nix
index 3688bb12c28..6988cae0276 100644
--- a/pkgs/development/libraries/haskell/vector-algorithms/default.nix
+++ b/pkgs/development/libraries/haskell/vector-algorithms/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "vector-algorithms";
-  version = "0.5.3";
-  sha256 = "14h2x3yrb4fji8bf84xbfp84pax6lzr8njc0c4061xpwcmair36j";
+  version = "0.5.4";
+  sha256 = "0j16jmnmgksbzsq2vvxjmciywi91clak77i6zjjghvn9dpmnsmv2";
   buildDepends = [ primitive vector ];
   meta = {
     homepage = "http://code.haskell.org/~dolio/";
diff --git a/pkgs/development/libraries/haskell/vty/default.nix b/pkgs/development/libraries/haskell/vty/default.nix
index 368c29017ce..209eb667c77 100644
--- a/pkgs/development/libraries/haskell/vty/default.nix
+++ b/pkgs/development/libraries/haskell/vty/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "vty";
-  version = "4.7.0.8";
-  sha256 = "1wh94m2i0ivdkf8hhl9qrsfs7z3mk0xrzgwdfgqw7lhq321i2bnm";
+  version = "4.7.0.10";
+  sha256 = "03cvr4z0fvxfyrikgf89777cp1xqhy22yj83p0dysp0i5ds6cd9v";
   buildDepends = [
     deepseq mtl parallel parsec terminfo utf8String vector
   ];
diff --git a/pkgs/development/libraries/haskell/web-routes/default.nix b/pkgs/development/libraries/haskell/web-routes/default.nix
index a6ac919ba71..0a6d10539e1 100644
--- a/pkgs/development/libraries/haskell/web-routes/default.nix
+++ b/pkgs/development/libraries/haskell/web-routes/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "web-routes";
-  version = "0.26.2";
-  sha256 = "0v7vkd53jf9zf2m0lbiq10qp39ghlnxwafs1hixbz2qfcgsns10j";
+  version = "0.26.3";
+  sha256 = "1ldi4gjraga57qj9drknwp19vmy30fhcp6vw3y7xqcrarvp5n2mx";
   buildDepends = [
     blazeBuilder httpTypes mtl network parsec text utf8String
   ];
diff --git a/pkgs/development/libraries/haskell/xhtml/3000.2.0.5.nix b/pkgs/development/libraries/haskell/xhtml/3000.2.0.5.nix
new file mode 100644
index 00000000000..c5a374eb2d0
--- /dev/null
+++ b/pkgs/development/libraries/haskell/xhtml/3000.2.0.5.nix
@@ -0,0 +1,17 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "xhtml";
+  version = "3000.2.0.5";
+  sha256 = "1gqq910pncqppb2dscxnfxvm1ly4qpb5mwmady2i4irar3gngh9v";
+  meta = {
+    homepage = "https://github.com/haskell/xhtml";
+    description = "An XHTML combinator library";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/xml-conduit/default.nix b/pkgs/development/libraries/haskell/xml-conduit/default.nix
index bf20012aef2..132d3de4a8f 100644
--- a/pkgs/development/libraries/haskell/xml-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/xml-conduit/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "xml-conduit";
-  version = "0.5.1.2";
-  sha256 = "0ww018aj4fy0hngjsj1lc5m7sw36kdc1z2p8nxp4pgsmhj0ccm36";
+  version = "0.5.2";
+  sha256 = "0wr9xbx2dwv0kmnx9jwlm1734a22mc79ydg4sh61335fdjvchfnd";
   buildDepends = [
     attoparsec attoparsecConduit blazeBuilder blazeBuilderConduit
     conduit dataDefault failure systemFilepath text transformers
diff --git a/pkgs/development/libraries/haskell/yap/default.nix b/pkgs/development/libraries/haskell/yap/default.nix
index 27938a2fad0..62dc82b1068 100644
--- a/pkgs/development/libraries/haskell/yap/default.nix
+++ b/pkgs/development/libraries/haskell/yap/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yap";
-  version = "0.1";
-  sha256 = "14x1z5pmb499qq5sy0iksxv0mli8556s1jh9jm7rdg671h1cy1hl";
+  version = "0.2";
+  sha256 = "14lq549jhgnf51pgy1jv31ik8qx71yl7d53w8dpq1f9mlsn1g16i";
   meta = {
     description = "yet another prelude - a simplistic refactoring with algebraic classes";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/yesod-default/default.nix b/pkgs/development/libraries/haskell/yesod-default/default.nix
new file mode 100644
index 00000000000..bfed775756f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/yesod-default/default.nix
@@ -0,0 +1,23 @@
+{ cabal, cmdargs, dataObject, dataObjectYaml, shakespeareCss
+, shakespeareJs, text, transformers, wai, waiExtra, warp, yesodCore
+}:
+
+cabal.mkDerivation (self: {
+  pname = "yesod-default";
+  version = "0.5.0";
+  sha256 = "02j9567nmyxr68q8p8ihbig9b6f9p9ciif8nlp03mfkbq10hwrm3";
+  buildDepends = [
+    cmdargs dataObject dataObjectYaml shakespeareCss shakespeareJs text
+    transformers wai waiExtra warp yesodCore
+  ];
+  meta = {
+    homepage = "http://www.yesodweb.com/";
+    description = "Default config and main functions for your yesod application";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/zlib-bindings/default.nix b/pkgs/development/libraries/haskell/zlib-bindings/default.nix
index 66068cb5d0f..1d4f6659475 100644
--- a/pkgs/development/libraries/haskell/zlib-bindings/default.nix
+++ b/pkgs/development/libraries/haskell/zlib-bindings/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "zlib-bindings";
-  version = "0.0.2";
-  sha256 = "01ksbrlcn9g74ql0388zfa02abmrpkw654y2ayybzgygzdb51mnk";
+  version = "0.0.3.1";
+  sha256 = "1j1z797zi5svxyv5ssfx8lyhmzlc2j7iad4b01aw0jvyp3ad4qan";
   buildDepends = [ zlib ];
   meta = {
     homepage = "http://github.com/snoyberg/zlib-bindings";
diff --git a/pkgs/development/libraries/libbsd/default.nix b/pkgs/development/libraries/libbsd/default.nix
new file mode 100644
index 00000000000..3c28b95c066
--- /dev/null
+++ b/pkgs/development/libraries/libbsd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+let name = "libbsd-0.3.0";
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://libbsd.freedesktop.org/releases/${name}.tar.gz";
+    sha256 = "fbf36ed40443e1d0d795adbae8d461952509e610c3ccf0866ae160b723f7fe38";
+  };
+
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace "/usr" "$out" \
+      --replace "{exec_prefix}" "{prefix}"
+  '';
+
+  meta = { 
+    description = "Common functions found on BSD systems";
+    homepage = http://libbsd.freedesktop.org/;
+    license = "BSD3";
+  };
+}
+
diff --git a/pkgs/development/libraries/libdevil/default.nix b/pkgs/development/libraries/libdevil/default.nix
index a67dc71f699..12008bcbccb 100644
--- a/pkgs/development/libraries/libdevil/default.nix
+++ b/pkgs/development/libraries/libdevil/default.nix
@@ -1,5 +1,6 @@
-{ stdenv, fetchurl
-, libjpeg ? null, libpng ? null, libmng ? null, lcms1 ? null, libtiff ? null, openexr ? null, mesa ? null, xlibs ? null }:
+{ stdenv, fetchurl, libjpeg, libpng, libmng, lcms1, libtiff, openexr, mesa
+, libX11, pkgconfig }:
+
 stdenv.mkDerivation rec {
 
   name ="libdevil-${version}";
@@ -10,14 +11,24 @@ stdenv.mkDerivation rec {
     sha256 = "1zd850nn7nvkkhasrv7kn17kzgslr5ry933v6db62s4lr0zzlbv8";
   };
 
-  buildInputs = [ libjpeg libpng libmng lcms1 libtiff openexr mesa xlibs.libX11 ];
+  buildInputs = [ libjpeg libpng libmng lcms1 libtiff openexr mesa libX11 ];
+  buildNativeInputs = [ pkgconfig ];
+
   configureFlags = [ "--enable-ILU" "--enable-ILUT" ];
 
+  patches =
+    [ ( fetchurl {
+        url = http://patch-tracker.debian.org/patch/series/dl/devil/1.7.8-6.1/03_CVE-2009-3994.diff;
+        sha256 = "0qkx2qfv02igbrmsn6z5a3lbrbwjfh3rb0c2sj54wy0j1f775hbc";
+      } )
+      ./ftbfs-libpng15.patch
+    ];
+
   meta = with stdenv.lib; {
     homepage = http://openil.sourceforge.net/;
-    description = "An image library which can can load, save, convert, manipulate,
-      filter and display a wide variety of image formats.";
+    description = "An image library which can can load, save, convert, manipulate, filter and display a wide variety of image formats";
     license = licenses.lgpl2;
-    maintainers = [ maintainers.phreedom ];
+    platforms = platforms.all;
+    maintainers = [ maintainers.phreedom maintainers.urkud ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/libraries/libdevil/ftbfs-libpng15.patch b/pkgs/development/libraries/libdevil/ftbfs-libpng15.patch
new file mode 100644
index 00000000000..5fc53c2dc6a
--- /dev/null
+++ b/pkgs/development/libraries/libdevil/ftbfs-libpng15.patch
@@ -0,0 +1,31 @@
+Source: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649554
+--- devil-1.7.8.orig/src-IL/src/il_icon.c
++++ devil-1.7.8/src-IL/src/il_icon.c
+@@ -525,7 +525,11 @@
+ 
+ 	// Expand low-bit-depth grayscale images to 8 bits
+ 	if (ico_color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
++		png_set_expand_gray_1_2_4_to_8(ico_png_ptr);
++#else
+ 		png_set_gray_1_2_4_to_8(ico_png_ptr);
++#endif
+ 	}
+ 
+ 	// Expand RGB images with transparency to full alpha channels
+only in patch2:
+unchanged:
+--- devil-1.7.8.orig/src-IL/src/il_png.c
++++ devil-1.7.8/src-IL/src/il_png.c
+@@ -278,7 +278,11 @@
+ 
+ 	// Expand low-bit-depth grayscale images to 8 bits
+ 	if (png_color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4
++		png_set_expand_gray_1_2_4_to_8(png_ptr);
++#else
+ 		png_set_gray_1_2_4_to_8(png_ptr);
++#endif
+ 	}
+ 
+ 	// Expand RGB images with transparency to full alpha channels
diff --git a/pkgs/development/libraries/libjpeg-turbo/default.nix b/pkgs/development/libraries/libjpeg-turbo/default.nix
index 63a8c53afb7..f7135e4018d 100644
--- a/pkgs/development/libraries/libjpeg-turbo/default.nix
+++ b/pkgs/development/libraries/libjpeg-turbo/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, nasm }: 
 
 stdenv.mkDerivation {
-  name = "libjpeg-turbo-1.0.1";
+  name = "libjpeg-turbo-1.1.1";
   
   src = fetchurl {
-    url = mirror://sourceforge/libjpeg-turbo/libjpeg-turbo-1.0.1.tar.gz;
-    sha256 = "094jvqzibqbzmhh7mz3xi76lzlilxzb4j1x8rpdcdkzyig9dizqf";
+    url = mirror://sourceforge/libjpeg-turbo/libjpeg-turbo-1.1.1.tar.gz;
+    sha256 = "553b1f5a968fb9efc089623ed99be2aa6bc21586be92eb04848489c91a63f1e2";
   };
 
   buildInputs = [ nasm ];
diff --git a/pkgs/development/libraries/libnatspec/default.nix b/pkgs/development/libraries/libnatspec/default.nix
new file mode 100644
index 00000000000..fbab569e38c
--- /dev/null
+++ b/pkgs/development/libraries/libnatspec/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, popt }:
+
+stdenv.mkDerivation rec {
+  name = "libnatspec-0.2.6";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/natspec/${name}.tar.bz2";
+    sha256 = "0zvm9afh1skxgdv62ylrpwyykpjhhskxj0zv7yrdf7jhfdriz0y3";
+  };
+
+  buildInputs = [ popt ];
+
+  meta = {
+    homepage = http://natspec.sourceforge.net/ ;
+    description = "A library intended to smooth national specificities in using of programs";
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.urkud ];
+  };
+}
diff --git a/pkgs/development/libraries/libvpx/default.nix b/pkgs/development/libraries/libvpx/default.nix
index 2bbd4d89c3b..0d1a2cacc46 100644
--- a/pkgs/development/libraries/libvpx/default.nix
+++ b/pkgs/development/libraries/libvpx/default.nix
@@ -1,16 +1,16 @@
-{stdenv, fetchurl, bash, yasm, which}:
+{stdenv, fetchurl, bash, yasm, which, perl}:
 
 stdenv.mkDerivation rec {
-  name = "libvpx-0.9.6";
+  name = "libvpx-1.0.0";
   
   src = fetchurl {
-    url = http://webm.googlecode.com/files/libvpx-v0.9.6.tar.bz2;
-    sha256 = "0wxay9wss4lawrcmnwqkpy0rdnaih1k7ilzh284mgyqnya78mg98";
+    url = http://webm.googlecode.com/files/libvpx-v1.0.0.tar.bz2;
+    sha256 = "08gyx90ndv0v8dhbhp3jdh6g37pmcjlfwljzsy0nskm4345dpkh7";
   };
 
   patchPhase = ''
     sed -e 's,/bin/bash,${bash}/bin/bash,' -i configure build/make/version.sh \
-      examples/gen_example_code.sh
+      examples/gen_example_code.sh build/make/gen_asm_deps.sh
     sed -e '/enable linux/d' -i configure
   '';
 
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     make quiet=false DIST_DIR=$out install
   '';
 
-  buildInputs = [ yasm which ];
+  buildInputs = [ yasm which perl ];
 
   meta = {
     description = "VP8 video encoder";
diff --git a/pkgs/development/libraries/lzo/default.nix b/pkgs/development/libraries/lzo/default.nix
index e765cf1a682..1da10147889 100644
--- a/pkgs/development/libraries/lzo/default.nix
+++ b/pkgs/development/libraries/lzo/default.nix
@@ -1,18 +1,32 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "lzo-2.03";
-  
+  name = "lzo-2.06";
+
   src = fetchurl {
     url = "${meta.homepage}/download/${name}.tar.gz";
-    sha256 = "8b1b0da8f757b9ac318e1c15a0eac8bdb56ca902a2dd25beda06c0f265f22591";
+    sha256 = "0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz";
   };
 
-  configureFlags = "--enable-shared";
+  configureFlags = [ "--enable-shared" ];
+
+  doCheck = true;
 
   meta = {
     description = "A data compresion library suitable for real-time data de-/compression";
+    longDescription =
+      '' LZO is a data compression library which is suitable for data
+	 de-/compression in real-time.  This means it favours speed over
+	 compression ratio.
+
+	 LZO is written in ANSI C.  Both the source code and the compressed
+	 data format are designed to be portable across platforms.
+      '';
+
     homepage = http://www.oberhumer.com/opensource/lzo;
     license = "GPLv2+";
+
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/development/libraries/qhull/default.nix b/pkgs/development/libraries/qhull/default.nix
index 002a25988b6..b9d9c19a10d 100644
--- a/pkgs/development/libraries/qhull/default.nix
+++ b/pkgs/development/libraries/qhull/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, cmake}:
 
 stdenv.mkDerivation rec {
-  name = "qhull-2011.1";
+  name = "qhull-2012.1";
 
   src = fetchurl {
     url = "${meta.homepage}/download/${name}-src.tgz";
-    sha256 = "1i2lqw0552mvbcc1q7l4b31fpzf2l2qcabc23r4sybhwyljl9bmd";
+    sha256 = "19hb10vs7ww45ifn7mpvxykn470gd1g568d84mlld6v4pnz7gamv";
   };
 
   buildNativeInputs = [ cmake ];
diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix
index 8f9543b2bef..56d47812b08 100644
--- a/pkgs/development/libraries/v8/default.nix
+++ b/pkgs/development/libraries/v8/default.nix
@@ -5,14 +5,14 @@ assert readline != null;
 let
   system = stdenv.system;
   arch = if system == "i686-linux" then "ia32" else if system == "x86_64-linux" then "x64" else "";
-  version = "3.6.6.17";
+  version = "3.6.6.20";
 in
 assert system == "i686-linux" || system == "x86_64-linux";
 stdenv.mkDerivation rec {
     name = "v8-${version}";
     src = fetchsvn {
       url = "http://v8.googlecode.com/svn/tags/${version}";
-      sha256 = "7080d53b9d3aefc591c2e181dcf97d538ce36177284fc658eca6420ea36a926f";
+      sha256 = "68565086baa5a37a0fa15e1c0b7914210fa590b29a8196014cd83789da6a01ba";
     };
 
     buildInputs = [python scons readline makeWrapper];
diff --git a/pkgs/development/libraries/x264/default.nix b/pkgs/development/libraries/x264/default.nix
index 0bba7af5c3d..a5e045d27d6 100644
--- a/pkgs/development/libraries/x264/default.nix
+++ b/pkgs/development/libraries/x264/default.nix
@@ -1,12 +1,12 @@
 {stdenv, fetchurl, yasm}:
 
 stdenv.mkDerivation rec {
-  version = "snapshot-20110724-2245-stable";
+  version = "snapshot-20120129-2245-stable";
   name = "x264-${version}";
 
   src = fetchurl {
     url = "ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-${version}.tar.bz2";
-    sha256 = "07bylkh8cwcmj01sr41hhrvfbciyixhw1irdpj01kz9d0h8dhhpz";
+    sha256 = "1i63xsa46a5l0ys3mqbcqr4gr5kpaf9fs05cbf0782iir5k07pcr";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix
index 7e523654197..51d6d9a7412 100644
--- a/pkgs/development/tools/build-managers/cmake/default.nix
+++ b/pkgs/development/tools/build-managers/cmake/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://www.cmake.org/;
     description = "Cross-Platform Makefile Generator";
-    platforms = if useQt4 then qt4.meta.platforms else stdenv.lib.platforms.unix;
+    platforms = if useQt4 then qt4.meta.platforms else stdenv.lib.platforms.all;
     maintainers = [ stdenv.lib.maintainers.urkud ];
   };
 }
diff --git a/pkgs/development/tools/haskell/cabal-ghci/default.nix b/pkgs/development/tools/haskell/cabal-ghci/default.nix
index b55127e43bc..3dd9cb9926f 100644
--- a/pkgs/development/tools/haskell/cabal-ghci/default.nix
+++ b/pkgs/development/tools/haskell/cabal-ghci/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cabal-ghci";
-  version = "0.2.0";
-  sha256 = "0920q103g626f8syvn73bwqnix8x6q58xyazys6yinhr7dgi2x6m";
+  version = "0.2.1";
+  sha256 = "0za0bf59f4a3v5zvyy7h1xvxskrazdga4j1cs6psfv9fv80qig9r";
   isLibrary = true;
   isExecutable = true;
   meta = {
diff --git a/pkgs/development/tools/haskell/cabal2nix/default.nix b/pkgs/development/tools/haskell/cabal2nix/default.nix
index 1b98d7821e5..bf7a52f3c03 100644
--- a/pkgs/development/tools/haskell/cabal2nix/default.nix
+++ b/pkgs/development/tools/haskell/cabal2nix/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cabal2nix";
-  version = "1.23";
-  sha256 = "1rnvnzwb4n89hq4wpyq1h6x773r7y23clqj5slsfnas7j3alzz8c";
+  version = "1.25";
+  sha256 = "12csiw7j51vlf8l0prhjj06l7sqii12qy5ryl5n8vrgp8vch2kvl";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [ hackageDb HTTP mtl nixosTypes regexPosix ];
diff --git a/pkgs/development/tools/haskell/hlint/default.nix b/pkgs/development/tools/haskell/hlint/default.nix
index 47034c6ebce..180d0057e1b 100644
--- a/pkgs/development/tools/haskell/hlint/default.nix
+++ b/pkgs/development/tools/haskell/hlint/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hlint";
-  version = "1.8.21";
-  sha256 = "1vjl1qncxia9352469k9v28283f17xk0xhb28by6crchz596xln6";
+  version = "1.8.23";
+  sha256 = "0cbjnzs9ddk4z7kxh935x1kvr566afcvk98z3174f3xp5sbz79wr";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/tools/misc/help2man/default.nix b/pkgs/development/tools/misc/help2man/default.nix
index 6f131e7abe7..36a674d0880 100644
--- a/pkgs/development/tools/misc/help2man/default.nix
+++ b/pkgs/development/tools/misc/help2man/default.nix
@@ -1,21 +1,35 @@
-{stdenv, fetchurl, perl, gettext, LocaleGettext}:
+{ stdenv, fetchurl, perl, gettext, LocaleGettext, makeWrapper }:
 
-stdenv.mkDerivation {
-  name = "help2man-1.36.1";
+stdenv.mkDerivation rec {
+  name = "help2man-1.40.5";
 
   src = fetchurl {
-    url = http://ftp.gnu.org/gnu/help2man/help2man-1.36.1.tar.gz;
-    sha256 = "13w20lfvggzhvzs9dinxbhwdd61svsacfv9d78zfl9lf1syb5i1f";
+    url = "mirror://gnu/help2man/${name}.tar.gz";
+    sha256 = "1d1wn9krvf9mp97c224710n1pcfh73p7w7na65zn2a06124rln8k";
   };
 
-  buildInputs = [
-    perl
-    gettext
-    LocaleGettext
-  ];
+  buildInputs = [ makeWrapper perl gettext LocaleGettext ];
 
-  # So that configure can find `preloadable_libintl.so'.
-  LD_LIBRARY_PATH = "${gettext}/lib";
+  doCheck = false;                                # target `check' is missing
 
-  inherit gettext;
+  postInstall =
+    '' wrapProgram "$out/bin/help2man" \
+         --prefix PERL5LIB : "$(echo ${LocaleGettext}/lib/perl*/site_perl)"
+    '';
+
+
+  meta = {
+    description = "GNU help2man generates man pages from `--help' output";
+
+    longDescription =
+      '' help2man produces simple manual pages from the ‘--help’ and
+         ‘--version’ output of other commands.
+      '';
+
+    homepage = http://www.gnu.org/software/help2man/;
+
+    license = "GPLv3+";
+    platforms = stdenv.lib.platforms.gnu;         # arbitrary choice
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+  };
 }
diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix
index ae5048f6306..f323a7d7dbc 100644
--- a/pkgs/development/tools/misc/pkgconfig/default.nix
+++ b/pkgs/development/tools/misc/pkgconfig/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation (rec {
   meta = {
     description = "A tool that allows packages to find out information about other packages";
     homepage = http://pkg-config.freedesktop.org/wiki/;
+    platforms = stdenv.lib.platforms.all;
   };
 
 } // (if stdenv.system == "mips64el-linux" then
diff --git a/pkgs/development/tools/parsing/happy/1.18.9.nix b/pkgs/development/tools/parsing/happy/1.18.9.nix
new file mode 100644
index 00000000000..cb47eaa8bdb
--- /dev/null
+++ b/pkgs/development/tools/parsing/happy/1.18.9.nix
@@ -0,0 +1,21 @@
+{ cabal, mtl, perl }:
+
+cabal.mkDerivation (self: {
+  pname = "happy";
+  version = "1.18.9";
+  sha256 = "12k1rg7dqa02az9d1zasdnp51zs4h30kpi5lyqsw3jxfp09cad3x";
+  isLibrary = false;
+  isExecutable = true;
+  buildDepends = [ mtl ];
+  buildTools = [ perl ];
+  meta = {
+    homepage = "http://www.haskell.org/happy/";
+    description = "Happy is a parser generator for Haskell";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
+  };
+})
diff --git a/pkgs/tools/pydb/default.nix b/pkgs/development/tools/pydb/default.nix
index 7aa2d57955f..7aa2d57955f 100644
--- a/pkgs/tools/pydb/default.nix
+++ b/pkgs/development/tools/pydb/default.nix
diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix
index c7fe9158ffe..914b2cc26c3 100644
--- a/pkgs/development/web/nodejs/default.nix
+++ b/pkgs/development/web/nodejs/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, openssl, python, zlib, v8 }:
 
 stdenv.mkDerivation rec {
-  version = "0.6.6";
+  version = "0.6.9";
   name = "nodejs-${version}";
 
   src = fetchurl {
     url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
-    sha256 = "00i14bjhyadxrh0df1ig4ndv1c0b7prnnhyar5lxcgxnn4cabgks";
+    sha256 = "484ab6b3da6195339544c16aff17f747aa85d1dd15d765d6724aa8a4ecda03ca";
   };
 
   configureFlags = [
diff --git a/pkgs/games/oilrush/default.nix b/pkgs/games/oilrush/default.nix
new file mode 100644
index 00000000000..4605f04e3ae
--- /dev/null
+++ b/pkgs/games/oilrush/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, getConfig, fetchurl, libX11, libXext, libXinerama, libXrandr
+, libXrender, fontconfig, freetype, openal }:
+stdenv.mkDerivation {
+  name = "oilrush";
+  src = 
+  let
+    url = getConfig [ "oilrush" "url" ] null;
+    sha256 = getConfig [ "oilrush" "sha256" ] null;
+  in
+    assert url != null && sha256 != null;
+    fetchurl { inherit url sha256; };
+  shell = stdenv.shell;
+  arch = if stdenv.system == "x86_64-linux" then "x64"
+         else if stdenv.system == "i686-linux" then "x86"
+         else "";
+  unpackPhase = ''
+    mkdir oilrush
+    cd oilrush
+    "$shell" "$src" --tar xf
+  '';
+  patchPhase = ''
+    cd bin
+    for f in launcher_$arch libQtCoreUnigine_$arch.so.4 OilRush_$arch
+    do
+      patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $f
+    done
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXrender}/lib:${fontconfig}/lib:${freetype}/lib\
+             launcher_$arch
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib\
+             libNetwork_$arch.so
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib\
+             libQtCoreUnigine_$arch.so.4
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXrender}/lib:${fontconfig}/lib:${freetype}/lib\
+             libQtGuiUnigine_$arch.so.4
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib\
+             libQtNetworkUnigine_$arch.so.4
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXrender}/lib:${fontconfig}/lib:${freetype}/lib\
+             libQtWebKitUnigine_$arch.so.4
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib\
+             libQtXmlUnigine_$arch.so.4
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib\
+             libRakNet_$arch.so
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXinerama}/lib:${libXrandr}/lib\
+             libUnigine_$arch.so
+    patchelf --set-rpath ${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib:${libX11}/lib:${libXext}/lib:${libXinerama}/lib:${libXrandr}/lib\
+             OilRush_$arch
+  '';
+  installPhase = ''
+    cd ..
+    mkdir -p "$out/opt/oilrush"
+    cp -r * "$out/opt/oilrush"
+    mkdir -p "$out/bin"
+    cat << EOF > "$out/bin/oilrush"
+    #! /bin/sh
+    LD_LIBRARY_PATH=.:${openal}/lib:\$LD_LIBRARY_PATH
+    cd "$out/opt/oilrush"
+    exec ./launcher_$arch.sh "\$@"
+    EOF
+    chmod +x "$out/bin/oilrush"
+  '';
+  meta = {
+    description = "A naval strategy game";
+    longDescription = ''
+      Oil Rush is a real-time naval strategy game based on group control. It
+      combines the strategic challenge of a classical RTS with the sheer fun
+      of Tower Defense. 
+    '';
+    homepage = http://oilrush-game.com/;
+    license = [ "proprietary" ];
+    #maintainers = with stdenv.lib.maintainers; [ astsmtl ];
+    #platforms = with stdenv.lib.platforms; linux;
+  };
+
+}
diff --git a/pkgs/misc/emulators/generator/default.nix b/pkgs/misc/emulators/generator/default.nix
deleted file mode 100644
index b4bf72d79d6..00000000000
--- a/pkgs/misc/emulators/generator/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, gtk, SDL, nasm, zlib, bzip2, libjpeg}:
-
-stdenv.mkDerivation { 
-  name = "generator-0.35-cbiere-r3";
-  src = fetchurl {
-    url = http://www.ghostwhitecrab.com/generator/generator-0.35-cbiere-r3.tar.bz2;
-    sha256 = "0jw2ibbjyms9sklapnb6pzkmk680zsqq9pd51r2n4957zv1f36jd";
-  };
-  configureFlags = "--with-gtk --with-raze --with-sdl-audio";
-  buildInputs = [gtk SDL nasm zlib bzip2 libjpeg];
-  # Only required when not using SDL audio.
-#  patches = [./soundcard.patch];
-}
diff --git a/pkgs/misc/emulators/generator/soundcard.patch b/pkgs/misc/emulators/generator/soundcard.patch
deleted file mode 100644
index 73cf8fad695..00000000000
--- a/pkgs/misc/emulators/generator/soundcard.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -rc generator-orig/main/gensoundp-unix.c generator-0.35-cbiere/main/gensoundp-unix.c
-*** generator-orig/main/gensoundp-unix.c	2004-09-26 19:07:44.000000000 +0200
---- generator-0.35-cbiere/main/gensoundp-unix.c	2004-09-26 19:07:56.000000000 +0200
-***************
-*** 196,202 ****
-  #include <soundcard.h>
-  #else
-  
-! #ifdef HAVE_SOUNDCARD_H
-  #include <sys/soundcard.h>
-  #endif
-  
---- 196,202 ----
-  #include <soundcard.h>
-  #else
-  
-! #ifdef HAVE_SYS_SOUNDCARD_H
-  #include <sys/soundcard.h>
-  #endif
-  
diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix
index 39cc2dd4080..96749dca2b7 100644
--- a/pkgs/os-specific/linux/broadcom-sta/default.nix
+++ b/pkgs/os-specific/linux/broadcom-sta/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, kernel }:
 
-let version = "5_100_82_38";
+let version = "5_100_82_112";
     bits = if stdenv.system == "i686-linux" then "32" else
       assert stdenv.system == "x86_64-linux"; "64";
 in
@@ -10,15 +10,15 @@ stdenv.mkDerivation {
   src = fetchurl {
     url = "http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_${bits}-v${version}.tar.gz";
     sha256 = if bits == "32"
-      then "0dzvnk0vmi5dlbsi9k2agvs5xsqn07mv66g9v1jzn1gsl8fsydpp"
-      else "19rm9m949yqahgii7wr14lj451sd84s72mqj15yd0dnpm4k5n5hw";
+      then "1rvhw9ngw0djxyyjx5m01c0js89zs3xiwmra03al6f9q7cbf7d45"
+      else "1qsarnry10f5m8a73wbr9cg2ifs00sqg6x0ay59l72vl9hb2zlww";
   };
 
   buildInputs = [ kernel ];
-  patches = [ ./makefile.patch ]
-    ++ stdenv.lib.optional
-    (! builtins.lessThan (builtins.compareVersions kernel.version "2.6.37") 0)
-      [ ./mutex-sema.patch ];
+  patches = [ ./makefile.patch ./linux-2.6.39.patch ./linux-3.2.patch ];
+    #++ stdenv.lib.optional
+    #(! builtins.lessThan (builtins.compareVersions kernel.version "2.6.37") 0)
+      #[ ./mutex-sema.patch ];
 
   makeFlags = "KDIR=${kernel}/lib/modules/${kernel.modDirVersion}/build";
 
diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch b/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch
new file mode 100644
index 00000000000..ca07c918c36
--- /dev/null
+++ b/pkgs/os-specific/linux/broadcom-sta/linux-2.6.39.patch
@@ -0,0 +1,11 @@
+--- old/src/wl/sys/wl_cfg80211.c
++++ new/src/wl/sys/wl_cfg80211.c
+@@ -1811,7 +1811,7 @@
+ 	notif_bss_info->frame_len = offsetof(struct ieee80211_mgmt, u.beacon.variable) +
+ 	                            wl_get_ielen(wl);
+ 	freq = ieee80211_channel_to_frequency(notif_bss_info->channel 
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
+ 		,(notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ
+ #endif
+ 	);
diff --git a/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch b/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch
new file mode 100644
index 00000000000..b491537cb86
--- /dev/null
+++ b/pkgs/os-specific/linux/broadcom-sta/linux-3.2.patch
@@ -0,0 +1,13 @@
+diff -Naur broadcom-sta-5.100.82.112.orig/src/wl/sys/wl_linux.c broadcom-sta-5.100.82.112/src/wl/sys/wl_linux.c
+--- broadcom-sta-5.100.82.112.orig/src/wl/sys/wl_linux.c	2011-10-23 01:56:55.000000000 +0900
++++ broadcom-sta-5.100.82.112/src/wl/sys/wl_linux.c	2011-11-22 00:56:07.021520421 +0900
+@@ -385,7 +385,9 @@
+ #endif
+ 	.ndo_get_stats = wl_get_stats,
+ 	.ndo_set_mac_address = wl_set_mac_address,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
+ 	.ndo_set_multicast_list = wl_set_multicast_list,
++#endif
+ 	.ndo_do_ioctl = wl_ioctl
+ };
+ 
diff --git a/pkgs/os-specific/linux/frandom/default.nix b/pkgs/os-specific/linux/frandom/default.nix
new file mode 100644
index 00000000000..9f07e7c8eb0
--- /dev/null
+++ b/pkgs/os-specific/linux/frandom/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, kernel }:
+
+stdenv.mkDerivation rec {
+  name = "frandom-1.1";
+
+  src = fetchurl {
+    url = "http://sourceforge.net/projects/frandom/files/${name}.tar.gz";
+    sha256 = "15rgyk4hfawqg7z1spk2xlk1nn6rcdls8gdhc70f91shrc9pvlls";
+  };
+
+  preBuild = ''
+    kernelVersion=$(cd ${kernel}/lib/modules && ls)
+    substituteInPlace Makefile \
+      --replace "\$(shell uname -r)" "$kernelVersion" \
+      --replace "/lib/modules" "${kernel}/lib/modules"
+  '';
+ 
+  installPhase = ''
+    kernelVersion=$(cd ${kernel}/lib/modules && ls)
+    ensureDir $out/lib/modules/$kernelVersion/misc
+    cp frandom.ko $out/lib/modules/$kernelVersion/misc
+
+    ensureDir $out/lib/udev/rules.d
+    tee $out/lib/udev/rules.d/10-frandom.rules <<-EOF
+    #
+    # These are the rules for the frandom devices. In theory, we could let
+    # udev's catch-all rule create the /dev node based upon the kernel name,
+    # which gives correct result, except that the default MODE set in
+    # 50-udev.rules (0600) is too restrictive.
+    #
+    KERNEL=="[ef]random", MODE="444", OPTIONS="last_rule"
+    EOF
+  '';
+
+  buildInputs = [];
+
+  meta = {
+    description = "A very fast random number generator kernel module.";
+    homepage = http://frandom.sourceforge.net/;
+    license = "GPLv2";
+    maintainers = [ stdenv.lib.maintainers.bluescreen303 ];
+  };
+}
+
diff --git a/pkgs/os-specific/linux/i7z/default.nix b/pkgs/os-specific/linux/i7z/default.nix
new file mode 100644
index 00000000000..2d0fde3c783
--- /dev/null
+++ b/pkgs/os-specific/linux/i7z/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, qt4, ncurses}:
+
+stdenv.mkDerivation rec {
+  name = "i7z-0.27.1";
+
+  src = fetchurl {
+    url = "http://i7z.googlecode.com/files/${name}.tar.gz";
+    sha256 = "0n3pry1qmpq4basnny3gddls2zlwz0813ixnas87092rvlgjhbc6";
+  };
+
+  buildInputs = [qt4 ncurses];
+
+  patchPhase = ''
+    substituteInPlace Makefile --replace "/usr/sbin" "$out/sbin"
+  '';
+
+  buildPhase = ''
+    make
+    cd GUI
+    qmake
+    make clean
+    make
+    cd ..
+  '';
+
+  installPhase = ''
+    pwd
+    ensureDir $out/sbin
+    make install
+    install -Dm755 GUI/i7z_GUI $out/sbin/i7z-gui
+  '';
+
+  meta = {
+    description = "A better i7 (and now i3, i5) reporting tool for Linux";
+    homepage = http://code.google.com/p/i7z;
+    license = "GPLv2";
+    maintainers = [ stdenv.lib.maintainers.bluescreen303 ];
+  };
+}
+
diff --git a/pkgs/os-specific/linux/microcode/converter.nix b/pkgs/os-specific/linux/microcode/converter.nix
new file mode 100644
index 00000000000..ea00c7a6ae4
--- /dev/null
+++ b/pkgs/os-specific/linux/microcode/converter.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "microcode2ucode-20120205";
+  src = fetchurl {
+    url = "http://gentoo-overlays.zugaina.org/gentoo/portage/sys-apps/microcode-data/files/intel-microcode2ucode.c";
+    sha256 = "c51b1b1d8b4b28e7d5d007917c1e444af1a2ff04a9408aa9067c0e57d70164de";
+  };
+
+  sourceRoot = ".";
+
+  unpackPhase = ''
+    # nothing to unpack
+  '';
+
+  buildPhase = ''
+    gcc -Wall -O2 $src -o intel-microcode2ucode
+  '';
+  
+  installPhase = ''
+    ensureDir "$out/bin"
+    cp intel-microcode2ucode "$out/bin/"
+  '';
+
+  meta = {
+    homepage = http://www.intel.com;
+    description = "Microcode converter for Intel .dat files";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/os-specific/linux/microcode/intel.nix b/pkgs/os-specific/linux/microcode/intel.nix
new file mode 100644
index 00000000000..9a57fef67a1
--- /dev/null
+++ b/pkgs/os-specific/linux/microcode/intel.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, microcode2ucode }:
+
+let version = "20111110";
+    num = "20728";
+in stdenv.mkDerivation {
+  name = "microcode-intel-${version}";
+  src = fetchurl {
+    url = "http://downloadmirror.intel.com/${num}/eng/microcode-${version}.tgz";
+    sha256 = "16f532cdf9cce03e01e714619ad9406a465aa965bbd1288035398db79921cbc1";
+  };
+
+  buildInputs = [ microcode2ucode ];
+  sourceRoot = ".";
+
+  buildPhase = ''
+    intel-microcode2ucode microcode.dat
+  '';
+
+  installPhase = ''
+    ensureDir $out
+    cp -r intel-ucode "$out/"
+  '';
+
+  meta = {
+    homepage = http://www.intel.com;
+    description = "Microcode for Intel processors";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/os-specific/linux/wpa_supplicant/default.nix b/pkgs/os-specific/linux/wpa_supplicant/default.nix
index d37f53ae5f5..eb5a51ae6ea 100644
--- a/pkgs/os-specific/linux/wpa_supplicant/default.nix
+++ b/pkgs/os-specific/linux/wpa_supplicant/default.nix
@@ -89,5 +89,10 @@ gui = stdenv.mkDerivation {
     mkdir -pv $out/share/icons
     cp -av icons/hicolor $out/share/icons
   '';
+
+  meta = {
+    description = "Qt4 wpa_supplicant client";
+    inherit (qt4.meta) platforms;
+  };
 };
 }
diff --git a/pkgs/os-specific/windows/mingwrt/default.nix b/pkgs/os-specific/windows/mingwrt/default.nix
index 434c439cd78..286c63d0163 100644
--- a/pkgs/os-specific/windows/mingwrt/default.nix
+++ b/pkgs/os-specific/windows/mingwrt/default.nix
@@ -1,14 +1,14 @@
 {stdenv, fetchurl, binutilsCross ? null, gccCross ? null, onlyHeaders ? false}:
 
 let
-  name = "mingwrt-3.18";
+  name = "mingwrt-3.20";
 in
 stdenv.mkDerivation (rec {
   inherit name;
 
   src = fetchurl {
-    url = "mirror://sourceforge/mingw/${name}-mingw32-src.tar.gz";
-    sha256 = "0hmxgkxnf6an70g07gmyik46sw1qm204izh6sp923szddvypjjfy";
+    url = "mirror://sourceforge/mingw/MinGW/Base/mingw-rt/${name}-mingw32-src.tar.gz";
+    sha256 = "02pydg1m8y35nxb4k34nlb5c341y2waq76z42mgdzlcf661r91pi";
   };
 
 } //
diff --git a/pkgs/os-specific/windows/pthread-w32/default.nix b/pkgs/os-specific/windows/pthread-w32/default.nix
new file mode 100644
index 00000000000..39afd119643
--- /dev/null
+++ b/pkgs/os-specific/windows/pthread-w32/default.nix
@@ -0,0 +1,53 @@
+{ fetchurl, stdenv, mingw_headers }:
+
+# This file is tweaked for cross-compilation only.
+assert stdenv ? cross;
+
+stdenv.mkDerivation {
+  name = "pthread-w32-1.10.0";
+
+  src = fetchurl {
+    url = "ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-1-10-0-release.tar.gz";
+    sha256 = "1vllxxfa9a7mssb1x98a2r736vsv5ll3sjizbr7a8hw8j9p18j7n";
+  };
+
+  configurePhase =
+    '' sed -i GNUmakefile \
+           -e 's/CC=gcc/CC=i686-pc-mingw32-gcc/g ;
+               s/windres/i686-pc-mingw32-windres/g ;
+               s/dlltool/i686-pc-mingw32-dlltool/g'
+    '';
+
+  buildInputs = [ mingw_headers ];
+
+  buildPhase = "make GC";        # to build the GNU C dll with C cleanup code
+
+  installPhase =
+    '' mkdir -p "$out" "$out/include" "$out/lib"
+       cp -v *pthread*{dll,a} "$out/lib"
+       cp -v pthread.h semaphore.h sched.h "$out/include"
+    '';
+
+  meta = {
+    description = "POSIX threads for Woe32";
+
+    longDescription =
+      '' The POSIX 1003.1-2001 standard defines an application programming
+         interface (API) for writing multithreaded applications.  This
+         interface is known more commonly as pthreads.  A good number of
+         modern operating systems include a threading library of some kind:
+         Solaris (UI) threads, Win32 threads, DCE threads, DECthreads, or any
+         of the draft revisions of the pthreads standard.  The trend is that
+         most of these systems are slowly adopting the pthreads standard API,
+         with application developers following suit to reduce porting woes.
+
+         Woe32 does not, and is unlikely to ever, support pthreads natively.
+         This project seeks to provide a freely available and high-quality
+         solution to this problem.
+      '';
+
+    homepage = http://sourceware.org/pthreads-win32/;
+
+    license = "LGPLv2.1+";
+  };
+}
diff --git a/pkgs/os-specific/windows/w32api/default.nix b/pkgs/os-specific/windows/w32api/default.nix
index 56ab80c7235..a4f4245125d 100644
--- a/pkgs/os-specific/windows/w32api/default.nix
+++ b/pkgs/os-specific/windows/w32api/default.nix
@@ -1,16 +1,19 @@
-{stdenv, fetchurl, binutilsCross ? null, gccCross ? null, onlyHeaders ? false}:
+{ stdenv, fetchurl, xz, binutilsCross ? null
+, gccCross ? null, onlyHeaders ? false }:
 
 let
-  name = "w32api-3.14";
+  name = "w32api-3.17-2";
 in
 stdenv.mkDerivation ({
   inherit name;
- 
+
   src = fetchurl {
-    url = "mirror://sourceforge/mingw/${name}-mingw32-src.tar.gz";
-    sha256 = "128ax8a4dlspxsi5fi7bi1aslppqx3kczr1ibzj1z1az48bvwp21";
+    url = "mirror://sourceforge/mingw/MinGW/Base/w32api/w32api-3.17/${name}-mingw32-src.tar.lzma";
+    sha256 = "09rhnl6zikmdyb960im55jck0rdy5z9nlg3akx68ixn7khf3j8wb";
   };
 
+  buildNativeInputs = [ xz ];
+
 } //
 (if onlyHeaders then {
   name = name + "-headers";
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
new file mode 100644
index 00000000000..e2e111a81fb
--- /dev/null
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "redis";
+  version = "2.4.7";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://redis.googlecode.com/files/redis-2.4.7.tar.gz";
+    sha256 = "f91956377b7ff23cc23e0c8758e0b873032f36545c61d88436ebb741bf4dd5e1";
+  };
+
+  makeFlags = "PREFIX=$(out)";
+
+  meta = {
+    homepage = http://redis.io;
+    description = "An open source, advanced key-value store";
+    license = "BSD";
+
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/servers/sql/mysql55/default.nix b/pkgs/servers/sql/mysql55/default.nix
index f1bc60673cb..df390e4abf2 100644
--- a/pkgs/servers/sql/mysql55/default.nix
+++ b/pkgs/servers/sql/mysql55/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ cmake bison ncurses openssl readline zlib ] ++ stdenv.lib.optionals stdenv.isDarwin [ darwinInstallNameToolUtility perl ];
   
-  cmakeFlags = "-DWITH_SSL=yes -DWITH_READLINE=yes -DWITH_EMBEDDED_SERVER=yes -DWITH_ZLIB=yes -DINSTALL_SCRIPTDIR=bin";
+  cmakeFlags = "-DWITH_SSL=yes -DWITH_READLINE=yes -DWITH_EMBEDDED_SERVER=yes -DWITH_ZLIB=yes -DINSTALL_SCRIPTDIR=bin -DHAVE_IPV6=yes";
   
   NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
 
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 296dac46cba..4fbc6fbdfda 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -1398,11 +1398,11 @@ let
   })) // {inherit inputproto xorgserver xproto ;};
     
   xf86inputsynaptics = (stdenv.mkDerivation ((if overrides ? xf86inputsynaptics then overrides.xf86inputsynaptics else x: x) {
-    name = "xf86-input-synaptics-1.3.0";
+    name = "xf86-input-synaptics-1.5.0";
     builder = ./builder.sh;
     src = fetchurl {
-      url = mirror://xorg/X11R7.6/src/everything/xf86-input-synaptics-1.3.0.tar.bz2;
-      sha256 = "1mwgb85qjyzx2yfi7jhgvd435zdyqxyq9aqwlsldmlpkqi8358rh";
+      url = mirror://xorg/individual/driver/xf86-input-synaptics-1.5.0.tar.bz2;
+      sha256 = "0khwda8lrrvrdb37i4i1kdhg8f44kgcjq9y209ds7ja9zjcm7k4m";
     };
     buildInputs = [pkgconfig inputproto randrproto recordproto libX11 libXi xorgserver xproto libXtst ];
   })) // {inherit inputproto randrproto recordproto libX11 libXi xorgserver xproto libXtst ;};
diff --git a/pkgs/servers/x11/xorg/tarballs-7.6.list b/pkgs/servers/x11/xorg/tarballs-7.6.list
index 27cd5ca5d82..613c3107c86 100644
--- a/pkgs/servers/x11/xorg/tarballs-7.6.list
+++ b/pkgs/servers/x11/xorg/tarballs-7.6.list
@@ -121,7 +121,7 @@ mirror://xorg/individual/driver/xf86-input-evdev-2.6.0.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-input-joystick-1.5.0.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-input-keyboard-1.5.0.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-input-mouse-1.6.0.tar.bz2
-mirror://xorg/X11R7.6/src/everything/xf86-input-synaptics-1.3.0.tar.bz2
+mirror://xorg/individual/driver/xf86-input-synaptics-1.5.0.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-input-vmmouse-12.6.10.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-input-void-1.3.1.tar.bz2
 mirror://xorg/X11R7.6/src/everything/xf86-video-apm-1.2.3.tar.bz2
diff --git a/pkgs/tools/X11/bumblebee/config.patch b/pkgs/tools/X11/bumblebee/config.patch
new file mode 100644
index 00000000000..61b671f80c1
--- /dev/null
+++ b/pkgs/tools/X11/bumblebee/config.patch
@@ -0,0 +1,30 @@
+--- bumblebee-3.0/src/driver.c.orig	2012-02-03 14:51:10.282464426 +0100
++++ bumblebee-3.0/src/driver.c	2012-02-04 22:26:02.715498536 +0100
+@@ -23,6 +23,7 @@
+ #include "module.h"
+ #include "bblogger.h"
+ #include "driver.h"
++#include <stdlib.h>
+ 
+ /**
+  * Check what drivers are available and autodetect if possible. Driver, module
+@@ -30,6 +31,7 @@
+  */
+ void driver_detect(void) {
+   /* determine driver to be used */
++  set_string_value(&bb_config.driver, getenv("BUMBLEBEE_DRIVER"));
+   if (*bb_config.driver) {
+     bb_log(LOG_DEBUG, "Skipping auto-detection, using configured driver"
+             " '%s'\n", bb_config.driver);
+@@ -65,8 +67,8 @@
+     }
+   }
+ 
+-  if (strcmp(bb_config.driver, "nvidia")) {
+-    set_string_value(&bb_config.ld_path, CONF_LDPATH_NVIDIA);
+-    set_string_value(&bb_config.mod_path, CONF_MODPATH_NVIDIA);
++  if (!strcmp(bb_config.driver, "nvidia")) {
++    set_string_value(&bb_config.ld_path, getenv("BUMBLEBEE_LDPATH_NVIDIA"));
++    set_string_value(&bb_config.mod_path, getenv("BUMBLEBEE_MODPATH_NVIDIA"));
+   }
+ }
diff --git a/pkgs/tools/X11/bumblebee/default.nix b/pkgs/tools/X11/bumblebee/default.nix
new file mode 100644
index 00000000000..2e0c700641f
--- /dev/null
+++ b/pkgs/tools/X11/bumblebee/default.nix
@@ -0,0 +1,136 @@
+# The bumblebee package allows a program to be rendered on an
+# dedicated video card by spawning an additional X11 server
+# and streaming the results via VirtualGL to the primary server.
+
+# The package is rather chaotic; it's also quite recent.
+# As it may change a lot, some of the hacks in this nix expression
+# will hopefully not be needed in the future anymore.
+
+# To test: make sure that the 'bbswitch' kernel module is installed,
+# then run 'bumblebeed' as root and 'optirun glxgears' as user.
+# To use at startup, add e.g. to configuration.nix:
+# jobs = {
+#   bumblebeed = {
+#     name = "bumblebeed";
+#     description = "Manages the Optimus video card";
+#     startOn = "started udev and started syslogd";
+#     stopOn = "starting shutdown";
+#     exec = "bumblebeed --use-syslog";
+#     path = [ pkgs.bumblebee ];
+#     environment = { MODULE_DIR = "${config.system.modulesTree}/lib/modules"; };
+#     respawn = true;
+#   };
+# };
+
+# This nix expression supports for now only the native nvidia driver.
+# It should not be hard to generalize this approach to support the
+# nouveau driver as well (parameterize commonEnv over the module
+# package, and parameterize the two wrappers as well)
+
+{ stdenv, fetchurl, pkgconfig, help2man
+, libX11, glibc, gtkLibs, libbsd
+, makeWrapper, buildEnv, module_init_tools
+, linuxPackages, virtualgl, xorg, xkeyboard_config
+}:
+
+let
+  version = "3.0";
+  name = "bumblebee-${version}";
+
+  # isolated X11 environment with the nvidia module
+  # it should include all components needed for bumblebeed and
+  # optirun to spawn the second X server and to connect to it.
+  commonEnv = buildEnv {
+    name = "bumblebee-env";
+    paths = [
+      module_init_tools
+
+      linuxPackages.nvidia_x11
+      xorg.xorgserver
+      xorg.xrandr
+      xorg.xrdb
+      xorg.setxkbmap
+      xorg.libX11
+      xorg.libXext
+
+      virtualgl
+    ];
+
+    # the nvidia GLX module overwrites the one of xorgserver,
+    # thus nvidia_x11 must be before xorgserver in the paths.
+    ignoreCollisions = true;
+  };
+
+  # Custom X11 configuration for the additional xserver instance.
+  xorgConf = ./xorg.conf.nvidia;
+
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://github.com/downloads/Bumblebee-Project/Bumblebee/${name}.tar.gz";
+    sha256 = "a27ddb77b282ac8b972857fdb0dc5061cf0a0982b7ac3e1cfa698b4f786e49a1";
+  };
+
+  # 'config.patch' makes bumblebee read the active module and the nvidia configuration
+  # from the environment variables instead of the config file:
+  #   BUMBLEBEE_DRIVER, BUMBLEBEE_LDPATH_NVIDIA, BUMBLEBEE_MODPATH_NVIDIA
+  # These variables must be set when bumblebeed and optirun are executed.
+  patches = [ ./config.patch ./xopts.patch ];
+
+  preConfigure = ''
+    # Substitute the path to the actual modinfo program in module.c.
+    # Note: module.c also calls rmmod and modprobe, but those just have to
+    # be in PATH, and thus no action for them is required.
+    substituteInPlace src/module.c \
+      --replace "/sbin/modinfo" "${module_init_tools}/sbin/modinfo"
+
+    # Don't use a special group, just reuse wheel.
+    substituteInPlace configure \
+      --replace 'CONF_GID="bumblebee"' 'CONF_GID="wheel"'
+
+    # Ensures that the config file ends up with a nonempty
+    # name of the nvidia module. This is needed, because the
+    # configuration handling code otherwise resets the
+    # data that we obtained from the environment (see config.patch)
+    export CONF_DRIVER_MODULE_NVIDIA=nvidia
+  '';
+
+  # Build-time dependencies of bumblebeed and optirun.
+  # Note that it has several runtime dependencies.
+  buildInputs = [ stdenv makeWrapper pkgconfig help2man libX11 gtkLibs.glib libbsd ];
+
+  # create a wrapper environment for bumblebeed and optirun
+  postInstall = ''
+    # remove some entries from the configuration file that would otherwise
+    # cause our environment variables to be ignored.
+    substituteInPlace "$out/etc/bumblebee/bumblebee.conf" \
+      --replace "LibraryPath=" "" \
+      --replace "XorgModulePath=" ""
+
+    wrapProgram "$out/sbin/bumblebeed" \
+      --prefix PATH : "${commonEnv}/sbin:${commonEnv}/bin:\$PATH" \
+      --prefix LD_LIBRARY_PATH : "${commonEnv}/lib:\$LD_LIBRARY_PATH" \
+      --set BUMBLEBEE_DRIVER "nvidia" \
+      --set BUMBLEBEE_LDPATH_NVIDIA "${commonEnv}/lib" \
+      --set BUMBLEBEE_MODPATH_NVIDIA "${commonEnv}/lib/xorg/modules" \
+      --set FONTCONFIG_FILE "/etc/fonts/fonts.conf" \
+      --set XKB_BINDIR "${xorg.xkbcomp}/bin" \
+      --set XKB_DIR "${xkeyboard_config}/etc/X11/xkb"
+
+    wrapProgram "$out/bin/optirun" \
+      --prefix PATH : "${commonEnv}/sbin:${commonEnv}/bin" \
+      --prefix LD_LIBRARY_PATH : "${commonEnv}/lib" \
+      --set BUMBLEBEE_DRIVER "nvidia" \
+      --set BUMBLEBEE_LDPATH_NVIDIA "${commonEnv}/lib" \
+      --set BUMBLEBEE_MODPATH_NVIDIA "${commonEnv}/lib/xorg/modules"
+
+    cp ${xorgConf} "$out/etc/bumblebee/xorg.conf.nvidia"
+  '';
+
+  meta = {
+    homepage = http://github.com/Bumblebee-Project/Bumblebee;
+    description = "Daemon for managing Optimus videocards (power-on/off, spawns xservers)";
+    license = "free";
+  };
+}
diff --git a/pkgs/tools/X11/bumblebee/xopts.patch b/pkgs/tools/X11/bumblebee/xopts.patch
new file mode 100644
index 00000000000..9e44a8e9fd1
--- /dev/null
+++ b/pkgs/tools/X11/bumblebee/xopts.patch
@@ -0,0 +1,11 @@
+--- bumblebee-3.0/src/bbsecondary.c.orig	2012-02-05 00:03:06.003439638 +0100
++++ bumblebee-3.0/src/bbsecondary.c	2012-02-05 00:46:38.017382619 +0100
+@@ -149,6 +149,8 @@
+       "-sharevts",
+       "-nolisten", "tcp",
+       "-noreset",
++      "-xkbdir", getenv("XKB_DIR"),
++      "-logfile", "/dev/null",
+       "-verbose", "3",
+       "-isolateDevice", pci_id,
+       "-modulepath",
diff --git a/pkgs/tools/X11/bumblebee/xorg.conf.nvidia b/pkgs/tools/X11/bumblebee/xorg.conf.nvidia
new file mode 100644
index 00000000000..31c417d6971
--- /dev/null
+++ b/pkgs/tools/X11/bumblebee/xorg.conf.nvidia
@@ -0,0 +1,49 @@
+Section "DRI"
+    Mode 0666
+EndSection
+
+Section "ServerLayout"
+    Identifier "Layout0"
+    Screen "Screen1"
+    Option "AutoAddDevices" "false"
+EndSection
+
+Section "Module"
+    Load "dbe"
+    Load "extmod"
+    Load "glx"
+    Load "record"
+    Load "freetype"
+    Load "type1"
+EndSection
+
+Section "Files"
+EndSection
+
+Section "Device"
+    Identifier "Device1"
+    Driver "nvidia"
+    VendorName "NVIDIA Corporation"
+    Option "NoLogo" "true"
+    Option "UseEDID" "false"
+    Option "ConnectedMonitor" "CRT-0"
+EndSection
+
+Section "Screen"
+    Identifier "Screen1"
+    Device "Device1"
+    Monitor "Monitor0"
+    DefaultDepth 24
+    SubSection "Display"
+        Depth 24
+    EndSubSection
+EndSection
+
+Section "Extensions"
+    Option "Composite" "Enable"
+EndSection
+
+Section "Monitor"
+    Identifier "Monitor0"
+    Option "DPMS"
+EndSection
diff --git a/pkgs/tools/X11/virtualgl/default.nix b/pkgs/tools/X11/virtualgl/default.nix
index 433c22d128d..57df08c1e2b 100644
--- a/pkgs/tools/X11/virtualgl/default.nix
+++ b/pkgs/tools/X11/virtualgl/default.nix
@@ -1,4 +1,5 @@
-{stdenv, fetchurl, mesa, libX11, openssl, libXext, libjpeg_turbo}:
+{ stdenv, fetchurl, mesa, libX11, openssl, libXext
+, libjpeg_turbo, cmake }:
 
 let
   libDir = if stdenv.is64bit then "lib64" else "lib";
@@ -6,21 +7,23 @@ in
 stdenv.mkDerivation {
   name = "virtualgl-2.1.4";
   src = fetchurl {
-    url = mirror://sourceforge/virtualgl/VirtualGL-2.1.4.tar.gz;
-    sha256 = "d455e599620473a07711196615e59c73d08a7f392a9fcf60a6bc05d82809d89d";
+    url = mirror://sourceforge/virtualgl/VirtualGL-2.3.tar.gz;
+    sha256 = "2f00c4eb20b0ae88e957a23fb66882e4ade2faa208abd30aa8c4f61570ecd4b9";
   };
 
-  patches = [ ./xshm.patch ];
+  patches = [ ./xshm.patch ./fixturbopath.patch ];
 
   prePatch = ''
     sed -i s,LD_PRELOAD=lib,LD_PRELOAD=$out/${libDir}/lib, rr/vglrun
   '';
 
-  preInstall =''
+  cmakeFlags = [ "-DTJPEG_LIBRARY=${libjpeg_turbo}/lib/libturbojpeg.so" ];
+
+  preInstall = ''
     export makeFlags="prefix=$out"
   '';
 
-  buildInputs = [ mesa libX11 openssl libXext libjpeg_turbo ];
+  buildInputs = [ cmake mesa libX11 openssl libXext libjpeg_turbo ];
 
   meta = {
     homepage = http://www.virtualgl.org/;
diff --git a/pkgs/tools/X11/virtualgl/fixturbopath.patch b/pkgs/tools/X11/virtualgl/fixturbopath.patch
new file mode 100644
index 00000000000..2177555e33a
--- /dev/null
+++ b/pkgs/tools/X11/virtualgl/fixturbopath.patch
@@ -0,0 +1,16 @@
+--- VirtualGL-2.3/cmakescripts/FindTurboJPEG.cmake.orig 2012-02-02 17:33:49.496283001 +0100
++++ VirtualGL-2.3/cmakescripts/FindTurboJPEG.cmake      2012-02-02 17:44:18.772483239 +0100
+@@ -40,8 +40,11 @@
+        endif()
+ endif()
+ 
+-set(TJPEG_LIBRARY ${DEFAULT_TJPEG_LIBRARY} CACHE PATH
+-  "TurboJPEG library path (default: ${DEFAULT_TJPEG_LIBRARY})")
++if(NOT TJPEG_LIBRARY)
++       message(STATUS "TJPEG_LIBRARY environment variable not set")
++       set(TJPEG_LIBRARY ${DEFAULT_TJPEG_LIBRARY} CACHE PATH
++               "TurboJPEG library path (default: ${DEFAULT_TJPEG_LIBRARY})")
++endif()
+ 
+ if(WIN32)
+        set(CMAKE_REQUIRED_DEFINITIONS -MT)
diff --git a/pkgs/tools/admin/analog/default.nix b/pkgs/tools/admin/analog/default.nix
new file mode 100644
index 00000000000..debd6e4c2b7
--- /dev/null
+++ b/pkgs/tools/admin/analog/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl }:
+
+let
+  name = "analog-6.0";
+in
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://www.analog.cx/${name}.tar.gz";
+    sha256 = "31c0e2bedd0968f9d4657db233b20427d8c497be98194daf19d6f859d7f6fcca";
+  };
+
+  configurePhase = ''
+    sed -i src/anlghead.h \
+      -e "s|#define DEFAULTCONFIGFILE .*|#define DEFAULTCONFIGFILE \"$out/etc/analog.cfg\"|g" \
+      -e "s|#define LANGDIR .*|#define LANGDIR \"$out/share/${name}/lang/\"|g"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/etc $out/share/doc/${name} $out/share/man/man1 $out/share/${name}
+    mv analog $out/bin/
+    cp examples/big.cfg $out/etc/analog.cfg
+    mv analog.man $out/share/man/man1/analog.1
+    mv docs $out/share/doc/${name}/manual
+    mv how-to $out/share/doc/${name}/
+    mv lang images examples $out/share/${name}/
+  '';
+
+  meta = {
+    homepage = "http://www.analog.cx/";
+    license = "GPL";
+    description = "a powerful tool to generate web server statistics";
+    maintainers = [ stdenv.lib.maintainers.simons ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+}
diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix
index 7aaa84d9ac9..59ce1e397cf 100644
--- a/pkgs/tools/archivers/unzip/default.nix
+++ b/pkgs/tools/archivers/unzip/default.nix
@@ -1,6 +1,7 @@
-{ stdenv, fetchurl, bzip2 }:
+{ stdenv, fetchurl, bzip2
+, enableNLS ? false, libnatspec }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation ({
   name = "unzip-6.0";
   
   src = fetchurl {
@@ -8,11 +9,11 @@ stdenv.mkDerivation {
     sha256 = "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83";
   };
 
-  buildInputs = [ bzip2 ];
+  buildInputs = [ bzip2 ] ++ stdenv.lib.optional enableNLS libnatspec;
 
   makefile = "unix/Makefile";
 
-  NIX_LDFLAGS = "-lbz2";
+  NIX_LDFLAGS = [ "-lbz2" ] ++ stdenv.lib.optional enableNLS "-lnatspec";
 
   buildFlags = "generic D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2";
 
@@ -28,4 +29,13 @@ stdenv.mkDerivation {
     license = "free"; # http://www.info-zip.org/license.html
     meta.platforms = stdenv.lib.platforms.all;
   };
-}
+} // (if enableNLS then {
+  patches =
+    [ ( fetchurl {
+        url =
+        "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-arch/unzip/files/unzip-6.0-natspec.patch?revision=1.1";
+        name = "unzip-6.0-natspec.patch";
+        sha256 = "67ab260ae6adf8e7c5eda2d1d7846929b43562943ec4aff629bd7018954058b1";
+      })
+    ];
+} else {}))
diff --git a/pkgs/tools/archivers/zip/default.nix b/pkgs/tools/archivers/zip/default.nix
index 884af0f0b03..e3b48f48325 100644
--- a/pkgs/tools/archivers/zip/default.nix
+++ b/pkgs/tools/archivers/zip/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{ stdenv, fetchurl, libnatspec }:
 
 stdenv.mkDerivation {
   name = "zip-3.0";
@@ -12,8 +12,14 @@ stdenv.mkDerivation {
 
   installFlags="-f unix/Makefile prefix=$(out) INSTALL=cp";
 
+  patches = [ ./natspec-gentoo.patch.bz2 ];
+
+  buildInputs = [ libnatspec ];
+
   meta = {
     homepage = http://www.info-zip.org;
+    platforms = stdenv.lib.platforms.all;
+    maintainer = [ stdenv.lib.maintainers.urkud ];
   };
 }
 
diff --git a/pkgs/tools/archivers/zip/natspec-gentoo.patch.bz2 b/pkgs/tools/archivers/zip/natspec-gentoo.patch.bz2
new file mode 100644
index 00000000000..816f32aba3c
--- /dev/null
+++ b/pkgs/tools/archivers/zip/natspec-gentoo.patch.bz2
Binary files differdiff --git a/pkgs/tools/backup/duplicity/default.nix b/pkgs/tools/backup/duplicity/default.nix
index c4cc84ba34f..bb5ae55b904 100644
--- a/pkgs/tools/backup/duplicity/default.nix
+++ b/pkgs/tools/backup/duplicity/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, python, librsync, gnupg, boto, makeWrapper }:
 
 stdenv.mkDerivation {
-  name = "duplicity-0.6.16";
+  name = "duplicity-0.6.17";
 
   src = fetchurl {
-    url = http://code.launchpad.net/duplicity/0.6-series/0.6.16/+download/duplicity-0.6.16.tar.gz;
-    sha256 = "0n63857swqnq7i697p615dp37bsd5bj0gvlj5ng41584zzjmv328";
+    url = "http://code.launchpad.net/duplicity/0.6-series/0.6.17/+download/duplicity-0.6.17.tar.gz";
+    sha256 = "0n54fw55v4h0cjspgh9nhss5w18bfrib9fckgkk2fldi3835c7l9";
   };
 
   installPhase = ''
@@ -21,9 +21,9 @@ stdenv.mkDerivation {
 
   meta = {
     description = "Encrypted bandwidth-efficient backup using the rsync algorithm";
-    homepage = http://www.nongnu.org/duplicity;
+    homepage = "http://www.nongnu.org/duplicity";
     license = "GPLv2+";
-    maintainers = with stdenv.lib.maintainers; [viric];
+    maintainers = with stdenv.lib.maintainers; [viric simons];
     platforms = with stdenv.lib.platforms; linux;
   };
 }
diff --git a/pkgs/tools/graphics/enblend-enfuse/default.nix b/pkgs/tools/graphics/enblend-enfuse/default.nix
index 4a9ef054417..807b0a8ed79 100644
--- a/pkgs/tools/graphics/enblend-enfuse/default.nix
+++ b/pkgs/tools/graphics/enblend-enfuse/default.nix
@@ -1,14 +1,17 @@
-{stdenv, fetchurl, libtiff, libpng, lcms, libxmi, boost }:
+{stdenv, fetchurl, libtiff, libpng, lcms, libxmi, boost, mesa, freeglut
+, pkgconfig, perl, glew }:
 
-stdenv.mkDerivation {
-  name = "enblend-enfuse-3.2";
+stdenv.mkDerivation rec {
+  name = "enblend-enfuse-4.0";
 
   src = fetchurl {
-    url = mirror://sourceforge/enblend/enblend-enfuse-3.2.tar.gz;
-    sha256 = "0ly6fdn5ym1v6m1f4gqc6s4zqgrfcys1ypfm82g5qbhh66x6gqw4";
+    url = "mirror://sourceforge/enblend/${name}.tar.gz";
+    sha256 = "1i2kq842zrncpadarhcikg447abmh5r7a5js3mzg553ql3148am1";
   };
 
-  buildInputs = [ libtiff libpng lcms libxmi boost ];
+  buildInputs = [ libtiff libpng lcms libxmi boost mesa freeglut glew ];
+
+  buildNativeInputs = [ perl pkgconfig ];
 
   meta = {
     homepage = http://enblend.sourceforge.net/;
diff --git a/pkgs/tools/misc/cowsay/default.nix b/pkgs/tools/misc/cowsay/default.nix
new file mode 100644
index 00000000000..59978e2865c
--- /dev/null
+++ b/pkgs/tools/misc/cowsay/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, perl }:
+
+stdenv.mkDerivation {
+  name = "cowsay-3.03";
+  src = fetchurl {
+    url = http://www.nog.net/~tony/warez/cowsay-3.03.tar.gz;
+    sha256 = "1bxj802na2si2bk5zh7n0b7c33mg8a5n2wnvh0vihl9bmjkp51hb";
+  };
+  buildInputs = [perl];
+  installPhase = ''
+    bash ./install.sh $out
+  '';
+
+  meta = {
+    description = "cowsay is a program which generates ASCII pictures of a cow with a message.";
+    homepage = http://www.nog.net/~tony/warez/cowsay.shtml;
+  };
+}
diff --git a/pkgs/tools/misc/fontforge/default.nix b/pkgs/tools/misc/fontforge/default.nix
index 9402fad2287..ad2820012db 100644
--- a/pkgs/tools/misc/fontforge/default.nix
+++ b/pkgs/tools/misc/fontforge/default.nix
@@ -5,7 +5,7 @@
 }:
 
 let 
-  version = "20090408";
+  version = "20110222";
   name = "fontforge-${version}";
 in
 
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
   
   src = fetchurl {
     url = "mirror://sourceforge/fontforge/fontforge_full-${version}.tar.bz2";
-    sha256 = "1s9a1mgbr5sv5jx6rdj2v3p6s52hgjr9wqd1aq57kn9whc8ny8y4";
+    sha256 = "0gj342iyd2qmza523r84m65fm7bymcfd4lbllywbfjzq4s0838lg";
   };
     
   configureFlags = lib.optionalString withX11 "--with-gui=gdraw";
@@ -28,6 +28,9 @@ stdenv.mkDerivation {
       --replace /usr/include /no-such-path \
       --replace /usr/lib /no-such-path \
       --replace /usr/local /no-such-path \
+
+
+    export NIX_LDFLAGS="$NIX_LDFLAGS -lz"
   '';
 
   buildInputs =
diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix
index 7cadf8a1345..b41bd432848 100644
--- a/pkgs/tools/networking/openssh/default.nix
+++ b/pkgs/tools/networking/openssh/default.nix
@@ -6,18 +6,18 @@
 let
 
   hpnSrc = fetchurl {
-    url = http://www.psc.edu/networking/projects/hpn-ssh/openssh-5.8p1-hpn13v11.diff.gz;
-    sha256 = "1xwx2m2sihpy57mwdnc9km3c72hxfdjyp5mmr1vcx2c8kp901db2";
+    url = http://www.psc.edu/networking/projects/hpn-ssh/openssh-5.9p1-hpn13v12.diff.gz;
+    sha256 = "0h1h45vic4zks5bc5mvkc50rlgy2c219vn3rmpmalgm5hws9qjbl";
   };
 
 in
 
 stdenv.mkDerivation rec {
-  name = "openssh-5.8p2";
+  name = "openssh-5.9p1";
 
   src = fetchurl {
     url = "ftp://ftp.nl.uu.net/pub/OpenBSD/OpenSSH/portable/${name}.tar.gz";
-    sha1 = "64798328d310e4f06c9f01228107520adbc8b3e5";
+    sha256 = "1mbpfyq3kjc4p8pc631iqgvcqhwhm6vdwvzsdmd54jzhdxmqngld";
   };
 
   prePatch = stdenv.lib.optionalString hpnSupport
diff --git a/pkgs/tools/system/hardlink/default.nix b/pkgs/tools/system/hardlink/default.nix
new file mode 100644
index 00000000000..1655fdba6f4
--- /dev/null
+++ b/pkgs/tools/system/hardlink/default.nix
@@ -0,0 +1,37 @@
+{ fetchurl, stdenv }:
+
+let
+  rev = "269cc6";
+
+  src = fetchurl {
+    url = "http://pkgs.fedoraproject.org/gitweb/?p=hardlink.git;a=blob_plain;f=hardlink.c;hb=${rev}";
+    sha256 = "721c54e653772e11bf0d30fb02aa21b96b147a1b68c0acb4f05cb87e7718bc12";
+    name = "hardlink.c";
+  };
+
+  man =  fetchurl {
+    url = "pkgs.fedoraproject.org/gitweb/?p=hardlink.git;a=blob_plain;f=hardlink.1;hb=${rev}";
+    sha256 = "2f7e18a0259a2ceae316592e8b18bee525eb7e83fe3bb6b881e5dafa24747f2d";
+    name = "hardlink.1";
+  };
+in
+stdenv.mkDerivation {
+  name = "hardlink-2010.1.${rev}";
+
+  phases = ["buildPhase"];
+
+  buildPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    gcc -O2 ${src} -o $out/bin/hardlink
+    install -m 444 ${man} $out/share/man/man1/hardlink.1
+  '';
+
+  meta = {
+    homepage = "http://pkgs.fedoraproject.org/gitweb/?p=hardlink.git;a=summary";
+    description = "consolidate duplicate files via hardlinks";
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.simons ];
+  };
+}
diff --git a/pkgs/misc/tex/auctex/default.nix b/pkgs/tools/typesetting/tex/auctex/default.nix
index 6ca85167aed..6ca85167aed 100644
--- a/pkgs/misc/tex/auctex/default.nix
+++ b/pkgs/tools/typesetting/tex/auctex/default.nix
diff --git a/pkgs/misc/tex/dblatex/default.nix b/pkgs/tools/typesetting/tex/dblatex/default.nix
index 05f4bd7a9fa..05f4bd7a9fa 100644
--- a/pkgs/misc/tex/dblatex/default.nix
+++ b/pkgs/tools/typesetting/tex/dblatex/default.nix
diff --git a/pkgs/misc/tex/disser/default.nix b/pkgs/tools/typesetting/tex/disser/default.nix
index eee695ea3e9..eee695ea3e9 100644
--- a/pkgs/misc/tex/disser/default.nix
+++ b/pkgs/tools/typesetting/tex/disser/default.nix
diff --git a/pkgs/misc/tex/latex2html/default.nix b/pkgs/tools/typesetting/tex/latex2html/default.nix
index 354cb6d22b0..354cb6d22b0 100644
--- a/pkgs/misc/tex/latex2html/default.nix
+++ b/pkgs/tools/typesetting/tex/latex2html/default.nix
diff --git a/pkgs/misc/tex/lazylist/builder.sh b/pkgs/tools/typesetting/tex/lazylist/builder.sh
index cdab5bb8c97..cdab5bb8c97 100644
--- a/pkgs/misc/tex/lazylist/builder.sh
+++ b/pkgs/tools/typesetting/tex/lazylist/builder.sh
diff --git a/pkgs/misc/tex/lazylist/default.nix b/pkgs/tools/typesetting/tex/lazylist/default.nix
index 19637793b00..19637793b00 100644
--- a/pkgs/misc/tex/lazylist/default.nix
+++ b/pkgs/tools/typesetting/tex/lazylist/default.nix
diff --git a/pkgs/misc/tex/lkproof/default.nix b/pkgs/tools/typesetting/tex/lkproof/default.nix
index 936e4a31af1..936e4a31af1 100644
--- a/pkgs/misc/tex/lkproof/default.nix
+++ b/pkgs/tools/typesetting/tex/lkproof/default.nix
diff --git a/pkgs/misc/tex/nix/animatedot.sh b/pkgs/tools/typesetting/tex/nix/animatedot.sh
index 46a2c515e03..46a2c515e03 100644
--- a/pkgs/misc/tex/nix/animatedot.sh
+++ b/pkgs/tools/typesetting/tex/nix/animatedot.sh
diff --git a/pkgs/misc/tex/nix/copy-includes.pl b/pkgs/tools/typesetting/tex/nix/copy-includes.pl
index 2cec62fc7cb..2cec62fc7cb 100644
--- a/pkgs/misc/tex/nix/copy-includes.pl
+++ b/pkgs/tools/typesetting/tex/nix/copy-includes.pl
diff --git a/pkgs/misc/tex/nix/default.nix b/pkgs/tools/typesetting/tex/nix/default.nix
index 9ae567e635b..9ae567e635b 100644
--- a/pkgs/misc/tex/nix/default.nix
+++ b/pkgs/tools/typesetting/tex/nix/default.nix
diff --git a/pkgs/misc/tex/nix/dot2pdf.sh b/pkgs/tools/typesetting/tex/nix/dot2pdf.sh
index c416bf235a1..c416bf235a1 100644
--- a/pkgs/misc/tex/nix/dot2pdf.sh
+++ b/pkgs/tools/typesetting/tex/nix/dot2pdf.sh
diff --git a/pkgs/misc/tex/nix/dot2ps.sh b/pkgs/tools/typesetting/tex/nix/dot2ps.sh
index c70e76ce4c7..c70e76ce4c7 100644
--- a/pkgs/misc/tex/nix/dot2ps.sh
+++ b/pkgs/tools/typesetting/tex/nix/dot2ps.sh
diff --git a/pkgs/misc/tex/nix/find-includes.pl b/pkgs/tools/typesetting/tex/nix/find-includes.pl
index 41675e939f6..41675e939f6 100644
--- a/pkgs/misc/tex/nix/find-includes.pl
+++ b/pkgs/tools/typesetting/tex/nix/find-includes.pl
diff --git a/pkgs/misc/tex/nix/find-lhs2tex-includes.sh b/pkgs/tools/typesetting/tex/nix/find-lhs2tex-includes.sh
index 2dc12aa517a..2dc12aa517a 100644
--- a/pkgs/misc/tex/nix/find-lhs2tex-includes.sh
+++ b/pkgs/tools/typesetting/tex/nix/find-lhs2tex-includes.sh
diff --git a/pkgs/misc/tex/nix/lhs2tex.sh b/pkgs/tools/typesetting/tex/nix/lhs2tex.sh
index f34b3944c8e..f34b3944c8e 100644
--- a/pkgs/misc/tex/nix/lhs2tex.sh
+++ b/pkgs/tools/typesetting/tex/nix/lhs2tex.sh
diff --git a/pkgs/misc/tex/nix/run-latex.sh b/pkgs/tools/typesetting/tex/nix/run-latex.sh
index 2886057c894..2886057c894 100644
--- a/pkgs/misc/tex/nix/run-latex.sh
+++ b/pkgs/tools/typesetting/tex/nix/run-latex.sh
diff --git a/pkgs/misc/tex/pgf/1.x.nix b/pkgs/tools/typesetting/tex/pgf/1.x.nix
index 91948f995a0..91948f995a0 100644
--- a/pkgs/misc/tex/pgf/1.x.nix
+++ b/pkgs/tools/typesetting/tex/pgf/1.x.nix
diff --git a/pkgs/misc/tex/pgf/2.x.nix b/pkgs/tools/typesetting/tex/pgf/2.x.nix
index 09ec1729cfd..09ec1729cfd 100644
--- a/pkgs/misc/tex/pgf/2.x.nix
+++ b/pkgs/tools/typesetting/tex/pgf/2.x.nix
diff --git a/pkgs/misc/tex/polytable/builder.sh b/pkgs/tools/typesetting/tex/polytable/builder.sh
index 68f653ccec0..68f653ccec0 100644
--- a/pkgs/misc/tex/polytable/builder.sh
+++ b/pkgs/tools/typesetting/tex/polytable/builder.sh
diff --git a/pkgs/misc/tex/polytable/default.nix b/pkgs/tools/typesetting/tex/polytable/default.nix
index 71674d85b04..71674d85b04 100644
--- a/pkgs/misc/tex/polytable/default.nix
+++ b/pkgs/tools/typesetting/tex/polytable/default.nix
diff --git a/pkgs/misc/tex/tetex/default.nix b/pkgs/tools/typesetting/tex/tetex/default.nix
index bb1e3f8b4b0..bb1e3f8b4b0 100644
--- a/pkgs/misc/tex/tetex/default.nix
+++ b/pkgs/tools/typesetting/tex/tetex/default.nix
diff --git a/pkgs/misc/tex/tetex/environment.patch b/pkgs/tools/typesetting/tex/tetex/environment.patch
index 6e652849b77..6e652849b77 100644
--- a/pkgs/misc/tex/tetex/environment.patch
+++ b/pkgs/tools/typesetting/tex/tetex/environment.patch
diff --git a/pkgs/misc/tex/tetex/getline.patch b/pkgs/tools/typesetting/tex/tetex/getline.patch
index c82c1b3ac36..c82c1b3ac36 100644
--- a/pkgs/misc/tex/tetex/getline.patch
+++ b/pkgs/tools/typesetting/tex/tetex/getline.patch
diff --git a/pkgs/misc/tex/tetex/setup-hook.sh b/pkgs/tools/typesetting/tex/tetex/setup-hook.sh
index d79c4fae419..d79c4fae419 100644
--- a/pkgs/misc/tex/tetex/setup-hook.sh
+++ b/pkgs/tools/typesetting/tex/tetex/setup-hook.sh
diff --git a/pkgs/misc/tex/tex4ht/default.nix b/pkgs/tools/typesetting/tex/tex4ht/default.nix
index 5d5d85d3c1d..5d5d85d3c1d 100644
--- a/pkgs/misc/tex/tex4ht/default.nix
+++ b/pkgs/tools/typesetting/tex/tex4ht/default.nix
diff --git a/pkgs/misc/tex/texlive/aggregate.nix b/pkgs/tools/typesetting/tex/texlive/aggregate.nix
index c018d2da0d3..c018d2da0d3 100644
--- a/pkgs/misc/tex/texlive/aggregate.nix
+++ b/pkgs/tools/typesetting/tex/texlive/aggregate.nix
diff --git a/pkgs/misc/tex/texlive/beamer.nix b/pkgs/tools/typesetting/tex/texlive/beamer.nix
index 851ad0707a1..851ad0707a1 100644
--- a/pkgs/misc/tex/texlive/beamer.nix
+++ b/pkgs/tools/typesetting/tex/texlive/beamer.nix
diff --git a/pkgs/misc/tex/texlive/cm-super.nix b/pkgs/tools/typesetting/tex/texlive/cm-super.nix
index e23b3936850..e23b3936850 100644
--- a/pkgs/misc/tex/texlive/cm-super.nix
+++ b/pkgs/tools/typesetting/tex/texlive/cm-super.nix
diff --git a/pkgs/misc/tex/texlive/context.nix b/pkgs/tools/typesetting/tex/texlive/context.nix
index a7161cea4c1..a7161cea4c1 100644
--- a/pkgs/misc/tex/texlive/context.nix
+++ b/pkgs/tools/typesetting/tex/texlive/context.nix
diff --git a/pkgs/misc/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix
index 30e59849d32..30e59849d32 100644
--- a/pkgs/misc/tex/texlive/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive/default.nix
diff --git a/pkgs/misc/tex/texlive/extra.nix b/pkgs/tools/typesetting/tex/texlive/extra.nix
index 1ecec91a685..1ecec91a685 100644
--- a/pkgs/misc/tex/texlive/extra.nix
+++ b/pkgs/tools/typesetting/tex/texlive/extra.nix
diff --git a/pkgs/misc/tex/texlive/moderncv.nix b/pkgs/tools/typesetting/tex/texlive/moderncv.nix
index 051d6c2d739..051d6c2d739 100644
--- a/pkgs/misc/tex/texlive/moderncv.nix
+++ b/pkgs/tools/typesetting/tex/texlive/moderncv.nix
diff --git a/pkgs/misc/tex/texlive/pgf.nix b/pkgs/tools/typesetting/tex/texlive/pgf.nix
index 61e2eb26c68..61e2eb26c68 100644
--- a/pkgs/misc/tex/texlive/pgf.nix
+++ b/pkgs/tools/typesetting/tex/texlive/pgf.nix
diff --git a/pkgs/misc/tex/texlive/setup-hook.sh b/pkgs/tools/typesetting/tex/texlive/setup-hook.sh
index d79c4fae419..d79c4fae419 100644
--- a/pkgs/misc/tex/texlive/setup-hook.sh
+++ b/pkgs/tools/typesetting/tex/texlive/setup-hook.sh
diff --git a/pkgs/misc/tex/texlive/xcolor.nix b/pkgs/tools/typesetting/tex/texlive/xcolor.nix
index e59a58ce9b2..e59a58ce9b2 100644
--- a/pkgs/misc/tex/texlive/xcolor.nix
+++ b/pkgs/tools/typesetting/tex/texlive/xcolor.nix
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f5a8dd86df7..ee633f94bfd 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -313,6 +313,11 @@ let
     inherit stdenv;
   };
 
+  makeAutostartItem = import ../build-support/make-startupitem {
+    inherit stdenv;
+    inherit lib;
+  };
+
   makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix {
     inherit stdenv perl cpio contents ubootChooser;
   };
@@ -358,6 +363,8 @@ let
 
   aircrackng = callPackage ../tools/networking/aircrack-ng { };
 
+  analog = callPackage ../tools/admin/analog {};
+
   archivemount = callPackage ../tools/filesystems/archivemount { };
 
   asymptote = builderDefsPackage ../tools/graphics/asymptote {
@@ -505,6 +512,8 @@ let
 
   convertlit = callPackage ../tools/text/convertlit { };
 
+  cowsay = callPackage ../tools/misc/cowsay { };
+
   unifdef = callPackage ../development/tools/misc/unifdef { };
 
   usb_modeswitch = callPackage ../development/tools/misc/usb-modeswitch { };
@@ -671,6 +680,8 @@ let
 
   flvstreamer = callPackage ../tools/networking/flvstreamer { };
 
+  libbsd = callPackage ../development/libraries/libbsd { };
+
   flvtool2 = callPackage ../tools/video/flvtool2 { };
 
   fontforge = callPackage ../tools/misc/fontforge { };
@@ -830,6 +841,8 @@ let
 
   pigz = callPackage ../tools/compression/pigz { };
 
+  hardlink = callPackage ../tools/system/hardlink { };
+
   halibut = callPackage ../tools/typesetting/halibut { };
 
   hddtemp = callPackage ../tools/misc/hddtemp { };
@@ -1240,7 +1253,7 @@ let
 
   pwgen = callPackage ../tools/security/pwgen { };
 
-  pydb = callPackage ../tools/pydb { };
+  pydb = callPackage ../development/tools/pydb { };
 
   pystringtemplate = callPackage ../development/python-modules/stringtemplate { };
 
@@ -1524,6 +1537,8 @@ let
 
   unzip = callPackage ../tools/archivers/unzip { };
 
+  unzipNLS = unzip.override { enableNLS = true; };
+
   uptimed = callPackage ../tools/system/uptimed { };
 
   vlan = callPackage ../tools/networking/vlan { };
@@ -2196,10 +2211,8 @@ let
     haskellPackagesFun ../development/compilers/ghc/7.0.3.nix
       ghc6101Binary (x : x.ghc703Prefs) false false lowPrio;
 
-  # Current default version: 7.0.4
-  # Note that the platform isn't officially released for ghc-7.0.4, but
-  # it works without problems.
-
+  # Current default version: 7.0.4.
+  #
   # The following items are a bit convoluted, but they serve the
   # following purpose:
   #   - for the default version of GHC, both profiling and
@@ -2241,16 +2254,20 @@ let
       (x : x.ghc704Prefs) false false (x : x);
 
   haskellPackages_ghc721 =
-    recurseIntoAttrs
-      (haskellPackagesFun ../development/compilers/ghc/7.2.1.nix
-        (if stdenv.isDarwin then ghc704Binary else ghc6121Binary)
-        (x : x.ghc721Prefs) false false lowPrio);
+    haskellPackagesFun ../development/compilers/ghc/7.2.1.nix
+      (if stdenv.isDarwin then ghc704Binary else ghc6121Binary)
+      (x : x.ghc721Prefs) false false lowPrio;
 
   haskellPackages_ghc722 =
+    haskellPackagesFun ../development/compilers/ghc/7.2.2.nix
+      (if stdenv.isDarwin then ghc704Binary else ghc6121Binary)
+      (x : x.ghc722Prefs) false false lowPrio;
+
+  haskellPackages_ghc741 =
     recurseIntoAttrs
-      (haskellPackagesFun ../development/compilers/ghc/7.2.2.nix
+      (haskellPackagesFun ../development/compilers/ghc/7.4.1.nix
         (if stdenv.isDarwin then ghc704Binary else ghc6121Binary)
-        (x : x.ghc722Prefs) false false lowPrio);
+        (x : x.ghc741Prefs) false false lowPrio);
 
   # Reasonably current HEAD snapshot. Should *always* be lowPrio.
   haskellPackages_ghcHEAD =
@@ -3000,6 +3017,8 @@ let
   gnumake380 = callPackage ../development/tools/build-managers/gnumake-3.80 { };
   gnumake381 = callPackage ../development/tools/build-managers/gnumake/3.81.nix { };
 
+  gob2 = callPackage ../development/tools/misc/gob2 { };
+
   gradle = callPackage ../development/tools/build-managers/gradle { };
 
   gperf = callPackage ../development/tools/misc/gperf { };
@@ -3054,7 +3073,6 @@ let
 
   omake = callPackage ../development/tools/ocaml/omake { };
 
-
   openocd = callPackage ../development/tools/misc/openocd { };
 
   oprofile = import ../development/tools/profiling/oprofile {
@@ -3262,8 +3280,7 @@ let
 
   clanlib = callPackage ../development/libraries/clanlib { };
 
-  clapack = callPackage ../development/libraries/clapack {
-  };
+  clapack = callPackage ../development/libraries/clapack { };
 
   classads = callPackage ../development/libraries/classads { };
 
@@ -3309,6 +3326,10 @@ let
 
   cppunit = callPackage ../development/libraries/cppunit { };
 
+  cppnetlib = callPackage ../development/libraries/cppnetlib {
+    boost = boostFull;
+  };
+
   cracklib = callPackage ../development/libraries/cracklib { };
 
   cryptopp = callPackage ../development/libraries/crypto++ { };
@@ -3611,12 +3632,17 @@ let
       # GMP 4.3.2 is broken on Darwin, so use 4.3.1.
       callPackage ../development/libraries/gmp/4.3.1.nix { }
     else
-      callPackage ../development/libraries/gmp { };
+      callPackage ../development/libraries/gmp/5.0.3.nix { };
 
   gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; });
 
   # The GHC bootstrap binaries link against libgmp.so.3, which is in GMP 4.x.
-  gmp4 = callPackage ../development/libraries/gmp/4.nix { };
+  gmp4 =
+    if stdenv.system == "i686-darwin" then
+      # GMP 4.3.2 is broken on Darwin, so use 4.3.1.
+      callPackage ../development/libraries/gmp/4.3.1.nix { }
+    else
+      callPackage ../development/libraries/gmp/4.3.2.nix { };
   
   gobjectIntrospection = callPackage ../development/libraries/gobject-introspection { };
 
@@ -3650,6 +3676,9 @@ let
     guileBindings = getConfig ["gnutls" "guile"] true;
   };
 
+  gnutls_without_guile = gnutls.override { guileBindings = false; };
+  gnutls2_without_guile = gnutls2.override { guileBindings = false; };
+
   gpgme = callPackage ../development/libraries/gpgme { };
 
   grantlee = callPackage ../development/libraries/grantlee { };
@@ -3670,43 +3699,30 @@ let
 
   gtkmathview = callPackage ../development/libraries/gtkmathview { };
 
-  gtkLibs = pkgs.gtkLibs224;
-
-  inherit (pkgs.gtkLibs) glib gtk pango cairo gdk_pixbuf;
-
-  gtkLibs1x = recurseIntoAttrs (let callPackage = newScope pkgs.gtkLibs1x; in {
-
-    glib = callPackage ../development/libraries/glib/1.2.x.nix { };
-
-    gtk = callPackage ../development/libraries/gtk+/1.2.x.nix { };
+  gtkLibs = {
+    inherit (pkgs) glib glibmm atk atkmm cairo pango pangomm gdk_pixbuf gtk
+      gtkmm;
+  };
 
-  });
+  glib = callPackage ../development/libraries/glib/2.28.x.nix { };
 
-  gtkLibs224 = recurseIntoAttrs (let callPackage = pkgs.newScope pkgs.gtkLibs224; in {
+  glibmm = callPackage ../development/libraries/glibmm/2.28.x.nix { };
 
-    glib = callPackage ../development/libraries/glib/2.28.x.nix { };
+  atk = callPackage ../development/libraries/atk/2.2.x.nix { };
 
-    glibmm = callPackage ../development/libraries/glibmm/2.28.x.nix { };
+  atkmm = callPackage ../development/libraries/atkmm/2.22.x.nix { };
 
-    atk = callPackage ../development/libraries/atk/2.2.x.nix { };
+  cairo = callPackage ../development/libraries/cairo { };
 
-    atkmm = callPackage ../development/libraries/atkmm/2.22.x.nix { };
+  pango = callPackage ../development/libraries/pango/1.28.x.nix { };
 
-    cairo = callPackage ../development/libraries/cairo { };
-
-    pango = callPackage ../development/libraries/pango/1.28.x.nix { };
-
-    pangomm = callPackage ../development/libraries/pangomm/2.28.x.nix { };
-
-    gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf/2.24.x.nix { };
+  pangomm = callPackage ../development/libraries/pangomm/2.28.x.nix { };
 
-    gtk = callPackage ../development/libraries/gtk+/2.24.x.nix { };
+  gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf/2.24.x.nix { };
 
-    gtkmm = callPackage ../development/libraries/gtkmm/2.24.x.nix { };
+  gtk = callPackage ../development/libraries/gtk+/2.24.x.nix { };
 
-    gob2 = callPackage ../development/tools/misc/gob2 { };
-
-  });
+  gtkmm = callPackage ../development/libraries/gtkmm/2.24.x.nix { };
 
   gtkLibs3x = let callPackage = newScope pkgs.gtkLibs3x; in {
     glib = callPackage ../development/libraries/glib/2.30.x.nix { };
@@ -4020,6 +4036,8 @@ let
 
   libmtp = callPackage ../development/libraries/libmtp { };
 
+  libnatspec = callPackage ../development/libraries/libnatspec { };
+
   libnice = callPackage ../development/libraries/libnice {
     inherit (gnome) glib;
   };
@@ -4038,6 +4056,10 @@ let
 
   libiconv = callPackage ../development/libraries/libiconv { };
 
+  libiconvOrNull = if gcc ? libc then null else libiconv;
+
+  libiconvOrLibc = if gcc ? libc then gcc.libc else libiconv;
+
   libid3tag = callPackage ../development/libraries/libid3tag { };
 
   libidn = callPackage ../development/libraries/libidn { };
@@ -5154,6 +5176,8 @@ let
 
   radius = callPackage ../servers/radius { };
 
+  redis = callPackage ../servers/nosql/redis { };
+
   redstore = callPackage ../servers/http/redstore { };
 
   samba = callPackage ../servers/samba { };
@@ -5238,6 +5262,10 @@ let
 
   alsaUtils = callPackage ../os-specific/linux/alsa-utils { };
 
+  microcode2ucode = callPackage ../os-specific/linux/microcode/converter.nix { };
+
+  microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { };
+
   bcm43xx = callPackage ../os-specific/linux/firmware/bcm43xx { };
 
   bluez = callPackage ../os-specific/linux/bluez { };
@@ -5351,6 +5379,8 @@ let
 
   hwdata = callPackage ../os-specific/linux/hwdata { };
 
+  i7z = callPackage ../os-specific/linux/i7z { };
+
   ifplugd = callPackage ../os-specific/linux/ifplugd { };
 
   iotop = callPackage ../os-specific/linux/iotop { };
@@ -5829,6 +5859,8 @@ let
       inherit (gtkLibs) gtkmm;
     };
 
+    frandom = callPackage ../os-specific/linux/frandom { };
+
     iscsitarget = callPackage ../os-specific/linux/iscsitarget { };
 
     iwlwifi = callPackage ../os-specific/linux/iwlwifi { };
@@ -6232,6 +6264,10 @@ let
       paths = [ w32api mingw_runtime ];
     };
 
+    pthreads = callPackage ../os-specific/windows/pthread-w32 {
+      mingw_headers = mingw_headers2;
+    };
+
     wxMSW = callPackage ../os-specific/windows/wxMSW-2.8 { };
   };
 
@@ -6243,8 +6279,7 @@ let
 
   wirelesstools = callPackage ../os-specific/linux/wireless-tools { };
 
-  wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant {
-  };
+  wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant { };
 
   wpa_supplicant_gui = pkgs.wpa_supplicant.gui;
 
@@ -6756,6 +6791,8 @@ let
 
   fossil = callPackage ../applications/version-management/fossil { };
 
+  goldendict = callPackage ../applications/misc/goldendict { };
+
   grass = import ../applications/misc/grass {
     inherit (xlibs) libXmu libXext libXp libX11 libXt libSM libICE libXpm
       libXaw libXrender;
@@ -6799,19 +6836,26 @@ let
 
   firefox36Wrapper = wrapFirefox { browser = firefox36Pkgs.firefox; };
 
-  firefox80Pkgs = callPackage ../applications/networking/browsers/firefox/8.0.nix {
+  firefox90Pkgs = callPackage ../applications/networking/browsers/firefox/9.0.nix {
     inherit (gtkLibs) gtk pango;
     inherit (gnome) libIDL;
   };
 
-  firefox80Wrapper = wrapFirefox { browser = firefox80Pkgs.firefox; };
+  firefox90Wrapper = wrapFirefox { browser = firefox90Pkgs.firefox; };
 
-  firefox90Pkgs = callPackage ../applications/networking/browsers/firefox/9.0.nix {
+  firefox100Pkgs = callPackage ../applications/networking/browsers/firefox/10.0.nix {
     inherit (gtkLibs) gtk pango;
     inherit (gnome) libIDL;
   };
 
-  firefox90Wrapper = wrapFirefox { browser = firefox90Pkgs.firefox; };
+  firefox100Wrapper = wrapFirefox { browser = firefox100Pkgs.firefox; };
+
+  firefox11Pkgs = callPackage ../applications/networking/browsers/firefox/11.0.nix {
+    inherit (gtkLibs) gtk pango;
+    inherit (gnome) libIDL;
+  };
+
+  firefox11Wrapper = wrapFirefox { browser = firefox11Pkgs.firefox; };
 
   flac = callPackage ../applications/audio/flac { };
 
@@ -6872,7 +6916,7 @@ let
   gitSVN = gitAndTools.gitSVN;
 
   giv = callPackage ../applications/graphics/giv {
-    inherit (gtkLibs) gdk_pixbuf gtk gob2;
+    inherit (gtkLibs) gdk_pixbuf gtk;
     pcre = pcre.override { unicodeSupport = true; };
   };
 
@@ -7013,9 +7057,7 @@ let
 
   icecat3Wrapper = wrapFirefox { browser = icecat3Xul; browserName = "icecat"; desktopName = "IceCat"; };
 
-  icewm = callPackage ../applications/window-managers/icewm {
-    inherit (gtkLibs) gtk;
-  };
+  icewm = callPackage ../applications/window-managers/icewm { };
 
   id3v2 = callPackage ../applications/audio/id3v2 { };
 
@@ -7114,13 +7156,7 @@ let
   ledger = callPackage ../applications/office/ledger/2.6.3.nix { };
   ledger3 = callPackage ../applications/office/ledger/3.0.nix { };
 
-  links2 = (builderDefsPackage ../applications/networking/browsers/links2) {
-    inherit fetchurl stdenv bzip2 zlib libjpeg libpng libtiff
-      gpm openssl SDL SDL_image SDL_net pkgconfig;
-    inherit (xlibs) libX11 libXau xproto libXt;
-  };
-
-  links2Stdenv = callPackage ../applications/networking/browsers/links2/stdenv.nix { };
+  links2 = callPackage ../applications/networking/browsers/links2 { };
 
   linphone = callPackage ../applications/networking/linphone {
     inherit (gnome) libglade gtk;
@@ -7444,7 +7480,9 @@ let
 
   siproxd = callPackage ../applications/networking/siproxd { };
 
-  skype_linux = callPackage_i686 ../applications/networking/skype { };
+  skype_linux = callPackage_i686 ../applications/networking/skype {
+    usePulseAudio = getConfig [ "pulseaudio" ] false; # disabled by default (the 100% cpu bug)
+  };
 
   slim = callPackage ../applications/display-managers/slim { };
 
@@ -7632,6 +7670,8 @@ let
 
   virtualgl = callPackage ../tools/X11/virtualgl { };
 
+  bumblebee = callPackage ../tools/X11/bumblebee { };
+
   vkeybd = callPackage ../applications/audio/vkeybd {
     inherit (xlibs) libX11;
   };
@@ -7733,12 +7773,6 @@ let
 
   xineUI = callPackage ../applications/video/xine-ui { };
 
-  xmms = callPackage ../applications/audio/xmms {
-    inherit (gnome) esound;
-    inherit (gtkLibs1x) glib gtk;
-    stdenv = overrideGCC stdenv gcc34; # due to problems with gcc 4.x
-  };
-
   xneur = callPackage ../applications/misc/xneur {
     GStreamer=gst_all.gstreamer;
     inherit (gtkLibs) glib gtk pango atk gdk_pixbuf;
@@ -7926,6 +7960,8 @@ let
 
   njam = callPackage ../games/njam { };
 
+  oilrush = callPackage ../games/oilrush { };
+
   openttd = callPackage ../games/openttd {
     zlib = zlibStatic;
   };
@@ -8450,7 +8486,7 @@ let
 
   ataripp = callPackage ../misc/emulators/atari++ { };
 
-  auctex = callPackage ../misc/tex/auctex { };
+  auctex = callPackage ../tools/typesetting/tex/auctex { };
 
   busybox = callPackage ../misc/busybox {
     enableStatic = true;
@@ -8468,7 +8504,7 @@ let
 
   darcnes = callPackage ../misc/emulators/darcnes { };
 
-  dblatex = callPackage ../misc/tex/dblatex { };
+  dblatex = callPackage ../tools/typesetting/tex/dblatex { };
 
   dosbox = callPackage ../misc/emulators/dosbox { };
 
@@ -8501,10 +8537,6 @@ let
     python = pythonFull;
   };
 
-  generator = callPackage ../misc/emulators/generator {
-    inherit (gtkLibs1x) gtk;
-  };
-
   gensgs = callPackage_i686 ../misc/emulators/gens-gs { };
 
   ghostscript = callPackage ../misc/ghostscript {
@@ -8528,7 +8560,7 @@ let
 
   keynav = callPackage ../tools/X11/keynav { };
 
-  lazylist = callPackage ../misc/tex/lazylist { };
+  lazylist = callPackage ../tools/typesetting/tex/lazylist { };
 
   lilypond = callPackage ../misc/lilypond {
     inherit (gtkLibs) pango;
@@ -8587,11 +8619,11 @@ let
 
   DisnixWebService = callPackage ../tools/package-management/disnix/DisnixWebService { };
 
-  latex2html = callPackage ../misc/tex/latex2html/default.nix {
+  latex2html = callPackage ../tools/typesetting/tex/latex2html/default.nix {
     tex = tetex;
   };
 
-  lkproof = callPackage ../misc/tex/lkproof { };
+  lkproof = callPackage ../tools/typesetting/tex/lkproof { };
 
   mysqlWorkbench = newScope gnome ../applications/misc/mysql-workbench {
     lua = lua5;
@@ -8606,13 +8638,13 @@ let
 
   # Keep the old PGF since some documents don't render properly with
   # the new one.
-  pgf1 = callPackage ../misc/tex/pgf/1.x.nix { };
+  pgf1 = callPackage ../tools/typesetting/tex/pgf/1.x.nix { };
 
-  pgf2 = callPackage ../misc/tex/pgf/2.x.nix { };
+  pgf2 = callPackage ../tools/typesetting/tex/pgf/2.x.nix { };
 
   pjsip = callPackage ../applications/networking/pjsip { };
 
-  polytable = callPackage ../misc/tex/polytable { };
+  polytable = callPackage ../tools/typesetting/tex/polytable { };
 
   uae = callPackage ../misc/emulators/uae { };
 
@@ -8642,13 +8674,13 @@ let
 
   splix = callPackage ../misc/cups/drivers/splix { };
 
-  tetex = callPackage ../misc/tex/tetex { };
+  tetex = callPackage ../tools/typesetting/tex/tetex { };
 
-  tex4ht = callPackage ../misc/tex/tex4ht { };
+  tex4ht = callPackage ../tools/typesetting/tex/tex4ht { };
 
-  texFunctions = import ../misc/tex/nix pkgs;
+  texFunctions = import ../tools/typesetting/tex/nix pkgs;
 
-  texLive = builderDefsPackage (import ../misc/tex/texlive) {
+  texLive = builderDefsPackage (import ../tools/typesetting/tex/texlive) {
     inherit builderDefs zlib bzip2 ncurses libpng ed
       gd t1lib freetype icu perl expat curl
       libjpeg bison python fontconfig flex;
@@ -8661,7 +8693,6 @@ let
   texLiveFull = lib.setName "texlive-full" (texLiveAggregationFun {
     paths = [ texLive texLiveExtra lmodern texLiveCMSuper texLiveLatexXColor
               texLivePGF texLiveBeamer texLiveModerncv ];
-
   });
 
   /* Look in configurations/misc/raskin.nix for usage example (around revisions
@@ -8677,35 +8708,35 @@ let
   Just installing a few packages doesn't work.
   */
   texLiveAggregationFun =
-    (builderDefsPackage (import ../misc/tex/texlive/aggregate.nix));
+    (builderDefsPackage (import ../tools/typesetting/tex/texlive/aggregate.nix));
 
-  texDisser = callPackage ../misc/tex/disser {};
+  texDisser = callPackage ../tools/typesetting/tex/disser {};
 
-  texLiveContext = builderDefsPackage (import ../misc/tex/texlive/context.nix) {
+  texLiveContext = builderDefsPackage (import ../tools/typesetting/tex/texlive/context.nix) {
     inherit texLive;
   };
 
-  texLiveExtra = builderDefsPackage (import ../misc/tex/texlive/extra.nix) {
+  texLiveExtra = builderDefsPackage (import ../tools/typesetting/tex/texlive/extra.nix) {
     inherit texLive;
   };
 
-  texLiveCMSuper = builderDefsPackage (import ../misc/tex/texlive/cm-super.nix) {
+  texLiveCMSuper = builderDefsPackage (import ../tools/typesetting/tex/texlive/cm-super.nix) {
     inherit texLive;
   };
 
-  texLiveLatexXColor = builderDefsPackage (import ../misc/tex/texlive/xcolor.nix) {
+  texLiveLatexXColor = builderDefsPackage (import ../tools/typesetting/tex/texlive/xcolor.nix) {
     inherit texLive;
   };
 
-  texLivePGF = builderDefsPackage (import ../misc/tex/texlive/pgf.nix) {
+  texLivePGF = builderDefsPackage (import ../tools/typesetting/tex/texlive/pgf.nix) {
     inherit texLiveLatexXColor texLive;
   };
 
-  texLiveBeamer = builderDefsPackage (import ../misc/tex/texlive/beamer.nix) {
+  texLiveBeamer = builderDefsPackage (import ../tools/typesetting/tex/texlive/beamer.nix) {
     inherit texLiveLatexXColor texLivePGF texLive;
   };
 
-  texLiveModerncv = builderDefsPackage (import ../misc/tex/texlive/moderncv.nix) {
+  texLiveModerncv = builderDefsPackage (import ../tools/typesetting/tex/texlive/moderncv.nix) {
     inherit texLive unzip;
   };
 
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 15cb3336262..f29eaeca9e2 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -90,6 +90,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   ghc704Prefs  = super : super // super.haskellPlatformDefaults_2011_4_0_0 super; # link
   ghc721Prefs  = super : super // super.haskellPlatformDefaults_future super;
   ghc722Prefs  = super : super // super.haskellPlatformDefaults_future super; #link
+  ghc741Prefs  = super : super // super.haskellPlatformDefaults_HEAD super;
   ghcHEADPrefs = super : super // super.haskellPlatformDefaults_HEAD super;
 
   # GHC and its wrapper
@@ -134,34 +135,33 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   haskellPlatformArgs_future = self : {
     inherit (self) cabal ghc;
-    cgi          = self.cgi_3001_1_7_4; # 7.2 ok, 7.3 ok
-    fgl          = self.fgl_5_4_2_4; # 7.2 ok, 7.3 ok
-    GLUT         = self.GLUT_2_1_2_1; # 7.2 ok, 7.3 ok
-    haskellSrc   = self.haskellSrc_1_0_1_5; # 7.2 fails, 7.3 fails
-    html         = self.html_1_0_1_2; # 7.2 ok, 7.3 ok
-    HUnit        = self.HUnit_1_2_2_3; # 7.2 ok, 7.3 ok
-    network      = self.network_2_3_0_8; # 7.2 ok, 7.3 ok
-    OpenGL       = self.OpenGL_2_2_3_0; # 7.2 ok, 7.3 ok
-    parallel     = self.parallel_3_2_0_2; # 7.2 ok, 7.3 ok
-    parsec       = self.parsec_3_1_2; # 7.2 ok, 7.3 ok
-    QuickCheck   = self.QuickCheck_2_4_2; # 7.2 ok, 7.3 ok
-    regexBase    = self.regexBase_0_93_2; # 7.2 ok, 7.3 ok
-    regexCompat  = self.regexCompat_0_93_1; # 7.2 ok, 7.3 ok
-    regexPosix   = self.regexPosix_0_94_4; # 7.2 ok, 7.3 ok
-    stm          = self.stm_2_2_0_1; # 7.2 ok, 7.3 ok
-    syb          = self.syb_0_3_6; # 7.2 ok, 7.3 ok
-    xhtml        = self.xhtml_3000_2_0_1; # 7.2 ok, 7.3 ok
-    zlib         = self.zlib_0_5_3_1; # 7.2 ok, 7.3 ok
-    HTTP         = self.HTTP_4000_2_2; # 7.2 ok, 7.3 ok
-    deepseq      = self.deepseq_1_1_0_2; # 7.2 ok, 7.3 ok
-    text         = self.text_0_11_1_13; # 7.2 ok, 7.3 ok
-    transformers = self.transformers_0_2_2_0; # 7.2 ok, 7.3 ok
-    mtl          = self.mtl_2_0_1_0; # 7.2 ok, 7.3 ok
-    random       = self.random_1_0_1_1; # 7.2 ok, 7.3 ok
-    cabalInstall = self.cabalInstall_0_10_2; # 7.2 fails, 7.3 fails
-    alex         = self.alex_3_0_1; # 7.2 ok, 7.3 ok
-    happy        = self.happy_1_18_8; # 7.2 ok, 7.3 ok
-    haddock      = self.haddock_2_9_2; # 7.2 fails, 7.3 fails
+    cgi          = self.cgi_3001_1_7_4;         # 7.4.1 ok
+    fgl          = self.fgl_5_4_2_4;            # 7.4.1 ok
+    GLUT         = self.GLUT_2_3_0_0;           # 7.4.1 ok
+    haskellSrc   = self.haskellSrc_1_0_1_5;     # 7.4.1 ok
+    html         = self.html_1_0_1_2;           # 7.4.1 ok
+    HUnit        = self.HUnit_1_2_2_3;          # 7.4.1 ok
+    network      = self.network_2_3_0_10;       # 7.4.1 ok
+    OpenGL       = self.OpenGL_2_5_0_0;         # 7.4.1 ok
+    parallel     = self.parallel_3_2_0_2;       # 7.4.1 ok
+    parsec       = self.parsec_3_1_2;           # 7.4.1 ok
+    QuickCheck   = self.QuickCheck_2_4_2;       # 7.4.1 ok
+    regexBase    = self.regexBase_0_93_2;       # 7.4.1 ok
+    regexCompat  = self.regexCompat_0_93_1;     # 7.4.1 ok
+    regexPosix   = self.regexPosix_0_95_1;      # 7.4.1 ok
+    stm          = self.stm_2_2_0_1;            # 7.4.1 ok
+    syb          = self.syb_0_3_6;              # 7.4.1 ok
+    xhtml        = self.xhtml_3000_2_0_5;       # 7.4.1 ok
+    zlib         = self.zlib_0_5_3_1;           # 7.4.1 ok
+    HTTP         = self.HTTP_4000_2_2;          # 7.4.1 ok
+    text         = self.text_0_11_1_13;         # 7.4.1 ok
+    transformers = self.transformers_0_2_2_0;   # 7.4.1 ok
+    mtl          = self.mtl_2_0_1_0;            # 7.4.1 ok
+    random       = self.random_1_0_1_1;         # 7.4.1 ok
+    cabalInstall = self.cabalInstall_0_10_2;    # 7.4.1 fails
+    alex         = self.alex_3_0_1;             # 7.4.1 ok
+    happy        = self.happy_1_18_9;           # 7.4.1 ok
+    haddock      = self.haddock_2_9_2;          # 7.4.1 fails
   };
 
   haskellPlatformDefaults_future =
@@ -171,7 +171,6 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   haskellPlatformDefaults_HEAD =
     self : self.haskellPlatformDefaults_future self // {
-      deepseq = null; # apparently a core library in ghc-7.3
     };
 
   haskellPlatformArgs_2011_4_0_0 = self : {
@@ -371,6 +370,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
       haskellPlatform = self.haskellPlatform_2010_1_0_0;
       extensibleExceptions = self.extensibleExceptions_0_1_1_0;
       repaExamples = null;      # don't pick this version of 'repa-examples' during nix-env -u
+      deepseq = self.deepseq_1_1_0_2;
+      # deviating from Haskell platform here, to make some packages (notably statistics) compile
     };
 
   haskellPlatform_2010_1_0_0 =
@@ -410,13 +411,14 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
       extensibleExceptions = self.extensibleExceptions_0_1_1_0;
       text = self.text_0_11_0_6;
       repaExamples = null;      # don't pick this version of 'repa-examples' during nix-env -u
+      deepseq = self.deepseq_1_1_0_2;
+      # deviating from Haskell platform here, to make some packages (notably statistics) compile
     };
 
   haskellPlatform_2009_2_0_2 =
     callPackage ../development/libraries/haskell/haskell-platform/2009.2.0.2.nix
       (self.haskellPlatformArgs_2009_2_0_2 self);
 
-
   # Haskell libraries.
 
   Agda = callPackage ../development/libraries/haskell/Agda {};
@@ -465,6 +467,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   binaryShared = callPackage ../development/libraries/haskell/binary-shared {};
 
+  bitarray = callPackage ../development/libraries/haskell/bitarray {};
+
   bitmap = callPackage ../development/libraries/haskell/bitmap {};
 
   bktrees = callPackage ../development/libraries/haskell/bktrees {};
@@ -539,6 +543,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   ConfigFile = callPackage ../development/libraries/haskell/ConfigFile {};
 
+  containersDeepseq = callPackage ../development/libraries/haskell/containers-deepseq {};
+
   controlMonadAttempt = callPackage ../development/libraries/haskell/control-monad-attempt {};
 
   convertible = callPackage ../development/libraries/haskell/convertible {
@@ -597,7 +603,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   deepseq_1_1_0_0 = callPackage ../development/libraries/haskell/deepseq/1.1.0.0.nix {};
   deepseq_1_1_0_2 = callPackage ../development/libraries/haskell/deepseq/1.1.0.2.nix {};
   deepseq_1_2_0_1 = callPackage ../development/libraries/haskell/deepseq/1.2.0.1.nix {};
-  deepseq = self.deepseq_1_1_0_0;
+  deepseq_1_3_0_0 = callPackage ../development/libraries/haskell/deepseq/1.3.0.0.nix {};
+  deepseq = null; # a core package in recent GHCs
 
   deepseqTh = callPackage ../development/libraries/haskell/deepseq-th {};
 
@@ -641,11 +648,14 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   erf = callPackage ../development/libraries/haskell/erf {};
 
+  explicitException = callPackage ../development/libraries/haskell/explicit-exception {};
+
   filepath = callPackage ../development/libraries/haskell/filepath {};
 
   extensibleExceptions_0_1_1_0 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.0.nix {};
   extensibleExceptions_0_1_1_2 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.2.nix {};
   extensibleExceptions_0_1_1_3 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.3.nix {};
+  extensibleExceptions_0_1_1_4 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.4.nix {};
   extensibleExceptions = null; # a core package in recent GHCs
 
   failure = callPackage ../development/libraries/haskell/failure {};
@@ -675,6 +685,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   gamma = callPackage ../development/libraries/haskell/gamma {};
 
+  gd = callPackage ../development/libraries/haskell/gd {
+    inherit (pkgs) gd zlib;
+  };
+
   gdiff = callPackage ../development/libraries/haskell/gdiff {};
 
   genericDeriving = callPackage ../development/libraries/haskell/generic-deriving {};
@@ -703,6 +717,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
     libc = pkgs.stdenv.gcc.libc;
   };
 
+  GLFW = callPackage ../development/libraries/haskell/GLFW {};
+
   glib = callPackage ../development/libraries/haskell/glib {
     glib = pkgs.glib;
     libc = pkgs.stdenv.gcc.libc;
@@ -722,8 +738,11 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   GLUT_2_2_2_1 = callPackage ../development/libraries/haskell/GLUT/2.2.2.1.nix {
     OpenGL = self.OpenGL_2_4_0_2;
   };
+  GLUT_2_3_0_0 = callPackage ../development/libraries/haskell/GLUT/2.3.0.0.nix {
+    OpenGL = self.OpenGL_2_5_0_0;
+  };
   GLUT22 = self.GLUT_2_2_2_1;
-  GLUT = self.GLUT_2_1_1_2;
+  GLUT = self.GLUT_2_3_0_0;
 
   gtk = callPackage ../development/libraries/haskell/gtk {
     inherit (pkgs.gtkLibs) gtk;
@@ -821,8 +840,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   hledger = callPackage ../development/libraries/haskell/hledger {};
   hledgerLib = callPackage ../development/libraries/haskell/hledger-lib {};
-  hledgerVty = callPackage ../development/libraries/haskell/hledger-vty {};
-  hledgerChart = callPackage ../development/libraries/haskell/hledger-chart {};
+  #hledgerVty = callPackage ../development/libraries/haskell/hledger-vty {};
+  #hledgerChart = callPackage ../development/libraries/haskell/hledger-chart {};
   hledgerInterest = callPackage ../applications/office/hledger-interest {};
   hledgerWeb = callPackage ../development/libraries/haskell/hledger-web {};
 
@@ -887,6 +906,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   hxtUnicode = callPackage ../development/libraries/haskell/hxt-unicode {};
 
+  ieee754 = callPackage ../development/libraries/haskell/ieee754 {};
+
   instantGenerics = callPackage ../development/libraries/haskell/instant-generics {};
 
   ioStorage = callPackage ../development/libraries/haskell/io-storage {};
@@ -983,7 +1004,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   mtl2 = self.mtl_2_0_1_0;
   mtl  = self.mtl1;
 
-  mtlparse  = callPackage ../development/libraries/haskell/mtlparse {};
+  mtlparse = callPackage ../development/libraries/haskell/mtlparse {};
+
+  multiarg = callPackage ../development/libraries/haskell/multiarg {};
 
   multiplate = callPackage ../development/libraries/haskell/multiplate {};
 
@@ -1006,7 +1029,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   network_2_3_0_2 = callPackage ../development/libraries/haskell/network/2.3.0.2.nix {};
   network_2_3_0_5 = callPackage ../development/libraries/haskell/network/2.3.0.5.nix {};
   network_2_3_0_8 = callPackage ../development/libraries/haskell/network/2.3.0.8.nix {};
-  network = self.network_2_3_0_8;
+  network_2_3_0_10 = callPackage ../development/libraries/haskell/network/2.3.0.10.nix {};
+  network = self.network_2_3_0_10;
 
   nixosTypes = callPackage ../development/libraries/haskell/nixos-types {};
 
@@ -1027,8 +1051,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   OpenGL_2_2_1_1 = callPackage ../development/libraries/haskell/OpenGL/2.2.1.1.nix {};
   OpenGL_2_2_3_0 = callPackage ../development/libraries/haskell/OpenGL/2.2.3.0.nix {};
   OpenGL_2_4_0_2 = callPackage ../development/libraries/haskell/OpenGL/2.4.0.2.nix {};
+  OpenGL_2_5_0_0 = callPackage ../development/libraries/haskell/OpenGL/2.5.0.0.nix {};
   OpenGL24 = self.OpenGL_2_4_0_2;
-  OpenGL = self.OpenGL_2_2_1_1;
+  OpenGL = self.OpenGL_2_5_0_0;
 
   OpenGLRaw = callPackage ../development/libraries/haskell/OpenGLRaw {};
 
@@ -1036,7 +1061,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   pathPieces_0_1_0 = callPackage ../development/libraries/haskell/path-pieces/0.1.0.nix {};
   pathPieces = self.pathPieces_0_1_0;
 
-  pandoc = callPackage ../development/libraries/haskell/pandoc/default.nix {};
+  pandoc = callPackage ../development/libraries/haskell/pandoc {
+    testFramework = self.testFramework_0_4_2_2;
+  };
 
   pandocTypes = callPackage ../development/libraries/haskell/pandoc-types {};
 
@@ -1072,6 +1099,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
     pathPieces = self.pathPieces_0_0_0;
   };
 
+  persistentSqlite = callPackage ../development/libraries/haskell/persistent-sqlite {};
+
   persistentTemplate = callPackage ../development/libraries/haskell/persistent-template {};
 
   polyparse = callPackage ../development/libraries/haskell/polyparse/default.nix {};
@@ -1136,7 +1165,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   regexBase_0_72_0_2 = callPackage ../development/libraries/haskell/regex-base/0.72.0.2.nix {};
   regexBase_0_93_1   = callPackage ../development/libraries/haskell/regex-base/0.93.1.nix   {};
   regexBase_0_93_2   = callPackage ../development/libraries/haskell/regex-base/0.93.2.nix   {};
-  regexBase = self.regexBase_0_72_0_2;
+  regexBase = self.regexBase_0_93_2;
 
   regexCompat_0_71_0_1 = callPackage ../development/libraries/haskell/regex-compat/0.71.0.1.nix {};
   regexCompat_0_92     = callPackage ../development/libraries/haskell/regex-compat/0.92.nix     {};
@@ -1148,11 +1177,13 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   regexCompat = self.regexCompat_0_71_0_1;
 
   regexPosix_0_72_0_3 = callPackage ../development/libraries/haskell/regex-posix/0.72.0.3.nix {};
-  regexPosix_0_94_1   = callPackage ../development/libraries/haskell/regex-posix/0.94.1.nix   {};
-  regexPosix_0_94_2   = callPackage ../development/libraries/haskell/regex-posix/0.94.2.nix   {};
-  regexPosix_0_94_4   = callPackage ../development/libraries/haskell/regex-posix/0.94.4.nix   {};
-  regexPosix_0_95_1   = callPackage ../development/libraries/haskell/regex-posix/0.95.1.nix   {};
-  regexPosix = self.regexPosix_0_72_0_3;
+  regexPosix_0_94_1 = callPackage ../development/libraries/haskell/regex-posix/0.94.1.nix {};
+  regexPosix_0_94_2 = callPackage ../development/libraries/haskell/regex-posix/0.94.2.nix {};
+  regexPosix_0_94_4 = callPackage ../development/libraries/haskell/regex-posix/0.94.4.nix {};
+  regexPosix_0_95_1 = callPackage ../development/libraries/haskell/regex-posix/0.95.1.nix {
+    regexBase = self.regexBase_0_93_2;
+  };
+  regexPosix = self.regexPosix_0_95_1;
 
   regexTDFA = callPackage ../development/libraries/haskell/regex-tdfa {};
   regexTdfa = self.regexTDFA;
@@ -1202,6 +1233,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   snapServer = callPackage ../development/libraries/haskell/snap/server.nix {};
 
+  socks = callPackage ../development/libraries/haskell/socks {};
+
   stateref = callPackage ../development/libraries/haskell/stateref {};
 
   StateVar = callPackage ../development/libraries/haskell/StateVar {};
@@ -1288,11 +1321,15 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   tagsoup_0_10_1 = callPackage ../development/libraries/haskell/tagsoup/0.10.1nix {};
 
+  temporary = callPackage ../development/libraries/haskell/temporary {};
+
   Tensor = callPackage ../development/libraries/haskell/Tensor {};
 
   terminfo = callPackage ../development/libraries/haskell/terminfo {};
 
-  testFramework = callPackage ../development/libraries/haskell/test-framework {};
+  testFramework_0_4_2_2 = callPackage ../development/libraries/haskell/test-framework/0.4.2.2.nix {};
+  testFramework_0_5 = callPackage ../development/libraries/haskell/test-framework/0.5.nix {};
+  testFramework = self.testFramework_0_5;
 
   testFrameworkHunit = callPackage ../development/libraries/haskell/test-framework-hunit {};
 
@@ -1435,7 +1472,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   xhtml_3000_2_0_1 = callPackage ../development/libraries/haskell/xhtml/3000.2.0.1.nix {};
   xhtml_3000_2_0_4 = callPackage ../development/libraries/haskell/xhtml/3000.2.0.4.nix {};
-  xhtml = self.xhtml_3000_2_0_1;
+  xhtml_3000_2_0_5 = callPackage ../development/libraries/haskell/xhtml/3000.2.0.5.nix {};
+  xhtml = self.xhtml_3000_2_0_5;
 
   xml = callPackage ../development/libraries/haskell/xml {};
 
@@ -1459,6 +1497,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
     pathPieces = self.pathPieces_0_0_0;
   };
 
+  yesodDefault = callPackage ../development/libraries/haskell/yesod-default {};
+
   yesodForm = callPackage ../development/libraries/haskell/yesod-form {};
 
   yesodJson = callPackage ../development/libraries/haskell/yesod-json {};
@@ -1484,7 +1524,7 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   zlib_0_5_3_1 = callPackage ../development/libraries/haskell/zlib/0.5.3.1.nix {
     inherit (pkgs) zlib;
   };
-  zlib = self.zlib_0_5_0_0;
+  zlib = self.zlib_0_5_3_1;
 
   zlibBindings = callPackage ../development/libraries/haskell/zlib-bindings {};
 
@@ -1543,7 +1583,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   happy_1_18_5 = callPackage ../development/tools/parsing/happy/1.18.5.nix {};
   happy_1_18_6 = callPackage ../development/tools/parsing/happy/1.18.6.nix {};
   happy_1_18_8 = callPackage ../development/tools/parsing/happy/1.18.8.nix {};
-  happy = self.happy_1_18_8;
+  happy_1_18_9 = callPackage ../development/tools/parsing/happy/1.18.9.nix {};
+  happy = self.happy_1_18_9;
 
   happyMeta = callPackage ../development/tools/haskell/happy-meta {};
 
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index e1976b5d732..44419a040fd 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -15,7 +15,6 @@ with (import ./release-lib.nix);
 
 } // (mapTestOn ((packagesWithMetaPlatform pkgs) // rec {
 
-  MPlayer = linux;
   abcde = linux;
   alsaUtils = linux;
   apacheHttpd = linux;
@@ -52,12 +51,10 @@ with (import ./release-lib.nix);
   chatzilla = linux;
   cksfv = all;
   classpath = linux;
-  cmake = all;
   consolekit = linux;
   coreutils = all;
   cpio = all;
   cron = linux;
-  cups = linux;
   cvs = linux;
   db4 = all;
   ddrescue = linux;
@@ -237,7 +234,6 @@ with (import ./release-lib.nix);
   php = linux;
   pidgin = linux;
   pinentry = linux;
-  pkgconfig = all;
   pltScheme = linux;
   pmccabe = linux;
   portmap = linux;
@@ -333,7 +329,6 @@ with (import ./release-lib.nix);
   wine = ["i686-linux"];
   wireshark = linux;
   wirelesstools = linux;
-  wpa_supplicant = linux;
   wxGTK = linux;
   x11_ssh_askpass = linux;
   xchm = linux;
@@ -354,20 +349,6 @@ with (import ./release-lib.nix);
   zsh = linux;
   zsnes = ["i686-linux"];
 
-  aspellDicts = {
-    de = all;
-    en = all;
-    es = all;
-    fr = all;
-    nl = all;
-    ru = all;
-  };
-
-  dbus_all = {
-    libs = linux;
-    tools = linux;
-  };
-
   emacs22Packages = {
     bbdb = linux;
     cedet = linux;
@@ -382,8 +363,8 @@ with (import ./release-lib.nix);
   };
 
   firefox36Pkgs.firefox = linux;
-  firefox80Pkgs.firefox = linux;
   firefox90Pkgs.firefox = linux;
+  firefox100Pkgs.firefox = linux;
 
   gnome = {
     gnome_panel = linux;
@@ -391,10 +372,6 @@ with (import ./release-lib.nix);
     gnome_vfs = linux;
   };
 
-  gtkLibs = {
-    gtk = linux;
-  };
-
   /*
   haskellPackages_ghc6104 = {
     ghc = ghcSupported;