about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/audio/audacity/default.nix4
-rw-r--r--pkgs/applications/audio/ladspa-plugins/default.nix4
-rw-r--r--pkgs/applications/audio/ladspa-plugins/ladspah.nix4
-rw-r--r--pkgs/applications/audio/snd/default.nix93
-rw-r--r--pkgs/applications/graphics/gocr/0.44.nix4
-rw-r--r--pkgs/applications/graphics/xscreensaver/5.05.nix4
-rw-r--r--pkgs/applications/networking/p2p/ldcpp/1.0.1.nix6
-rw-r--r--pkgs/applications/virtualization/qemu/linux-img/0.2.nix4
-rw-r--r--pkgs/applications/window-managers/compiz/0.6.2.nix4
-rw-r--r--pkgs/applications/window-managers/compiz/0.7.4.nix4
-rw-r--r--pkgs/applications/window-managers/fbpanel/4.12.nix4
-rw-r--r--pkgs/build-support/deb-package/default.nix6
-rw-r--r--pkgs/data/fonts/clearlyU/1.9.nix6
-rw-r--r--pkgs/data/fonts/fontWrap/default.nix4
-rw-r--r--pkgs/data/fonts/junicode/0.6.15.nix6
-rw-r--r--pkgs/data/fonts/wqy_zenhei/0.4.23-1.nix6
-rw-r--r--pkgs/development/compilers/qi/9.1.nix4
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.5.nix4
-rw-r--r--pkgs/development/interpreters/pyrex/0.9.6.nix4
-rw-r--r--pkgs/development/libraries/cl-ppcre/default.nix26
-rw-r--r--pkgs/development/libraries/fftw/default.nix4
-rw-r--r--pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix4
-rw-r--r--pkgs/development/libraries/libdbi/0.8.2.nix4
-rw-r--r--pkgs/development/libraries/libextractor/0.5.18.nix4
-rw-r--r--pkgs/development/tools/misc/indent/2.2.9.nix4
-rw-r--r--pkgs/development/tools/misc/intltool/0.36.2.nix4
-rw-r--r--pkgs/development/tools/misc/ltrace/0.5-3deb.nix6
-rw-r--r--pkgs/games/construo/0.2.2.nix4
-rw-r--r--pkgs/games/fsg/alt-builder.nix4
-rw-r--r--pkgs/games/orbit/1.01.nix6
-rw-r--r--pkgs/os-specific/linux/atheros/0.9.4.nix4
-rw-r--r--pkgs/os-specific/linux/atheros/r3693.nix4
-rw-r--r--pkgs/os-specific/linux/dmidecode/2.9.nix4
-rw-r--r--pkgs/os-specific/linux/sdparm/1.02.nix4
-rw-r--r--pkgs/servers/dict/1.9.15.nix40
-rw-r--r--pkgs/servers/dict/dictd-db.nix8
-rw-r--r--pkgs/servers/xmpp/openfire/3.4.5.nix6
-rw-r--r--pkgs/servers/xmpp/openfire/3.5.2.nix6
-rw-r--r--pkgs/tools/X11/x11vnc/0.9.3.nix6
-rw-r--r--pkgs/tools/X11/x2vnc/1.7.2.nix6
-rw-r--r--pkgs/tools/misc/dosfstools/2.11deb.nix6
-rw-r--r--pkgs/tools/misc/relfs/cvs.2008.03.05.nix4
-rw-r--r--pkgs/tools/misc/rlwrap/0.28.nix6
-rw-r--r--pkgs/tools/networking/nc6/1.0.nix6
-rw-r--r--pkgs/tools/networking/smbfs-fuse/0.8.7.nix6
-rw-r--r--pkgs/tools/security/bmrsa/11.nix6
-rw-r--r--pkgs/tools/security/seccure/0.3.nix6
-rw-r--r--pkgs/tools/security/ssss/0.5.nix6
-rw-r--r--pkgs/tools/system/gdmap/0.8.1.nix4
-rw-r--r--pkgs/top-level/all-packages.nix12
-rw-r--r--pkgs/top-level/builder-defs.nix10
51 files changed, 224 insertions, 181 deletions
diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix
index 950a8e93907c..644996065cd6 100644
--- a/pkgs/applications/audio/audacity/default.nix
+++ b/pkgs/applications/audio/audacity/default.nix
@@ -1,5 +1,5 @@
 args: with args;
-	let localDefs = builderDefs { 
+	let localDefs = builderDefs.meta.function { 
 	  src = 
 		fetchurl {
 			url = mirror://sourceforge/audacity/audacity-src-1.3.3.tar.gz;
@@ -8,7 +8,7 @@ args: with args;
 
   	buildInputs =[(wxGTK null) libogg libvorbis libsndfile libmad pkgconfig gtk 
 		gettext glib];
-	} null;
+	};
 	in with localDefs;
 let 
 	postInstall = FullDepEntry ("
diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix
index 0c24a0fda454..230ee1d7de26 100644
--- a/pkgs/applications/audio/ladspa-plugins/default.nix
+++ b/pkgs/applications/audio/ladspa-plugins/default.nix
@@ -1,5 +1,5 @@
 args: with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = 
 		fetchurl {
 			url = http://plugin.org.uk/releases/0.4.15/swh-plugins-0.4.15.tar.gz;
@@ -7,7 +7,7 @@ args: with args;
 		};
 		buildInputs = [fftw ladspaH pkgconfig];
 		configureFlags = [];
-	} null;
+	};
 	in with localDefs;
 let
 	postInstall = FullDepEntry ("
diff --git a/pkgs/applications/audio/ladspa-plugins/ladspah.nix b/pkgs/applications/audio/ladspa-plugins/ladspah.nix
index 82595b4163e9..60ee6fbf4571 100644
--- a/pkgs/applications/audio/ladspa-plugins/ladspah.nix
+++ b/pkgs/applications/audio/ladspa-plugins/ladspah.nix
@@ -6,10 +6,10 @@ let
 		sha256 = "1b908csn85ng9sz5s5d1mqk711cmawain2z8px2ajngihdrynb67";
 	};
 in
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		buildInputs = [];
 		inherit src;
