about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/audio/ladspa-plugins/default.nix3
-rw-r--r--pkgs/applications/audio/lame/default.nix6
-rw-r--r--pkgs/applications/jedit/default.nix28
-rw-r--r--pkgs/applications/jedit/wrapper.nix18
-rw-r--r--pkgs/applications/misc/gphoto2/default.nix14
-rw-r--r--pkgs/applications/misc/synergy/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/elinks/default.nix6
-rw-r--r--pkgs/applications/version-management/git/default.nix21
-rw-r--r--pkgs/build-support/fetchcvs/builder.sh13
-rw-r--r--pkgs/build-support/fetchcvs/default.nix12
-rw-r--r--pkgs/desktops/gnome/default.nix2
-rw-r--r--pkgs/desktops/gnome/gnome-doc-utils.nix17
-rwxr-xr-xpkgs/desktops/kde-4/base/builder.sh (renamed from pkgs/desktops/kde-4/kdebase/builder.sh)11
-rw-r--r--pkgs/desktops/kde-4/base/default.nix14
-rw-r--r--pkgs/desktops/kde-4/decibel/default.nix11
-rw-r--r--pkgs/desktops/kde-4/default.nix35
-rw-r--r--pkgs/desktops/kde-4/edu/default.nix20
-rw-r--r--pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake38
-rw-r--r--pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake90
-rw-r--r--pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake45
-rw-r--r--pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake46
-rw-r--r--pkgs/desktops/kde-4/extragear/default.nix14
-rw-r--r--pkgs/desktops/kde-4/games/default.nix12
-rw-r--r--pkgs/desktops/kde-4/graphics/default.nix13
-rw-r--r--pkgs/desktops/kde-4/kdebase/default.nix55
-rw-r--r--pkgs/desktops/kde-4/kdelibs/default.nix48
-rwxr-xr-xpkgs/desktops/kde-4/kdepim/builder.sh18
-rw-r--r--pkgs/desktops/kde-4/kdepim/default.nix55
-rw-r--r--pkgs/desktops/kde-4/kdepimlibs/default.nix48
-rw-r--r--pkgs/desktops/kde-4/libs/FindIlmBase.cmake74
-rw-r--r--pkgs/desktops/kde-4/libs/FindOpenEXR.cmake68
-rw-r--r--pkgs/desktops/kde-4/libs/default.nix27
-rwxr-xr-xpkgs/desktops/kde-4/libs/setup.sh5
-rw-r--r--pkgs/desktops/kde-4/multimedia/default.nix13
-rw-r--r--pkgs/desktops/kde-4/network/default.nix12
-rwxr-xr-xpkgs/desktops/kde-4/pim/builder.sh10
-rw-r--r--pkgs/desktops/kde-4/pim/default.nix15
-rw-r--r--pkgs/desktops/kde-4/pimlibs/default.nix12
-rwxr-xr-xpkgs/desktops/kde-4/runtime/builder.sh12
-rw-r--r--pkgs/desktops/kde-4/runtime/default.nix15
-rw-r--r--pkgs/desktops/kde-4/support/akode.nix13
-rw-r--r--pkgs/desktops/kde-4/support/default.nix36
-rw-r--r--pkgs/desktops/kde-4/support/eigen.nix13
-rw-r--r--pkgs/desktops/kde-4/support/gmm.nix13
-rw-r--r--pkgs/desktops/kde-4/support/qca.nix15
-rw-r--r--pkgs/desktops/kde-4/support/qimageblitz.nix13
-rw-r--r--pkgs/desktops/kde-4/support/soprano.nix14
-rw-r--r--pkgs/desktops/kde-4/support/strigi.nix15
-rw-r--r--pkgs/desktops/kde-4/support/taglib.nix13
-rw-r--r--pkgs/desktops/kde-4/toys/default.nix12
-rw-r--r--pkgs/desktops/kde-4/utils/default.nix13
-rwxr-xr-xpkgs/desktops/kde-4/workspace/builder.sh12
-rw-r--r--pkgs/desktops/kde-4/workspace/default.nix15
-rw-r--r--pkgs/development/compilers/gcc-3.4/builder.sh12
-rw-r--r--pkgs/development/compilers/gcc-3.4/default.nix19
-rw-r--r--pkgs/development/compilers/ocaml/3.08.0.nix (renamed from pkgs/development/compilers/ocaml/ocaml-3.08.0.nix)2
-rw-r--r--pkgs/development/compilers/ocaml/3.09.1.nix (renamed from pkgs/development/compilers/ocaml/ocaml-3.09.1.nix)2
-rw-r--r--pkgs/development/compilers/ocaml/3.10.0.nix23
-rw-r--r--pkgs/development/compilers/ocaml/default.nix8
-rw-r--r--pkgs/development/interpreters/perl/setup-hook.sh4
-rw-r--r--pkgs/development/interpreters/python/2.4.nix52
-rw-r--r--pkgs/development/interpreters/python/2.5/setup-hook.sh5
-rw-r--r--pkgs/development/interpreters/python/default.nix55
-rw-r--r--pkgs/development/interpreters/python/setup-hook.sh5
-rw-r--r--pkgs/development/libraries/chmlib/builder.sh19
-rw-r--r--pkgs/development/libraries/chmlib/default.nix17
-rw-r--r--pkgs/development/libraries/clucene-contrib/default.nix18
-rw-r--r--pkgs/development/libraries/clucene-core/default.nix25
-rw-r--r--pkgs/development/libraries/dbus-glib/default.nix14
-rw-r--r--pkgs/development/libraries/facile/default.nix19
-rw-r--r--pkgs/development/libraries/haskell/gtk2hs/default.nix18
-rw-r--r--pkgs/development/libraries/libexif/default.nix12
-rw-r--r--pkgs/development/libraries/libgcrypt/default.nix11
-rw-r--r--pkgs/development/libraries/libgphoto2/default.nix17
-rw-r--r--pkgs/development/libraries/libgsf/default.nix19
-rw-r--r--pkgs/development/libraries/libnotify/default.nix20
-rw-r--r--pkgs/development/libraries/libsexy/default.nix17
-rw-r--r--pkgs/development/libraries/libwpd/default.nix5
-rw-r--r--pkgs/development/libraries/openssl/default.nix3
-rw-r--r--pkgs/development/libraries/strigi/default.nix20
-rw-r--r--pkgs/development/libraries/xine-lib/default.nix6
-rwxr-xr-xpkgs/development/tools/build-managers/cmake/setup-hook.sh15
-rw-r--r--pkgs/development/tools/misc/automake/setup-hook.sh4
-rw-r--r--pkgs/development/tools/misc/gdb/default.nix10
-rw-r--r--pkgs/development/tools/misc/pkgconfig/builder.sh10
-rw-r--r--pkgs/development/tools/misc/pkgconfig/default.nix12
-rw-r--r--pkgs/development/tools/misc/pkgconfig/setup-hook.sh4
-rw-r--r--pkgs/lib/default.nix4
-rw-r--r--pkgs/servers/monitoring/nagios/plugins/official/default.nix2
-rw-r--r--pkgs/test/openftd/default.nix49
-rw-r--r--pkgs/tools/misc/shebangfix/default.nix20
-rw-r--r--pkgs/tools/misc/shebangfix/shebangfix.pl35
-rw-r--r--pkgs/tools/misc/wv/default.nix2
-rw-r--r--pkgs/tools/package-management/nix/custom.nix45
-rw-r--r--pkgs/tools/package-management/nix/unstable.nix4
-rw-r--r--pkgs/top-level/all-packages.nix197
-rw-r--r--pkgs/top-level/builder-defs.nix74
97 files changed, 1501 insertions, 608 deletions
diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix
index 9a033a42b878..70dc36240c65 100644
--- a/pkgs/applications/audio/ladspa-plugins/default.nix
+++ b/pkgs/applications/audio/ladspa-plugins/default.nix
@@ -17,7 +17,8 @@ in
 stdenv.mkDerivation {
 	name = "swh-plugins-0.4.15";
 	builder = writeScript "swh-plugins-0.4.15-builder"
-		(textClosure [doConfigure doMakeInstall postInstall doForceShare]);
+		(textClosure [doConfigure doMakeInstall 
+			postInstall doForceShare]);
 	meta = {
 		description = "
 	LADSPA format audio plugins.
diff --git a/pkgs/applications/audio/lame/default.nix b/pkgs/applications/audio/lame/default.nix
index 503c0c395953..fa0fa679079a 100644
--- a/pkgs/applications/audio/lame/default.nix
+++ b/pkgs/applications/audio/lame/default.nix
@@ -1,9 +1,9 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation {
-  name = "lame-3.96.1";
+  name = "lame-3.97";
   src = fetchurl {
-    url = mirror://sourceforge/lame/lame-3.96.1.tar.gz ;
-    md5 = "e1206c46a5e276feca11a7149e2fc6ac" ;
+    url = mirror://sourceforge/lame/lame-3.97.tar.gz ;
+	sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa";
   };
 }
diff --git a/pkgs/applications/jedit/default.nix b/pkgs/applications/jedit/default.nix
new file mode 100644
index 000000000000..3d694ee3ed7e
--- /dev/null
+++ b/pkgs/applications/jedit/default.nix
@@ -0,0 +1,28 @@
+args:
+args.stdenv.mkDerivation {
+  name = "jedit-4.2";
+
+  src = args.fetchurl {
+    url = http://kent.dl.sourceforge.net/sourceforge/jedit/jedit42source.tar.gz;
+    sha256 = "1ckqghsw2r30kfkqfgjl4k47gdwpz8c1h85haw0y0ymq4rqh798j";
+  };
+
+  phases = "unpackPhase buildPhase";
+
+  buildPhase = "
+     sed -i 's/\\<SplashScreen\\>/org.gjt.sp.jedit.gui.SplashScreen/g' org/gjt/sp/jedit/GUIUtilities.java
+    ant dist
+    ensureDir $out/lib
+    cp jedit.jar $out/lib
+    ensureDir \$out/lib/modes
+    cp modes/catalog \$out/lib/modes
+  ";
+
+  buildInputs =(with args; [ant]);
+
+  meta = { 
+      description = "really nice programmers editor written in Java. Give it a try";
+      homepage = http://sourceforge.net/project/showfiles.php?group_id=588;
+      license = "GPL";
+  };
+}
diff --git a/pkgs/applications/jedit/wrapper.nix b/pkgs/applications/jedit/wrapper.nix
new file mode 100644
index 000000000000..ff8f6abacfc4
--- /dev/null
+++ b/pkgs/applications/jedit/wrapper.nix
@@ -0,0 +1,18 @@
+args:
+args.stdenv.mkDerivation {
+    name = args.jedit.name+"_startscript";
+
+    java = args.jre+"/bin/java";
+    jeditjar = args.jedit+"/lib/jedit.jar";
+
+    phases = "buildPhase";
+
+    buildPhase = "
+ensureDir \$out/bin
+cat > \$out/bin/${args.jedit.name} << EOF
+#!/bin/sh
+exec $java -jar $jeditjar \\$*
+EOF
+  chmod +x \$out/bin/${args.jedit.name}
+";
+}
diff --git a/pkgs/applications/misc/gphoto2/default.nix b/pkgs/applications/misc/gphoto2/default.nix
index caab251edd95..ef70b54384a7 100644
--- a/pkgs/applications/misc/gphoto2/default.nix
+++ b/pkgs/applications/misc/gphoto2/default.nix
@@ -1,10 +1,12 @@
-{stdenv, fetchurl, pkgconfig, libgphoto2, libexif, popt}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "gphoto2-2.2.0";
+stdenv.mkDerivation rec {
+  name = "gphoto2-2.4.0";
   src = fetchurl {
-    url = mirror://sourceforge/gphoto/gphoto2-2.2.0.tar.bz2;
-    md5 = "f5c1f83185db598b4ca52889964a5e84";
+    url = "mirror://sourceforge/gphoto/${name}.tar.bz2";
+    sha256 = "1rf4w5m35dsi8dkwwnh4wg70xivdi9j79f2dy3rq90p1v8sar9ca";
   };
-  buildInputs = [pkgconfig libgphoto2 libexif popt];
+  buildInputs = [pkgconfig libgphoto2 libexif popt gettext];
+# There is a bug in 2.4.0 configure.ac (in their m4 macroses)
+  patchPhase = "sed -e 's@_tmp=true@_tmp=false@' -i configure configure.ac";
 }
diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix
index b2b7af6f0141..7872c6abaaf7 100644
--- a/pkgs/applications/misc/synergy/default.nix
+++ b/pkgs/applications/misc/synergy/default.nix
@@ -5,7 +5,7 @@ args.stdenv.mkDerivation {
   src = args.fetchcvs {
     url = ":pserver:anonymous@synergy2.cvs.sourceforge.net:/cvsroot/synergy2";
     module = "synergy";
-    tag = "-DNOW";
+    date = "NOW";
     sha256 = "ef8e2ebfda6e43240051a7af9417092b2af50ece8b5c6c3fbd908ba91c4fe068";
   };
 
diff --git a/pkgs/applications/networking/browsers/elinks/default.nix b/pkgs/applications/networking/browsers/elinks/default.nix
index 9804f758ba7d..1e7868481338 100644
--- a/pkgs/applications/networking/browsers/elinks/default.nix
+++ b/pkgs/applications/networking/browsers/elinks/default.nix
@@ -8,11 +8,7 @@ stdenv.mkDerivation {
     sha256 = "c10e657fbd884eae4f01b91b32407bbfcbcae0ad5017fb24ea365aebc71d2af1";
   };
 
-  preConfigure = "
-  	touch config.log ; rm /tmp/elinks.config.log; ln -f config.log /tmp/elinks.config.log";
-
-  buildInputs = [python perl ncurses x11 bzip2 zlib openssl spidermonkey guile
-  	libtool];
+  buildInputs = [python perl ncurses x11 bzip2 zlib openssl spidermonkey guile];
   configureFlags = "--enable-finger --enable-html-highlight --with-guile
   --with-perl --with-python --enable-gopher --enable-cgi --enable-bittorrent
   --enable-nntp --with-openssl=${openssl}";
diff --git a/pkgs/applications/version-management/git/default.nix b/pkgs/applications/version-management/git/default.nix
index 138b4d614495..c2388f8c1aa4 100644
--- a/pkgs/applications/version-management/git/default.nix
+++ b/pkgs/applications/version-management/git/default.nix
@@ -1,16 +1,21 @@
-{stdenv, fetchurl, curl, openssl, zlib, expat, perl}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "git-1.5.1.2";
+stdenv.mkDerivation rec {
+  name = "git-1.5.3.5";
 
   src = fetchurl {
-    url = mirror://kernel/software/scm/git/git-1.5.1.2.tar.bz2;
-    sha256 = "0a7nnw9631h6nxk7sny0cjv89qlibilvsm6947620vr2kgc6p6k2";
+    url = "mirror://kernel/software/scm/git/${name}.tar.bz2";
+    sha256 = "0ab63s25wzmsl5inp7bykz5ac7xjilqa0ciaz7ydhciymz6gkawj";
   };
 
   buildInputs = [curl openssl zlib expat];
 
-  preBuild = "
-    makeFlagsArray=(prefix=$out PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell})
-  ";
+  makeFlags="prefix=\${out} PERL_PATH=${perl}/bin/perl SHELL_PATH=${stdenv.shell}";
+
+  meta = {
+	  license = "GPL2";
+	  homepage = http://git.or.cz;
+	  description = "A popular version control system designed to handle very
+	  large projects with speed and efficiency";
+  };
 }
diff --git a/pkgs/build-support/fetchcvs/builder.sh b/pkgs/build-support/fetchcvs/builder.sh
index 16aad96116d5..be3e9e46355d 100644
--- a/pkgs/build-support/fetchcvs/builder.sh
+++ b/pkgs/build-support/fetchcvs/builder.sh
@@ -1,8 +1,5 @@
 source $stdenv/setup
 
-if test -z "$tag"; then
-  tag="-DNOW"
-fi
 # creating the export drictory and checking out there only to be able to
 # move the content without the root directory into $out ...
 # cvs -f -d "$url" export $tag -d "$out" "$module"
@@ -10,6 +7,16 @@ fi
 # See als man Page for those options
 
 ensureDir $out export
+set -x
+if [ -n "$tag" ]; then
+  tag="-r $tag"
+else
+  if [ -n "$date" ]; then
+    tag="-D $date"
+  else
+    tag="-D NOW"
+  fi
+fi
 cd export; cvs -f -d "$url" export $tag "$module"
 mv */* $out
 
diff --git a/pkgs/build-support/fetchcvs/default.nix b/pkgs/build-support/fetchcvs/default.nix
index 6cd31ddaade7..60463ec56443 100644
--- a/pkgs/build-support/fetchcvs/default.nix
+++ b/pkgs/build-support/fetchcvs/default.nix
@@ -1,13 +1,13 @@
 # example tags:
-# "-DNOW" (get current version)
-# "-D2007-20-10" (get the last version before given date)
-# "-r <tagname>" (get version by tag name)
-{stdenv, cvs, nix}: {url, module, tag, sha256}:
+# date="2007-20-10"; (get the last version before given date)
+# tag="<tagname>" (get version by tag name)
+# If you don't specify neither one date="NOW" will be used (get latest)
+
+{stdenv, cvs, nix}: {url, module, tag ? null, date ? null, sha256}:
 
 stdenv.mkDerivation {
   name = "cvs-export";
   builder = ./builder.sh;
   buildInputs = [cvs nix];
-
-  inherit url module tag sha256;
+  inherit url module sha256 tag date;
 }
diff --git a/pkgs/desktops/gnome/default.nix b/pkgs/desktops/gnome/default.nix
index 6410e9c053ac..9b4c14340bfc 100644
--- a/pkgs/desktops/gnome/default.nix
+++ b/pkgs/desktops/gnome/default.nix
@@ -210,7 +210,7 @@ rec {
 
   gnomedocutils = import ./gnome-doc-utils.nix {
     inherit stdenv fetchurl pkgconfig perl perlXMLParser python
-      libxml2 libxslt gettext;
+      libxml2 libxslt gettext libxml2Python;
     input = desktop.gnomedocutils;
   };
 
diff --git a/pkgs/desktops/gnome/gnome-doc-utils.nix b/pkgs/desktops/gnome/gnome-doc-utils.nix
index f1650d9650a8..8a77d96475f3 100644
--- a/pkgs/desktops/gnome/gnome-doc-utils.nix
+++ b/pkgs/desktops/gnome/gnome-doc-utils.nix
@@ -1,7 +1,4 @@
-{ input, stdenv, fetchurl, pkgconfig, perl, perlXMLParser, python
-, libxml2, libxslt, gettext
-}:
-
+args: with args;
 # !!! xml2po needs to store the path to libxml2
 
 stdenv.mkDerivation {
@@ -9,8 +6,18 @@ stdenv.mkDerivation {
   
   buildInputs = [
     pkgconfig perl perlXMLParser python
-    libxml2 libxslt gettext
+    libxml2 libxslt gettext python libxml2Python
   ];
 
   configureFlags = "--disable-scrollkeeper";
+
+  postInstall = "
+    mv \$out/bin/xml2po \$out/bin/.xml2po.orig
+    pythonPathLibXml2=\"\$(toPythonPath ${libxml2Python})\"
+    echo -e '#! ${stdenv.shell}\nPYTHONPATH=$PYTHONPATH:'\"\$( toPythonPath \$out  )"+
+    ":\${pythonPathLibXml2//python2.5/python2.4}"+
+    ":\$( toPythonPath ${libxml2Python} )\""+
+    "' \$(dirname \$0)/.xml2po.orig \"\$@\"' > \$out/bin/xml2po;
+    chmod a+x \$out/bin/xml2po
+  ";
 }
diff --git a/pkgs/desktops/kde-4/kdebase/builder.sh b/pkgs/desktops/kde-4/base/builder.sh
index 41cff761b361..99b357fcf167 100755
--- a/pkgs/desktops/kde-4/kdebase/builder.sh
+++ b/pkgs/desktops/kde-4/base/builder.sh
@@ -1,21 +1,12 @@
 source ${stdenv}/setup
 
-myPreBuild()
-{
-	for i in ${qt}/include/*; do
-		NIX_CFLAGS_COMPILE="-I$i ${NIX_CFLAGS_COMPILE}"
-	done;
-	echo "${NIX_CFLAGS_COMPILE}"
-}
-preBuild=myPreBuild
-
 myPatchPhase()
 {
 	echo "Fixing dbus calls in CMakeLists.txt files"
 # Trailing slash in sed is essential
 	find .. -name CMakeLists.txt \
 	| xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i
-	sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h
+	#sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h
 }
 patchPhase=myPatchPhase
 genericBuild
diff --git a/pkgs/desktops/kde-4/base/default.nix b/pkgs/desktops/kde-4/base/default.nix
new file mode 100644
index 000000000000..75dbfbf40d4d
--- /dev/null
+++ b/pkgs/desktops/kde-4/base/default.nix
@@ -0,0 +1,14 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdebase-4.0beta4";
+  #builder = ./builder.sh;
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdebase-3.95.0.tar.bz2;
+    sha256 = "0qf7bn5jqj70hznjk74vpwb7rvk6f5gx9fxwli930b2hskib3zll";
+  };
+
+  propagatedBuildInputs = [kdepimlibs libusb];
+  inherit kdelibs;
+}
diff --git a/pkgs/desktops/kde-4/decibel/default.nix b/pkgs/desktops/kde-4/decibel/default.nix
new file mode 100644
index 000000000000..ff98b48ee6fc
--- /dev/null
+++ b/pkgs/desktops/kde-4/decibel/default.nix
@@ -0,0 +1,11 @@
+args: with args;
+stdenv.mkDerivation {
+	name = "decibel-0.5.0";
+
+	src = fetchurl {
+		url = http://decibel.kde.org/fileadmin/downloads/decibel/releases/decibel-0.5.0.tar.gz;
+		sha256 = "07visasid4mpzm0ba5j9qy0lxxb6451lvbr2gnc1vzfvjagffqz4";
+	};
+
+	buildInputs = [kdelibs kdebase ];
+}
diff --git a/pkgs/desktops/kde-4/default.nix b/pkgs/desktops/kde-4/default.nix
new file mode 100644
index 000000000000..9732d9e2b2b7
--- /dev/null
+++ b/pkgs/desktops/kde-4/default.nix
@@ -0,0 +1,35 @@
+args:
+rec {
+  fullargs = args // { kdelibs = libs; kdepimlibs = pimlibs; kdebase = base; kderuntime = runtime; };
+  libs = import ./libs (args // { kdesupport = support; });
+  pimlibs = import ./pimlibs (args // { kdelibs = libs; });
+  graphics = import ./graphics (fullargs // { kdeworkspace = workspace; } );
+  multimedia = import ./multimedia (fullargs // { kdeworkspace = workspace; } );
+  toys = import ./toys (fullargs // { kdeworkspace = workspace; } );
+  network = import ./network (fullargs // { kdeworkspace = workspace; } );
+  utils = import ./utils (fullargs // { kdeworkspace = workspace; } );
+  games = import ./games (fullargs // { kdeworkspace = workspace; } );
+  edu = import ./edu (fullargs // { kdeworkspace = workspace; } );
+  base = import ./base fullargs;
+  runtime = import ./runtime fullargs;
+  workspace = import ./workspace fullargs;
+  extragear_plasma = import ./extragear (fullargs // { kdeworkspace = workspace; });
+  support = import ./support args;
+  decibel = import ./decibel fullargs;
+  pim = import ./pim (fullargs // {kdeworkspace = workspace; });
+
+  env = with args; runCommand "kde-env"
+  {
+	  KDEDIRS = lib.concatStringsSep ":" ([ libs pimlibs graphics multimedia
+	  toys network utils games edu base runtime workspace extragear_plasma pim] ++
+	  support.all);
+	  scriptName = "echo-kde-dirs";
+  }
+  "
+  ensureDir \${out}/bin
+  scriptPath=\${out}/bin/\${scriptName}
+  echo \"#!/bin/sh\" > \${scriptPath}
+  echo \"echo -n export KDEDIRS=\${KDEDIRS}\" >> \${scriptPath}
+  chmod +x \${scriptPath}
+  ";
+}
diff --git a/pkgs/desktops/kde-4/edu/default.nix b/pkgs/desktops/kde-4/edu/default.nix
new file mode 100644
index 000000000000..e69a1a49be63
--- /dev/null
+++ b/pkgs/desktops/kde-4/edu/default.nix
@@ -0,0 +1,20 @@
+args: with args;
+
+stdenv.mkDerivation rec {
+  name = "kdeedu-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdeedu-3.95.0.tar.bz2;
+    sha256 = "0cydl3pp3l0cbfmf774qh8njyhycaf8yxb27k4xf6mipvw1k9jqf";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace boost readline openbabel ocaml
+  libusb facile python];
+  myCmakeFiles = ./myCmakeFiles;
+  patchPhase = "
+  cp ${myCmakeFiles}/* ../cmake/modules
+  sed -e 's@+facile@\${LIBFACILE_INCLUDE_DIR}@' -i \\
+  ../kalzium/src/CMakeOCamlInstructions.cmake
+  ";
+  configureFlags = "--debug-trycompile";
+}
diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake
new file mode 100644
index 000000000000..35701ecf5c68
--- /dev/null
+++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/CheckBoostAndPythonCompatible.cmake
@@ -0,0 +1,38 @@
+include(CheckCXXSourceCompiles)
+include(CheckIncludeFileCXX)
+include(CheckLibraryExists)
+
+MACRO(check_boost_and_python_compatible
+	_bo_inc _bo_ld _bo_py_lib
+	_py_inc _py_ld _py_lib)
+
+	set(_save_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}")
+
+	set(CMAKE_REQUIRED_FLAGS "-L${_bo_ld} -L${_py_ld}")
+	set(CMAKE_REQUIRED_INCLUDES ${_py_inc} ${_bo_inc})
+	set(CMAKE_REQUIRED_LIBRARIES ${_bo_py_lib} ${_py_lib})
+
+	check_cxx_source_compiles("
+#include <boost/python.hpp>
+const char* greet() { return \"Hello world!\"; }
+BOOST_PYTHON_MODULE(hello) { boost::python::def(\"greet\", greet); }
+
+int main() { return 0; }
+
+// some vars, in case of the compilation fail...
+// python include dir: ${_py_inc}
+// python lib: ${_py_lib}
+// 
+// boost python lib: ${_bo_py_lib}
+// boost include dir: ${_bo_inc}
+// boost lib dir: ${_bo_ld}
+// 
+"
+BOOST_PYTHON_${_bo_inc}_${_bo_ld}_${_bo_py_lib}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE )
+
+	set(CMAKE_REQUIRED_FLAGS)
+	set(CMAKE_REQUIRED_INCLUDES)
+	set(CMAKE_REQUIRED_LIBRARIES)
+	set(CMAKE_CXX_FLAGS ${_save_CXX_FLAGS})
+ENDMACRO(check_boost_and_python_compatible)
diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake
new file mode 100644
index 000000000000..b68959d8a9c9
--- /dev/null
+++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindBoostPython.cmake
@@ -0,0 +1,90 @@
+# - Try to find the a valid boost+python combination
+# Once done this will define
+#
+#  Boost_PYTHON_FOUND - system has a valid boost+python combination
+#  BOOST_PYTHON_INCLUDES - the include directory for boost+python
+#  BOOST_PYTHON_LIBS - the needed libs for boost+python
+
+# Copyright (c) 2006, Pino Toscano, <toscano.pino@tiscali.it>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS)
+	# Already in cache, be silent
+	set(Boost_PYTHON_FIND_QUIETLY TRUE)
+endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS)
+
+SET(Boost_PYTHON_LIB_SUFFIXES "-mt" "-gcc-mt")
+SET(Boost_KNOWN_VERSIONS "-1_34_1" "-1_34_0" "-1_33_1" "-1_33_0")
+
+FIND_PACKAGE(Boost)
+INCLUDE(PythonLibsUtils)
+INCLUDE(CheckBoostAndPythonCompatible)
+
+IF(Boost_FOUND AND Boost_LIBRARY_DIRS)
+
+	SET(Boost_PYTHON_LIB_NAMES boost_python)
+	FOREACH(_suffix ${Boost_PYTHON_LIB_SUFFIXES})
+		set(Boost_PYTHON_LIB_NAMES ${Boost_PYTHON_LIB_NAMES}
+			boost_python${_suffix})
+		FOREACH(_bo_ver ${Boost_KNOWN_VERSIONS})
+			set(Boost_PYTHON_LIB_NAMES ${Boost_PYTHON_LIB_NAMES}
+				boost_python${_suffix}${_bo_ver})
+		ENDFOREACH(_bo_ver)
+	ENDFOREACH(_suffix)
+
+	SET(_found FALSE)
+	FOREACH(_boost_python_lib ${Boost_PYTHON_LIB_NAMES})
+		IF(NOT _found)
+			FIND_LIBRARY(Boost_PYTHON_LIB_FULLPATH
+				NAME ${_boost_python_lib}
+				PATHS ${Boost_LIBRARY_DIRS}
+				NO_DEFAULT_PATH
+				)
+			IF(Boost_PYTHON_LIB_FULLPATH)
+				SET(Boost_PYTHON_LIB ${_boost_python_lib})
+				SET(_found TRUE)
+			ENDIF(Boost_PYTHON_LIB_FULLPATH)
+		ENDIF(NOT _found)
+	ENDFOREACH(_boost_python_lib)
+
+	IF(Boost_PYTHON_LIB)
+		SET(_found FALSE)
+		FOREACH(_py_ver ${PYTHON_KNOWN_VERSIONS})
+			if (NOT _found)
+				python_find_version(${_py_ver} _py_inc _py_ld _py_lib)
+				IF(PYTHON_REQ_VERSION_FOUND)
+					MESSAGE(STATUS " ${Boost_INCLUDE_DIRS} ${Boost_LIBRARY_DIRS} ${Boost_PYTHON_LIB} ${_py_inc} ${_py_ld} ${_py_lib}")
+					check_boost_and_python_compatible(
+						"${Boost_INCLUDE_DIRS}" "${Boost_LIBRARY_DIRS}"
+						"${Boost_PYTHON_LIB}" "${_py_inc}" "${_py_ld}"
+						"${_py_lib}")
+					SET(_found
+						BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE)
+
+					IF(BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE)
+						SET(BOOST_PYTHON_INCLUDES ${Boost_INCLUDE_DIRS} ${_py_inc})
+						SET(BOOST_PYTHON_LIBS "-l${_py_lib} -L${_py_ld} -l${Boost_PYTHON_LIB}")
+						SET(BOOST_PYTHON_FOUND TRUE)
+						SET(_found TRUE)
+					ENDIF(BOOST_PYTHON_${Boost_INCLUDE_DIRS}_${Boost_LIBRARY_DIRS}_${Boost_PYTHON_LIB}_${_py_inc}_${_py_ld}_${_py_lib}_COMPATIBLE)
+				ENDIF(PYTHON_REQ_VERSION_FOUND)
+			ENDIF(NOT _found)
+		ENDFOREACH(_py_ver)
+	ENDIF(Boost_PYTHON_LIB)
+ENDIF(Boost_FOUND AND Boost_LIBRARY_DIRS)
+
+if(BOOST_PYTHON_FOUND)
+	if(NOT BoostPython_FIND_QUIETLY)
+		message(STATUS "Found Boost+Python: ${BOOST_PYTHON_INCLUDES} ${BOOST_PYTHON_LIBS}")
+	endif(NOT BoostPython_FIND_QUIETLY)
+	set(KIG_ENABLE_PYTHON_SCRIPTING 1)
+else (BOOST_PYTHON_FOUND)
+	if (BoostPython_FIND_REQUIRED)
+		message(FATAL_ERROR "Could NOT find Boost+Python")
+	endif(BoostPython_FIND_REQUIRED)
+	set(KIG_ENABLE_PYTHON_SCRIPTING 0)
+endif(BOOST_PYTHON_FOUND)
+
+mark_as_advanced(BOOST_PYTHON_INCLUDES BOOST_PYTHON_LIBS)
diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake
new file mode 100644
index 000000000000..154531dabc11
--- /dev/null
+++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/FindLibfacile.cmake
@@ -0,0 +1,45 @@
+# - Try to find Libfacile
+# Once done this will define
+#
+#  LIBFACILE_FOUND - system has Libfacile
+#  LIBFACILE_INCLUDE_DIR - the Libfacile include directory
+#  LIBFACILE_LIBRARIES - Link these to use Libfacile
+#  LIBFACILE_DEFINITIONS - Compiler switches required for using Libfacile
+#
+# Copyright (c) 2006, Carsten Niehaus, <cniehaus@gmx.de>
+# Copyright (c) 2006, Montel Laurent, <montel@kde.org>
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+find_package(OCaml)
+
+set(LIBFACILE_FOUND FALSE)
+
+if( OCAML_FOUND )
+   find_file(LIBFACILE_LIBRARIES NAME facile.a
+       PATHS ${OCAMLC_DIR} ENV CMAKE_LIBRARY_PATH
+	   PATH_SUFFIXES facile ocaml/facile
+   )
+   message(STATUS "LIBFACILE_LIBRARIES :<${LIBFACILE_LIBRARIES}>") 
+   if (LIBFACILE_LIBRARIES)
+	   get_filename_component(LIBFACILE_INCLUDE_DIR ${LIBFACILE_LIBRARIES} PATH)
+	   message(STATUS "LIBFACILE_INCLUDE_DIR <${LIBFACILE_INCLUDE_DIR}>")
+       set(LIBFACILE_FOUND TRUE)
+   endif(LIBFACILE_LIBRARIES)
+endif(OCAML_FOUND)
+
+
+if(LIBFACILE_FOUND)
+   if(NOT Libfacile_FIND_QUIETLY)
+      message(STATUS "Found Libfacile: ${LIBFACILE_LIBRARIES}")
+   endif(NOT Libfacile_FIND_QUIETLY)
+else(LIBFACILE_FOUND)
+   if(Libfacile_FIND_REQUIRED)
+      message(FATAL_ERROR "Could not find Libfacile")
+   endif(Libfacile_FIND_REQUIRED)
+endif(LIBFACILE_FOUND)
+
+# show the LIBFACILE_INCLUDE_DIR and LIBFACILE_LIBRARIES variables only in the advanced view
+mark_as_advanced(LIBFACILE_INCLUDE_DIR LIBFACILE_LIBRARIES )
+ 
diff --git a/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake b/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake
new file mode 100644
index 000000000000..df54324712a1
--- /dev/null
+++ b/pkgs/desktops/kde-4/edu/myCmakeFiles/PythonLibsUtils.cmake
@@ -0,0 +1,46 @@
+SET(PYTHON_KNOWN_VERSIONS "2.5" "2.4" "2.3" "2.2" "2.1" "2.0" "1.6" "1.5")
+
+MACRO(python_find_version _py_ver _py_inc _py_ld _py_lib)
+	STRING(REPLACE "." "" _py_ver_nd "${_py_ver}")
+
+	SET(PY_INSTALL_PATH
+		[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_py_ver}\\InstallPath])
+
+	SET(_py_libnames "python${_py_ver}" "python${_py_ver_nd}")
+
+	SET(_py_found FALSE)
+	FOREACH(_py_libname ${_py_libnames})
+		IF (NOT _py_found)
+			SET(_py_lib_full _py_lib_full-NOTFOUND)
+
+			FIND_LIBRARY(_py_lib_full
+				NAMES "${_py_libname}"
+				PATHS "${PY_INSTALL_PATH}/libs"
+				NO_SYSTEM_ENVIRONMENT_PATH
+			)
+			FIND_LIBRARY(_py_lib_full
+				NAMES "${_py_libname}"
+				PATHS "${PY_INSTALL_PATH}/libs"
+				PATH_SUFFIXES "python${_py_ver}/config"
+				NO_SYSTEM_ENVIRONMENT_PATH
+			)
+			IF(_py_lib_full)
+				SET(_py_lib "${_py_libname}")
+				GET_FILENAME_COMPONENT(_py_ld "${_py_lib_full}" PATH)
+				SET(_py_found TRUE)
+			ENDIF(_py_lib_full)
+		ENDIF(NOT _py_found)
+	ENDFOREACH(_py_libname)
+
+	IF(_py_found)
+		FIND_PATH(_py_inc
+			NAMES Python.h
+			PATHS
+				${PY_INSTALL_PATH}/include
+			PATH_SUFFIXES
+				"python${_py_ver}"
+		)
+	ENDIF(_py_found)
+
+	SET(PYTHON_REQ_VERSION_FOUND ${_py_found})
+ENDMACRO(python_find_version)
diff --git a/pkgs/desktops/kde-4/extragear/default.nix b/pkgs/desktops/kde-4/extragear/default.nix
new file mode 100644
index 000000000000..c67d4b8682cb
--- /dev/null
+++ b/pkgs/desktops/kde-4/extragear/default.nix
@@ -0,0 +1,14 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "extragear-plasma-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/extragear-plasma-3.95.0.tar.bz2;
+    sha256 = "1nzfy34ig66gfpgv6kbcmcap13axcy7kvj43srbd0ic6a0giv283";
+  };
+
+  buildInputs = [ kdeworkspace kdebase ];
+  patchPhase = "
+  sed -e 's@<Plasma@<KDE/Plasma@' -i ../applets/*/*.h";
+}
diff --git a/pkgs/desktops/kde-4/games/default.nix b/pkgs/desktops/kde-4/games/default.nix
new file mode 100644
index 000000000000..e3869e10808f
--- /dev/null
+++ b/pkgs/desktops/kde-4/games/default.nix
@@ -0,0 +1,12 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdegames-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdegames-3.95.0.tar.bz2;
+    sha256 = "1zsfslnazl8gmiq51y5d16svv7p92yvs2zsz13zg7zpwy4afxzbp";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace];
+}
diff --git a/pkgs/desktops/kde-4/graphics/default.nix b/pkgs/desktops/kde-4/graphics/default.nix
new file mode 100644
index 000000000000..124c9598c9ea
--- /dev/null
+++ b/pkgs/desktops/kde-4/graphics/default.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdegraphics-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdegraphics-3.95.0.tar.bz2;
+    sha256 = "0mfsadv9ihhw6s7pcy1yabc21px47nzfs34c76n1888qb09m5dfw";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace libgphoto2 saneBackends
+  djvulibre exiv2 poppler chmlib];
+}
diff --git a/pkgs/desktops/kde-4/kdebase/default.nix b/pkgs/desktops/kde-4/kdebase/default.nix
deleted file mode 100644
index ebc0ba3cab34..000000000000
--- a/pkgs/desktops/kde-4/kdebase/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ stdenv, fetchurl
-, inputproto, kbproto, scrnsaverproto, xextproto, xf86miscproto
-, xf86vidmodeproto, xineramaproto, xproto
-, libICE
-, libX11
-, libXau
-, libXcomposite
-, libXcursor
-, libXdamage
-, libXdmcp
-, libXext
-, libXfixes
-, libXft
-, libXi
-, libXinerama
-, libXpm
-, libXrandr
-, libXrender
-, libXScrnSaver
-, libXt
-, libXtst
-, libXv
-, libXxf86misc
-, libxkbfile
-, zlib, perl, qt, openssl, pcre
-, pkgconfig, libjpeg, libpng, libtiff, libxml2, libxslt, libtool, expat
-, freetype, bzip2, strigi, cmake, shared_mime_info, alsaLib, libungif
-, libusb, glib, mesa
-, cups, kdelibs, kdepimlibs
-}:
-
-stdenv.mkDerivation {
-  name = "kdebase-4.0beta1";
-  builder = ./builder.sh;
-  
-  src = fetchurl {
-    url = mirror://kde/unstable/3.92/src/kdebase-3.92.0.tar.bz2;
-    sha256 = "1xh5a93l6anmix358fll4xfqm5fl4hpm1ksmlab8hr8s7vqng707";
-  };
-
-  buildInputs = [
-	inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
-	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
-	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
-	libXinerama mesa stdenv.gcc.libc
-	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile
-    zlib perl qt openssl pcre 
-    pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
-    libtool freetype bzip2 strigi cmake shared_mime_info alsaLib libungif cups
-	kdelibs kdepimlibs libusb glib
-  ];
-# TODO : it should be done through setup-hooks
-  KDEDIRS="${kdelibs}/share/apps:${kdepimlibs}/share/apps";
-  inherit qt kdelibs;
-}
diff --git a/pkgs/desktops/kde-4/kdelibs/default.nix b/pkgs/desktops/kde-4/kdelibs/default.nix
deleted file mode 100644
index 9d59da000880..000000000000
--- a/pkgs/desktops/kde-4/kdelibs/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ stdenv, fetchurl
-, inputproto, kbproto, scrnsaverproto, xextproto, xf86miscproto
-, xf86vidmodeproto, xineramaproto, xproto
-, libICE
-, libX11
-, libXau
-, libXcomposite
-, libXcursor
-, libXdamage
-, libXdmcp
-, libXext
-, libXfixes
-, libXft
-, libXi
-, libXpm
-, libXrandr
-, libXrender
-, libXScrnSaver
-, libXt
-, libXtst
-, libXv
-, libXxf86misc
-, libxkbfile
-, zlib, perl, qt, openssl, pcre
-, pkgconfig, libjpeg, libpng, libtiff, libxml2, libxslt, libtool, expat
-, freetype, bzip2, strigi, cmake, shared_mime_info, alsaLib, libungif
-, cups
-}:
-
-stdenv.mkDerivation {
-  name = "kdelibs-4.0beta1";
-  
-  src = fetchurl {
-    url = mirror://kde/unstable/3.92/src/kdelibs-3.92.0.tar.bz2;
-    sha256 = "19jd9nx5g0ayxavj3ys52wx5ppxw9yr9jylxk7qplxsm525ryf1p";
-  };
-
-  buildInputs = [
-	inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
-	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
-	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
-	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile
-    zlib perl qt openssl pcre 
-    pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
-    libtool freetype bzip2 strigi cmake shared_mime_info alsaLib libungif cups
-  ];
-  patchPhase = "sed -e 's@ NO_SYSTEM_PATH@@g' -i ../cmake/modules/FindX11.cmake";
-}
diff --git a/pkgs/desktops/kde-4/kdepim/builder.sh b/pkgs/desktops/kde-4/kdepim/builder.sh
deleted file mode 100755
index 73d0e9febcd5..000000000000
--- a/pkgs/desktops/kde-4/kdepim/builder.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-source ${stdenv}/setup
-
-myPreBuild()
-{
-	for i in ${qt}/include/*; do
-		NIX_CFLAGS_COMPILE="-I$i ${NIX_CFLAGS_COMPILE}"
-	done;
-	echo "${NIX_CFLAGS_COMPILE}"
-}
-preBuild=myPreBuild
-
-myPatchPhase()
-{
-	sed -e '3s/)/ ${CMAKE_MODULE_PATH})/' -i ../CMakeLists.txt
-}
-patchPhase=myPatchPhase
-
-genericBuild
diff --git a/pkgs/desktops/kde-4/kdepim/default.nix b/pkgs/desktops/kde-4/kdepim/default.nix
deleted file mode 100644
index dd1e706bf743..000000000000
--- a/pkgs/desktops/kde-4/kdepim/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ stdenv, fetchurl
-, inputproto, kbproto, scrnsaverproto, xextproto, xf86miscproto
-, xf86vidmodeproto, xineramaproto, xproto
-, libICE
-, libX11
-, libXau
-, libXcomposite
-, libXcursor
-, libXdamage
-, libXdmcp
-, libXext
-, libXfixes
-, libXft
-, libXi
-, libXinerama
-, libXpm
-, libXrandr
-, libXrender
-, libXScrnSaver
-, libXt
-, libXtst
-, libXv
-, libXxf86misc
-, libxkbfile
-, zlib, perl, qt, openssl, pcre
-, pkgconfig, libjpeg, libpng, libtiff, libxml2, libxslt, libtool, expat
-, freetype, bzip2, strigi, cmake, shared_mime_info, alsaLib, libungif
-, libusb, glib, mesa, gpgme, boost
-, cups, kdelibs, kdepimlibs
-}:
-
-stdenv.mkDerivation {
-  name = "kdepim-4.0beta1";
-  builder = ./builder.sh;
-  
-  src = fetchurl {
-    url = mirror://kde/unstable/3.92/src/kdepim-3.92.0.tar.bz2;
-    sha256 = "1wlq1h7j07f24n1mjnv9wbfsxn2vn24qfn5dgn4j4fsl84qha16i";
-  };
-
-  buildInputs = [
-	inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
-	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
-	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
-	libXinerama mesa stdenv.gcc.libc
-	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile
-    zlib perl qt openssl pcre 
-    pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
-    libtool freetype bzip2 strigi cmake shared_mime_info alsaLib libungif cups
-	kdelibs kdepimlibs libusb glib gpgme boost
-  ];
-# TODO : it should be done through setup-hooks
-  KDEDIRS="${kdelibs}/share/apps:${kdepimlibs}/share/apps";
-  inherit qt kdelibs;
-}
diff --git a/pkgs/desktops/kde-4/kdepimlibs/default.nix b/pkgs/desktops/kde-4/kdepimlibs/default.nix
deleted file mode 100644
index 44c6728b5e3a..000000000000
--- a/pkgs/desktops/kde-4/kdepimlibs/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ stdenv, fetchurl
-, inputproto, kbproto, scrnsaverproto, xextproto, xf86miscproto
-, xf86vidmodeproto, xineramaproto, xproto
-, libICE
-, libX11
-, libXau
-, libXcomposite
-, libXcursor
-, libXdamage
-, libXdmcp
-, libXext
-, libXfixes
-, libXft
-, libXi
-, libXpm
-, libXrandr
-, libXrender
-, libXScrnSaver
-, libXt
-, libXtst
-, libXv
-, libXxf86misc
-, libxkbfile
-, zlib, perl, qt, openssl, pcre
-, pkgconfig, libjpeg, libpng, libtiff, libxml2, libxslt, libtool, expat
-, freetype, bzip2, strigi, cmake, shared_mime_info, alsaLib, libungif
-, cups, kdelibs, boost, gpgme
-}:
-
-stdenv.mkDerivation {
-  name = "kdepimlibs-4.0beta1";
-  
-  src = fetchurl {
-    url = mirror://kde/unstable/3.92/src/kdepimlibs-3.92.0.tar.bz2;
-    sha256 = "0q7zzj8n282xaxvdij74fb17w5c1vja7izxfrkcbq7arn9f40wbx";
-  };
-
-  buildInputs = [
-	inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
-	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
-	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
-	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile
-    zlib perl qt openssl pcre 
-    pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
-    libtool freetype bzip2 strigi cmake shared_mime_info alsaLib libungif cups
-	kdelibs boost gpgme
-  ];
-}
diff --git a/pkgs/desktops/kde-4/libs/FindIlmBase.cmake b/pkgs/desktops/kde-4/libs/FindIlmBase.cmake
new file mode 100644
index 000000000000..1511e9509cee
--- /dev/null
+++ b/pkgs/desktops/kde-4/libs/FindIlmBase.cmake
@@ -0,0 +1,74 @@
+# Try to find the IlmBase libraries
+# This check defines:
+#
+#  ILMBASE_FOUND - system has IlmBase
+#  ILMBASE_INCLUDE_DIR - IlmBase include directory
+#  ILMBASE_LIBRARIES - Libraries needed to use IlmBase
+#
+# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
+# Copyright (c) 2007, Yury G. Kudryashov, <urkud.urkud@gmail.com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES)
+  # in cache already
+  SET(ILMBASE_FOUND TRUE)
+
+else (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES)
+IF (NOT WIN32)
+  # use pkg-config to get the directories and then use these values
+  # in the FIND_PATH() and FIND_LIBRARY() calls
+  INCLUDE(UsePkgConfig)
+  
+  PKGCONFIG(IlmBase _IlmBaseIncDir _IlmBaseLinkDir _IlmBaseLinkFlags _IlmBaseCflags)
+ENDIF (NOT WIN32)  
+  FIND_PATH(ILMBASE_INCLUDE_DIR ImathBox.h
+     ${_IlmBaseIncDir}
+     ${_IlmBaseIncDir}/OpenEXR/
+  )
+
+  FIND_LIBRARY(ILMBASE_HALF_LIBRARY NAMES Half
+    PATHS
+    ${_IlmBaseLinkDir}
+    NO_DEFAULT_PATH
+  )
+  FIND_LIBRARY(ILMBASE_HALF_LIBRARY NAMES Half )
+  
+  FIND_LIBRARY(ILMBASE_IEX_LIBRARY NAMES Iex
+    PATHS
+    ${_IlmBaseLinkDir}
+    NO_DEFAULT_PATH
+  )
+  FIND_LIBRARY(ILMBASE_IEX_LIBRARY NAMES Iex )
+  
+  FIND_LIBRARY(ILMBASE_IMATH_LIBRARY NAMES Imath
+    PATHS
+    ${_IlmBaseLinkDir}
+    NO_DEFAULT_PATH
+  )
+  FIND_LIBRARY(ILMBASE_IMATH_LIBRARY NAMES Imath )  
+  
+  if (ILMBASE_INCLUDE_DIR AND ILMBASE_IMATH_LIBRARY AND ILMBASE_IEX_LIBRARY AND ILMBASE_HALF_LIBRARY)
+     set(ILMBASE_FOUND TRUE)
+     set(ILMBASE_LIBRARIES ${ILMBASE_IMATH_LIBRARY} ${ILMBASE_IEX_LIBRARY} ${ILMBASE_HALF_LIBRARY} CACHE STRING "The libraries needed to use IlmBase")
+  endif (ILMBASE_INCLUDE_DIR AND ILMBASE_IMATH_LIBRARY AND ILMBASE_IEX_LIBRARY AND ILMBASE_HALF_LIBRARY)
+  
+  if (ILMBASE_FOUND)
+    if (NOT IlmBase_FIND_QUIETLY)
+      message(STATUS "Found ILMBASE: ${ILMBASE_LIBRARIES}")
+    endif (NOT IlmBase_FIND_QUIETLY)
+  else (ILMBASE_FOUND)
+    if (IlmBase_FIND_REQUIRED)
+      message(FATAL_ERROR "Could NOT find ILMBASE")
+    endif (IlmBase_FIND_REQUIRED)
+  endif (ILMBASE_FOUND)
+  
+  MARK_AS_ADVANCED(
+     ILMBASE_INCLUDE_DIR 
+     ILMBASE_LIBRARIES 
+     ILMBASE_IMATH_LIBRARY 
+     ILMBASE_IEX_LIBRARY 
+     ILMBASE_HALF_LIBRARY )
+  
+endif (ILMBASE_INCLUDE_DIR AND ILMBASE_LIBRARIES)
diff --git a/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake b/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake
new file mode 100644
index 000000000000..b1f590544fa8
--- /dev/null
+++ b/pkgs/desktops/kde-4/libs/FindOpenEXR.cmake
@@ -0,0 +1,68 @@
+# Try to find the OpenEXR libraries
+# This check defines:
+#
+#  OPENEXR_FOUND - system has OpenEXR
+#  OPENEXR_INCLUDE_DIR - OpenEXR include directory
+#  OPENEXR_LIBRARIES - Libraries needed to use OpenEXR
+#
+# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
+# Copyright (c) 2007, Yury G. Kudryashov, <urkud.urkud@gmail.com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+if (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES)
+  # in cache already
+  SET(OPENEXR_FOUND TRUE)
+
+else (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES)
+FIND_PACKAGE(IlmBase)
+IF (NOT ILMBASE_FOUND)
+	SET(OPENEXR_FOUND FALSE)
+ELSE (NOT ILMBASE_FOUND)
+IF (NOT WIN32)
+  # use pkg-config to get the directories and then use these values
+  # in the FIND_PATH() and FIND_LIBRARY() calls
+  INCLUDE(UsePkgConfig)
+  
+  PKGCONFIG(OpenEXR _OpenEXRIncDir _OpenEXRLinkDir _OpenEXRLinkFlags _OpenEXRCflags)
+ENDIF (NOT WIN32)  
+  FIND_PATH(OPENEXR_INCLUDE_DIR ImfRgbaFile.h
+     ${_OpenEXRIncDir}
+     ${_OpenEXRIncDir}/OpenEXR/
+  )
+
+  FIND_LIBRARY(OPENEXR_ILMIMF_LIBRARY NAMES IlmImf 
+    PATHS
+    ${_OpenEXRLinkDir}
+    NO_DEFAULT_PATH
+  )
+  FIND_LIBRARY(OPENEXR_ILMIMF_LIBRARY NAMES IlmImf )  
+  
+  if (OPENEXR_INCLUDE_DIR AND OPENEXR_ILMIMF_LIBRARY)
+     set(OPENEXR_FOUND TRUE)
+     set(OPENEXR_LIBRARIES ${ILMBASE_LIBRARIES} ${OPENEXR_ILMIMF_LIBRARY} CACHE STRING "The libraries needed to use OpenEXR")
+	 set(OPENEXR_INCLUDE_DIR ${OPENEXR_INCLUDE_DIR} ${ILMBASE_INCLUDE_DIR})
+  endif (OPENEXR_INCLUDE_DIR AND OPENEXR_ILMIMF_LIBRARY)
+ENDIF (NOT ILMBASE_FOUND)
+  
+  if (OPENEXR_FOUND)
+    if (NOT OpenEXR_FIND_QUIETLY)
+      message(STATUS "Found OPENEXR: ${OPENEXR_LIBRARIES}")
+    endif (NOT OpenEXR_FIND_QUIETLY)
+  else (OPENEXR_FOUND)
+    if (OpenEXR_FIND_REQUIRED)
+      message(FATAL_ERROR "Could NOT find OPENEXR")
+    endif (OpenEXR_FIND_REQUIRED)
+  endif (OPENEXR_FOUND)
+  
+  MARK_AS_ADVANCED(
+     OPENEXR_INCLUDE_DIR 
+     OPENEXR_LIBRARIES 
+     OPENEXR_ILMIMF_LIBRARY 
+     OPENEXR_IMATH_LIBRARY 
+     OPENEXR_IEX_LIBRARY 
+     OPENEXR_HALF_LIBRARY )
+  
+endif (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES)
diff --git a/pkgs/desktops/kde-4/libs/default.nix b/pkgs/desktops/kde-4/libs/default.nix
new file mode 100644
index 000000000000..844e4a03320f
--- /dev/null
+++ b/pkgs/desktops/kde-4/libs/default.nix
@@ -0,0 +1,27 @@
+args: with args;
+
+stdenv.mkDerivation rec {
+  name = "kdelibs-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdelibs-3.95.0.tar.bz2;
+    sha256 = "0960880wvwrj68r35knqjjxbqq90xzy1lqv526zyaymp7jc24ybc";
+  };
+
+  propagatedBuildInputs = [
+	cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
+	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
+	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
+	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib
+	perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
+    libtool freetype bzip2 shared_mime_info alsaLib libungif cups
+	gettext enchant openexr aspell stdenv.gcc.libc
+  ] ++ kdesupport.all;
+  patchPhase = "cp ${findIlmBase} ../cmake/modules/FindIlmBase.cmake;
+  cp $findOpenEXR ../cmake/modules/FindOpenEXR.cmake;
+  sed -e 's@Soprano/DummyModel@Soprano/Util/DummyModel@' -i ../nepomuk/core/resourcemanager.cpp;";
+
+  findIlmBase = ./FindIlmBase.cmake;
+  findOpenEXR = ./FindOpenEXR.cmake;
+  setupHook=./setup.sh;
+}
diff --git a/pkgs/desktops/kde-4/libs/setup.sh b/pkgs/desktops/kde-4/libs/setup.sh
new file mode 100755
index 000000000000..6f899442d27a
--- /dev/null
+++ b/pkgs/desktops/kde-4/libs/setup.sh
@@ -0,0 +1,5 @@
+addKDEDIRS()
+{
+	addToSearchPath KDEDIRS /share/kde4 /. $1
+}
+envHooks=(${envHooks[@]} addKDEDIRS)
diff --git a/pkgs/desktops/kde-4/multimedia/default.nix b/pkgs/desktops/kde-4/multimedia/default.nix
new file mode 100644
index 000000000000..f0870c1740d4
--- /dev/null
+++ b/pkgs/desktops/kde-4/multimedia/default.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdemultimedia-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdemultimedia-3.95.0.tar.bz2;
+    sha256 = "0vjk5gpn45fh7hm982jw1frd7fr0grff96ksmh29wnkc160rh8va";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace libogg flac cdparanoia lame
+  libvorbis];
+}
diff --git a/pkgs/desktops/kde-4/network/default.nix b/pkgs/desktops/kde-4/network/default.nix
new file mode 100644
index 000000000000..21ae2074e068
--- /dev/null
+++ b/pkgs/desktops/kde-4/network/default.nix
@@ -0,0 +1,12 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdenetwork-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdenetwork-3.95.0.tar.bz2;
+    sha256 = "118r55aw0pag78kawjfn3vya7aca12n5ypknm1i4khxs747hxqbr";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace sqlite libidn];
+}
diff --git a/pkgs/desktops/kde-4/pim/builder.sh b/pkgs/desktops/kde-4/pim/builder.sh
new file mode 100755
index 000000000000..8963fae048ca
--- /dev/null
+++ b/pkgs/desktops/kde-4/pim/builder.sh
@@ -0,0 +1,10 @@
+source ${stdenv}/setup
+
+myPatchPhase()
+{
+# They reset CMAKE_MODULE_PATH, not adding to the existing
+	sed -e '3s/)/ ${CMAKE_MODULE_PATH})/' -i ../CMakeLists.txt
+}
+patchPhase=myPatchPhase
+
+genericBuild
diff --git a/pkgs/desktops/kde-4/pim/default.nix b/pkgs/desktops/kde-4/pim/default.nix
new file mode 100644
index 000000000000..f0f4184d391f
--- /dev/null
+++ b/pkgs/desktops/kde-4/pim/default.nix
@@ -0,0 +1,15 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdepim-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdepim-3.95.0.tar.bz2;
+    sha256 = "0gzvm4h6ij7i119apmh9w82raygahr18bl0i9m3ynf2mcca0aq94";
+  };
+
+  buildInputs = [libXinerama mesa stdenv.gcc.libc alsaLib kdelibs kdepimlibs
+  kdeworkspace libusb glib];
+  qt4BadIncludes = true;
+  inherit qt kdelibs;
+}
diff --git a/pkgs/desktops/kde-4/pimlibs/default.nix b/pkgs/desktops/kde-4/pimlibs/default.nix
new file mode 100644
index 000000000000..6d273acc67e0
--- /dev/null
+++ b/pkgs/desktops/kde-4/pimlibs/default.nix
@@ -0,0 +1,12 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdepimlibs-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdepimlibs-3.95.0.tar.bz2;
+	sha256 = "1dhn5x3k9myqfymv6ry84v0zm2qwxnrlm1vdlllfvmgbm5nz34mg";
+  };
+
+  propagatedBuildInputs = [kdelibs boost gpgme cyrus_sasl openldap];
+}
diff --git a/pkgs/desktops/kde-4/runtime/builder.sh b/pkgs/desktops/kde-4/runtime/builder.sh
new file mode 100755
index 000000000000..99b357fcf167
--- /dev/null
+++ b/pkgs/desktops/kde-4/runtime/builder.sh
@@ -0,0 +1,12 @@
+source ${stdenv}/setup
+
+myPatchPhase()
+{
+	echo "Fixing dbus calls in CMakeLists.txt files"
+# Trailing slash in sed is essential
+	find .. -name CMakeLists.txt \
+	| xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i
+	#sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../workspace/kcontrol/randr/randr.h
+}
+patchPhase=myPatchPhase
+genericBuild
diff --git a/pkgs/desktops/kde-4/runtime/default.nix b/pkgs/desktops/kde-4/runtime/default.nix
new file mode 100644
index 000000000000..f3f241a7ffee
--- /dev/null
+++ b/pkgs/desktops/kde-4/runtime/default.nix
@@ -0,0 +1,15 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdebase-runtime-4.0beta4";
+  builder = ./builder.sh;
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdebase-runtime-3.95.0.tar.bz2;
+    sha256 = "1s4fhbz7gpdxmvlr20c7n6cvcb9sn0qxigzpljsxw9524w177ksr";
+  };
+
+  propagatedBuildInputs = [kdepimlibs libusb kdebase xineLib];
+  inherit kdelibs;
+}
+
diff --git a/pkgs/desktops/kde-4/support/akode.nix b/pkgs/desktops/kde-4/support/akode.nix
new file mode 100644
index 000000000000..1385def6b559
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/akode.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "akode-2.0.0dev";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/akode;
+	rev = 732646;
+	md5 = "6629ffedc42c020d2e8645910a4efdf5";
+  };
+
+  buildInputs = [ cmake qt openssl gettext cyrus_sasl alsaLib ];
+}
diff --git a/pkgs/desktops/kde-4/support/default.nix b/pkgs/desktops/kde-4/support/default.nix
new file mode 100644
index 000000000000..af1dc175bedd
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/default.nix
@@ -0,0 +1,36 @@
+args:
+rec {
+	qca = (import ./qca.nix) args;
+	akode = (import ./akode.nix) args;
+	gmm = (import ./gmm.nix) args;
+	eigen = (import ./eigen.nix) args;
+	taglib = (import ./taglib.nix) args;
+	soprano = (import ./soprano.nix) args;
+	strigi = (import ./strigi.nix) args;
+	qimageblitz = (import ./qimageblitz.nix) args;
+	all = [qca gmm eigen taglib soprano strigi qimageblitz];
+}
+#args: with args;
+#
+#stdenv.mkDerivation {
+#  name = "kdesupport-4.0svn-r729462";
+#  
+#  src = fetchsvn {
+#    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport;
+#	rev = 729462;
+#	md5 = "aa50ec8e5c8d49e1dfd53143345cb4b3";
+#  };
+#
+#  propagatedBuildInputs = [
+#	exiv2
+#	cmake inputproto kbproto scrnsaverproto xextproto xf86miscproto xf86vidmodeproto
+#	xineramaproto xproto libICE libX11 libXau libXcomposite libXcursor
+#	libXdamage libXdmcp libXext libXfixes libXft libXi libXpm libXrandr
+#	libXrender libXScrnSaver libXt libXtst libXv libXxf86misc libxkbfile zlib
+#	perl qt openssl pcre pkgconfig libjpeg libpng libtiff libxml2 libxslt expat
+#    libtool freetype bzip2 shared_mime_info alsaLib libungif cups
+#	gettext cluceneCore redland stdenv.gcc.libc dbus bison cppunit
+#  ];
+#  CLUCENE_HOME=cluceneCore;
+#  patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../qca/CMakeLists.txt";
+#}
diff --git a/pkgs/desktops/kde-4/support/eigen.nix b/pkgs/desktops/kde-4/support/eigen.nix
new file mode 100644
index 000000000000..a3ac9eff3910
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/eigen.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "eigen-1.0.5";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/eigen;
+	rev = 732646;
+	md5 = "f91ad5d3dd992984fb61107fd9050a36";
+  };
+
+  buildInputs = [ cmake ];
+}
diff --git a/pkgs/desktops/kde-4/support/gmm.nix b/pkgs/desktops/kde-4/support/gmm.nix
new file mode 100644
index 000000000000..d32c9b9f765e
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/gmm.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "gmm-svn";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/gmm;
+	rev = 732646;
+	md5 = "09ee4cfcbb3c428bc681c2da022648bf";
+  };
+
+  buildInputs = [ cmake ];
+}
diff --git a/pkgs/desktops/kde-4/support/qca.nix b/pkgs/desktops/kde-4/support/qca.nix
new file mode 100644
index 000000000000..64b00da91ce7
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/qca.nix
@@ -0,0 +1,15 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "qca-2.0.0dev";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qca;
+	rev = 732646;
+	md5 = "1df54bf3bf327b14ea1948f9080717c3";
+  };
+
+  buildInputs = [ cmake qt openssl gettext cyrus_sasl libgcrypt gnupg ];
+
+  patchPhase = "sed -e '/set(qca_PLUGINSDIR/s@\${QT_PLUGINS_DIR}@\${CMAKE_INSTALL_PREFIX}/plugins@' -i ../CMakeLists.txt";
+}
diff --git a/pkgs/desktops/kde-4/support/qimageblitz.nix b/pkgs/desktops/kde-4/support/qimageblitz.nix
new file mode 100644
index 000000000000..fe6a03ca7c78
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/qimageblitz.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "qimageblitz-4.0.0svn";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/qimageblitz;
+	rev = 732646;
+	md5 = "c37fa505368071ec501e966225e30c78";
+  };
+
+  buildInputs = [cmake qt];
+}
diff --git a/pkgs/desktops/kde-4/support/soprano.nix b/pkgs/desktops/kde-4/support/soprano.nix
new file mode 100644
index 000000000000..0f453d726d77
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/soprano.nix
@@ -0,0 +1,14 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "soprano-1.9.0svn";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/soprano;
+	rev = 732646;
+	md5 = "c3b43544536f0f8061e4afeb9e368072";
+  };
+
+  CLUCENE_HOME=cluceneCore;
+  buildInputs = [ cmake qt cluceneCore redland ];
+}
diff --git a/pkgs/desktops/kde-4/support/strigi.nix b/pkgs/desktops/kde-4/support/strigi.nix
new file mode 100644
index 000000000000..f0e0fe614be9
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/strigi.nix
@@ -0,0 +1,15 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "strigi-svn";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi;
+	rev = 732646;
+	md5 = "15762f5a406ef84bc1cdd776b2ca9a82";
+  };
+
+  CLUCENE_HOME=cluceneCore;
+  buildInputs = [ cmake zlib cluceneCore bzip2 libxml2 qt dbus
+  log4cxx stdenv.gcc.libc exiv2 bison cppunit perl ];
+}
diff --git a/pkgs/desktops/kde-4/support/taglib.nix b/pkgs/desktops/kde-4/support/taglib.nix
new file mode 100644
index 000000000000..6aecb7a91ef2
--- /dev/null
+++ b/pkgs/desktops/kde-4/support/taglib.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "taglib-1.4svn";
+  
+  src = fetchsvn {
+    url = svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib;
+	rev = 732646;
+	md5 = "647d68a76858cf3a667656c486b0a8c2";
+  };
+
+  buildInputs = [ cmake zlib ];
+}
diff --git a/pkgs/desktops/kde-4/toys/default.nix b/pkgs/desktops/kde-4/toys/default.nix
new file mode 100644
index 000000000000..19c08c4891bc
--- /dev/null
+++ b/pkgs/desktops/kde-4/toys/default.nix
@@ -0,0 +1,12 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdetoys-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdetoys-3.95.0.tar.bz2;
+    sha256 = "0qg9ns640v21sa837pg5basnw8clnkyxap2lm7s69ainsg69662v";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace];
+}
diff --git a/pkgs/desktops/kde-4/utils/default.nix b/pkgs/desktops/kde-4/utils/default.nix
new file mode 100644
index 000000000000..cee61c0e4cdf
--- /dev/null
+++ b/pkgs/desktops/kde-4/utils/default.nix
@@ -0,0 +1,13 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdeutils-4.0beta4";
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdeutils-3.95.0.tar.bz2;
+    sha256 = "1b8jvdy83qwhnfwqxzx96bxnaxss25psazifymyb0z4ynkqmadlh";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdeworkspace gmp libzip python ];
+# TODO : tpctl
+}
diff --git a/pkgs/desktops/kde-4/workspace/builder.sh b/pkgs/desktops/kde-4/workspace/builder.sh
new file mode 100755
index 000000000000..648d6175f35a
--- /dev/null
+++ b/pkgs/desktops/kde-4/workspace/builder.sh
@@ -0,0 +1,12 @@
+source ${stdenv}/setup
+
+myPatchPhase()
+{
+	echo "Fixing dbus calls in CMakeLists.txt files"
+# Trailing slash in sed is essential
+	find .. -name CMakeLists.txt \
+	| xargs sed -e "s@\${DBUS_INTERFACES_INSTALL_DIR}/@${kdelibs}/share/dbus-1/interfaces/@" -i
+	sed -e '/^#define HAS_RANDR_1_2 1$/d' -i ../kcontrol/randr/randr.h
+}
+patchPhase=myPatchPhase
+genericBuild
diff --git a/pkgs/desktops/kde-4/workspace/default.nix b/pkgs/desktops/kde-4/workspace/default.nix
new file mode 100644
index 000000000000..829393f67e9f
--- /dev/null
+++ b/pkgs/desktops/kde-4/workspace/default.nix
@@ -0,0 +1,15 @@
+args: with args;
+
+stdenv.mkDerivation {
+  name = "kdebase-workspace-4.0beta4";
+  builder = ./builder.sh;
+  
+  src = fetchurl {
+    url = mirror://kde/unstable/3.95/src/kdebase-workspace-3.95.0.tar.bz2;
+    sha256 = "0jripmw8vgs7lxlsif552rr9vqps5kav8jdlfyhmr9c3xw5c99v0";
+  };
+
+  buildInputs = [kdelibs kdepimlibs kdebase kderuntime stdenv.gcc.libc];
+  inherit kdelibs;
+}
+
diff --git a/pkgs/development/compilers/gcc-3.4/builder.sh b/pkgs/development/compilers/gcc-3.4/builder.sh
index 5a89201377d6..eb1f211dce8f 100644
--- a/pkgs/development/compilers/gcc-3.4/builder.sh
+++ b/pkgs/development/compilers/gcc-3.4/builder.sh
@@ -37,22 +37,10 @@ fi
 
 preConfigure=preConfigure
 preConfigure() {
-    
-    # Determine the frontends to build.
-    langs="c"
-    if test -n "$langCC"; then
-        langs="$langs,c++"
-    fi
-    if test -n "$langF77"; then
-        langs="$langs,f77"
-    fi
-
     # Perform the build in a different directory.
     mkdir ../build
     cd ../build
-
     configureScript=../$sourceRoot/configure
-    configureFlags="--enable-languages=$langs $configureFlags"
 }
 
 
diff --git a/pkgs/development/compilers/gcc-3.4/default.nix b/pkgs/development/compilers/gcc-3.4/default.nix
index 4cb834304e3e..de7f079b2d90 100644
--- a/pkgs/development/compilers/gcc-3.4/default.nix
+++ b/pkgs/development/compilers/gcc-3.4/default.nix
@@ -5,6 +5,8 @@
 
 assert langC;
 
+with import ../../../lib;
+
 stdenv.mkDerivation {
   name = "gcc-3.4.6";
   builder = ./builder.sh;
@@ -15,7 +17,22 @@ stdenv.mkDerivation {
 
   patches = if noSysDirs then [./no-sys-dirs.patch] else [];
 
-  inherit noSysDirs langC langCC langF77 profiledCompiler;
+  inherit noSysDirs profiledCompiler;
+
+  configureFlags = "
+    --disable-multilib
+    --with-system-zlib
+    --enable-languages=${
+      concatStrings (intersperse ","
+        (  optional langC   "c"
+        ++ optional langCC  "c++"
+        ++ optional langF77 "f77"
+        )
+      )
+    }
+  ";
+
+  passthru = { inherit langC langCC langF77; };
 
   meta = {
     homepage = "http://gcc.gnu.org/";
diff --git a/pkgs/development/compilers/ocaml/ocaml-3.08.0.nix b/pkgs/development/compilers/ocaml/3.08.0.nix
index d063fead4a53..6d4b4ca616ce 100644
--- a/pkgs/development/compilers/ocaml/ocaml-3.08.0.nix
+++ b/pkgs/development/compilers/ocaml/3.08.0.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, x11}:
+args: with args;
 
 stdenv.mkDerivation {
   name = "ocaml-3.08.0";
diff --git a/pkgs/development/compilers/ocaml/ocaml-3.09.1.nix b/pkgs/development/compilers/ocaml/3.09.1.nix
index 996012d6b277..6e9922ccc366 100644
--- a/pkgs/development/compilers/ocaml/ocaml-3.09.1.nix
+++ b/pkgs/development/compilers/ocaml/3.09.1.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, x11, ncurses}:
+args: with args;
 
 stdenv.mkDerivation {
   name = "ocaml-3.09.1";
diff --git a/pkgs/development/compilers/ocaml/3.10.0.nix b/pkgs/development/compilers/ocaml/3.10.0.nix
new file mode 100644
index 000000000000..a26175755b5b
--- /dev/null
+++ b/pkgs/development/compilers/ocaml/3.10.0.nix
@@ -0,0 +1,23 @@
+args: with args;
+stdenv.mkDerivation rec {
+	name = "ocaml-3.10.0";
+	src = fetchurl {
+		url = "http://caml.inria.fr/pub/distrib/ocaml-3.10/${name}.tar.bz2";
+		sha256 = "1ihmx1civ78s7k2hfc05z1s9vbyx2qw7fg8lnbxnfd6zxkk8878d";
+	};
+	prefixKey = "-prefix ";
+	configureFlags = ["-no-tk" "-x11lib" x11];
+	buildFlags = "world bootstrap world.opt";
+	buildInputs = [x11 ncurses];
+	installTargets = "install installopt"; 
+	patchPhase = "
+	CAT=$(type -tp cat)
+	sed -e \"s@/bin/cat@\${CAT}@\" -i config/auto-aux/sharpbang
+	";
+
+	meta = {
+		homepage = http://caml.inria.fr/ocaml;
+		license = "QPL, LGPL2 (library part)";
+		desctiption = "Most popular variant of the Caml language";
+	};
+}
diff --git a/pkgs/development/compilers/ocaml/default.nix b/pkgs/development/compilers/ocaml/default.nix
index 44603f957647..74d1378968cf 100644
--- a/pkgs/development/compilers/ocaml/default.nix
+++ b/pkgs/development/compilers/ocaml/default.nix
@@ -1 +1,7 @@
-import ./ocaml-3.09.1.nix
+args:
+rec {
+	default = v_3_09_1;
+	v_3_08_0 = import ./3.08.0.nix (args // {stdenv = args.stdenv34;});
+	v_3_09_1 = import ./3.09.1.nix args;
+	v_3_10_0 = import ./3.10.0.nix (args // {stdenv = args.stdenvUsingSetupNew2;});
+}
diff --git a/pkgs/development/interpreters/perl/setup-hook.sh b/pkgs/development/interpreters/perl/setup-hook.sh
index 6903bddd4199..1f05581df97a 100644
--- a/pkgs/development/interpreters/perl/setup-hook.sh
+++ b/pkgs/development/interpreters/perl/setup-hook.sh
@@ -1,5 +1,7 @@
 addPerlLibPath () {
-	addToSearchPath PERL5LIB /lib/site_perl "" $1
+    if test -d $1/lib/site_perl; then
+        export PERL5LIB="${PERL5LIB}${PERL5LIB:+:}$1/lib/site_perl"
+    fi
 }
 
 envHooks=(${envHooks[@]} addPerlLibPath)
diff --git a/pkgs/development/interpreters/python/2.4.nix b/pkgs/development/interpreters/python/2.4.nix
new file mode 100644
index 000000000000..726d2ac4aa96
--- /dev/null
+++ b/pkgs/development/interpreters/python/2.4.nix
@@ -0,0 +1,52 @@
+{stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2}:
+
+assert zlibSupport -> zlib != null;
+
+with stdenv.lib;
+
+let
+
+  buildInputs =
+    optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++
+    [bzip2] ++ 
+    optional zlibSupport zlib;
+
+in
+
+stdenv.mkDerivation {
+  name = "python-2.4.4";
+  
+  src = fetchurl {
+    url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2;
+    md5 = "0ba90c79175c017101100ebf5978e906";
+  };
+
+  patches = [
+    # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
+    ./search-path.patch
+  ];
+  
+  inherit buildInputs;
+  C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
+  LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
+  
+  configureFlags = "--enable-shared";
+  
+  preConfigure = "
+    # Purity.
+    for i in /usr /sw /opt /pkg; do 
+      substituteInPlace ./setup.py --replace $i /no-such-path
+    done
+  ";
+  
+  postInstall = "
+    ensureDir $out/nix-support
+    cp ${./setup-hook.sh} $out/nix-support/setup-hook
+    rm -rf $out/lib/python2.4/test
+  ";
+
+  passthru = {
+    inherit zlibSupport;
+    libPrefix = "python2.4";
+  };
+}
diff --git a/pkgs/development/interpreters/python/2.5/setup-hook.sh b/pkgs/development/interpreters/python/2.5/setup-hook.sh
index 27ad62260301..11551235c1f8 100644
--- a/pkgs/development/interpreters/python/2.5/setup-hook.sh
+++ b/pkgs/development/interpreters/python/2.5/setup-hook.sh
@@ -1,5 +1,8 @@
 addPythonPath() {
-	addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.5/site-packages "" $1
+    local p=$1/lib/python2.5/site-packages
+    if test -d $p; then
+        export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p"
+    fi
 }
 
 toPythonPath() {
diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix
index 726d2ac4aa96..3ac782e1aee3 100644
--- a/pkgs/development/interpreters/python/default.nix
+++ b/pkgs/development/interpreters/python/default.nix
@@ -1,52 +1,5 @@
-{stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2}:
-
-assert zlibSupport -> zlib != null;
-
-with stdenv.lib;
-
-let
-
-  buildInputs =
-    optional (stdenv ? gcc && stdenv.gcc.libc != null) stdenv.gcc.libc ++
-    [bzip2] ++ 
-    optional zlibSupport zlib;
-
-in
-
-stdenv.mkDerivation {
-  name = "python-2.4.4";
-  
-  src = fetchurl {
-    url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2;
-    md5 = "0ba90c79175c017101100ebf5978e906";
-  };
-
-  patches = [
-    # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
-    ./search-path.patch
-  ];
-  
-  inherit buildInputs;
-  C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
-  LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
-  
-  configureFlags = "--enable-shared";
-  
-  preConfigure = "
-    # Purity.
-    for i in /usr /sw /opt /pkg; do 
-      substituteInPlace ./setup.py --replace $i /no-such-path
-    done
-  ";
-  
-  postInstall = "
-    ensureDir $out/nix-support
-    cp ${./setup-hook.sh} $out/nix-support/setup-hook
-    rm -rf $out/lib/python2.4/test
-  ";
-
-  passthru = {
-    inherit zlibSupport;
-    libPrefix = "python2.4";
-  };
+args: rec {
+	default = v_2_4;
+	v_2_4 = import ./2.4.nix args;
+	v_2_5 = import ./2.5 args;
 }
diff --git a/pkgs/development/interpreters/python/setup-hook.sh b/pkgs/development/interpreters/python/setup-hook.sh
index 58b8d1cab760..3bc86c582298 100644
--- a/pkgs/development/interpreters/python/setup-hook.sh
+++ b/pkgs/development/interpreters/python/setup-hook.sh
@@ -1,5 +1,8 @@
 addPythonPath() {
-	addToSearchPathWithCustomDelimiter : PYTHONPATH /lib/python2.4/site-packages "" $1
+    local p=$1/lib/python2.4/site-packages
+    if test -d $p; then
+        export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}$p"
+    fi
 }
 
 toPythonPath() {
diff --git a/pkgs/development/libraries/chmlib/builder.sh b/pkgs/development/libraries/chmlib/builder.sh
deleted file mode 100644
index ccdbfc17a767..000000000000
--- a/pkgs/development/libraries/chmlib/builder.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-source $stdenv/setup
-
-unpackCmd="tar xvfj $src"
-
-makeFlags="-f Makefile.simple CC=gcc LD=gcc INSTALLPREFIX=$out"
-
-postConfigure=postConfigure
-postConfigure() {
-    cd src
-}
-
-preInstall=preInstall
-preInstall() {
-    mkdir $out
-    mkdir $out/lib
-    mkdir $out/include
-}
-
-genericBuild
\ No newline at end of file
diff --git a/pkgs/development/libraries/chmlib/default.nix b/pkgs/development/libraries/chmlib/default.nix
index 096f2e0e2295..bd593aaea0a5 100644
--- a/pkgs/development/libraries/chmlib/default.nix
+++ b/pkgs/development/libraries/chmlib/default.nix
@@ -1,9 +1,16 @@
-{stdenv, fetchurl}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "chmlib-0.38";
+stdenv.mkDerivation rec {
+  name = "chmlib-0.39";
   src = fetchurl {
-    url = http://66.93.236.84/~jedwin/projects/chmlib/chmlib-0.38.tar.bz2;
-    md5 = "d72661526aaea377ed30e9f58a086964";
+    url = "${meta.homepage}/${name}.tar.bz2";
+	sha256 = "0hgzw121ffmk79wbpkd0394y5ah99c3i85z6scp958mmkr25sc6j";
+  };
+
+  meta = {
+	  homepage = http://www.jedrea.com/chmlib;
+	  license = "LGPL";
+	  description = "CHLIB is a library for dealing with Microsoft ITSS/CHM
+	  format files";
   };
 }
diff --git a/pkgs/development/libraries/clucene-contrib/default.nix b/pkgs/development/libraries/clucene-contrib/default.nix
deleted file mode 100644
index 8938256dec46..000000000000
--- a/pkgs/development/libraries/clucene-contrib/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ stdenv, fetchurl, cluceneCore}:
-
-stdenv.mkDerivation {
-  name = "clucene-contrib-0.9.16a";
-
-  src = fetchurl {
-    url = ftp://ftp.chg.ru/pub/sourceforge/c/cl/clucene/clucene-contrib-0.9.16a.tar.bz2;
-    sha256 = "1apk867pggxsflhgvsnhcmy5vz2cvc1b914g4inkcj6s5vn1a1jx";
-  };
-  inherit cluceneCore;
-  buildInputs=[cluceneCore];
-  configureFlags = "--disable-static --with-clucene=${cluceneCore}";
-
-  meta = {
-    description = "CLucene is a port of the very popular Java Lucene text search engine API. Contrib package.";
-    homepage = http://clucene.sourceforge.net;
-  };
-}
diff --git a/pkgs/development/libraries/clucene-core/default.nix b/pkgs/development/libraries/clucene-core/default.nix
index 3d5734d6c2d5..24e133a5de3c 100644
--- a/pkgs/development/libraries/clucene-core/default.nix
+++ b/pkgs/development/libraries/clucene-core/default.nix
@@ -1,16 +1,15 @@
-{ stdenv, fetchurl }:
+args: with args;
+stdenv.mkDerivation rec {
+	name = "clucene-core-0.9.20";
 
-stdenv.mkDerivation {
-  name = "clucene-core-0.9.16a";
+	src = fetchurl {
+		url = "mirror://sf/clucene/${name}.tar.bz2";
+		sha256 = "1hwq3b4qp1dgygmypgpg3blj68wnksq2rbqkwyxvl5dldn12q7rg";
+	};
+	configureFlags = "--disable-static";
 
-  src = fetchurl {
-    url = ftp://ftp.chg.ru/pub/sourceforge/c/cl/clucene/clucene-core-0.9.16a.tar.bz2;
-    sha256 = "0hv7sp1lbicnj2984hiki8qwrvz5zwn1zhj6azhavgjklanhihjr";
-  };
-
-  meta = {
-    description = "CLucene is a port of the very popular Java Lucene text search engine API. Core package.";
-    homepage = http://clucene.sourceforge.net;
-  };
-  configureFlags = "--disable-static";
+	meta = {
+		description = "CLucene is a port of the very popular Java Lucene text search engine API. Core package.";
+		homepage = http://clucene.sourceforge.net;
+	};
 }
diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix
index fb206f9a6f66..e72ca406509d 100644
--- a/pkgs/development/libraries/dbus-glib/default.nix
+++ b/pkgs/development/libraries/dbus-glib/default.nix
@@ -1,12 +1,18 @@
-{stdenv, fetchurl, pkgconfig, gettext, dbus, glib, expat}:
+args: with args;
 
 stdenv.mkDerivation {
-  name = "dbus-glib-0.73";
+  name = "dbus-glib-0.74";
   src = fetchurl {
-    url = http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.73.tar.gz;
-    sha256 = "14ndjhbn6q4m7wrml8s57wghnjbm6a6fqb5jgazjxcn6748gkmyn";
+    url = http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.74.tar.gz;
+    sha256 = "1qmbnd9xgg7vahlfywd8sfd9yqhx8jdyczz3cshfsd4qc76xhw78";
   };
   inherit dbus glib;
   buildInputs = [pkgconfig gettext glib expat];
   propagatedBuildInputs = [dbus];
+
+  meta = {
+	  homepage = http://dbus.freedesktop.org;
+	  license = "AFL-2.1 or GPL-2";
+	  description = "GLib bindings for D-Bus lightweight IPC mechanism";
+  };
 }
diff --git a/pkgs/development/libraries/facile/default.nix b/pkgs/development/libraries/facile/default.nix
new file mode 100644
index 000000000000..1890c6d0563c
--- /dev/null
+++ b/pkgs/development/libraries/facile/default.nix
@@ -0,0 +1,19 @@
+args: with args;
+stdenv.mkDerivation rec {
+	name = "facile-1.1";
+	src = fetchurl {
+		url = "${meta.homepage}/distrib/${name}.tar.gz";
+		sha256 = "1jp59ankjds8mh4vm0b5h4fd1lcbfn0rd6n151cgh14ihsknnym8";
+	};
+	dontAddPrefix = 1;
+	patchPhase = "sed -e 's@mkdir@mkdir -p@' -i Makefile";
+	postConfigure = "make -C src .depend";
+	makeFlags = "FACILEDIR=\${out}/lib/ocaml/facile";
+	buildInputs = [ocaml];
+
+	meta = {
+		homepage = http://www.recherche.enac.fr/log/facile;
+		license = "LGPL";
+		description = "A Functional Constraint Library";
+	};
+}
diff --git a/pkgs/development/libraries/haskell/gtk2hs/default.nix b/pkgs/development/libraries/haskell/gtk2hs/default.nix
new file mode 100644
index 000000000000..f4e3a02c73f8
--- /dev/null
+++ b/pkgs/development/libraries/haskell/gtk2hs/default.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, pkgconfig, ghc, gtk, cairo, GConf, libglade
+, glib, libgtkhtml, gtkhtml}:
+
+stdenv.mkDerivation {
+  name = "gtk2hs-0.9.12.1";
+  src = fetchurl {
+    url = mirror://sourceforge/gtk2hs/gtk2hs-0.9.12.1.tar.gz;
+    sha256 = "110z6v9gzhg6nzlz5gs8aafmipbva6rc50b8z1jgq0k2g25hfy22";
+  };
+
+  buildInputs = [pkgconfig ghc gtk glib cairo GConf libglade libgtkhtml gtkhtml];
+
+ configureFlags = [
+    "--enable-cairo"
+  ];
+
+
+}
diff --git a/pkgs/development/libraries/libexif/default.nix b/pkgs/development/libraries/libexif/default.nix
index 0a63ffda2afc..76434d2c30bd 100644
--- a/pkgs/development/libraries/libexif/default.nix
+++ b/pkgs/development/libraries/libexif/default.nix
@@ -1,12 +1,12 @@
-{stdenv, fetchurl}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "libexif-0.6.14";
+stdenv.mkDerivation rec {
+  name = "libexif-0.6.16";
 
   src = fetchurl {
-    url = mirror://sourceforge/libexif/libexif-0.6.14.tar.bz2;
-    sha256 = "0pza5ysvbvvliz7al2i8l3yai64w09xwc6ivy2v5cl7k43almz84";
+    url = "mirror://sourceforge/libexif/${name}.tar.bz2";
+    sha256 = "0hxc3aik3sn8xq4mbmxxb8ycx2lwffmhi5xvz0zjffhfwkaqas6v";
   };
 
-  patches = [./no-po.patch];
+  buildInputs = [gettext];
 }
diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix
index bb71e8f8499c..8ea05dc73a32 100644
--- a/pkgs/development/libraries/libgcrypt/default.nix
+++ b/pkgs/development/libraries/libgcrypt/default.nix
@@ -1,10 +1,13 @@
-{stdenv, fetchurl, libgpgerror}:
+args: with args;
 
 stdenv.mkDerivation {
-  name = "libgcrypt-1.2.4";
+  name = "libgcrypt-1.3.1";
   src = fetchurl {
-    url = ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.4.tar.gz;
-    sha256 = "1v6rbx2jpwvh9jwf8n91da2p66v2gzmym6s3h1fidfdy7qqkyg6g";
+    urls = [
+      ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.3.1.tar.bz2
+      ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/libgcrypt-1.3.1.tar.bz2
+    ];
+    sha256 = "0ip0bjhnn12lvb050j91x64wfhmpk7xlc3p93mxi9g2qczg413nz";
   };
 
   buildInputs = [libgpgerror];
diff --git a/pkgs/development/libraries/libgphoto2/default.nix b/pkgs/development/libraries/libgphoto2/default.nix
index 78372330a94f..6e332117a2db 100644
--- a/pkgs/development/libraries/libgphoto2/default.nix
+++ b/pkgs/development/libraries/libgphoto2/default.nix
@@ -1,14 +1,15 @@
-{stdenv, fetchurl, pkgconfig, libusb}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "libgphoto2-2.2.1";
+stdenv.mkDerivation rec {
+  name = "libgphoto2-2.4.0";
 
   src = fetchurl {
-    url = mirror://sourceforge/gphoto/libgphoto2-2.2.1.tar.bz2;
-    md5 = "69827311733e39fafa9f77bb05e55b77";
+    url = "mirror://sourceforge/gphoto/${name}.tar.bz2";
+    sha256 = "0yfvpgfly774jnjrfqjf89h99az3sgvzkfpb9diygpk8hmx6phhd";
   };
-  buildInputs = [pkgconfig libusb];
+  buildInputs = [pkgconfig libusb libtool libexif libjpeg gettext];
 
-  ## remove this patch when 2.2.2 is released
-  patches = [./libgphoto2-2.2.1.patch];
+  meta = {
+	  license = "LGPL-2";
+  };
 }
diff --git a/pkgs/development/libraries/libgsf/default.nix b/pkgs/development/libraries/libgsf/default.nix
index 41f946e6606c..6131314a22cd 100644
--- a/pkgs/development/libraries/libgsf/default.nix
+++ b/pkgs/development/libraries/libgsf/default.nix
@@ -1,10 +1,17 @@
-{stdenv, fetchurl, perl, perlXMLParser, pkgconfig, libxml2, glib, gettext}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "libgsf-1.14.1";
+stdenv.mkDerivation rec {
+  name = "libgsf-1.14.7";
   src = fetchurl {
-    url = http://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/libgsf-1.14.1.tar.bz2;
-    md5 = "00de00b99382d0b7e034e0fffd8951d4";
+    url = "http://ftp.gnome.org/pub/gnome/sources/libgsf/1.14/${name}.tar.bz2";
+	sha256 = "0vd8arjaavb3qywd9cm2gdn6ngrlyd99nlsj72par8fm60k48bhq";
+  };
+  buildInputs = [perl perlXMLParser pkgconfig libxml2 glib gettext bzip2
+  gnomevfs libbonobo python];
+
+  meta = {
+	  homepage = http://www.gnome.org/projects/libgsf;
+	  license = "LGPL";
+	  description = "GNOME Structured File Library";
   };
-  buildInputs = [perl perlXMLParser pkgconfig libxml2 glib gettext];
 }
diff --git a/pkgs/development/libraries/libnotify/default.nix b/pkgs/development/libraries/libnotify/default.nix
new file mode 100644
index 000000000000..42747db95a1b
--- /dev/null
+++ b/pkgs/development/libraries/libnotify/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl
+, pkgconfig, dbus, dbus_glib
+, gtk, glib
+}:
+ 
+stdenv.mkDerivation {
+  name = "libnotify-0.4.4";
+  #builder = ./builder.sh;
+
+  src = fetchurl {
+    url = http://www.galago-project.org/files/releases/source/libnotify/libnotify-0.4.4.tar.gz;
+    sha256 = "2389a9b8220f776033f728a8d46352cfee5c8705066e34887bfb188f9f0d3856";
+  };
+
+  buildInputs = [
+    pkgconfig dbus dbus_glib gtk glib
+  ];
+
+  configureFlags="";
+}
diff --git a/pkgs/development/libraries/libsexy/default.nix b/pkgs/development/libraries/libsexy/default.nix
new file mode 100644
index 000000000000..81a38d399735
--- /dev/null
+++ b/pkgs/development/libraries/libsexy/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, glib, gtk, pango
+}:
+ 
+stdenv.mkDerivation {
+  name = "libsexy-0.1.11";
+  #builder = ./builder.sh;
+
+  src = fetchurl {
+    url = http://releases.chipx86.com/libsexy/libsexy/libsexy-0.1.11.tar.gz;
+    sha256 = "8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e";
+  };
+
+  buildInputs = [ pkgconfig libxml2 glib gtk pango
+  ];
+
+  #configureFlags="";  
+}
diff --git a/pkgs/development/libraries/libwpd/default.nix b/pkgs/development/libraries/libwpd/default.nix
index 13723fdeb85d..630eb44753bb 100644
--- a/pkgs/development/libraries/libwpd/default.nix
+++ b/pkgs/development/libraries/libwpd/default.nix
@@ -1,10 +1,9 @@
-{stdenv, fetchurl, pkgconfig, glib, libgsf, libxml2}:
-
+args: with args;
 stdenv.mkDerivation {
   name = "libwpd-0.8.5";
   src = fetchurl {
     url = mirror://sourceforge/libwpd/libwpd-0.8.5.tar.gz;
     md5 = "6b679e205a2805c3d23f41c65b35e266";
   };
-  buildInputs = [pkgconfig glib libgsf libxml2];
+  buildInputs = [pkgconfig glib libgsf libxml2 bzip2];
 }
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index e1dbc274aeda..a4f09612f9b5 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -1,4 +1,4 @@
-args: with args; stdenv.mkDerivation {
+{stdenv, fetchurl, perl}: stdenv.mkDerivation {
   name = "openssl-0.9.8g";
   builder = ./builder.sh;
   src = fetchurl {
@@ -6,5 +6,4 @@ args: with args; stdenv.mkDerivation {
     sha256 = "1w0wj3pgg9ga0hay3jdxs9sl17bfw307b6qvkxn735fy8ml8h9hf";
   };
   buildInputs = [perl];
-  propagatedBuildInputs = [gmp];
 }
diff --git a/pkgs/development/libraries/strigi/default.nix b/pkgs/development/libraries/strigi/default.nix
deleted file mode 100644
index 85f21652b53a..000000000000
--- a/pkgs/development/libraries/strigi/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, fetchurl, zlib, bzip2, expat, pkgconfig, cluceneCore, cluceneContrib,
-qt, cmake, dbus, libxml2, perl }:
-
-stdenv.mkDerivation {
-  name = "strigi-0.5.3dev";
-
-  src = fetchurl {
-    url = http://repo.calcforge.org/f8/strigi-0.5.3.tar.bz2;
-    sha256 = "0rv7l2s4r022hrsw3jw0pvxh0yzlaw53jhmjxi3cbi6mdvc1y2sv";
-  };
-
-  patchPhase="sed -e 's/ iconv / /' -i ../cmake/FindIconv.cmake;
-  export CLUCENE_HOME=${cluceneCore}";
-  buildInputs = [zlib cluceneCore cluceneContrib expat bzip2 pkgconfig qt cmake
-  stdenv.gcc.libc dbus libxml2 perl];
-
-  meta = {
-    description = "Strigi is a fast and light desktop search engine";
-  };
-}
diff --git a/pkgs/development/libraries/xine-lib/default.nix b/pkgs/development/libraries/xine-lib/default.nix
index 191fa13c0ce0..738b21741b5d 100644
--- a/pkgs/development/libraries/xine-lib/default.nix
+++ b/pkgs/development/libraries/xine-lib/default.nix
@@ -12,11 +12,11 @@ assert encryptedDVDSupport -> libdvdcss != null;
 assert alsaSupport -> alsaLib != null;
 
 (stdenv.mkDerivation {
-  name = "xine-lib-1.1.7";
+  name = "xine-lib-1.1.8";
   builder = ./builder.sh;
   src = fetchurl {
-    url = mirror://sourceforge/xine/xine-lib-1.1.7.tar.bz2;
-    sha256 = "1aycmhvq95gbb5mqw5skgcxyn4nh5qkzq21yclnqk5yzflpwwvvg";
+    url = mirror://sourceforge/xine/xine-lib-1.1.8.tar.bz2;
+    sha256 = "03iwhgsf9kj0x5b4fgv7lzc1vj3frk4afh2idgrqskvixjyi37vc";
   };
   buildInputs = [
     x11
diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
index 4712ef2b6483..f65b09f88d4a 100755
--- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh
+++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
@@ -1,16 +1,15 @@
 addCMakeParamsInclude()
 {
-	addToSearchPath CMAKE_INCLUDE_PATH /include "" $1
+	if [ -d $1/include ]; then
+		export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH}${CMAKE_INCLUDE_PATH:+:}$1/include"
+	fi
 }
 
 addCMakeParamsLibs()
 {
-	addToSearchPath CMAKE_LIBRARY_PATH /lib "" $1
-}
-
-addCMakeModulePath()
-{
-	addToSearchPath CMAKE_MODULE_PATH /share/cmake-2.4/Modules "" $1
+	if [ -d $1/lib ]; then
+		export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}${CMAKE_LIBRARY_PATH:+:}$1/lib"
+	fi
 }
 
 fixCmakeFiles()
@@ -46,4 +45,4 @@ if [ -z "$noCmakeTewaks" ]; then
 	postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}"
 fi;
 
-envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs addCMakeModulePath)
+envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs)
diff --git a/pkgs/development/tools/misc/automake/setup-hook.sh b/pkgs/development/tools/misc/automake/setup-hook.sh
index 4489d343510d..097b7b6cbe57 100644
--- a/pkgs/development/tools/misc/automake/setup-hook.sh
+++ b/pkgs/development/tools/misc/automake/setup-hook.sh
@@ -1,5 +1,7 @@
 addAclocals () {
-	addToSearchPathWithCustomDelimiter : ACLOCAL_PATH /share/aclocal "" $1
+    if test -d $1/share/aclocal; then
+        export ACLOCAL_PATH="$ACLOCAL_PATH${ACLOCAL_PATH:+:}$1/share/aclocal"
+    fi
 }
 
 envHooks=(${envHooks[@]} addAclocals)
diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix
index e914391ea2f1..c9a47a953efc 100644
--- a/pkgs/development/tools/misc/gdb/default.nix
+++ b/pkgs/development/tools/misc/gdb/default.nix
@@ -1,10 +1,10 @@
-{stdenv, fetchurl, ncurses}:
+args: with args;
 
-stdenv.mkDerivation {
-  name = "gdb-6.6";
+stdenv.mkDerivation rec {
+  name = "gdb-6.7.1";
   src = fetchurl {
-    url = http://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2;
-    md5 = "a4df41d28dd514d64e8ccbfe125fd9a6";
+    url = "mirror://gnu/gdb/${name}.tar.bz2";
+	sha256 = "0qig8j8hcqpqfhnnp685rzgj8v88bw2fc5igvbiiqkqg88wfr37r";
   };
   buildInputs = [ncurses];
 }
diff --git a/pkgs/development/tools/misc/pkgconfig/builder.sh b/pkgs/development/tools/misc/pkgconfig/builder.sh
new file mode 100644
index 000000000000..6d281da71e4d
--- /dev/null
+++ b/pkgs/development/tools/misc/pkgconfig/builder.sh
@@ -0,0 +1,10 @@
+source $stdenv/setup
+
+postInstall() {
+    test -x $out/nix-support || mkdir $out/nix-support
+    cp $setupHook $out/nix-support/setup-hook
+}
+postInstall=postInstall
+
+genericBuild
+
diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix
index 481d2174ebc1..be8c4febe03a 100644
--- a/pkgs/development/tools/misc/pkgconfig/default.nix
+++ b/pkgs/development/tools/misc/pkgconfig/default.nix
@@ -1,18 +1,14 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation {
-  name = "pkgconfig-0.22";
+  name = "pkgconfig-0.21";
+  builder = ./builder.sh;
   setupHook = ./setup-hook.sh;
   src = fetchurl {
-    url = http://pkgconfig.freedesktop.org/releases/pkg-config-0.22.tar.gz;
-	sha256 = "1rpb5wygmp0f8nal7y3ga4556i7hkjdslv3wdq04fj30gns621vy";
+    url = http://nix.cs.uu.nl/dist/tarballs/pkg-config-0.21.tar.gz;
+    md5 = "476f45fab1504aac6697aa7785f0ab91";
   };
 
-  postInstall = "
-  ensureDir \$out/nix-support
-  cp \$setupHook \$out/nix-support/setup-hook
-  ";
-
   patches = [
     # Process Requires.private properly, see
     # http://bugs.freedesktop.org/show_bug.cgi?id=4738.
diff --git a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh
index f13a44eb9995..f9e7805ccbf7 100644
--- a/pkgs/development/tools/misc/pkgconfig/setup-hook.sh
+++ b/pkgs/development/tools/misc/pkgconfig/setup-hook.sh
@@ -1,5 +1,7 @@
 addPkgConfigPath () {
-	addToSearchPath PKG_CONFIG_PATH /lib/pkgconfig "" $1
+    if test -d $1/lib/pkgconfig; then
+        export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$1/lib/pkgconfig"
+    fi
 }
 
 envHooks=(${envHooks[@]} addPkgConfigPath)
diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix
index 33b7b3d6c9e5..ce4fbf12cf46 100644
--- a/pkgs/lib/default.nix
+++ b/pkgs/lib/default.nix
@@ -244,4 +244,8 @@ rec {
         (l + (if l=="" then "" else ".") + s) (builtins.getAttr s attrs)))
         (builtins.attrNames attrs)))));
 
+  innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else 
+	innerModifySumArgs f x (a // b);
+  modifySumArgs = f: x: innerModifySumArgs f x {};
+
 }
diff --git a/pkgs/servers/monitoring/nagios/plugins/official/default.nix b/pkgs/servers/monitoring/nagios/plugins/official/default.nix
index d415e833742b..29eb7bbb7a08 100644
--- a/pkgs/servers/monitoring/nagios/plugins/official/default.nix
+++ b/pkgs/servers/monitoring/nagios/plugins/official/default.nix
@@ -20,6 +20,8 @@ stdenv.mkDerivation {
     )
   ";
 
+  postInstall = "ln -s libexec $out/bin";
+
   buildInputs = [openssh]; # !!! make openssh a runtime dependency only
 
   meta = {
diff --git a/pkgs/test/openftd/default.nix b/pkgs/test/openftd/default.nix
new file mode 100644
index 000000000000..34cff9ac93f4
--- /dev/null
+++ b/pkgs/test/openftd/default.nix
@@ -0,0 +1,49 @@
+/*
+
+Systeemvereisten
+
+* libz >= 1.1.4
+* glib >= 2.2.0
+* gtk >= 2.2.0
+
+Glib 2 is een 'dependancy' van gtk2. Als je gtk2 op je systeem hebt staan dan heb je ongetwijfeld ook glib2 op je systeem. Zie: www.gtk.org voor meer informatie omtrent Glib/gtk2
+Alhoewel FTD4Linux gtk 2.2 als minimumvereiste heeft raden we toch aan om gtk 2.4 te gebruiken. Dit vanwege een bug in gtk versies 2.2.2 t/m 2.2.4.
+
+* libxml2 >= 2.2.5
+* libxslt >= 1.0.5
+
+* mozilla (gecompileerd met gtk2 support)
+Mozilla is de opensource browser die is voortgekomen uit het vrijgeven van de netscape navigator source code. Als je mozilla reeds op je systeem hebt staan zou je even moeten nagaan of deze tegen gtk2 is gelinkt. Dit kun je doen met behulp van het programma ldd.
+ldd /usr/X11R6/lib/mozilla-gtk2/libgtkembedmoz.so | grep gtk
+/usr/X11R6/lib/mozilla-gtk2/libgtkembedmoz.so:
+libgtk-x11-2.0.so.200 => /usr/X11R6/lib/libgtk-x11-2.0.so.200 (0x282c3000)
+In de output van het ldd programma kun je zien of er inderdaad wordt gelink tegen gtk2. (libgtk-x11-2.0.so.200).
+Heb je geen mozilla, maar heb je wel de firebird/firefox variant geinstalleerd staan dan kun je ook met de mozilla compatible onderdelen van firebird/firefox aan de gang. Je hebt hier echter wel de header (development) bestanden bij nodig. Controleer dus even of jouw firebird/firefox installatie hiermee is geleverd. (gtkembedmoz/gtkmozembed.h) Een 'locate gtkmozembed.h' zou hier snel genoeg uitsluitsel over moeten geven.
+
+* OpenSSL
+* LibCURL
+
+*/
+
+{ stdenv, fetchurl
+, zlib, libxml2, libxslt, firefox, openssl, curl
+, glib, gtk, libgnomeui, libgtkhtml
+, pkgconfig, dbus_glib, realCurl, pcre, libsexy, gtkspell, libnotify
+}:
+ 
+stdenv.mkDerivation {
+  name = "openftd-0.98.6";
+  #builder = ./builder.sh;
+
+  src = fetchurl {
+    url = http://speeldoos.eweka.nl/~paul/openftd/openftd-1.0.1.tar.bz2;
+    sha256 = "e0710865f852fdf209949788a1ced65e9ecf82b4eaa0992a7a1dde1511a3b6e7";
+  };
+
+  buildInputs = [
+    zlib libxml2 libxslt firefox openssl curl
+    glib gtk pkgconfig dbus_glib realCurl pcre libsexy libgnomeui gtkspell libnotify libgtkhtml
+  ];
+
+  configureFlags="--with-libcurl-libraries=${curl}/lib --with-libcurl-headers=${curl}/include --with-pcre_libraries=${pcre}/lib --with-pcre_headers=${pcre}/include";  
+}
diff --git a/pkgs/tools/misc/shebangfix/default.nix b/pkgs/tools/misc/shebangfix/default.nix
new file mode 100644
index 000000000000..94ecc1e00f7b
--- /dev/null
+++ b/pkgs/tools/misc/shebangfix/default.nix
@@ -0,0 +1,20 @@
+args:
+args.stdenv.mkDerivation {
+  name = "shebangfix-0.0";
+
+  buildInputs = [args.perl];
+
+  file = ./shebangfix.pl;
+
+  phases = "buildPhase";
+
+  buildPhase = "
+    ensureDir \$out/bin
+    s=\$out/bin/shebangfix
+    cp \$file \$s
+    chmod +x \$s
+    perl \$s \$s
+  ";
+
+  meta = { description = "replaces the #!executable with $#!correctpath/executable "; };
+}
diff --git a/pkgs/tools/misc/shebangfix/shebangfix.pl b/pkgs/tools/misc/shebangfix/shebangfix.pl
new file mode 100644
index 000000000000..53573f8d36dd
--- /dev/null
+++ b/pkgs/tools/misc/shebangfix/shebangfix.pl
@@ -0,0 +1,35 @@
+#!/bin/perl
+use warnings;
+use strict;
+
+#usage PATH=< : separated path list> perl <this script>  file1 file2
+
+print "TODO fix space trouble. This script won't work if your paths contain spaces";
+
+sub findInPath{
+  my $file = shift(@_);
+  foreach (split(/:/, $ENV{'PATH'})){
+    my $f =  "$_/$file";
+    if (-x "$f"){
+      return $f;
+    }
+  }
+  print "unable to find $file in on of ".$ENV{'PATH'};
+  exit 1
+}
+
+foreach (@ARGV)
+{
+  my $file = $_;
+  open(FILE, $file);
+  my $content = do { local $/; <FILE> };
+
+  close(FILE); 
+
+  (my $name = $content) =~ /^#![^ ]*\/([^ \n\r]*)/;
+  my $fullpath =  ($1 eq 'sh') ? "/bin/sh" : findInPath($1);
+  $content =~ s/^#![^ \n\r]*/#!$fullpath/;
+  open(FILE, ">$file");
+  print FILE $content;
+  close($file);
+}
diff --git a/pkgs/tools/misc/wv/default.nix b/pkgs/tools/misc/wv/default.nix
index 141bf91bee0e..1bf88edef2a6 100644
--- a/pkgs/tools/misc/wv/default.nix
+++ b/pkgs/tools/misc/wv/default.nix
@@ -9,7 +9,7 @@ args.stdenv.mkDerivation {
 	};
 
   buildInputs =(with args; [zlib imagemagick libpng glib
-	pkgconfig libgsf libxml2]);
+	pkgconfig libgsf libxml2 bzip2]);
 
   meta = {
     description = "
diff --git a/pkgs/tools/package-management/nix/custom.nix b/pkgs/tools/package-management/nix/custom.nix
new file mode 100644
index 000000000000..2cff9f53d877
--- /dev/null
+++ b/pkgs/tools/package-management/nix/custom.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, aterm, db4, perl, curl, bzip2, openssl ? null
+, storeDir ? "/nix/store"
+, stateDir ? "/nix/var"
+, src
+, preConfigure ? ""
+, autoconf ? null, automake ? null, libtool ? null
+, bison ? null
+, flex ? null
+, w3m ? null
+, docbook5_xsl ? null, libxslt ? null
+, docbook5 ? null, docbook_xml_dtd_43 ? null 
+, configureFlags ? []
+}:
+
+stdenv.mkDerivation {
+  name = "nix-custom";
+  
+  inherit src;
+
+  buildInputs = [perl curl openssl] 
+  	++ (if automake != null then [automake] else [])
+  	++ (if autoconf != null then [autoconf] else [])
+  	++ (if libtool != null then [libtool] else [])
+  	++ (if bison != null then [bison] else [])
+  	++ (if flex != null then [flex] else [])
+  	++ (if docbook5_xsl != null then [docbook5_xsl] else [])
+  	++ (if libxslt != null then [libxslt] else [])
+  	++ (if docbook5 != null then [docbook5] else [])
+  	++ (if docbook_xml_dtd_43 != null then [docbook_xml_dtd_43] else [])
+  	++ (if w3m != null then [w3m] else [])
+  ;
+
+  inherit preConfigure;
+
+  configureFlags = ["
+    --with-store-dir=${storeDir} --localstatedir=${stateDir}
+    --with-aterm=${aterm} --with-bdb=${db4} --with-bzip2=${bzip2}
+    --disable-init-state"] ++ configureFlags ;
+
+  meta = {
+    description = "The Nix Deployment System";
+    homepage = http://nix.cs.uu.nl/;
+    license = "LGPL";
+  };
+}
diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix
index 9d381198bee0..532863d66eb9 100644
--- a/pkgs/tools/package-management/nix/unstable.nix
+++ b/pkgs/tools/package-management/nix/unstable.nix
@@ -3,14 +3,14 @@
 , stateDir ? "/nix/var"
 }:
 