-	} null;
+	};
 	in with localDefs;
 let
 	copyFile = FullDepEntry ("
diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix
index 0a8bb95173f3..a8eb2de8e1a7 100644
--- a/pkgs/applications/audio/snd/default.nix
+++ b/pkgs/applications/audio/snd/default.nix
@@ -1,51 +1,60 @@
-args : with args;
-	let localDefs = builderDefs {
-		src = 
-	fetchurl {
-		url = http://downloads.sourceforge.net/snd/snd-9.4.tar.gz;
-		sha256 = "0zqgfnkvkqxby1k74mwba1r4pb520glcsz5jjmpzm9m41nqnghmm";
-	};
+args : 
+let 
+  lib = args.lib;
+  fetchurl = args.fetchurl;
+  FullDepEntry = args.FullDepEntry;
 
-		buildInputs = [gtk glib pkgconfig libXpm gmp gettext libX11 fftw]
-			++ (lib.optional (args ? ruby) args.ruby)
-			++ (lib.optional (args ? mesa) args.mesa)
-			++ (lib.optional (args ? guile) args.guile)
-			++ (lib.optional (args ? libtool) args.libtool)
-			++ (lib.optional (args ? sndlib) args.sndlib)
-			++ (lib.optional (args ? alsaLib) args.alsaLib)
-			++ (lib.optional (args ? jackaudio) args.jackaudio)
-			;
-		configureFlags = ["--with-gtk" "--with-xpm"]
-			++ (lib.optional (args ? ruby)   "--with-ruby" )
-			++ (lib.optional (args ? mesa)   "--with-gl"   )
-			++ (lib.optional (args ? guile)  "--with-guile")
-			++ (lib.optional (args ? sndlib) "--with-midi" )
-			++ (lib.optional (args ? alsaLib)  "--with-alsa")
-			++ (lib.optional (args ? jackaudio) "--with-jack" )
-                        ++ [ "--with-fftw" "--htmldir=$out/share/snd/html" "--with-doc-dir=$out/share/snd/html" ]
-			;
-	} null; /* null is a terminator for sumArgs */
-	in with localDefs;
-	let makeDocsWork = FullDepEntry ''
+  version = lib.getAttr ["version"] "9.4" args; 
+  buildInputs = with args; [gtk glib pkgconfig 
+     libXpm gmp gettext libX11 fftw]
+      ++ (lib.optional (args ? ruby) args.ruby)
+      ++ (lib.optional (args ? mesa) args.mesa)
+      ++ (lib.optional (args ? guile) args.guile)
+      ++ (lib.optional (args ? libtool) args.libtool)
+      ++ (lib.optional (args ? sndlib) args.sndlib)
+      ++ (lib.optional (args ? alsaLib) args.alsaLib)
+      ++ (lib.optional (args ? jackaudio) args.jackaudio)
+      ;
+  configureFlags = ["--with-gtk" "--with-xpm"]
+    ++ (lib.optional (args ? ruby)   "--with-ruby" )
+    ++ (lib.optional (args ? mesa)   "--with-gl"   )
+    ++ (lib.optional (args ? guile)  "--with-guile")
+    ++ (lib.optional (args ? sndlib) "--with-midi" )
+    ++ (lib.optional (args ? alsaLib)  "--with-alsa")
+    ++ (lib.optional (args ? jackaudio) "--with-jack" )
+    ++ [ "--with-fftw" "--htmldir=$out/share/snd/html" "--with-doc-dir=$out/share/snd/html" ]
+    ;
+in
+rec {
+  src = fetchurl {
+    url = "http://downloads.sourceforge.net/snd/snd-${version}.tar.gz";
+    sha256 = "0zqgfnkvkqxby1k74mwba1r4pb520glcsz5jjmpzm9m41nqnghmm";
+  };
+
+  inherit buildInputs;
+  configureFlags = [];
+
+  /* doConfigure should be specified separately */
+  phaseNames = ["doConfigure" "preBuild" "makeDocsWork" 
+    "doMakeInstall" "doForceShare"];
+
+  makeDocsWork = FullDepEntry ''
                 # hackish way to make html docs work
                 h="$out/share/snd/html"; ensureDir "$h"; cp *.html "$h"
                 patch -p1 < ${./doc.patch}
                 sed "s@HTML-DIR@$h@" -i index.scm snd-help.c
-            '' [defEnsureDir];
+            '' ["defEnsureDir"];
 
-            preBuild = FullDepEntry (''
+  preBuild = FullDepEntry (''
 		cp config.log /tmp/snd-config.log
-		export NIX_LDFLAGS="$NIX_LDFLAGS -L${libX11}/lib -lX11"
+		export NIX_LDFLAGS="$NIX_LDFLAGS -L${args.libX11}/lib -lX11"
                 
-            '') [minInit doUnpack makeDocsWork];
-in
-stdenv.mkDerivation rec {
-	name = "Snd-9.4";
-	builder = writeScript (name + "-builder")
-		(textClosure localDefs [doConfigure preBuild makeDocsWork doMakeInstall doForceShare  ]);
-	meta = {
-		description = "Snd sound editor.";
-                homepage = http://ccrma.stanford.edu/software/snd;
-		inherit src;
-	};
+            '') ["minInit" "doUnpack" "makeDocsWork"];
+
+  name = "Snd-" + version;
+  meta = {
+    description = "Snd sound editor.";
+    homepage = http://ccrma.stanford.edu/software/snd;
+    inherit src;
+  };
 }
diff --git a/pkgs/applications/graphics/gocr/0.44.nix b/pkgs/applications/graphics/gocr/0.44.nix
index 544c3b238d01..0a3c3869a1c7 100644
--- a/pkgs/applications/graphics/gocr/0.44.nix
+++ b/pkgs/applications/graphics/gocr/0.44.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 fetchurl {
 		url = http://prdownloads.sourceforge.net/jocr/gocr-0.44.tar.gz;
@@ -8,7 +8,7 @@ fetchurl {
 
 		buildInputs = [];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "gocr";
diff --git a/pkgs/applications/graphics/xscreensaver/5.05.nix b/pkgs/applications/graphics/xscreensaver/5.05.nix
index 9bfc3bfff7e4..2410f6938773 100644
--- a/pkgs/applications/graphics/xscreensaver/5.05.nix
+++ b/pkgs/applications/graphics/xscreensaver/5.05.nix
@@ -1,4 +1,4 @@
-args : with args; let localDefs = builderDefs (args // {
+args : with args; let localDefs = builderDefs.meta.function (args // {
 		src = /* put a fetchurl here */
 		fetchurl {
 		    url = http://www.jwz.org/xscreensaver/xscreensaver-5.05.tar.gz;
@@ -19,7 +19,7 @@ args : with args; let localDefs = builderDefs (args // {
 			"true" (" --with-x-app-defaults=\$out/share/xscreensaver/app-defaults "+
 				" --with-hackdir=\$out/share/xscreensaver-hacks ")
 		];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 let 
 	preConfigure = FullDepEntry ("
diff --git a/pkgs/applications/networking/p2p/ldcpp/1.0.1.nix b/pkgs/applications/networking/p2p/ldcpp/1.0.1.nix
index ea1f6b1b84b2..00626377e7c4 100644
--- a/pkgs/applications/networking/p2p/ldcpp/1.0.1.nix
+++ b/pkgs/applications/networking/p2p/ldcpp/1.0.1.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function ((rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://download2.berlios.de/linuxdcpp/linuxdcpp-1.0.1.tar.bz2;
@@ -15,7 +15,7 @@ args : with args; with builderDefs {src="";} null;
 			scons PREFIX=$out 
 			scons PREFIX=$out install
 		'') ["minInit" "doUnpack" "addInputs" "defEnsureDir"];
-	}) args null; /* null is a terminator for sumArgs */
+	}) //  args);
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "ldcpp-"+version;
diff --git a/pkgs/applications/virtualization/qemu/linux-img/0.2.nix b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix
index b951ca866844..87e2e114becd 100644
--- a/pkgs/applications/virtualization/qemu/linux-img/0.2.nix
+++ b/pkgs/applications/virtualization/qemu/linux-img/0.2.nix
@@ -1,6 +1,6 @@
 
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = [ http://fabrice.bellard.free.fr/qemu/linux-0.2.img.bz2 http://bellard.org/qemu/linux-0.2.img.bz2];
@@ -8,7 +8,7 @@ args : with args;
 		};
 		buildInputs = [];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let 
 doCopy = FullDepEntry ("
diff --git a/pkgs/applications/window-managers/compiz/0.6.2.nix b/pkgs/applications/window-managers/compiz/0.6.2.nix
index bd63e356a652..213fc810ddf5 100644
--- a/pkgs/applications/window-managers/compiz/0.6.2.nix
+++ b/pkgs/applications/window-managers/compiz/0.6.2.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 	fetchurl {
 		url = http://releases.compiz-fusion.org/compiz/0.6.2/compiz-0.6.2.tar.bz2;
@@ -21,7 +21,7 @@ args : with args;
 			"--enable-annotate" "--enable-librsvg"] ++ 
 			(if args ? extraConfigureFlags then args.extraConfigureFlags else []);
 		patches = [ ./glx-patch-0.6.2.patch ];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let
 	postAll = FullDepEntry ("
diff --git a/pkgs/applications/window-managers/compiz/0.7.4.nix b/pkgs/applications/window-managers/compiz/0.7.4.nix
index 8e95a9031557..6ae8f9dec0d5 100644
--- a/pkgs/applications/window-managers/compiz/0.7.4.nix
+++ b/pkgs/applications/window-managers/compiz/0.7.4.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 	fetchurl {
 		url = http://releases.compiz-fusion.org/0.7.4/compiz/compiz-0.7.4.tar.bz2;
@@ -22,7 +22,7 @@ args : with args;
 			"--enable-annotate" "--enable-librsvg"] ++ 
 			(if args ? extraConfigureFlags then args.extraConfigureFlags else []);
 		patches = [ ./glx-patch-0.6.2.patch ];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let
 	postAll = FullDepEntry ("
diff --git a/pkgs/applications/window-managers/fbpanel/4.12.nix b/pkgs/applications/window-managers/fbpanel/4.12.nix
index 371e86585134..cf09e347a5dd 100644
--- a/pkgs/applications/window-managers/fbpanel/4.12.nix
+++ b/pkgs/applications/window-managers/fbpanel/4.12.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 	fetchurl {
 		url = http://garr.dl.sourceforge.net/sourceforge/fbpanel/fbpanel-4.12.tgz;
@@ -9,7 +9,7 @@ args : with args;
 		buildInputs = [libX11 gtk pkgconfig libXmu libXpm 
 		  libpng libjpeg libtiff librsvg];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	}; /* null is a terminator for sumArgs */
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "fbpanel";
diff --git a/pkgs/build-support/deb-package/default.nix b/pkgs/build-support/deb-package/default.nix
index e884ae6d36b1..78bdeb07d187 100644
--- a/pkgs/build-support/deb-package/default.nix
+++ b/pkgs/build-support/deb-package/default.nix
@@ -1,10 +1,10 @@
 args : with args;	
 	let 
-       	localDefs = with (builderDefs {src="";} null);
+       	localDefs = with (builderDefs.meta.function {src="";});
 	let 
 	  checkFlag = flag : lib.getAttr [flag] false args;
 	in
-	  builderDefs {
+	  builderDefs.meta.function ({
 		inherit src;
 		inherit checkFlag;
 		buildInputs = [];
@@ -40,7 +40,7 @@ args : with args;
 		+ (if args ? extraReplacements then 
 		  args.extraReplacements 
 		else ""))["minInit" "doUnpack"];
-	} args null; /* null is a terminator for sumArgs */
+	}  // args);
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = localDefs.name + "deb";
diff --git a/pkgs/data/fonts/clearlyU/1.9.nix b/pkgs/data/fonts/clearlyU/1.9.nix
index 7dbae0e08408..e447dd3e0650 100644
--- a/pkgs/data/fonts/clearlyU/1.9.nix
+++ b/pkgs/data/fonts/clearlyU/1.9.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://crl.nmsu.edu/~mleisher/cu/cu12-1.9.tar.gz;
@@ -15,7 +15,7 @@ args : with args; with builderDefs {src="";} null;
 			mkfontdir 
 			mkfontscale
 		'') ["minInit" "defEnsureDir" "addInputs"];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "clearlyU-12-"+version;
diff --git a/pkgs/data/fonts/fontWrap/default.nix b/pkgs/data/fonts/fontWrap/default.nix
index 3e2dc1d2c349..875c65108ced 100644
--- a/pkgs/data/fonts/fontWrap/default.nix
+++ b/pkgs/data/fonts/fontWrap/default.nix
@@ -1,9 +1,9 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src =""; /* put a fetchurl here */
 		buildInputs = [mkfontdir mkfontscale ttmkfdir];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let
 	doInstall = FullDepEntry ("
diff --git a/pkgs/data/fonts/junicode/0.6.15.nix b/pkgs/data/fonts/junicode/0.6.15.nix
index f199b0ca269f..f6fcc1917b32 100644
--- a/pkgs/data/fonts/junicode/0.6.15.nix
+++ b/pkgs/data/fonts/junicode/0.6.15.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 		  url = http://prdownloads.sourceforge.net/junicode/junicode-0.6.15.zip;
@@ -13,7 +13,7 @@ args : with args; with builderDefs {src="";} null;
 			ensureDir $out/share/fonts/junicode-ttf
 			cp *.ttf $out/share/fonts/junicode-ttf
 		'') ["minInit" "addInputs" "defEnsureDir"];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "junicode-"+version;
diff --git a/pkgs/data/fonts/wqy_zenhei/0.4.23-1.nix b/pkgs/data/fonts/wqy_zenhei/0.4.23-1.nix
index c5aa6f40d403..15a7edd6535a 100644
--- a/pkgs/data/fonts/wqy_zenhei/0.4.23-1.nix
+++ b/pkgs/data/fonts/wqy_zenhei/0.4.23-1.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://prdownloads.sourceforge.net/wqy/wqy-zenhei-0.4.23-1.tar.gz;
@@ -12,7 +12,7 @@ args : with args; with builderDefs {src="";} null;
 			ensureDir $out/share/fonts
 			cp *.ttf $out/share/fonts
 		'') ["minInit" "addInputs" "doUnpack" "defEnsureDir"];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "wqy-zenhei-"+version;
diff --git a/pkgs/development/compilers/qi/9.1.nix b/pkgs/development/compilers/qi/9.1.nix
index 4bfca07d20f0..73aaabf9227d 100644
--- a/pkgs/development/compilers/qi/9.1.nix
+++ b/pkgs/development/compilers/qi/9.1.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://www.lambdassociates.org/Download/Qi9.1.zip;
@@ -7,7 +7,7 @@ args : with args;
 		};
 		buildInputs = [ unzip clisp];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let 
 	shell=stdenv.shell;
diff --git a/pkgs/development/interpreters/pyrex/0.9.5.nix b/pkgs/development/interpreters/pyrex/0.9.5.nix
index d494b5a15394..0b57d690e01f 100644
--- a/pkgs/development/interpreters/pyrex/0.9.5.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.5.nix
@@ -2,7 +2,7 @@ args: with args;
 
 let
 
-  localDefs = builderDefs {
+  localDefs = builderDefs.meta.function {
 
     src = fetchurl {
       url = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/Pyrex-0.9.5.1.1.tar.gz;
@@ -11,7 +11,7 @@ let
 
     buildInputs = [python];
 
-  } null; /* null is a terminator for sumArgs */
+  }; 
 
 in with localDefs;
         
diff --git a/pkgs/development/interpreters/pyrex/0.9.6.nix b/pkgs/development/interpreters/pyrex/0.9.6.nix
index 02c1d532abb3..7125a2aff20e 100644
--- a/pkgs/development/interpreters/pyrex/0.9.6.nix
+++ b/pkgs/development/interpreters/pyrex/0.9.6.nix
@@ -2,7 +2,7 @@ args: with args;
 
 let
 
-  localDefs = builderDefs {
+  localDefs = builderDefs.meta.function {
 
     src = fetchurl {
       url = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/oldtar/Pyrex-0.9.6.4.tar.gz;
@@ -11,7 +11,7 @@ let
 
     buildInputs = [python];
 
-  } null; /* null is a terminator for sumArgs */
+  };
 
 in with localDefs;
         
diff --git a/pkgs/development/libraries/cl-ppcre/default.nix b/pkgs/development/libraries/cl-ppcre/default.nix
new file mode 100644
index 000000000000..172b654d4e07
--- /dev/null
+++ b/pkgs/development/libraries/cl-ppcre/default.nix
@@ -0,0 +1,26 @@
+args :  
+let 
+  lib = args.lib;
+  fetchurl = args.fetchurl;
+  simplyShare = args.simplyShare;
+
+  version = lib.getAttr ["version"] "2.0.0" args; 
+  buildInputs = with args; [ ];
+in
+rec {
+  src = fetchurl {
+    url = http://weitz.de/files/cl-ppcre.tar.gz;
+    sha256 = "14zxrmc4b4q9kg505y9lb0nqp80fpmpwn51xwkqiwkm361n6h23p";
+  };
+
+  inherit buildInputs;
+  configureFlags = [];
+
+  /* doConfigure should be specified separately */
+  phaseNames = [(simplyShare "cl-ppcre")];
+      
+  name = "cl-ppcre-" + version;
+  meta = {
+    description = "Common Lisp Portable Perl Compatible RegExp library";
+  };
+}
diff --git a/pkgs/development/libraries/fftw/default.nix b/pkgs/development/libraries/fftw/default.nix
index 5c5c7d933104..ec8cff5f32d7 100644
--- a/pkgs/development/libraries/fftw/default.nix
+++ b/pkgs/development/libraries/fftw/default.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs { 
+	let localDefs = builderDefs.meta.function { 
 		src = 
 			fetchurl {
 				url = ftp://ftp.fftw.org/pub/fftw/fftw-3.1.2.tar.gz;
@@ -7,7 +7,7 @@ args : with args;
 			};
 		buildInputs = [];
 		configureFlags = ["--enable-float --enable-shared"];
-	} null;
+	};
 	in with localDefs;
 stdenv.mkDerivation {
 	name = "fftw-3.1.2";
diff --git a/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix
index ec386a92e534..2dd008c73488 100644
--- a/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix
+++ b/pkgs/development/libraries/libdbi-drivers/0.8.2-1.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 			fetchurl {
 				url = mirror://sourceforge/libdbi-drivers/libdbi-drivers-0.8.2-1.tar.gz;
@@ -26,7 +26,7 @@ args : with args;
 			" --with-sqlite-libdir=${args.sqlite}/lib/sqlite " 
 		] else [])
 		;
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "libdbi"+version;
diff --git a/pkgs/development/libraries/libdbi/0.8.2.nix b/pkgs/development/libraries/libdbi/0.8.2.nix
index f605fe70a49d..06c764386049 100644
--- a/pkgs/development/libraries/libdbi/0.8.2.nix
+++ b/pkgs/development/libraries/libdbi/0.8.2.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 			fetchurl {
 				url = mirror://sourceforge/libdbi/libdbi-0.8.2.tar.gz;
@@ -8,7 +8,7 @@ args : with args;
 
 		buildInputs = [];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "libdbi"+version;
diff --git a/pkgs/development/libraries/libextractor/0.5.18.nix b/pkgs/development/libraries/libextractor/0.5.18.nix
index 0ee405e5822d..5d854115b041 100644
--- a/pkgs/development/libraries/libextractor/0.5.18.nix
+++ b/pkgs/development/libraries/libextractor/0.5.18.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://gnunet.org/libextractor/download/libextractor-0.5.18.tar.gz;
@@ -8,7 +8,7 @@ args : with args;
 
 		buildInputs = [ zlib];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "libextractor"+version;
diff --git a/pkgs/development/tools/misc/indent/2.2.9.nix b/pkgs/development/tools/misc/indent/2.2.9.nix
index a31c940dcb78..6dc28ea0c30d 100644
--- a/pkgs/development/tools/misc/indent/2.2.9.nix
+++ b/pkgs/development/tools/misc/indent/2.2.9.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = ftp://ftp.gnu.org/gnu/indent/indent-2.2.9.tar.gz;
@@ -8,7 +8,7 @@ args : with args;
 
 		buildInputs = [];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let 
 	preBuild = FullDepEntry ("
diff --git a/pkgs/development/tools/misc/intltool/0.36.2.nix b/pkgs/development/tools/misc/intltool/0.36.2.nix
index 0ed8bfd74be5..14e62bbc7d7d 100644
--- a/pkgs/development/tools/misc/intltool/0.36.2.nix
+++ b/pkgs/development/tools/misc/intltool/0.36.2.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 	fetchurl {
 		url = http://ftp.gnome.org/pub/gnome/sources/intltool/0.36/intltool-0.36.2.tar.bz2;
@@ -8,7 +8,7 @@ args : with args;
 
 		propagatedBuildInputs = [perl perlXMLParser];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "intltool-0.36.2";
diff --git a/pkgs/development/tools/misc/ltrace/0.5-3deb.nix b/pkgs/development/tools/misc/ltrace/0.5-3deb.nix
index 3385f8975718..2c9349bf6a3c 100644
--- a/pkgs/development/tools/misc/ltrace/0.5-3deb.nix
+++ b/pkgs/development/tools/misc/ltrace/0.5-3deb.nix
@@ -1,7 +1,7 @@
 args : with args;	let 
         patch = ./ltrace_0.5-3.diff.gz;
-	localDefs = with (builderDefs {src="";} null);
-	 builderDefs {
+	localDefs = with builderDefs;
+	 builderDefs.meta.function {
 		src = /* put a fetchurl here */
 	fetchurl {
 		url = ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.5.orig.tar.gz;
@@ -17,7 +17,7 @@ args : with args;	let
 		  gunzip < ${patch} | patch -Np1
 		  sed -e s@-Werror@@ -i Makefile.in
 		'')["minInit" "doUnpack"];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let
 	preConfigure = FullDepEntry ("
diff --git a/pkgs/games/construo/0.2.2.nix b/pkgs/games/construo/0.2.2.nix
index 3d8600b8acd4..3d9da7f531ad 100644
--- a/pkgs/games/construo/0.2.2.nix
+++ b/pkgs/games/construo/0.2.2.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://savannah.nongnu.org/download/construo/construo-0.2.2.tar.gz;
@@ -10,7 +10,7 @@ args : with args;
 		++ (if args ? mesa then [args.mesa args.freeglut] else [])
 		;
 		configureFlags = [""];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let 
 preConfigure = FullDepEntry ("
diff --git a/pkgs/games/fsg/alt-builder.nix b/pkgs/games/fsg/alt-builder.nix
index 7a0b9c3fbaea..c48041fe5e92 100644
--- a/pkgs/games/fsg/alt-builder.nix
+++ b/pkgs/games/fsg/alt-builder.nix
@@ -1,12 +1,12 @@
 args: with args; 
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
   		buildInputs =[(wxGTK null)];
 		  src = 
 			fetchurl {
 				url = http://www.piettes.com/fallingsandgame/fsg-src-4.4.tar.gz;
 				sha256 = "1756y01rkvd3f1pkj88jqh83fqcfl2fy0c48mcq53pjzln9ycv8c";
 			};
-	} null;
+	};
 	in with localDefs;
 let 
 	preBuild = FullDepEntry "
diff --git a/pkgs/games/orbit/1.01.nix b/pkgs/games/orbit/1.01.nix
index 488d77732aef..b60b617fc2c3 100644
--- a/pkgs/games/orbit/1.01.nix
+++ b/pkgs/games/orbit/1.01.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			sha256 = "1kx69f9jqnfzwjh47cl1df8p8hn3bnp6bznxnb6c4wx32ijn5gri";
@@ -27,7 +27,7 @@ $out/dump/orbit "\$@"
 EOF
                         chmod a+x $out/bin/space-orbit
 		'') ["minInit" "doUnpack" "defEnsureDir" "addInputs"];
-	} null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "space-orbit-"+version;
diff --git a/pkgs/os-specific/linux/atheros/0.9.4.nix b/pkgs/os-specific/linux/atheros/0.9.4.nix
index 38309d53537a..f187dbe234d8 100644
--- a/pkgs/os-specific/linux/atheros/0.9.4.nix
+++ b/pkgs/os-specific/linux/atheros/0.9.4.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 		  url = http://downloads.sourceforge.net/madwifi/madwifi-0.9.4.tar.gz;
@@ -9,7 +9,7 @@ args : with args;
 		buildInputs = [];
 		configureFlags = [];
 		makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out''];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let 
 postInstall = FullDepEntry (''
diff --git a/pkgs/os-specific/linux/atheros/r3693.nix b/pkgs/os-specific/linux/atheros/r3693.nix
index 159a44cb224b..e4544608c249 100644
--- a/pkgs/os-specific/linux/atheros/r3693.nix
+++ b/pkgs/os-specific/linux/atheros/r3693.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = fetchurl {
 			url = http://snapshots.madwifi.org/madwifi-trunk/madwifi-trunk-r3693-20080602.tar.gz;
 			sha256 = "0r9nnxcq50rgwcm9y93rpk3mqknl3ixkxkd72437b55qlz1f9vs3";
@@ -12,7 +12,7 @@ args : with args;
 		  url = http://people.freebsd.org/~sam/ath_hal-20080528.tgz;
 		  sha256 = "1a6glkd8n46876hl48ib08p81qwsvrk4153j4b9xrxgid6f8bar9";
 		};
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let
 preBuild = FullDepEntry (''
diff --git a/pkgs/os-specific/linux/dmidecode/2.9.nix b/pkgs/os-specific/linux/dmidecode/2.9.nix
index b9b4c9447da1..2ee868af4863 100644
--- a/pkgs/os-specific/linux/dmidecode/2.9.nix
+++ b/pkgs/os-specific/linux/dmidecode/2.9.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://download.savannah.gnu.org/releases/dmidecode/dmidecode-2.9.tar.bz2;
@@ -9,7 +9,7 @@ args : with args;
 		buildInputs = [];
 		configureFlags = [];
 		makeFlags = "prefix=\$out";
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "dmidecode-"+version;
diff --git a/pkgs/os-specific/linux/sdparm/1.02.nix b/pkgs/os-specific/linux/sdparm/1.02.nix
index 5f0ae17e77aa..1f12222c4b47 100644
--- a/pkgs/os-specific/linux/sdparm/1.02.nix
+++ b/pkgs/os-specific/linux/sdparm/1.02.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://sg.torque.net/sg/p/sdparm-1.02.tgz;
@@ -8,7 +8,7 @@ args : with args;
 
 		buildInputs = [];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "sdparm-"+version;
diff --git a/pkgs/servers/dict/1.9.15.nix b/pkgs/servers/dict/1.9.15.nix
index 4eb5c6cb0b30..e31a2769be62 100644
--- a/pkgs/servers/dict/1.9.15.nix
+++ b/pkgs/servers/dict/1.9.15.nix
@@ -1,24 +1,24 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
-		src = /* put a fetchurl here */
-		fetchurl {
-			url = ftp://ftp.dict.org/pub/dict/dictd-1.9.15.tar.gz;
-			sha256 = "0p41yf72l0igmshz6vxy3hm51z25600vrnb9j2jpgws4c03fqnac";
-		};
+args : with args; with builderDefs;
+        let localDefs = builderDefs.meta.function ((rec {
+                src = /* put a fetchurl here */
+                fetchurl {
+                        url = ftp://ftp.dict.org/pub/dict/dictd-1.9.15.tar.gz;
+                        sha256 = "0p41yf72l0igmshz6vxy3hm51z25600vrnb9j2jpgws4c03fqnac";
+                };
 
-		buildInputs = [flex bison which];
-		configureFlags = [ " --datadir=/var/run/current-system/share/dictd " ];
-	}) args null; /* null is a terminator for sumArgs */
-	in with localDefs;
+                buildInputs = [flex bison which];
+                configureFlags = [ " --datadir=/var/run/current-system/share/dictd " ];
+        }) // args);
+        in with localDefs;
 stdenv.mkDerivation rec {
-	name = "dict-"+version;
-	builder = writeScript (name + "-builder")
-		(textClosure localDefs 
-			[doConfigure doMakeInstall doForceShare doPropagate]);
-	meta = {
-		description = "
-		Dict protocol server and client.
+        name = "dict-"+version;
+        builder = writeScript (name + "-builder")
+                (textClosure localDefs 
+                        [doConfigure doMakeInstall doForceShare doPropagate]);
+        meta = {
+                description = "
+                Dict protocol server and client.
 ";
-		inherit src;
-	};
+                inherit src;
+        };
 }
diff --git a/pkgs/servers/dict/dictd-db.nix b/pkgs/servers/dict/dictd-db.nix
index 15503e448123..a7129b94d8e1 100644
--- a/pkgs/servers/dict/dictd-db.nix
+++ b/pkgs/servers/dict/dictd-db.nix
@@ -1,8 +1,8 @@
 { builderDefs }:
 
 let makeDictdDB = _src: _name: _subdir: _locale:
-with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src=_src;
 		doInstall = FullDepEntry (''
 			ensureDir $out/share/dictd
@@ -13,7 +13,7 @@ with builderDefs {src="";} null;
 
 		buildInputs = [];
 		configureFlags = [];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "dictd-db-${_name}";
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
 # Probably a bug in some FreeDict release files, but easier to trivially
 # work around than report. Not that it can cause any other problems..
 makeDictdDBFreedict = _src: _name: _locale: makeDictdDB _src _name "{.,bin}" _locale;
-fetchurl = (builderDefs {src="";} null).fetchurl;
+fetchurl = builderDefs.fetchurl;
 
 in 
 
diff --git a/pkgs/servers/xmpp/openfire/3.4.5.nix b/pkgs/servers/xmpp/openfire/3.4.5.nix
index e9e711332f5e..26c2aa6f813e 100644
--- a/pkgs/servers/xmpp/openfire/3.4.5.nix
+++ b/pkgs/servers/xmpp/openfire/3.4.5.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-  let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+  let localDefs = builderDefs.meta.function (rec {
     src = /* put a fetchurl here */
     fetchurl {
       url = http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3_4_5.tar.gz;
@@ -18,7 +18,7 @@ args : with args; with builderDefs {src="";} null;
       ln -s /etc/openfire $out/conf
     '') 
     ["minInit" "doUnpack" "addInputs"];
-  }) null; /* null is a terminator for sumArgs */
+  });
   in with localDefs;
 stdenv.mkDerivation rec {
   name = "openfire-"+version;
diff --git a/pkgs/servers/xmpp/openfire/3.5.2.nix b/pkgs/servers/xmpp/openfire/3.5.2.nix
index 242ca6ea98f6..7d66071df0a5 100644
--- a/pkgs/servers/xmpp/openfire/3.5.2.nix
+++ b/pkgs/servers/xmpp/openfire/3.5.2.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-  let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+  let localDefs = builderDefs.meta.function (rec {
     src = /* put a fetchurl here */
     fetchurl {
       url = http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3_5_2.tar.gz;
@@ -18,7 +18,7 @@ args : with args; with builderDefs {src="";} null;
       ln -s /etc/openfire $out/conf
     '') 
     ["minInit" "doUnpack" "addInputs"];
-  }) null; /* null is a terminator for sumArgs */
+  });
   in with localDefs;
 stdenv.mkDerivation rec {
   name = "openfire-"+version;
diff --git a/pkgs/tools/X11/x11vnc/0.9.3.nix b/pkgs/tools/X11/x11vnc/0.9.3.nix
index 71bee68557ad..72c0997cc6a5 100644
--- a/pkgs/tools/X11/x11vnc/0.9.3.nix
+++ b/pkgs/tools/X11/x11vnc/0.9.3.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-  let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+  let localDefs = builderDefs.meta.function (rec {
     src = /* put a fetchurl here */
     fetchurl {
       url = mirror://sourceforge/libvncserver/x11vnc-0.9.3.tar.gz;
@@ -10,7 +10,7 @@ args : with args; with builderDefs {src="";} null;
       zlib libX11 xproto libjpeg libXtst libXinerama xineramaproto
       libXrandr randrproto libXext xextproto inputproto recordproto];
     configureFlags = [];
-  }) null; /* null is a terminator for sumArgs */
+  });
   in with localDefs;
 stdenv.mkDerivation rec {
   name = "x11vnc-"+version;
diff --git a/pkgs/tools/X11/x2vnc/1.7.2.nix b/pkgs/tools/X11/x2vnc/1.7.2.nix
index 50dea60b8908..3966b852adce 100644
--- a/pkgs/tools/X11/x2vnc/1.7.2.nix
+++ b/pkgs/tools/X11/x2vnc/1.7.2.nix
@@ -1,6 +1,6 @@
 
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs.meta.function {src="";};
+	let localDefs = builderDefs.meta.function ((rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://fredrik.hubbe.net/x2vnc/x2vnc-1.7.2.tar.gz;
@@ -12,7 +12,7 @@ args : with args; with builderDefs {src="";} null;
 			ensureDir $out
 		'') ["defEnsureDir"];
 		configureFlags = [];
-	}) args null; /* null is a terminator for sumArgs */
+	}) // args); /* null is a terminator for sumArgs */
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "x2vnc-"+version;
diff --git a/pkgs/tools/misc/dosfstools/2.11deb.nix b/pkgs/tools/misc/dosfstools/2.11deb.nix
index 375dcc6a8559..8878ee383257 100644
--- a/pkgs/tools/misc/dosfstools/2.11deb.nix
+++ b/pkgs/tools/misc/dosfstools/2.11deb.nix
@@ -1,10 +1,10 @@
-args : with args; with builderDefs {src="";} null;
+args : with args; with builderDefs;
     let patch = 
         fetchurl {
           url = http://ftp.de.debian.org/debian/pool/main/d/dosfstools/dosfstools_2.11-2.3.diff.gz;
           sha256 = "0bzjhpgg4ih6c76ax8byis9vxgkr2c7bbbshqrkfq8j7ar48n5ld";
         };	
-      localDefs = builderDefs (rec {
+      localDefs = builderDefs.meta.function (rec {
         src = /* put a fetchurl here */
           fetchurl {
             url = http://ftp.de.debian.org/debian/pool/main/d/dosfstools/dosfstools_2.11.orig.tar.gz;
@@ -17,7 +17,7 @@ args : with args; with builderDefs {src="";} null;
         buildInputs = [];
         configureFlags = [];
 	makeFlags = " PREFIX=$out ";
-    }) null; /* null is a terminator for sumArgs */
+    });
     in with localDefs;
 stdenv.mkDerivation rec {
     name = "dosfstools-"+version;
diff --git a/pkgs/tools/misc/relfs/cvs.2008.03.05.nix b/pkgs/tools/misc/relfs/cvs.2008.03.05.nix
index e8d3705acc3d..a02df67fd584 100644
--- a/pkgs/tools/misc/relfs/cvs.2008.03.05.nix
+++ b/pkgs/tools/misc/relfs/cvs.2008.03.05.nix
@@ -1,6 +1,6 @@
 
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 	src = /* put a fetchurl here */
 	if args ? src then args.src else fetchcvs {
 		cvsRoot = ":pserver:anonymous@relfs.cvs.sourceforge.net:/cvsroot/relfs";
@@ -12,7 +12,7 @@ args : with args;
 		buildInputs = [ocaml fuse postgresql pcre
 			e2fsprogs gnomevfs pkgconfig GConf];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 let build = FullDepEntry ("
 	cd deps 
diff --git a/pkgs/tools/misc/rlwrap/0.28.nix b/pkgs/tools/misc/rlwrap/0.28.nix
index 3a8a22a2f544..b6db8638601b 100644
--- a/pkgs/tools/misc/rlwrap/0.28.nix
+++ b/pkgs/tools/misc/rlwrap/0.28.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = ftp://ftp.chg.ru/mirrors/ftp.freebsd.org/pub/FreeBSD/ports/distfiles/rlwrap-0.28.tar.gz;
@@ -8,7 +8,7 @@ args : with args; with builderDefs {src="";} null;
 
 		buildInputs = [readline ];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "rlwrap-"+version;
diff --git a/pkgs/tools/networking/nc6/1.0.nix b/pkgs/tools/networking/nc6/1.0.nix
index 22be0c941b73..130b128149b8 100644
--- a/pkgs/tools/networking/nc6/1.0.nix
+++ b/pkgs/tools/networking/nc6/1.0.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+let localDefs = builderDefs.meta.function (rec {
     src = /* put a fetchurl here */
     fetchurl {
       url = ftp://ftp.deepspace6.net/pub/ds6/sources/nc6/nc6-1.0.tar.bz2;
@@ -8,7 +8,7 @@ let localDefs = builderDefs (rec {
 
     buildInputs = [];
     configureFlags = [];
-    }) null; /* null is a terminator for sumArgs */
+    });
 in with localDefs;
 stdenv.mkDerivation rec {
   name = "nc6-"+version;
diff --git a/pkgs/tools/networking/smbfs-fuse/0.8.7.nix b/pkgs/tools/networking/smbfs-fuse/0.8.7.nix
index d93ab811438c..fa98d3d0ac6a 100644
--- a/pkgs/tools/networking/smbfs-fuse/0.8.7.nix
+++ b/pkgs/tools/networking/smbfs-fuse/0.8.7.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://www.ricardis.tudelft.nl/~vincent/fusesmb/download/fusesmb-0.8.7.tar.gz;
@@ -14,7 +14,7 @@ args : with args; with builderDefs {src="";} null;
 		ln -fs ${samba}/lib/libsmbclient.so $out/lib/libsmbclient.so.0
 		'')
 		[ "minInit" "defEnsureDir" "doMakeInstall"];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "smbfs-fuse-"+version;
diff --git a/pkgs/tools/security/bmrsa/11.nix b/pkgs/tools/security/bmrsa/11.nix
index dd1b8831bb79..9a5468e8cc5f 100644
--- a/pkgs/tools/security/bmrsa/11.nix
+++ b/pkgs/tools/security/bmrsa/11.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://prdownloads.sourceforge.net/sourceforge/bmrsa/bmrsa11.zip;
@@ -16,7 +16,7 @@ args : with args; with builderDefs {src="";} null;
 			ensureDir $out/bin
 			echo -e 'install:\n\tcp bmrsa '$out'/bin' >> Makefile
 		'') ["minInit" "addInputs" "defEnsureDir"];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "bmrsa-"+version;
diff --git a/pkgs/tools/security/seccure/0.3.nix b/pkgs/tools/security/seccure/0.3.nix
index a42837cf60d9..36109524831c 100644
--- a/pkgs/tools/security/seccure/0.3.nix
+++ b/pkgs/tools/security/seccure/0.3.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function ((rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://freshmeat.net/redir/seccure/65485/url_tgz/seccure-0.3.tar.gz;
@@ -12,7 +12,7 @@ args : with args; with builderDefs {src="";} null;
 			sed -e s@/usr/@$out/@g -i Makefile
 			ensureDir $out/bin $out/share/man/man1
 		'') ["minInit" "doUnpack" "defEnsureDir"];
-	}) args null; /* null is a terminator for sumArgs */
+	}) // args);
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "seccure-"+version;
diff --git a/pkgs/tools/security/ssss/0.5.nix b/pkgs/tools/security/ssss/0.5.nix
index eedb788c777d..e35165be32b0 100644
--- a/pkgs/tools/security/ssss/0.5.nix
+++ b/pkgs/tools/security/ssss/0.5.nix
@@ -1,5 +1,5 @@
-args : with args; with builderDefs {src="";} null;
-	let localDefs = builderDefs (rec {
+args : with args; with builderDefs;
+	let localDefs = builderDefs.meta.function (rec {
 		src = /* put a fetchurl here */
 		fetchurl {
 			url = http://point-at-infinity.org/ssss/ssss-0.5.tar.gz;
@@ -15,7 +15,7 @@ args : with args; with builderDefs {src="";} null;
 			ensureDir $out/bin $out/share/man/man1
 			echo -e 'install:\n\tcp ssss-combine ssss-split '"$out"'/bin' >>Makefile
 		'') ["minInit" "doUnpack" "defEnsureDir"];
-	}) null; /* null is a terminator for sumArgs */
+	});
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "ssss-"+version;
diff --git a/pkgs/tools/system/gdmap/0.8.1.nix b/pkgs/tools/system/gdmap/0.8.1.nix
index 6b14c91e6b89..c8ba4ac2418f 100644
--- a/pkgs/tools/system/gdmap/0.8.1.nix
+++ b/pkgs/tools/system/gdmap/0.8.1.nix
@@ -1,5 +1,5 @@
 args : with args;
-	let localDefs = builderDefs {
+	let localDefs = builderDefs.meta.function {
 		src = /* put a fetchurl here */
 		fetchurl {
 		    url = http://downloads.sourceforge.net/gdmap/gdmap-0.8.1.tar.gz;
@@ -8,7 +8,7 @@ args : with args;
 
 		buildInputs = [gtk pkgconfig libxml2 intltool gettext];
 		configureFlags = [];
-	} null; /* null is a terminator for sumArgs */
+	};
 	in with localDefs;
 stdenv.mkDerivation rec {
 	name = "gdmap"+version;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f4d4e652570b..ec9c203ceec8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -248,14 +248,13 @@ let pkgs = rec {
       abort ("Unknown option specified: " + result))
     else x);
 
-  builderDefs = lib.sumArgs (import ./builder-defs.nix) {
+  builderDefs = composedArgsAndFun (import ./builder-defs.nix) {
     inherit stringsWithDeps lib stdenv writeScript fetchurl;
   };
 
   composedArgsAndFun = lib.composedArgsAndFun;
 
-  builderDefsPackage = expr: composedArgsAndFun
-    (((builderDefs null).builderDefsPackage builderDefs) expr);
+  builderDefsPackage = builderDefs.builderDefsPackage builderDefs;
 
   stringsWithDeps = import ../lib/strings-with-deps.nix {
     inherit stdenv lib;
@@ -2547,6 +2546,9 @@ let pkgs = rec {
     inherit fetchurl stdenv python;
   };
 
+  clppcre = builderDefsPackage (import ../development/libraries/cl-ppcre) {
+  };
+ 
   cluceneCore = (import ../development/libraries/clucene-core) {
     inherit fetchurl stdenv;
   };
@@ -6592,8 +6594,8 @@ let pkgs = rec {
     inherit (xlibs) libXmu;
   };
 
-  sndBase =  composedArgsAndFun (import ../applications/audio/snd) {
-    inherit fetchurl stdenv builderDefs stringsWithDeps lib fftw;
+  sndBase =  builderDefsPackage (import ../applications/audio/snd) {
+    inherit fetchurl stdenv stringsWithDeps lib fftw;
     inherit pkgconfig gmp gettext;
     inherit (xlibs) libXpm libX11;
     inherit (gtkLibs) gtk glib;
diff --git a/pkgs/top-level/builder-defs.nix b/pkgs/top-level/builder-defs.nix
index d1f6321e72af..1b2ba4e4226d 100644
--- a/pkgs/top-level/builder-defs.nix
+++ b/pkgs/top-level/builder-defs.nix
@@ -458,8 +458,11 @@ args: with args; with stringsWithDeps; with lib;
 
         extraDerivationAttrs = lib.getAttr ["extraDerivationAttrs"] {} args;
 
-        builderDefsPackage = bd: func: args: (
-        let localDefs = bd (func ((bd null) // args)) args null; in
+        # for overrides..
+	builderDefsArgs = args;
+
+        innerBuilderDefsPackage = bd: func: args: (
+        let localDefs = bd.meta.function ((func (bd // args)) // args); in
 
         stdenv.mkDerivation ((rec {
           inherit (localDefs) name;
@@ -471,6 +474,9 @@ args: with args; with stringsWithDeps; with lib;
         } else {}) // extraDerivationAttrs)
         );
 
+	builderDefsPackage = bd: func: args: (composedArgsAndFun 
+	  (innerBuilderDefsPackage bd func) ((func (bd // args)) // args));
+
    generateFontsFromSFD = noDepEntry(''
            for i in *.sfd; do
                 ${args.fontforge}/bin/fontforge -c \