-let version = "0.11pre9570"; in
+let version = "0.11pre9692"; in
 
 stdenv.mkDerivation {
   name = "nix-${version}";
   
   src = fetchurl {
     url = "http://nix.cs.uu.nl/dist/nix/nix-${version}/nix-${version}.tar.bz2";
-    md5 = "5170f1b1e8feda2adeb2cac3c5ca5ff9";
+    md5 = "35c0bc68b81d20c7fb925bcf8faf4827";
   };
 
   buildInputs = [perl curl openssl];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1b31a9e69a00..1cf2c2792ce7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -147,6 +147,13 @@ rec {
   getVersion = name: alts: builtins.getAttr
     (getConfig [ "environment" "versions" name ] "default") alts;
 
+  # The same, another syntax.
+  # Warning: syntax for configuration.nix changed too
+  useVersion = name: f: f
+  {
+	  version = getConfig [ "environment" "versions" name ];
+  };
+
   # Whether user enabled given feature for the given package?
   getFlag = flag: package: default:
   getConfig [ "environment" "flags" package flag ]
@@ -659,6 +666,11 @@ rec {
     inherit fetchurl stdenv ncurses;
   };
 
+  shebangfix = import ../tools/misc/shebangfix {
+    inherit perl;
+    stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh;
+  };
+
   smartmontools = import ../tools/system/smartmontools {
     inherit fetchurl stdenv;
   };
@@ -743,7 +755,7 @@ rec {
 
   wv = import ../tools/misc/wv {
     inherit fetchurl stdenv libpng zlib imagemagick
-	pkgconfig libgsf libxml2;
+	pkgconfig libgsf libxml2 bzip2;
     inherit (gtkLibs) glib;
   };
 
@@ -1063,13 +1075,11 @@ rec {
     inherit fetchurl stdenv;
   };
 
-  ocaml = import ../development/compilers/ocaml {
-    inherit fetchurl stdenv x11 ncurses;
-  };
+  ocaml = getVersion  "ocaml" ocaml_alts;
 
-  ocaml3080 = import ../development/compilers/ocaml/ocaml-3.08.0.nix {
-    inherit fetchurl x11;
-    stdenv = overrideGCC stdenv gcc34;
+  ocaml_alts = import ../development/compilers/ocaml {
+    inherit fetchurl stdenv x11 ncurses stdenvUsingSetupNew2;
+	stdenv34 = overrideGCC stdenv gcc34;
   };
 
 /*
@@ -1096,7 +1106,7 @@ rec {
 
   qcmm = import ../development/compilers/qcmm {
     lua   = lua4;
-    ocaml = ocaml3080;
+    ocaml = ocaml_alts.v_3_08_0;
     inherit fetchurl stdenv mk noweb groff;
   };
 
@@ -1202,17 +1212,15 @@ rec {
   };
   */
 
-  python = import ../development/interpreters/python {
-    inherit fetchurl stdenv zlib bzip2;
-  };
+  python = getVersion "python" python_alts;
 
-  python25 = import ../development/interpreters/python/2.5 {
+  python_alts = import ../development/interpreters/python {
     inherit fetchurl stdenv zlib bzip2;
   };
 
   pyrexFun = lib.sumArgs (import ../development/interpreters/pyrex) {
   	inherit fetchurl stdenv stringsWithDeps lib builderDefs;
-	python = python25;
+	python = python_alts.v_2_5;
   };
 
   pyrex = pyrexFun {
@@ -1605,13 +1613,9 @@ rec {
     inherit fetchurl stdenv python;
   };
 
-  cluceneContrib = (import ../development/libraries/clucene-contrib) {
-    inherit fetchurl stdenv cluceneCore;
-   };
-
-   cluceneCore = (import ../development/libraries/clucene-core) {
-     inherit fetchurl stdenv;
-   };
+  cluceneCore = (import ../development/libraries/clucene-core) {
+    inherit fetchurl stdenv;
+  };
 
   coredumper = import ../development/libraries/coredumper {
     inherit fetchurl stdenv;
@@ -1681,6 +1685,13 @@ rec {
     inherit fetchurl stdenv;
   };
 
+  facile = import ../development/libraries/facile {
+	  inherit fetchurl;
+      # Actually, we don't need this version but we need native-code compilation
+	  ocaml = ocaml_alts.v_3_10_0;
+	  stdenv = stdenvUsingSetupNew2;
+  };
+
   ffmpeg = import ../development/libraries/ffmpeg {
     inherit fetchurl stdenv;
   };
@@ -1939,7 +1950,7 @@ rec {
   };
 
   libexif = import ../development/libraries/libexif {
-    inherit fetchurl stdenv;
+    inherit fetchurl stdenv gettext;
   };
 
   libgcrypt = import ../development/libraries/libgcrypt {
@@ -1951,7 +1962,7 @@ rec {
   };
 
   libgphoto2 = import ../development/libraries/libgphoto2 {
-    inherit fetchurl stdenv pkgconfig libusb;
+    inherit fetchurl stdenv pkgconfig libusb libtool libexif libjpeg gettext;
   };
 
   # commented out because it's using the new configuration style proposal which is unstable
@@ -1960,8 +1971,9 @@ rec {
   #};
 
   libgsf = import ../development/libraries/libgsf {
-    inherit fetchurl stdenv perl perlXMLParser pkgconfig libxml2 gettext;
-    inherit (gnome) glib;
+    inherit fetchurl stdenv perl perlXMLParser pkgconfig libxml2 gettext bzip2
+	python;
+    inherit (gnome) glib gnomevfs libbonobo;
   };
 
   libidn = import ../development/libraries/libidn {
@@ -2044,7 +2056,7 @@ rec {
   };
 
   libwpd = import ../development/libraries/libwpd {
-    inherit fetchurl stdenv pkgconfig libgsf libxml2;
+    inherit fetchurl stdenv pkgconfig libgsf libxml2 bzip2;
     inherit (gnome) glib;
   };
 
@@ -2145,7 +2157,7 @@ rec {
   };
 
   openssl = import ../development/libraries/openssl {
-    inherit fetchurl stdenv perl gmp;
+    inherit fetchurl stdenv perl;
   };
 
   pangoxsl = import ../development/libraries/pangoxsl {
@@ -2244,12 +2256,6 @@ rec {
     inherit fetchurl stdenv;
   };
 
-  strigi = import ../development/libraries/strigi {
-	  inherit stdenv fetchurl zlib cluceneCore cluceneContrib expat bzip2
-	  pkgconfig cmake dbus libxml2 perl;
-	  qt = qt4;
-  };
-
   t1lib = import ../development/libraries/t1lib {
     inherit fetchurl stdenv x11;
     inherit (xlibs) libXaw;
@@ -2409,6 +2415,11 @@ rec {
 
   ### DEVELOPMENT / LIBRARIES / HASKELL
 
+  gtk2hs = import ../development/libraries/haskell/gtk2hs {
+    inherit pkgconfig stdenv fetchurl cairo;
+    inherit (gnome) gtk glib GConf libglade libgtkhtml gtkhtml;
+    ghc = ghc661;
+  };
 
   uulib64 = import ../development/libraries/haskell/uulib { # !!! remove?
     inherit stdenv fetchurl ghc;
@@ -3078,6 +3089,11 @@ rec {
   libselinux = import ../os-specific/linux/libselinux {
     inherit fetchurl stdenv libsepol;
   };
+ 
+  libsexy = import ../development/libraries/libsexy {
+    inherit stdenv fetchurl pkgconfig libxml2;
+    inherit (gtkLibs) glib gtk pango;
+  };
 
   librsvg = import ../development/libraries/librsvg {
     inherit fetchurl stdenv;
@@ -3128,6 +3144,11 @@ rec {
     inherit fetchurl stdenv;
   };
 
+  libnotify = import ../development/libraries/libnotify {
+    inherit stdenv fetchurl pkgconfig dbus dbus_glib;
+    inherit (gtkLibs) gtk glib;
+  };
+
   libvolume_id = import ../os-specific/linux/libvolume_id {
     inherit fetchurl stdenv;
   };
@@ -3509,7 +3530,7 @@ rec {
   };
 
   compiz = compizFun {
-    version = getConfig ["compiz" "version"] "0.5.0";
+    version = getConfig ["compiz" "version"] "0.6.2";
     extraConfigureFlags = getConfig ["compiz" "extraConfigureFlags"] [];
   } null;
 
@@ -3578,11 +3599,9 @@ rec {
     inherit (xlibs) libX11;
   };
 
-  /*
-  djview4 = import ../applications/graphics/djview4 {
+  djview4 = import ../applications/graphics/djview {
     inherit fetchurl stdenv qt4 djvulibre;
   };
-  */
 
   eclipse = plugins:
     import ../applications/editors/eclipse {
@@ -3598,7 +3617,7 @@ rec {
 
   elinks = import ../applications/networking/browsers/elinks {
     inherit stdenv fetchurl python perl ncurses x11 zlib openssl spidermonkey
-	guile bzip2 libtool;
+	guile bzip2;
   };
 
   emacs = emacs22;
@@ -3720,7 +3739,7 @@ rec {
   } null;
 
   gphoto2 = import ../applications/misc/gphoto2 {
-    inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt;
+    inherit fetchurl stdenv pkgconfig libgphoto2 libexif popt readline gettext;
   };
 
   gqview = import ../applications/graphics/gqview {
@@ -3789,6 +3808,11 @@ rec {
     inherit (gtkLibs) glib;
   };
 
+  jedit = import ../applications/jedit {
+    inherit fetchurl ant;
+    stdenv = overrideSetup stdenv ../stdenv/generic/setup-new-2.sh;
+  };
+
   joe = import ../applications/editors/joe {
     inherit stdenv fetchurl;
   };
@@ -3961,7 +3985,7 @@ rec {
 
   pythonmagick = import ../applications/graphics/PythonMagick {
     inherit fetchurl stdenv pkgconfig imagemagick boost;
-    python = python25;
+    python = python_alts.v_2_5;
   };
 
   ratpoison = import ../applications/window-managers/ratpoison {
@@ -4344,71 +4368,28 @@ rec {
     qt = qt3;
   };
   
-  kdelibs4 = import ../desktops/kde-4/kdelibs {
-    inherit
-      fetchurl stdenv zlib perl openssl pcre pkgconfig
-      libjpeg libpng libtiff libxml2 libxslt libtool
-	  expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups;
-	inherit (xlibs)
-	  inputproto kbproto scrnsaverproto xextproto xf86miscproto
-	  xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite
-	  libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm
-	  libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc
-	  libxkbfile;
-    qt = qt4;
-  };
-
-  kdepimlibs4 = import ../desktops/kde-4/kdepimlibs {
-    inherit
-      fetchurl stdenv zlib perl openssl pcre pkgconfig
-      libjpeg libpng libtiff libxml2 libxslt libtool
-	  expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups
-	  boost gpgme;
-	inherit (xlibs)
-	  inputproto kbproto scrnsaverproto xextproto xf86miscproto
-	  xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite
-	  libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm
-	  libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc
-	  libxkbfile;
-    qt = qt4;
-	kdelibs = kdelibs4;
-  };
-
-  kdepim4 = import ../desktops/kde-4/kdepim {
+  kde4 = recurseIntoAttrs (import ../desktops/kde-4 {
     inherit
-      fetchurl stdenv zlib perl openssl pcre pkgconfig
-      libjpeg libpng libtiff libxml2 libxslt libtool libusb
-	  expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups
-	  mesa gpgme boost;
-	inherit (xlibs)
-	  inputproto kbproto scrnsaverproto xextproto xf86miscproto
-	  xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite
-	  libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm
-	  libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc
-	  libxkbfile libXinerama;
-	inherit (gtkLibs) glib;
-    qt = qt4;
-	kdelibs = kdelibs4;
-	kdepimlibs = kdepimlibs4;
-  };
-
-  kdebase4 = import ../desktops/kde-4/kdebase {
-    inherit
-      fetchurl stdenv zlib perl openssl pcre pkgconfig
-      libjpeg libpng libtiff libxml2 libxslt libtool libusb
-	  expat freetype bzip2 cmake strigi shared_mime_info alsaLib libungif cups
-	  mesa;
-	inherit (xlibs)
-	  inputproto kbproto scrnsaverproto xextproto xf86miscproto
-	  xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite
-	  libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm
-	  libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc
-	  libxkbfile libXinerama;
-	inherit (gtkLibs) glib;
+      fetchurl fetchsvn zlib perl openssl pcre pkgconfig libjpeg libpng libtiff
+      libxml2 libxslt libtool libusb expat freetype bzip2 cmake cluceneCore libgcrypt gnupg
+	  cppunit cyrus_sasl openldap enchant openexr exiv2 samba nss log4cxx aspell
+      shared_mime_info alsaLib libungif cups mesa boost gpgme gettext redland
+	  xineLib libgphoto2 djvulibre libogg flac lame libvorbis poppler readline
+	  saneBackends chmlib python libzip gmp sqlite libidn runCommand lib
+	  openbabel ocaml facile;
+	stdenv = stdenvUsingSetupNew2;
+	cdparanoia = cdparanoiaIII;
+    inherit (xlibs)
+      inputproto kbproto scrnsaverproto xextproto xf86miscproto
+      xf86vidmodeproto xineramaproto xproto libICE libX11 libXau libXcomposite
+      libXcursor libXdamage libXdmcp libXext libXfixes libXft libXi libXpm
+      libXrandr libXrender libXScrnSaver libXt libXtst libXv libXxf86misc
+      libxkbfile libXinerama;
+    inherit (gtkLibs) glib;
     qt = qt4;
-	kdelibs = kdelibs4;
-	kdepimlibs = kdepimlibs4;
-  };
+	dbus = dbus_alts.withX11;
+	bison = bison23;
+  });
 
   kdebase = import ../desktops/kde/kdebase {
     inherit
@@ -4520,6 +4501,18 @@ rec {
     db4 = db45;
   };
 
+  nixCustomFun = src: preConfigure: configureFlags :
+  (import ../tools/package-management/nix/custom.nix {
+    inherit fetchurl stdenv perl curl bzip2 openssl src preConfigure automake 
+        autoconf libtool configureFlags;
+    bison = bison23;
+    flex = flex2533;
+    aterm = aterm242fixes;
+    db4 = db45;
+    inherit docbook5_xsl libxslt docbook5 docbook_xml_dtd_43 w3m;
+
+  });
+
   ntfs3g = import ../misc/ntfs-3g {
     inherit fetchurl stdenv fuse pkgconfig;
   };
diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix
index 3337d6dc8a23..ae5224f71011 100644
--- a/pkgs/top-level/builder-defs.nix
+++ b/pkgs/top-level/builder-defs.nix
@@ -1,5 +1,5 @@
 args: with args; with stringsWithDeps; with lib;
-rec
+(rec
 {
 	inherit writeScript; 
 
@@ -12,30 +12,29 @@ rec
 		else if (hasSuffixHack ".zip" s) || (hasSuffixHack ".ZIP" s) then "zip"
 		else (abort "unknown archive type : ${s}"));
 
-	minInit = noDepEntry ("
-		set -e
-		NIX_GCC=${stdenv.gcc}
-		export SHELL=${stdenv.shell}
-		# Set up the initial path.
-		PATH=
-		for i in \$NIX_GCC ${toString stdenv.initialPath}; do
-		    PATH=\$PATH\${PATH:+:}\$i/bin
-		done
-	" + (if ((stdenv ? preHook) && (stdenv.preHook != null) && 
-			((toString stdenv.preHook) != "")) then 
-		"
-		param1=${stdenv.param1}
-		param2=${stdenv.param2}
-		param3=${stdenv.param3}
-		param4=${stdenv.param4}
-		param5=${stdenv.param5}
-		source ${stdenv.preHook}
-
-		export TZ=UTC
-
-		prefix=${if args ? prefix then (toString args.prefix) else "\$out"}
+	defAddToSearchPath = FullDepEntry ("
+		addToSearchPathWithCustomDelimiter() {
+			local delimiter=\$1
+			local varName=\$2
+			local needDir=\$3
+			local addDir=\${4:-\$needDir}
+			local prefix=\$5
+			if [ -d \$prefix\$needDir ]; then
+				if [ -z \${!varName} ]; then
+					eval export \${varName}=\${prefix}\$addDir
+				else
+					eval export \${varName}=\${!varName}\${delimiter}\${prefix}\$addDir
+				fi
+			fi
+		}
 
+		addToSearchPath()
+		{
+			addToSearchPathWithCustomDelimiter \"\${PATH_DELIMITER}\" \"\$@\"
+		}
+	") [defNest];
 
+	defNest = noDepEntry ("
 		nestingLevel=0
 
 		startNest() {
@@ -62,10 +61,33 @@ rec
 		}
 
 		trap \"closeNest\" EXIT
+	");
+
+	minInit = FullDepEntry ("
+		set -e
+		NIX_GCC=${stdenv.gcc}
+		export SHELL=${stdenv.shell}
+		# Set up the initial path.
+		PATH=
+		for i in \$NIX_GCC ${toString stdenv.initialPath}; do
+		    PATH=\$PATH\${PATH:+:}\$i/bin
+		done
+	" + (if ((stdenv ? preHook) && (stdenv.preHook != null) && 
+			((toString stdenv.preHook) != "")) then 
+		"
+		param1=${stdenv.param1}
+		param2=${stdenv.param2}
+		param3=${stdenv.param3}
+		param4=${stdenv.param4}
+		param5=${stdenv.param5}
+		source ${stdenv.preHook}
 
+		export TZ=UTC
+
+		prefix=${if args ? prefix then (toString args.prefix) else "\$out"}
 
 		"
-	else ""));
+	else "")) [defNest defAddToSearchPath];
 		
 	addInputs = FullDepEntry ("
 		# Recursively find all build inputs.
@@ -243,8 +265,8 @@ rec
 	replaceInScript = file: l: (concatStringsSep "\n" ((pairMap (replaceScriptVar file) l)));
 	replaceScripts = l:(concatStringsSep "\n" (pairMap replaceInScript l));
 	doReplaceScripts = FullDepEntry (replaceScripts (getAttr ["shellReplacements"] [] args)) [minInit];
-	makeNest = x:(if x==minInit.text then x else "startNest\n" + x + "\nstopNest\n");
+	makeNest = x:(if x==defNest.text then x else "startNest\n" + x + "\nstopNest\n");
 	textClosure = textClosureMap makeNest;
 
 	inherit noDepEntry FullDepEntry PackEntry;
-}
+}) // args