summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2013-05-27 23:00:24 -0400
committerShea Levy <shea@shealevy.com>2013-05-27 23:00:24 -0400
commitb385fea5fc0118c2c37384b34c815dedfdfad8ac (patch)
treea6be041b9bfa3c5d2b82c1073420b6e6f32787dc
parent1855b9bdecad959a598a8ed1e4000d6bc1f0a93d (diff)
parent4e5966e7aa242c19b59308a6f15fe8a5f9cc3bd2 (diff)
downloadnixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar.gz
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar.bz2
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar.lz
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar.xz
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.tar.zst
nixlib-b385fea5fc0118c2c37384b34c815dedfdfad8ac.zip
Merge branch 'node-update'
This branch updates node to 0.10.8, as well as updating its
dependencies. It also updates node-packages to use the new style
generated by npm2nix (some packages may have been lost in the switch,
please check!).

Note that 0.10 had some backwards-compatability breaks with 0.8,
particularly for readable streams. Please see the official documentation
for migration help.

Note that I have not yet tested this on darwin (node.js was already
broken there), but will do so soon and fix it if it's broken.

Signed-off-by: Shea Levy <shea@shealevy.com>
-rw-r--r--pkgs/build-support/fetchsvn/default.nix8
-rw-r--r--pkgs/development/libraries/c-ares/default.nix20
-rw-r--r--pkgs/development/libraries/http_parser/build-shared.patch30
-rw-r--r--pkgs/development/libraries/http_parser/default.nix45
-rw-r--r--pkgs/development/libraries/v8/default.nix10
-rw-r--r--pkgs/development/libraries/v8/fix-GetLocalizedMessage-usage.patch27
-rw-r--r--pkgs/development/web/nodejs/default.nix61
-rw-r--r--pkgs/development/web/nodejs/no-arch-flag.patch21
-rw-r--r--pkgs/top-level/all-packages.nix4
-rw-r--r--pkgs/top-level/node-packages-generated.nix1894
-rw-r--r--pkgs/top-level/node-packages.json35
-rw-r--r--pkgs/top-level/node-packages.nix1961
12 files changed, 2134 insertions, 1982 deletions
diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix
index 39272b996082..30625a758f8c 100644
--- a/pkgs/build-support/fetchsvn/default.nix
+++ b/pkgs/build-support/fetchsvn/default.nix
@@ -1,5 +1,5 @@
-{stdenv, subversion, sshSupport ? false, openssh ? null}: 
-{url, rev ? "HEAD", md5 ? "", sha256 ? "", ignoreExternals ? false}:
+{stdenv, subversion, sshSupport ? false, openssh ? null}:
+{url, rev ? "HEAD", md5 ? "", sha256 ? "", ignoreExternals ? false, name ? null}:
 
 let
   repoName = with stdenv.lib;
@@ -18,10 +18,12 @@ let
       else if snd path == "tags" then     "${trd path}-${fst path}"
       # ../repo (no trunk) -> repo
       else fst path;
+
+  name_ = if name == null then "${repoName}-r${toString rev}" else name;
 in
 
 stdenv.mkDerivation {
-  name = "${repoName}-r${toString rev}";
+  name = name_;
   builder = ./builder.sh;
   buildInputs = [subversion];
 
diff --git a/pkgs/development/libraries/c-ares/default.nix b/pkgs/development/libraries/c-ares/default.nix
new file mode 100644
index 000000000000..c1b23179a1db
--- /dev/null
+++ b/pkgs/development/libraries/c-ares/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "c-ares-1.10.0";
+
+  src = fetchurl {
+    url = "http://c-ares.haxx.se/download/${name}.tar.gz";
+    sha256 = "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x";
+  };
+
+  meta = {
+    description = "A C library for asynchronous DNS requests";
+
+    homepage = http://c-ares.haxx.se;
+
+    license = stdenv.lib.licenses.mit;
+
+    maintainer = [ stdenv.lib.maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/development/libraries/http_parser/build-shared.patch b/pkgs/development/libraries/http_parser/build-shared.patch
new file mode 100644
index 000000000000..5922cdfb5848
--- /dev/null
+++ b/pkgs/development/libraries/http_parser/build-shared.patch
@@ -0,0 +1,30 @@
+diff -Naur http-parser-2.1-orig/http_parser.gyp http-parser-2.1/http_parser.gyp
+--- http-parser-2.1-orig/http_parser.gyp	2013-03-26 18:35:20.000000000 -0400
++++ http-parser-2.1/http_parser.gyp	2013-05-23 16:47:49.280488341 -0400
+@@ -21,7 +21,7 @@
+       },
+       'Release': {
+         'defines': [ 'NDEBUG' ],
+-        'cflags': [ '-Wall', '-Wextra', '-O3' ],
++        'cflags': [ '-Wall', '-Wextra', '-O3', '-fPIC' ],
+         'msvs_settings': {
+           'VCCLCompilerTool': {
+             'RuntimeLibrary': 0, # static release
+@@ -50,7 +50,7 @@
+   'targets': [
+     {
+       'target_name': 'http_parser',
+-      'type': 'static_library',
++      'type': 'shared_library',
+       'include_dirs': [ '.' ],
+       'direct_dependent_settings': {
+         'defines': [ 'HTTP_PARSER_STRICT=0' ],
+@@ -73,7 +73,7 @@
+ 
+     {
+       'target_name': 'http_parser_strict',
+-      'type': 'static_library',
++      'type': 'shared_library',
+       'include_dirs': [ '.' ],
+       'direct_dependent_settings': {
+         'defines': [ 'HTTP_PARSER_STRICT=1' ],
diff --git a/pkgs/development/libraries/http_parser/default.nix b/pkgs/development/libraries/http_parser/default.nix
new file mode 100644
index 000000000000..8106dcff8da2
--- /dev/null
+++ b/pkgs/development/libraries/http_parser/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, gyp, utillinux ? null }:
+
+let
+  version = "2.1";
+in stdenv.mkDerivation {
+  name = "http-parser-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/joyent/http-parser/archive/v${version}.tar.gz";
+    sha256 = "16a2w5z4g2bma25fqcrkpidqzlq8a2jxkk93ajl721q85406j105";
+  };
+
+  patches = [ ./build-shared.patch ];
+
+  configurePhase = "gyp -f make --depth=`pwd` http_parser.gyp";
+
+  buildFlags = [ "BUILDTYPE=Release" ];
+
+  buildInputs = [ gyp utillinux ];
+
+  doCheck = true;
+
+  checkPhase = ''
+    out/Release/test-nonstrict
+    out/Release/test-strict
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+    mv out/Release/lib.target $out/lib
+
+    mkdir -p $out/include
+    mv http_parser.h $out/include
+  '';
+
+  meta = {
+    description = "An HTTP message parser written in C";
+
+    homepage = https://github.com/joyent/http-parser;
+
+    license = stdenv.lib.licenses.mit;
+
+    maintainer = [ stdenv.lib.maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix
index 1634be1363ae..b325c2a107de 100644
--- a/pkgs/development/libraries/v8/default.nix
+++ b/pkgs/development/libraries/v8/default.nix
@@ -5,18 +5,22 @@ assert readline != null;
 let
   system = stdenv.system;
   arch = if system == "i686-linux" then "ia32" else if system == "x86_64-linux" || system == "x86_64-darwin" then "x64" else "";
-  version = "3.11.10.22";
+  version = "3.14.5.9";
 in
 
 assert arch != "";
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
     name = "v8-${version}";
+
     src = fetchsvn {
       url = "http://v8.googlecode.com/svn/tags/${version}";
-      sha256 = "1bm3hg4pa17xvs8s895bwklxpaihl3f3vzghdg55s1wd0y4dj96j";
+      sha256 = "18qp5qp5xrb6f00w01cklz358yrl54pks963f5rwvwz82d8sfyqr";
+      name = "v8-${version}-src";
     };
 
+    patches = [ ./fix-GetLocalizedMessage-usage.patch ];
+
     configurePhase = ''
       mkdir build/gyp
       ln -sv ${gyp}/bin/gyp build/gyp/gyp
diff --git a/pkgs/development/libraries/v8/fix-GetLocalizedMessage-usage.patch b/pkgs/development/libraries/v8/fix-GetLocalizedMessage-usage.patch
new file mode 100644
index 000000000000..3bc0fff4d509
--- /dev/null
+++ b/pkgs/development/libraries/v8/fix-GetLocalizedMessage-usage.patch
@@ -0,0 +1,27 @@
+From dbe142c4eda0f15fad9fa85743dd11b81292fa8f Mon Sep 17 00:00:00 2001
+From: Timothy J Fontaine <tjfontaine@gmail.com>
+Date: Thu, 23 May 2013 13:57:59 -0700
+Subject: [PATCH] v8: fix GetLocalizedMessage usage
+
+As is the backport of the abort on uncaught exception wouldn't compile
+because we it was passing in `this` when it was unnecessary.
+---
+ deps/v8/src/isolate.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/isolate.cc b/src/isolate.cc
+index 04a438b..5a5293e 100644
+--- a/src/isolate.cc
++++ b/src/isolate.cc
+@@ -1161,7 +1161,7 @@ void Isolate::DoThrow(Object* exception, MessageLocation* location) {
+           (report_exception || can_be_caught_externally)) {
+         fatal_exception_depth++;
+         fprintf(stderr, "%s\n\nFROM\n",
+-          *MessageHandler::GetLocalizedMessage(this, message_obj));
++          *MessageHandler::GetLocalizedMessage(message_obj));
+         PrintCurrentStackTrace(stderr);
+         OS::Abort();
+       }
+-- 
+1.8.1.6
+
diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix
index f9c3d9d27d3e..f3025c97f167 100644
--- a/pkgs/development/web/nodejs/default.nix
+++ b/pkgs/development/web/nodejs/default.nix
@@ -1,54 +1,45 @@
-{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux }:
+{ stdenv, fetchurl, openssl, python, zlib, v8, utillinux, http_parser, c-ares }:
 
-stdenv.mkDerivation rec {
-  version = "0.8.23";
+let
+  version = "0.10.8";
+
+  # !!! Should we also do shared libuv?
+  deps = {
+    inherit v8 openssl zlib;
+    cares = c-ares;
+    http-parser = http_parser;
+  };
+
+  sharedConfigureFlags = name: [
+    "--shared-${name}"
+    "--shared-${name}-includes=${builtins.getAttr name deps}/include"
+    "--shared-${name}-libpath=${builtins.getAttr name deps}/lib"
+  ];
+
+  inherit (stdenv.lib) concatMap optional maintainers licenses platforms;
+in stdenv.mkDerivation {
   name = "nodejs-${version}";
 
   src = fetchurl {
     url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
-    sha256 = "17gdvv0q95v5dn9mbwrm3pxcchfgmlwa7pamwsam9hpdi9ik491q";
+    sha256 = "0m43y7ipd6d89dl97nvrwkx1zss3fdb9835509dyziycr1kggxpd";
   };
 
-  configureFlags = [
-    "--openssl-includes=${openssl}/include"
-    "--openssl-libpath=${openssl}/lib"
-  ]
-  ++ (if !stdenv.isDarwin then [ # Shared V8 is broken on Mac OS X. Who can fix V8 on Darwin makes me very happy, but I gave up studying python-gyp.
-    "--shared-v8"
-    "--shared-v8-includes=${v8}/includes"
-    "--shared-v8-libpath=${v8}/lib"
-  ] else []);
-
-  #patches = stdenv.lib.optional stdenv.isDarwin ./no-arch-flag.patch;
-
-  # Expose the host compiler on darwin, which is the only compiler capable of building it
-  preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
-    export OLDPATH=$PATH
-    export PATH=/usr/bin:$PATH
-  '';
+  configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps);
 
   prePatch = ''
-    sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure
+    sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i configure
   '';
 
-  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
-    export PATH=$OLDPATH
-  '' + ''
-    sed -e 's|^#!/usr/bin/env node$|#!'$out'/bin/node|' -i $out/lib/node_modules/npm/bin/npm-cli.js
-  '' /*+ stdenv.lib.optionalString stdenv.isDarwin ''
-    install_name_tool -change libv8.dylib ${v8}/lib/libv8.dylib $out/bin/node
-  ''*/;
-
-  buildInputs = [ python openssl zlib ]
-    ++ stdenv.lib.optional stdenv.isLinux utillinux
-    ++ stdenv.lib.optional (!stdenv.isDarwin) v8;
+  buildInputs = [ python ]
+    ++ optional stdenv.isLinux utillinux;
   setupHook = ./setup-hook.sh;
 
-  meta = with stdenv.lib; {
+  meta = {
     description = "Event-driven I/O framework for the V8 JavaScript engine";
     homepage = http://nodejs.org;
     license = licenses.mit;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = [ maintainers.goibhniu maintainers.shlevy ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/web/nodejs/no-arch-flag.patch b/pkgs/development/web/nodejs/no-arch-flag.patch
deleted file mode 100644
index bbe96c0c5527..000000000000
--- a/pkgs/development/web/nodejs/no-arch-flag.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur node-v0.6.10-orig/wscript node-v0.6.10/wscript
---- node-v0.6.10-orig/wscript	2012-02-02 19:56:42.000000000 -0500
-+++ node-v0.6.10/wscript	2012-02-25 14:18:50.000000000 -0500
-@@ -443,17 +443,6 @@
-   if sys.platform.startswith("darwin"):
-     # used by platform_darwin_*.cc
-     conf.env.append_value('LINKFLAGS', ['-framework','Carbon'])
--    # cross compile for architecture specified by DEST_CPU
--    if 'DEST_CPU' in conf.env:
--      arch = conf.env['DEST_CPU']
--      # map supported_archs to GCC names:
--      arch_mappings = {'ia32': 'i386', 'x64': 'x86_64'}
--      if arch in arch_mappings:
--        arch = arch_mappings[arch]
--      flags = ['-arch', arch]
--      conf.env.append_value('CCFLAGS', flags)
--      conf.env.append_value('CXXFLAGS', flags)
--      conf.env.append_value('LINKFLAGS', flags)
-   if 'DEST_CPU' in conf.env:
-     arch = conf.env['DEST_CPU']
-     # TODO: -m32 is only available on 64 bit machines, so check host type
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 66139e41681a..37631ac6708a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3558,6 +3558,8 @@ let
 
   bwidget = callPackage ../development/libraries/bwidget { };
 
+  c-ares = callPackage ../development/libraries/c-ares { };
+
   caelum = callPackage ../development/libraries/caelum { };
 
   scmccid = callPackage ../development/libraries/scmccid { };
@@ -4081,6 +4083,8 @@ let
 
   hsqldb = callPackage ../development/libraries/java/hsqldb { };
 
+  http_parser = callPackage ../development/libraries/http_parser { inherit (pythonPackages) gyp; };
+
   hunspell = callPackage ../development/libraries/hunspell { };
 
   hwloc = callPackage ../development/libraries/hwloc {
diff --git a/pkgs/top-level/node-packages-generated.nix b/pkgs/top-level/node-packages-generated.nix
new file mode 100644
index 000000000000..b283aca4407e
--- /dev/null
+++ b/pkgs/top-level/node-packages-generated.nix
@@ -0,0 +1,1894 @@
+[
+  {
+    baseName = "abbrev";
+    version = "1.0.4";
+    fullName = "abbrev-1";
+    hash = "8dc0f480571a4a19e74f1abd4f31f6a70f94953d1ccafa16ed1a544a19a6f3a8";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "amdefine";
+    version = "0.0.5";
+    fullName = "amdefine-*";
+    hash = "7d7a691c9742d4c9aaa8036b823823e45a676dec6897f2e072b90c7d37722fc1";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "amdefine";
+    version = "0.0.5";
+    fullName = "amdefine->=0.0.4";
+    hash = "7d7a691c9742d4c9aaa8036b823823e45a676dec6897f2e072b90c7d37722fc1";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "ansi";
+    version = "0.1.2";
+    fullName = "ansi-~0.1.2";
+    hash = "6f2288b1db642eb822578f4ee70bf26bf97173cc7d3f10f496070fb96250006b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "asn1";
+    version = "0.1.11";
+    fullName = "asn1-0.1.11";
+    hash = "7206eadc8a9344e484bcce979e22a12c9fa64c1395aa0544b8b767808b268f43";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "assert";
+    version = "0.4.9";
+    fullName = "assert-*";
+    hash = "976a12385f7286d123734fabc7355bbeecd2532daccfada02909818b905abeeb";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "util"; range = ">= 0.4.9"; }
+    ];
+  }
+  {
+    baseName = "assert-plus";
+    version = "0.1.2";
+    fullName = "assert-plus-0.1.2";
+    hash = "bd62e853460024d1e35d3f76065f4c856a271e55ef1ce684f3033314b7377c61";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "async";
+    version = "0.2.8";
+    fullName = "async-*";
+    hash = "45d7c5ef1b87dc183b9265b882ae3fb2c20608832adc3234b766717016be2346";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "async";
+    version = "0.2.8";
+    fullName = "async-~0.2.7";
+    hash = "45d7c5ef1b87dc183b9265b882ae3fb2c20608832adc3234b766717016be2346";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "aws-sdk";
+    version = "1.1.0";
+    fullName = "aws-sdk-*";
+    hash = "124577c90a78db03356b9e13e704f55b774ac165ba67d539a3d2170ae02fb32d";
+    patchLatest = true;
+    topLevel = true;
+    dependencies = [
+      { name = "xml2js"; range = "0.2.4"; }
+      { name = "xmlbuilder"; range = "*"; }
+    ];
+  }
+  {
+    baseName = "aws-sdk";
+    version = "0.9.7-pre.8";
+    fullName = "aws-sdk-0.9.7-pre.8";
+    hash = "d3854275981fff76153f79c62745d8d6c59018861729766908c920fff95ea422";
+    patchLatest = true;
+    topLevel = false;
+    dependencies = [
+      { name = "xml2js"; range = "0.2.4"; }
+      { name = "xmlbuilder"; range = "*"; }
+    ];
+  }
+  {
+    baseName = "aws-sign";
+    version = "0.3.0";
+    fullName = "aws-sign-~0.3.0";
+    hash = "5acca27ed2b1b9f081e4dd230e03808b6a038f8a4afa698db985320efe6dda5e";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "backbone";
+    version = "1.0.0";
+    fullName = "backbone-*";
+    hash = "6c66edc5134bb531b33a7f140c75c4a65cdc21711eed64c29300a84cba84f3a7";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "underscore"; range = ">=1.4.3"; }
+    ];
+  }
+  {
+    baseName = "backoff";
+    version = "2.1.0";
+    fullName = "backoff-2.1.0";
+    hash = "d1f5bf32f2f5954f6259582ead30fc8a769db35bac9900c94593b77f915cee0d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "block-stream";
+    version = "0.0.6";
+    fullName = "block-stream-*";
+    hash = "2fc365b42b8601c8ee150d453f6cc762a01054b7fb28bdfcfcbce7c97e93601b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "inherits"; range = "~1.0.0"; }
+    ];
+  }
+  {
+    baseName = "boom";
+    version = "0.4.2";
+    fullName = "boom-0.4.x";
+    hash = "294e022990269e7fa1e3015862d2d24847cc83c3e68d214dad5a2d0d3826a08f";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "hoek"; range = "0.9.x"; }
+    ];
+  }
+  {
+    baseName = "browserchannel";
+    version = "1.0.4";
+    fullName = "browserchannel-*";
+    hash = "516add6af10f887500c5eaae7347ce92c0101a6bea1a67d5221a674d07bc7999";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "hat"; range = "*"; }
+      { name = "connect"; range = "~2"; }
+      { name = "request"; range = "~2"; }
+    ];
+  }
+  {
+    baseName = "buffer-crc32";
+    version = "0.2.1";
+    fullName = "buffer-crc32-0.2.1";
+    hash = "b6ea96d57411e37c15e18fb8ca600656399912ce16355f9af3c662f765507f01";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "buffertools";
+    version = "1.1.1";
+    fullName = "buffertools-*";
+    hash = "f5962aec81246077a46ee075072d40fa533c31ada7a0ec18e1ff3600af2d8f3f";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "bunyan";
+    version = "0.21.1";
+    fullName = "bunyan-0.21.1";
+    hash = "95dca2405dcbe5b700e15d7c89b2a64fb21a097fb7ada5c274979f2057adcbef";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "mv"; range = "0.0.5"; }
+      { name = "dtrace-provider"; range = "0.2.8"; }
+    ];
+  }
+  {
+    baseName = "bytes";
+    version = "0.2.0";
+    fullName = "bytes-0.2.0";
+    hash = "e70bd4dccc886a5cf1c925092b4acd7a262a9da3e1b51ccde10a3fcd0a328465";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "clone";
+    version = "0.1.5";
+    fullName = "clone-0.1.5";
+    hash = "9fd586470ccc3fa585dcccad730b5e6fa9c471b49acdb38d724c110777a287d9";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "clone";
+    version = "0.1.6";
+    fullName = "clone-0.1.6";
+    hash = "9849c9faa2549d982106d3b43862dc4ceb308563badcd3ff59e30655d54e897a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "coffee-script";
+    version = "1.6.2";
+    fullName = "coffee-script-*";
+    hash = "92785ad77e5d689fc7bfc62f3b519e65b77509457dda7a332ee1efd6cf9f08d6";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "combined-stream";
+    version = "0.0.4";
+    fullName = "combined-stream-~0.0.4";
+    hash = "2502ed7a4406db1a65b09cae3106221051d6af20d3f1d7e8cc38cfc72a36432c";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "delayed-stream"; range = "0.0.5"; }
+    ];
+  }
+  {
+    baseName = "commander";
+    version = "0.5.1";
+    fullName = "commander-0.5.1";
+    hash = "91042851d0731b28a5e7c342e5cbce7723a7243d31ae378fa86c45ca9493a924";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "commander";
+    version = "0.6.1";
+    fullName = "commander-0.6.1";
+    hash = "7b7fdd1bc4d16f6776169a64f133d629efe2e3a7cd338b1d0884ee909abbd729";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "connect";
+    version = "2.7.10";
+    fullName = "connect-2.7.10";
+    hash = "b1d9cf6b2932578618537a95471f9c0ae451e2ed8033647e420b4c67b1d28b3d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "qs"; range = "0.6.5"; }
+      { name = "formidable"; range = "1.0.14"; }
+      { name = "cookie-signature"; range = "1.0.1"; }
+      { name = "buffer-crc32"; range = "0.2.1"; }
+      { name = "cookie"; range = "0.0.5"; }
+      { name = "send"; range = "0.1.0"; }
+      { name = "bytes"; range = "0.2.0"; }
+      { name = "fresh"; range = "0.1.0"; }
+      { name = "pause"; range = "0.0.1"; }
+      { name = "debug"; range = "*"; }
+    ];
+  }
+  {
+    baseName = "connect";
+    version = "2.7.10";
+    fullName = "connect-~2";
+    hash = "b1d9cf6b2932578618537a95471f9c0ae451e2ed8033647e420b4c67b1d28b3d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "qs"; range = "0.6.5"; }
+      { name = "formidable"; range = "1.0.14"; }
+      { name = "cookie-signature"; range = "1.0.1"; }
+      { name = "buffer-crc32"; range = "0.2.1"; }
+      { name = "cookie"; range = "0.0.5"; }
+      { name = "send"; range = "0.1.0"; }
+      { name = "bytes"; range = "0.2.0"; }
+      { name = "fresh"; range = "0.1.0"; }
+      { name = "pause"; range = "0.0.1"; }
+      { name = "debug"; range = "*"; }
+    ];
+  }
+  {
+    baseName = "cookie";
+    version = "0.0.5";
+    fullName = "cookie-0.0.5";
+    hash = "17938b21dcd85f09994b85484abb5aeddc4e92c61d1b599b764bbaaa7ad6adee";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "cookie";
+    version = "0.1.0";
+    fullName = "cookie-0.1.0";
+    hash = "aff5d22a617d744319cc70e42fc4ab11bcbcf924244af565495fa799c0639650";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "cookie-jar";
+    version = "0.3.0";
+    fullName = "cookie-jar-~0.3.0";
+    hash = "c7bac7739b9ceb194f431a4a9ac1a0ba4ffd4a60492c61dd1925dbcdb9030746";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "cookie-signature";
+    version = "1.0.1";
+    fullName = "cookie-signature-1.0.1";
+    hash = "e2ea4f290fdcfe82d8fb76991fee4106d4ae1f5d5a2f8b8d91442e047c538c8e";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "cryptiles";
+    version = "0.2.1";
+    fullName = "cryptiles-0.2.x";
+    hash = "a7ad8087bf6abbbfa0ae159756c04326a490f373212f6f2fd0f3a1f63f475892";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "boom"; range = "0.4.x"; }
+    ];
+  }
+  {
+    baseName = "ctype";
+    version = "0.5.0";
+    fullName = "ctype-0.5.0";
+    hash = "50157e6c5e44d1c833bfc239a7a337ee08fd6f3c5a15f7ef5cee5571a86b0378";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "ctype";
+    version = "0.5.2";
+    fullName = "ctype-0.5.2";
+    hash = "4a7224a74f19dc6a1206fa1c04ae1a4ab795cd4ba842466e2f511fa714f82c60";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "debug";
+    version = "0.7.2";
+    fullName = "debug-*";
+    hash = "f9142856b1c2652a11e50f2aca068edbad7598f50d9e6d003b8ee85b2a333d63";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "debug";
+    version = "0.7.2";
+    fullName = "debug-~0.7.0";
+    hash = "f9142856b1c2652a11e50f2aca068edbad7598f50d9e6d003b8ee85b2a333d63";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "deep-equal";
+    version = "0.0.0";
+    fullName = "deep-equal-0.0.0";
+    hash = "6a5666d4bfa5d2786a9f86ede2eaa8252f783edb9d78e69cba645f7cb6e153b8";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "delayed-stream";
+    version = "0.0.5";
+    fullName = "delayed-stream-0.0.5";
+    hash = "f40e440dac0f853577d5225d7bd4b2026ea1447a724f4ba1096e29983ee595dd";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "diff";
+    version = "1.0.2";
+    fullName = "diff-1.0.2";
+    hash = "5de1d8c3f2bfc447a7e664cadd4aca2ef4952a43256310cc51a36b30b5be3045";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "dtrace-provider";
+    version = "0.2.8";
+    fullName = "dtrace-provider-0.2.8";
+    hash = "200941239983fa0953415cf28e96d9347c50218d31280604cfc9252e448e714c";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "escape-html";
+    version = "0.0.1";
+    fullName = "escape-html-*";
+    hash = "03c24a492f80659c25f788809ae64277408a4c12594cff62f89db4b3259c6b58";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "events.node";
+    version = "0.4.9";
+    fullName = "events.node->= 0.4.0";
+    hash = "aedaf9faa7a33f16e2bf1754ed988a836570d00064748a8c1c8ee48805b9f0b6";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "express";
+    version = "3.2.5";
+    fullName = "express-*";
+    hash = "f09dce2d0610795af88fe903242557526be269f27912b63309e3b3329218e20b";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "connect"; range = "2.7.10"; }
+      { name = "commander"; range = "0.6.1"; }
+      { name = "range-parser"; range = "0.0.4"; }
+      { name = "mkdirp"; range = "0.3.4"; }
+      { name = "cookie"; range = "0.1.0"; }
+      { name = "buffer-crc32"; range = "0.2.1"; }
+      { name = "fresh"; range = "0.1.0"; }
+      { name = "methods"; range = "0.0.1"; }
+      { name = "send"; range = "0.1.0"; }
+      { name = "cookie-signature"; range = "1.0.1"; }
+      { name = "debug"; range = "*"; }
+    ];
+  }
+  {
+    baseName = "extend";
+    version = "1.1.3";
+    fullName = "extend-*";
+    hash = "0b27709829110f2e84926ebe3494b82df6e79ad49a618ad3444e4edf62b57a57";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "extsprintf";
+    version = "1.0.0";
+    fullName = "extsprintf-1.0.0";
+    hash = "9cae7f1f192e5f35746e13047ab4c13e8b5b686469feeaec301ba7d370df5670";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "extsprintf";
+    version = "1.0.2";
+    fullName = "extsprintf-1.0.2";
+    hash = "ea000cf3e51cba7fac7fb1e425ddb79bf46f3ce40955955bf35fd487184a04ab";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "faye-websocket";
+    version = "0.6.0";
+    fullName = "faye-websocket-*";
+    hash = "192f09ecd1c52fc357d2ad3ae3121be35556b7b09e30ce74117d80b9dbae3f60";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "websocket-driver"; range = ">=0.2.0"; }
+    ];
+  }
+  {
+    baseName = "faye-websocket";
+    version = "0.4.4";
+    fullName = "faye-websocket-0.4.4";
+    hash = "c682f6269bcaba0667ef4ae0ecb0b662e35ea6338b075e25ebce9e13019bc3a2";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "forever-agent";
+    version = "0.5.0";
+    fullName = "forever-agent-~0.5.0";
+    hash = "0a7eda1f87f3cfa7fad8ba655a642992033b38a1929becfa0bfcab8241b7d78b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "form-data";
+    version = "0.0.8";
+    fullName = "form-data-0.0.8";
+    hash = "cf7d5669259ec4c5474b9c2100127ba065a4757ff33b878a1d99509b8e448220";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "combined-stream"; range = "~0.0.4"; }
+      { name = "mime"; range = "~1.2.2"; }
+      { name = "async"; range = "~0.2.7"; }
+    ];
+  }
+  {
+    baseName = "form-data";
+    version = "0.0.10";
+    fullName = "form-data-~0.0.3";
+    hash = "d49669b81c27dd6c7e359ee9892880c6741dae6c325b617ab3eb5a78bf103822";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "combined-stream"; range = "~0.0.4"; }
+      { name = "mime"; range = "~1.2.2"; }
+      { name = "async"; range = "~0.2.7"; }
+    ];
+  }
+  {
+    baseName = "formidable";
+    version = "1.0.13";
+    fullName = "formidable-1.0.13";
+    hash = "c3c7c6ecdd4b1ad9ec9b1c273d8dd1db2bc12f9a699c233d3885fcded58ceec6";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "formidable";
+    version = "1.0.14";
+    fullName = "formidable-1.0.14";
+    hash = "b36e58f659fd0d7c734b4ab2c611fa6e40bd988c2237a29d25025460f18f7ea1";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "fresh";
+    version = "0.1.0";
+    fullName = "fresh-0.1.0";
+    hash = "c402fbd25e26c0167bf288e1ba791716808bfaa5de32b76ae68e8e8a3d7e2b33";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "fstream";
+    version = "0.1.22";
+    fullName = "fstream-0";
+    hash = "2ace3993d34cbf5e97bcb9c7eec3f011fa2041ce66cb688e39e747285084496a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "rimraf"; range = "2"; }
+      { name = "mkdirp"; range = "0.3"; }
+      { name = "graceful-fs"; range = "~1.2.0"; }
+      { name = "inherits"; range = "~1.0.0"; }
+    ];
+  }
+  {
+    baseName = "fstream";
+    version = "0.1.22";
+    fullName = "fstream-~0.1.8";
+    hash = "2ace3993d34cbf5e97bcb9c7eec3f011fa2041ce66cb688e39e747285084496a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "rimraf"; range = "2"; }
+      { name = "mkdirp"; range = "0.3"; }
+      { name = "graceful-fs"; range = "~1.2.0"; }
+      { name = "inherits"; range = "~1.0.0"; }
+    ];
+  }
+  {
+    baseName = "glob";
+    version = "3.2.1";
+    fullName = "glob-3";
+    hash = "a457c2115213ce2cb59582ddc3a25eb3ae7490af687e412111c0032f72966f51";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "minimatch"; range = "~0.2.11"; }
+      { name = "graceful-fs"; range = "~1.2.0"; }
+      { name = "inherits"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "glob";
+    version = "3.2.1";
+    fullName = "glob-3.2.1";
+    hash = "a457c2115213ce2cb59582ddc3a25eb3ae7490af687e412111c0032f72966f51";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "minimatch"; range = "~0.2.11"; }
+      { name = "graceful-fs"; range = "~1.2.0"; }
+      { name = "inherits"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "graceful-fs";
+    version = "1.2.1";
+    fullName = "graceful-fs-1";
+    hash = "eeef3c36c6a6476059a7e7a32d0b87e62133b11392c540f5c8c68c87f65c7c59";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "graceful-fs";
+    version = "1.2.1";
+    fullName = "graceful-fs-~1";
+    hash = "eeef3c36c6a6476059a7e7a32d0b87e62133b11392c540f5c8c68c87f65c7c59";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "graceful-fs";
+    version = "1.2.1";
+    fullName = "graceful-fs-~1.2.0";
+    hash = "eeef3c36c6a6476059a7e7a32d0b87e62133b11392c540f5c8c68c87f65c7c59";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "growl";
+    version = "1.7.0";
+    fullName = "growl-1.7.x";
+    hash = "52a6e9edae2fd5a66ddb87c52a398a17ee697eb0e8e1480e9506a6dcdbf3ffcf";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "hat";
+    version = "0.0.3";
+    fullName = "hat-*";
+    hash = "7bf52b3b020ca333a42eb67411090912b21abb6ac746d587022a0955b16e5f5c";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "hawk";
+    version = "0.13.1";
+    fullName = "hawk-~0.13.0";
+    hash = "659e5ada1e9dc44a634e07899937d5eaeaa1c06658f181ca187f7f6faa0c592a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "hoek"; range = "0.8.x"; }
+      { name = "boom"; range = "0.4.x"; }
+      { name = "cryptiles"; range = "0.2.x"; }
+      { name = "sntp"; range = "0.2.x"; }
+    ];
+  }
+  {
+    baseName = "hoek";
+    version = "0.8.5";
+    fullName = "hoek-0.8.x";
+    hash = "637e524cd4b48b66db137d6fa93cbe254f112ce638ea9fd399bab73591ede965";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "hoek";
+    version = "0.9.1";
+    fullName = "hoek-0.9.x";
+    hash = "34480468d2e85781ecdd7134523b4d6fea978d333edd2bcb828edd33bbbe8a3f";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "htdigest";
+    version = "1.0.7";
+    fullName = "htdigest-1.0.7";
+    hash = "10fb047addf1c4f1089a26389066d5ff8f5ffa1ccce272a701bb4c2a30d90c58";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "commander"; range = "0.5.1"; }
+    ];
+  }
+  {
+    baseName = "htpasswd";
+    version = "1.1.0";
+    fullName = "htpasswd-1.1.0";
+    hash = "cee9c0a525e717e3565ba6ffea8a64c480bc8a9e7800cb9bfc385d1a8e713ec9";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "commander"; range = "0.5.1"; }
+    ];
+  }
+  {
+    baseName = "http-auth";
+    version = "1.2.7";
+    fullName = "http-auth-1.2.7";
+    hash = "874dbb5907d03602f31eae959a0927a3112da8e868231d9a2119bb50d2fe63d2";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "node-uuid"; range = "1.2.0"; }
+      { name = "htpasswd"; range = "1.1.0"; }
+      { name = "htdigest"; range = "1.0.7"; }
+    ];
+  }
+  {
+    baseName = "http-signature";
+    version = "0.9.11";
+    fullName = "http-signature-0.9.11";
+    hash = "44b89f3c1917bf02723a5720f08fbe47448e0370a5d3498d1be860eaf28beb3b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "assert-plus"; range = "0.1.2"; }
+      { name = "asn1"; range = "0.1.11"; }
+      { name = "ctype"; range = "0.5.2"; }
+    ];
+  }
+  {
+    baseName = "http-signature";
+    version = "0.9.11";
+    fullName = "http-signature-~0.9.11";
+    hash = "44b89f3c1917bf02723a5720f08fbe47448e0370a5d3498d1be860eaf28beb3b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "assert-plus"; range = "0.1.2"; }
+      { name = "asn1"; range = "0.1.11"; }
+      { name = "ctype"; range = "0.5.2"; }
+    ];
+  }
+  {
+    baseName = "inherits";
+    version = "1.0.0";
+    fullName = "inherits-1";
+    hash = "2be196fa6bc6a0c65fecd737af457589ef88b22a95d5dc31aab01d92ace48186";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "inherits";
+    version = "1.0.0";
+    fullName = "inherits-1.x";
+    hash = "2be196fa6bc6a0c65fecd737af457589ef88b22a95d5dc31aab01d92ace48186";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "inherits";
+    version = "1.0.0";
+    fullName = "inherits-~1.0.0";
+    hash = "2be196fa6bc6a0c65fecd737af457589ef88b22a95d5dc31aab01d92ace48186";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "jade";
+    version = "0.26.3";
+    fullName = "jade-0.26.3";
+    hash = "ea314287eb192b6987f7bb9d7010bf2c35ff6288f125fa00796ad93bdba14d0b";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "commander"; range = "0.6.1"; }
+      { name = "mkdirp"; range = "0.3.0"; }
+    ];
+  }
+  {
+    baseName = "jayschema";
+    version = "0.1.5";
+    fullName = "jayschema-*";
+    hash = "66e17d82f0b24d882321d42da2f094ab2b14df8a3f558b88867800e672f5c80d";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "json-schema";
+    version = "0.2.2";
+    fullName = "json-schema-0.2.2";
+    hash = "41b873a8fb542caf337ec17ad5593761e8db5ce8e33f4074b733b34ec656f0e8";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "json-stringify-safe";
+    version = "4.0.0";
+    fullName = "json-stringify-safe-~4.0.0";
+    hash = "2461befc8dab37d1d83927ab4bf4aa68b162a35b5a85c1a90c70f86500091b60";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "jsontool";
+    version = "5.1.3";
+    fullName = "jsontool-*";
+    hash = "097889f294920e43c2a8f8d9156971860c67c61ecfe5a1e411c4d641e521985c";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "jsprim";
+    version = "0.3.0";
+    fullName = "jsprim-0.3.0";
+    hash = "0fd12872374ee55cc0c005a1590ef65def0e96de04734a753e0d1480c3ffc4bd";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "extsprintf"; range = "1.0.0"; }
+      { name = "json-schema"; range = "0.2.2"; }
+      { name = "verror"; range = "1.3.3"; }
+    ];
+  }
+  {
+    baseName = "keep-alive-agent";
+    version = "0.0.1";
+    fullName = "keep-alive-agent-0.0.1";
+    hash = "481f10eeb5b9759ad28d9556f30c1747a5e71fbbad55fb130b96eacc7ac1c7a1";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "knox";
+    version = "0.8.2";
+    fullName = "knox-*";
+    hash = "e4842cb834f27dc859fc6ab2389f7d0702f6cc6ecff469b89729dd33c33c0afd";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "mime"; range = "*"; }
+      { name = "xml2js"; range = "0.2.x"; }
+      { name = "debug"; range = "~0.7.0"; }
+      { name = "stream-counter"; range = "~0.1.0"; }
+    ];
+  }
+  {
+    baseName = "lru-cache";
+    version = "2.3.0";
+    fullName = "lru-cache-2";
+    hash = "fbb1a14e0314095b7999a3a7489c92983f3d95b188857af697487ac8a778e942";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "lru-cache";
+    version = "2.2.0";
+    fullName = "lru-cache-2.2.0";
+    hash = "bdfb66f74cc4097f3bfd6062b2edbb7790d709f414c7d0f3419241840b1bffed";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "lru-cache";
+    version = "2.3.0";
+    fullName = "lru-cache-2.3.0";
+    hash = "fbb1a14e0314095b7999a3a7489c92983f3d95b188857af697487ac8a778e942";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "methods";
+    version = "0.0.1";
+    fullName = "methods-0.0.1";
+    hash = "2f7e32954dff5991dd8220e8f5dcdd32aeec5ec56ce9f7235872444af51b3adb";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.9";
+    fullName = "mime-*";
+    hash = "60120b9859a92a94480a76327a9406b4a72a34f2317bc7fa33dcb99b9c72678a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.6";
+    fullName = "mime-1.2.6";
+    hash = "7460134d6b4686d64fd1e7b878d34e2bdd258ad29b6665cf62e6d92659e81591";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.9";
+    fullName = "mime-1.2.9";
+    hash = "60120b9859a92a94480a76327a9406b4a72a34f2317bc7fa33dcb99b9c72678a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.9";
+    fullName = "mime-~1.2.2";
+    hash = "60120b9859a92a94480a76327a9406b4a72a34f2317bc7fa33dcb99b9c72678a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.9";
+    fullName = "mime-~1.2.7";
+    hash = "60120b9859a92a94480a76327a9406b4a72a34f2317bc7fa33dcb99b9c72678a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mime";
+    version = "1.2.9";
+    fullName = "mime-~1.2.9";
+    hash = "60120b9859a92a94480a76327a9406b4a72a34f2317bc7fa33dcb99b9c72678a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "minimatch";
+    version = "0.2.12";
+    fullName = "minimatch-0";
+    hash = "205cff8b4ba926e86ff0e6f7f566553906113892028083ea221989a42500c246";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "lru-cache"; range = "2"; }
+      { name = "sigmund"; range = "~1.0.0"; }
+    ];
+  }
+  {
+    baseName = "minimatch";
+    version = "0.2.12";
+    fullName = "minimatch-~0.2.11";
+    hash = "205cff8b4ba926e86ff0e6f7f566553906113892028083ea221989a42500c246";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "lru-cache"; range = "2"; }
+      { name = "sigmund"; range = "~1.0.0"; }
+    ];
+  }
+  {
+    baseName = "mkdirp";
+    version = "0.3.5";
+    fullName = "mkdirp-0";
+    hash = "8ae9c5107acb41110106224f5e7be2b50b00d15d062ea7941301c111b863fd26";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mkdirp";
+    version = "0.3.5";
+    fullName = "mkdirp-0.3";
+    hash = "8ae9c5107acb41110106224f5e7be2b50b00d15d062ea7941301c111b863fd26";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mkdirp";
+    version = "0.3.0";
+    fullName = "mkdirp-0.3.0";
+    hash = "708366e3a89c976ae8418056f2c5f784147b9310e8093f9bb7246d2f55f7c27d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mkdirp";
+    version = "0.3.3";
+    fullName = "mkdirp-0.3.3";
+    hash = "b67a12855b7522c3cfb767e36b95f4eaaf9d423c5bd01f7f0449172259957df9";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mkdirp";
+    version = "0.3.4";
+    fullName = "mkdirp-0.3.4";
+    hash = "f87444f2376c56bf47846f3b885aae926c5d9504328923b166794b78c0e08425";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mocha";
+    version = "1.10.0";
+    fullName = "mocha-*";
+    hash = "d19c4fdcddb6498d0f303c3e5fd85401888a269f36ccdfcc92763dcc9e80bf97";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "commander"; range = "0.6.1"; }
+      { name = "growl"; range = "1.7.x"; }
+      { name = "jade"; range = "0.26.3"; }
+      { name = "diff"; range = "1.0.2"; }
+      { name = "debug"; range = "*"; }
+      { name = "mkdirp"; range = "0.3.3"; }
+      { name = "ms"; range = "0.3.0"; }
+      { name = "glob"; range = "3.2.1"; }
+    ];
+  }
+  {
+    baseName = "ms";
+    version = "0.3.0";
+    fullName = "ms-0.3.0";
+    hash = "f72eab0186a6dabbbea7118f83d4e2c01119e427f6671096a0c7ed522abe07f2";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "mv";
+    version = "0.0.5";
+    fullName = "mv-0.0.5";
+    hash = "6ddbf4770ffd02170a8fc492cee418ad92ce2f1e2eb4c549febac1f60e6533b9";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "negotiator";
+    version = "0.2.5";
+    fullName = "negotiator-0.2.5";
+    hash = "37f567acba03ef7748802c4f6b41ca7e57a3fb556c4435cda515028c73d76542";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "nijs";
+    version = "0.0.5";
+    fullName = "nijs-*";
+    hash = "c5e9f93f240757e1ab2d0ad341384db6e0b73ab2616ae9832d1ed772eaebd408";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "optparse"; range = ">= 1.0.3"; }
+    ];
+  }
+  {
+    baseName = "node-expat";
+    version = "2.0.0";
+    fullName = "node-expat-*";
+    hash = "9d5b7efd708fc546f5c17e98f4ee322abafaaa02fbb6c281f651d10d9523c83f";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "node-gyp";
+    version = "0.9.6";
+    fullName = "node-gyp-*";
+    hash = "937090ffd7de10079861ef562d0282dd4100873aa7bba7de9cd6ea7982b41b0b";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "glob"; range = "3"; }
+      { name = "graceful-fs"; range = "1"; }
+      { name = "fstream"; range = "0"; }
+      { name = "minimatch"; range = "0"; }
+      { name = "mkdirp"; range = "0"; }
+      { name = "nopt"; range = "2"; }
+      { name = "npmlog"; range = "0"; }
+      { name = "osenv"; range = "0"; }
+      { name = "request"; range = ">= 2 && <= 2.14"; }
+      { name = "rimraf"; range = "2"; }
+      { name = "semver"; range = "1"; }
+      { name = "tar"; range = "0"; }
+      { name = "which"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "node-uuid";
+    version = "1.4.0";
+    fullName = "node-uuid-*";
+    hash = "87a1944b5334351ddd1d3e44d2e423ebfc027e858111efb72324054092cfd1bc";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "node-uuid";
+    version = "1.2.0";
+    fullName = "node-uuid-1.2.0";
+    hash = "96d3ce178ea0825d27a855630de74243a577dc988512512eea572829b208a3d2";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "node-uuid";
+    version = "1.3.3";
+    fullName = "node-uuid-1.3.3";
+    hash = "a3fbccc904944a9c8eadc59e55aaac908cc458569f539b50077d9672a84587a8";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "node-uuid";
+    version = "1.4.0";
+    fullName = "node-uuid-1.4.0";
+    hash = "87a1944b5334351ddd1d3e44d2e423ebfc027e858111efb72324054092cfd1bc";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "node-uuid";
+    version = "1.4.0";
+    fullName = "node-uuid-~1.4.0";
+    hash = "87a1944b5334351ddd1d3e44d2e423ebfc027e858111efb72324054092cfd1bc";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "nopt";
+    version = "2.1.1";
+    fullName = "nopt-2";
+    hash = "a7a84f3fe51cb8fb97c678bc73130b53d6782ee90dc0e9b15ae39630ce2fa203";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "abbrev"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "nopt";
+    version = "2.0.0";
+    fullName = "nopt-2.0.0";
+    hash = "112e9bea8b745a2e5a59d239e6f6f02e720e080ab8cdca89b6b8f0143ae718b5";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "abbrev"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "npm2nix";
+    version = "1.0.0";
+    fullName = "npm2nix-*";
+    hash = "c3fa4fd02e6184d60e780e31578a8a8ee190eea28b77d5b006f6ea920324ea54";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "semver"; range = "1"; }
+    ];
+  }
+  {
+    baseName = "npmlog";
+    version = "0.0.2";
+    fullName = "npmlog-0";
+    hash = "ce98d4d3380390c0259695cce407e2e96d2970c5caee1461a62ecbd38e8caed4";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "ansi"; range = "~0.1.2"; }
+    ];
+  }
+  {
+    baseName = "oauth-sign";
+    version = "0.3.0";
+    fullName = "oauth-sign-~0.3.0";
+    hash = "a202acb9ea84ef53e6a82a6ee5113328cd4bfd68d6ba04d15f1da933660b087e";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "once";
+    version = "1.1.1";
+    fullName = "once-1.1.1";
+    hash = "3fdc1a246f2522991fd9a6554a93c012c3192ea99918fdd893a2d4f2d546fe93";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "optimist";
+    version = "0.5.0";
+    fullName = "optimist-*";
+    hash = "b0c4b65a456618f179946e0b0641643b9d70ea5d884afa5bbf94419f740b1ccf";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "wordwrap"; range = "~0.0.2"; }
+    ];
+  }
+  {
+    baseName = "optparse";
+    version = "1.0.4";
+    fullName = "optparse-*";
+    hash = "8413ed6a2318ffecdb428181a6966013d1853ff62644afcbcff682c1efc9367a";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "optparse";
+    version = "1.0.4";
+    fullName = "optparse->= 1.0.3";
+    hash = "8413ed6a2318ffecdb428181a6966013d1853ff62644afcbcff682c1efc9367a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "osenv";
+    version = "0.0.3";
+    fullName = "osenv-0";
+    hash = "aafbb23637b7338c9025f9da336f31f96674d7926c30f209e4d93ce16d5251c4";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "pause";
+    version = "0.0.1";
+    fullName = "pause-0.0.1";
+    hash = "d37b84046db0c28c9768be649e8f02bd991ede34b276b5dba7bade23b523235e";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "posix-getopt";
+    version = "1.0.0";
+    fullName = "posix-getopt-1.0.0";
+    hash = "134cea188854422ab047db9ebfcb7e2610f0a239fe27382b55c10894c4f5ba9d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "qs";
+    version = "0.5.5";
+    fullName = "qs-0.5.5";
+    hash = "8ed820b83bf4aff299422dc406c7a52793e05f510803cc1cc2da7de1528837f1";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "qs";
+    version = "0.6.5";
+    fullName = "qs-0.6.5";
+    hash = "293e5dfd16bfe0aee8b3fe130abb951ac9c8c084d1103f7d81c4e5c312b2940d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "qs";
+    version = "0.6.5";
+    fullName = "qs-~0.6.0";
+    hash = "293e5dfd16bfe0aee8b3fe130abb951ac9c8c084d1103f7d81c4e5c312b2940d";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "range-parser";
+    version = "0.0.4";
+    fullName = "range-parser-0.0.4";
+    hash = "8e1bcce3544330b51644ea0cb4d25f0daa4b43008a75da27e285635f4ac4b1ce";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "rbytes";
+    version = "0.0.2";
+    fullName = "rbytes-*";
+    hash = "0fd4697be996ee12c65f8fb13b2edc7a554d22c31d1a344539bc611ce73b69aa";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "readable-stream";
+    version = "1.0.2";
+    fullName = "readable-stream-~1.0.2";
+    hash = "45a918b25f0799f87d7144dbbb7d2b5974dc079fcb1a2149a305d080f1155754";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "request";
+    version = "2.12.0";
+    fullName = "request->= 2 && <= 2.14";
+    hash = "a26790d2179da11a644d5deaa2ae5d37472bf0e73355fde02ea5923106308997";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "form-data"; range = "~0.0.3"; }
+      { name = "mime"; range = "~1.2.7"; }
+    ];
+  }
+  {
+    baseName = "request";
+    version = "2.21.0";
+    fullName = "request-~2";
+    hash = "fe31c3119bc4423f07aa7c9849cb642d5ad22bdf2a2700eab56fb83fa8ed429c";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "qs"; range = "~0.6.0"; }
+      { name = "json-stringify-safe"; range = "~4.0.0"; }
+      { name = "forever-agent"; range = "~0.5.0"; }
+      { name = "tunnel-agent"; range = "~0.3.0"; }
+      { name = "http-signature"; range = "~0.9.11"; }
+      { name = "hawk"; range = "~0.13.0"; }
+      { name = "aws-sign"; range = "~0.3.0"; }
+      { name = "oauth-sign"; range = "~0.3.0"; }
+      { name = "cookie-jar"; range = "~0.3.0"; }
+      { name = "node-uuid"; range = "~1.4.0"; }
+      { name = "mime"; range = "~1.2.9"; }
+      { name = "form-data"; range = "0.0.8"; }
+    ];
+  }
+  {
+    baseName = "restify";
+    version = "2.4.1";
+    fullName = "restify-2.4.1";
+    hash = "b46ed86ef17f1896a4dd961de8cc8ec96b57b7f44ef7421f3804764289f5b563";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "assert-plus"; range = "0.1.2"; }
+      { name = "backoff"; range = "2.1.0"; }
+      { name = "bunyan"; range = "0.21.1"; }
+      { name = "deep-equal"; range = "0.0.0"; }
+      { name = "formidable"; range = "1.0.13"; }
+      { name = "http-signature"; range = "0.9.11"; }
+      { name = "keep-alive-agent"; range = "0.0.1"; }
+      { name = "lru-cache"; range = "2.3.0"; }
+      { name = "mime"; range = "1.2.9"; }
+      { name = "negotiator"; range = "0.2.5"; }
+      { name = "node-uuid"; range = "1.4.0"; }
+      { name = "once"; range = "1.1.1"; }
+      { name = "qs"; range = "0.5.5"; }
+      { name = "semver"; range = "1.1.4"; }
+      { name = "spdy"; range = "1.7.1"; }
+      { name = "verror"; range = "1.3.6"; }
+      { name = "dtrace-provider"; range = "0.2.8"; }
+    ];
+  }
+  {
+    baseName = "rimraf";
+    version = "2.1.4";
+    fullName = "rimraf-2";
+    hash = "093154365aab3c09aea8e83dda7c5a7fd785c787ebbf1fcdc415cb5f74d1acac";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "graceful-fs"; range = "~1"; }
+    ];
+  }
+  {
+    baseName = "s3http";
+    version = "0.0.1";
+    fullName = "s3http-*";
+    hash = "7140a0ee6df9fb90fd74aa0b68b73f899c6d8e2eaa2de89fde3f634e9bf10dba";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "aws-sdk"; range = "0.9.7-pre.8"; }
+      { name = "commander"; range = "0.5.1"; }
+      { name = "http-auth"; range = "1.2.7"; }
+    ];
+  }
+  {
+    baseName = "sax";
+    version = "0.5.2";
+    fullName = "sax-0.5.2";
+    hash = "6bb7cd44e9dfea598997d4ba9d3279dafe75bed7b45904561ca9eb4d85cfd953";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "sax";
+    version = "0.5.4";
+    fullName = "sax->=0.4.2";
+    hash = "5c4f074b559f56a7170663142e4ccbcf8cbef229ad7eb787b6c6e0b79ddb936a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "semver";
+    version = "1.1.4";
+    fullName = "semver-*";
+    hash = "59c0180521d0d4cee57caa5f6ef190500b04099bfa5786edb3e21e364ae8e989";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "semver";
+    version = "1.1.4";
+    fullName = "semver-1";
+    hash = "59c0180521d0d4cee57caa5f6ef190500b04099bfa5786edb3e21e364ae8e989";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "semver";
+    version = "1.1.4";
+    fullName = "semver-1.1.4";
+    hash = "59c0180521d0d4cee57caa5f6ef190500b04099bfa5786edb3e21e364ae8e989";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "send";
+    version = "0.1.0";
+    fullName = "send-0.1.0";
+    hash = "28b5a6ec41b5072521eb792cc901b92cdbb6b743c578d7008727dbbd3eb717de";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "debug"; range = "*"; }
+      { name = "mime"; range = "1.2.6"; }
+      { name = "fresh"; range = "0.1.0"; }
+      { name = "range-parser"; range = "0.0.4"; }
+    ];
+  }
+  {
+    baseName = "sigmund";
+    version = "1.0.0";
+    fullName = "sigmund-~1.0.0";
+    hash = "ddf823295db284ac4720b9d40f381d7375dc0b05881b98269346b33fe9835e25";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "smartdc";
+    version = "7.0.0-rc2";
+    fullName = "smartdc-*";
+    hash = "239433d13dbbfd6461cf34743d628bdb39d061ca562e15901528acc52dda8d46";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "assert-plus"; range = "0.1.2"; }
+      { name = "lru-cache"; range = "2.2.0"; }
+      { name = "nopt"; range = "2.0.0"; }
+      { name = "restify"; range = "2.4.1"; }
+      { name = "bunyan"; range = "0.21.1"; }
+      { name = "clone"; range = "0.1.6"; }
+      { name = "smartdc-auth"; range = "1.0.0"; }
+    ];
+  }
+  {
+    baseName = "smartdc-auth";
+    version = "1.0.0";
+    fullName = "smartdc-auth-1.0.0";
+    hash = "7611510ac66507398f6e371b25068c7ad193ecd69a3031fdfca0e3c652cfdcbf";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "assert-plus"; range = "0.1.2"; }
+      { name = "clone"; range = "0.1.5"; }
+      { name = "ssh-agent"; range = "0.2.1"; }
+      { name = "once"; range = "1.1.1"; }
+      { name = "vasync"; range = "1.3.3"; }
+    ];
+  }
+  {
+    baseName = "sntp";
+    version = "0.2.4";
+    fullName = "sntp-0.2.x";
+    hash = "1f91a8d60fd48751e4b169885f530012ce2a8223ed29006abcee175f2b10d779";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "hoek"; range = "0.9.x"; }
+    ];
+  }
+  {
+    baseName = "sockjs";
+    version = "0.3.7";
+    fullName = "sockjs-*";
+    hash = "711a6c41e6a7b2a9cd0dc44abc7407f09729d400be450d94887391997b07a1a5";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "node-uuid"; range = "1.3.3"; }
+      { name = "faye-websocket"; range = "0.4.4"; }
+    ];
+  }
+  {
+    baseName = "source-map";
+    version = "0.1.22";
+    fullName = "source-map-*";
+    hash = "6ebe1b2b3c730e5e206a34a25192aa43307b84dfe3aaaafd71c5c6b6a02a4700";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "amdefine"; range = ">=0.0.4"; }
+    ];
+  }
+  {
+    baseName = "spdy";
+    version = "1.7.1";
+    fullName = "spdy-1.7.1";
+    hash = "d90516bb6b6cf39fb52face8ec332be98de116ce84d7d400fbb19529a30fa678";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "ssh-agent";
+    version = "0.2.1";
+    fullName = "ssh-agent-0.2.1";
+    hash = "b420d5816d4a8a242a8d1454f064954eab8fec9856310e867a2e7f1b2432f934";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "ctype"; range = "0.5.0"; }
+      { name = "posix-getopt"; range = "1.0.0"; }
+    ];
+  }
+  {
+    baseName = "stream-counter";
+    version = "0.1.0";
+    fullName = "stream-counter-~0.1.0";
+    hash = "8c51bd894bf905ec607654a1d7d3fe4fdc4763ccec4d37723cb8d0a0fd7cb69c";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "readable-stream"; range = "~1.0.2"; }
+    ];
+  }
+  {
+    baseName = "swig";
+    version = "0.13.5";
+    fullName = "swig-*";
+    hash = "d1cc435c623829e5672df45c14a878304a41bec2b2c6b2a13bb956aeed22d1c9";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+      { name = "underscore"; range = ">=1.1.7"; }
+    ];
+  }
+  {
+    baseName = "tar";
+    version = "0.1.17";
+    fullName = "tar-0";
+    hash = "577832975440eba0a9293244d53fa2c383e5c27ec2f68e3defde0cc23910b978";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "inherits"; range = "1.x"; }
+      { name = "block-stream"; range = "*"; }
+      { name = "fstream"; range = "~0.1.8"; }
+    ];
+  }
+  {
+    baseName = "temp";
+    version = "0.5.0";
+    fullName = "temp-*";
+    hash = "082285c060c7519b9d8a6dbc1a51e3caa7de43a807d3f7cec4eab220ad1207be";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "tunnel-agent";
+    version = "0.3.0";
+    fullName = "tunnel-agent-~0.3.0";
+    hash = "5b23c1d29e85143e213ba5aca118419ab42d25774da92e816074a73f423bcabd";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "underscore";
+    version = "1.4.4";
+    fullName = "underscore-*";
+    hash = "a848a28193850d58d7b98249d70844bc7f35a7d8b6b5ed75e08e829aa6e763d3";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "underscore";
+    version = "1.4.4";
+    fullName = "underscore->=1.1.7";
+    hash = "a848a28193850d58d7b98249d70844bc7f35a7d8b6b5ed75e08e829aa6e763d3";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "underscore";
+    version = "1.4.4";
+    fullName = "underscore->=1.4.3";
+    hash = "a848a28193850d58d7b98249d70844bc7f35a7d8b6b5ed75e08e829aa6e763d3";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "util";
+    version = "0.4.9";
+    fullName = "util->= 0.4.9";
+    hash = "30ecc26c9e749650562c1ef20bc3f1a0d8d7c109134b510be34526d1ceae90e5";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "events.node"; range = ">= 0.4.0"; }
+    ];
+  }
+  {
+    baseName = "vasync";
+    version = "1.3.3";
+    fullName = "vasync-1.3.3";
+    hash = "603d15b81e25b6a634d7ff2025487b3460a60d0d7e1a1ed02e66faff5ef7b699";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "jsprim"; range = "0.3.0"; }
+      { name = "verror"; range = "1.1.0"; }
+    ];
+  }
+  {
+    baseName = "verror";
+    version = "1.1.0";
+    fullName = "verror-1.1.0";
+    hash = "ac0fc2dfbcdfc3440c281cf272d902ec74bf2abdf2f9c9eb5c0c3505dc6646d7";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "extsprintf"; range = "1.0.0"; }
+    ];
+  }
+  {
+    baseName = "verror";
+    version = "1.3.3";
+    fullName = "verror-1.3.3";
+    hash = "9b3e9307cb5a788c1a4c6706ed32582893ffcd64dc55a14a153be1ea15bb916a";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "extsprintf"; range = "1.0.0"; }
+    ];
+  }
+  {
+    baseName = "verror";
+    version = "1.3.6";
+    fullName = "verror-1.3.6";
+    hash = "96135dd5fef7b75bfe26513658ca3fc1ab38e17a9bec522fc5ec6e54b6b63f89";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "extsprintf"; range = "1.0.2"; }
+    ];
+  }
+  {
+    baseName = "websocket-driver";
+    version = "0.2.1";
+    fullName = "websocket-driver->=0.2.0";
+    hash = "8aab2b32695fecd2bca57d95bc51f0eb8a9a5bb298187a8fe3a84cd2cd8e3dc7";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "which";
+    version = "1.0.5";
+    fullName = "which-1";
+    hash = "e26f39d7b152c700636472ab4da57bfb9af17972c49a9e2a06f9ff347d8fad42";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "wordwrap";
+    version = "0.0.2";
+    fullName = "wordwrap-~0.0.2";
+    hash = "66a2fa688509738922c3ad62a6159fe3c93268bd3bca2bff24df4bc02cc31582";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "wu";
+    version = "0.1.8";
+    fullName = "wu-*";
+    hash = "2400d0ca7da862a9063a6a8d914bb4e585f81a5121b0fda8e40b1f6e782c72c6";
+    patchLatest = false;
+    topLevel = true;
+    dependencies = [
+    ];
+  }
+  {
+    baseName = "xml2js";
+    version = "0.2.4";
+    fullName = "xml2js-0.2.4";
+    hash = "8daebb075fc7c564d84221a0cef7825ac824db8e312f873daee59a6adf38da28";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "sax"; range = ">=0.4.2"; }
+    ];
+  }
+  {
+    baseName = "xml2js";
+    version = "0.2.7";
+    fullName = "xml2js-0.2.x";
+    hash = "ab3ae8402a8af36d93e1aa6e83102e365b82f03e605d1b8b8361dacc95e52397";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+      { name = "sax"; range = "0.5.2"; }
+    ];
+  }
+  {
+    baseName = "xmlbuilder";
+    version = "0.4.2";
+    fullName = "xmlbuilder-*";
+    hash = "3137e5bf9db1f114767f8ba56be753f2a9f512e38a2df64d7677ae3c9318a0fe";
+    patchLatest = false;
+    topLevel = false;
+    dependencies = [
+    ];
+  }
+]
diff --git a/pkgs/top-level/node-packages.json b/pkgs/top-level/node-packages.json
new file mode 100644
index 000000000000..17883abdb614
--- /dev/null
+++ b/pkgs/top-level/node-packages.json
@@ -0,0 +1,35 @@
+[
+  { "name": "async" }
+, { "name": "assert" }
+, { "name": "mocha" }
+, { "name": "jayschema" }
+, { "name": "underscore" }
+, { "name": "extend" }
+, { "name": "express" }
+, { "name": "s3http" }
+, { "name": "aws-sdk" }
+, { "name": "nijs" }
+, { "name": "amdefine" }
+, { "name": "smartdc" }
+, { "name": "optparse" }
+, { "name": "jsontool" }
+, { "name": "swig" }
+, { "name": "coffee-script" }
+, { "name": "escape-html" }
+, { "name": "buffertools" }
+, { "name": "wu" }
+, { "name": "source-map" }
+, { "name": "knox" }
+, { "name": "node-expat" }
+, { "name": "optimist" }
+, { "name": "temp" }
+, { "name": "faye-websocket" }
+, { "name": "node-uuid" }
+, { "name": "rbytes" }
+, { "name": "sockjs" }
+, { "name": "backbone" }
+, { "name": "browserchannel" }
+, { "name": "node-gyp" }
+, { "name": "semver" }
+, { "name": "npm2nix" }
+]
diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix
index 48ce273c46b3..ad26f96cbae7 100644
--- a/pkgs/top-level/node-packages.nix
+++ b/pkgs/top-level/node-packages.nix
@@ -1,1923 +1,44 @@
 { pkgs, stdenv, nodejs, fetchurl, neededNatives }:
 
-let self = {
-  buildNodePackage = import ../development/web/nodejs/build-node-package.nix {
-    inherit stdenv nodejs neededNatives;
-    inherit (pkgs) runCommand;
-  };
-
-  patchLatest = srcAttrs:
-                  let src = fetchurl srcAttrs; in
-                  pkgs.runCommand src.name {} ''
-                    mkdir unpack
-                    cd unpack
-                    tar xf ${src}
-                    mv */ package 2>/dev/null || true
-                    sed -i -e "s/: \"latest\"/: \"*\"/" package/package.json
-                    tar cf $out *
-                  '';
-
-  "abbrev" = self."abbrev-1";
-
-  "abbrev-1" = self.buildNodePackage rec {
-    name = "abbrev-1.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/abbrev/-/${name}.tgz";
-      sha256 = "8dc0f480571a4a19e74f1abd4f31f6a70f94953d1ccafa16ed1a544a19a6f3a8";
-    };
-    deps = [
-
-    ];
-  };
-
-  "active-x-obfuscator" = self."active-x-obfuscator-0.0.1";
-
-  "active-x-obfuscator-0.0.1" = self.buildNodePackage rec {
-    name = "active-x-obfuscator-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/active-x-obfuscator/-/${name}.tgz";
-      sha256 = "069cc18a0e7790ec106b267d28b47c691220f119a8daec925dd47f06866ce1c6";
-    };
-    deps = [
-      self."zeparser-0.0.5"
-    ];
-  };
-
-  amdefine = "amdefine-0.0.4";
-
-  "amdefine->=0.0.4" = self."amdefine-0.0.4";
-
-  "amdefine-0.0.4" = self.buildNodePackage rec {
-    name = "amdefine-0.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/amdefine/-/${name}.tgz";
-      sha256 = "10sdb85mb6fvkglqwg7icdh58sng9pm8655npmsbv18gsbcnmbg4";
-    };
-    deps = [
-
-    ];
-  };
-
-  "ansi" = self."ansi-~0.1.2";
-
-  "ansi-~0.1.2" = self.buildNodePackage rec {
-    name = "ansi-0.1.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ansi/-/${name}.tgz";
-      sha256 = "6f2288b1db642eb822578f4ee70bf26bf97173cc7d3f10f496070fb96250006b";
-    };
-    deps = [
-
-    ];
-  };
-
-  "asn1" = self."asn1-0.1.11";
-
-  "asn1-0.1.11" = self.buildNodePackage rec {
-    name = "asn1-0.1.11";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/asn1/-/${name}.tgz";
-      sha256 = "7206eadc8a9344e484bcce979e22a12c9fa64c1395aa0544b8b767808b268f43";
-    };
-    deps = [
-
-    ];
-  };
-
-  "assert" = self."assert-0.4.9";
-  
-  "assert-0.4.9" = self.buildNodePackage rec {
-    name = "assert-0.4.9";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/assert/-/${name}.tgz";
-      sha256 = "1sxyba88p08956havkxc5m9x5v5ybcswgasgfcix31kjbww14slp";
-    };
-    deps = [
-      self."util"
-    ];
-  };
-
-  "async" = self."async-0.2.8";
-
-  "async-0.1.22" = self.buildNodePackage rec {
-    name = "async-0.1.22";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/async/-/${name}.tgz";
-      sha256 = "6fd2750cd519a754b0e32ef3423e64768055129e00a95d9297005bda29fdef18";
-    };
-    deps = [
-
-    ];
-  };
-  
-  "async-0.2.8" = self.buildNodePackage rec {
-    name = "async-0.2.8";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/async/-/${name}.tgz";
-      sha256 = "0ii3pqb70wb6nws35p1ahc40dhmj7yp85f35j8xiip473gpwbms5";
-    };
-    deps = [
-
-    ];
-  };
-
-  "aws-sdk" = self."aws-sdk-*";
-
-  "aws-sdk-git" = self.buildNodePackage rec {
-    name = "aws-sdk-0.9.8-pre7b687a0c262ac129fd6eaffeb02de09ee7e6a87c";
-    src = self.patchLatest {
-      url = "https://github.com/aws/aws-sdk-js/archive/7b687a0c262ac129fd6eaffeb02de09ee7e6a87c.tar.gz";
-      sha256 = "1pn43wxi3xz4kjyxf8j7zil5frhd1zpqja8szamgll2pxxnpnr3i";
-      name = "${name}.tgz";
-    };
-    deps = [
-      self."xml2js-0.2.4"
-      self."xmlbuilder"
-    ];
-  };
-
-  "aws-sdk-*" = self.buildNodePackage rec {
-    name = "aws-sdk-0.9.7-pre.8";
-    src = self.patchLatest {
-      url = "http://registry.npmjs.org/aws-sdk/-/${name}.tgz";
-      sha256 = "d3854275981fff76153f79c62745d8d6c59018861729766908c920fff95ea422";
-    };
-    deps = [
-      self."xml2js-0.2.4"
-      self."xmlbuilder"
-    ];
-  };
-
-  "backbone" = self."backbone-0.9.2";
-
-  "backbone-0.9.2" = self.buildNodePackage rec {
-    name = "backbone-0.9.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/backbone/-/${name}.tgz";
-      sha256 = "0a5ebc8d32949ea2870a684e8430a8b4dec75a163ecf2740eb5fb4865393bb32";
-    };
-    deps = [
-      self."underscore->=1.3.1"
-    ];
-  };
-
-  "bindings" = self."bindings-1";
-
-  "bindings-1" = self.buildNodePackage rec {
-    name = "bindings-1.0.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bindings/-/${name}.tgz";
-      sha256 = "cb211ac856d135af5ee864762fae9e554225a613ea1fd815c20b8fdd1679c9ed";
-    };
-    deps = [
-
-    ];
-  };
-
-  "block-stream" = self."block-stream-*";
-
-  "block-stream-*" = self.buildNodePackage rec {
-    name = "block-stream-0.0.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/block-stream/-/${name}.tgz";
-      sha256 = "2fc365b42b8601c8ee150d453f6cc762a01054b7fb28bdfcfcbce7c97e93601b";
-    };
-    deps = [
-      self."inherits-~1.0.0"
-    ];
-  };
-
-  "browserchannel" = self."browserchannel-0.4.1";
-
-  "browserchannel-0.4.1" = self.buildNodePackage rec {
-    name = "browserchannel-0.4.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/browserchannel/-/${name}.tgz";
-      sha256 = "f5d038347cee6802bb6f30f53bcf2adf196d241505b77ffca3d5f8a76a109c5f";
-    };
-    deps = [
-      self."coffee-script-~1"
-      self."hat"
-      self."connect-~1.7"
-      self."timerstub"
-      self."request-~2"
-    ];
-  };
-
-  "bson" = self."bson-0.1.5";
-
-  "bson-0.1.5" = self.buildNodePackage rec {
-    name = "bson-0.1.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bson/-/${name}.tgz";
-      sha256 = "58af4a1697b015190b40c2a7e5743f9d4494887ef98dfe2f58f24c70f2d31150";
-    };
-    deps = [
-
-    ];
-  };
-
-  "buffer-crc32" = self."buffer-crc32-0.2.1";
-
-  "buffer-crc32-0.2.1" = self.buildNodePackage rec {
-    name = "buffer-crc32-0.2.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/buffer-crc32/-/${name}.tgz";
-      sha256 = "b6ea96d57411e37c15e18fb8ca600656399912ce16355f9af3c662f765507f01";
-    };
-    deps = [
-
-    ];
-  };
-
-  "buffertools" = self."buffertools-~1";
-
-  "buffertools-~1" = self.buildNodePackage rec {
-    name = "buffertools-1.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/buffertools/-/${name}.tgz";
-      sha256 = "a0520dbf39eedbd8c685ac4989bf822ac57cc161924abf82ba567234620380a5";
-    };
-    deps = [
-
-    ];
-  };
-
-  "bunyan" = self."bunyan-0.8.0";
-
-  "bunyan-0.8.0" = self.buildNodePackage rec {
-    name = "bunyan-0.8.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bunyan/-/${name}.tgz";
-      sha256 = "059b8948dd34d371d39aa87227d26d62180c365afeb6625c07187c8f0ad29f27";
-    };
-    deps = [
-
-    ];
-  };
-
-  "byline" = self."byline-2.0.2";
-
-  "byline-2.0.2" = self.buildNodePackage rec {
-    name = "byline-2.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/byline/-/${name}.tgz";
-      sha256 = "a916ffde5ee385f7d682c13028907a96fe33cdeed6d72cea903d09fb154dae50";
-    };
-    deps = [
-
-    ];
-  };
-
-  "bytes" = self."bytes-0.2.0";
-
-  "bytes-0.2.0" = self.buildNodePackage rec {
-    name = "bytes-0.2.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bytes/-/${name}.tgz";
-      sha256 = "e70bd4dccc886a5cf1c925092b4acd7a262a9da3e1b51ccde10a3fcd0a328465";
-    };
-    deps = [
-
-    ];
-  };
-
-  "bytes-0.1.0" = self.buildNodePackage rec {
-    name = "bytes-0.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bytes/-/${name}.tgz";
-      sha256 = "32954618600f6566ecd95aec0ea0ae3318a1b4a29bf6a7970462c29a843bf701";
-    };
-    deps = [
-
-    ];
-  };
-
-  "cipher-block-size" = self."cipher-block-size-0.0.0";
-
-  "cipher-block-size-0.0.0" = self.buildNodePackage rec {
-    name = "cipher-block-size-0.0.0";
-    src = fetchurl {
-      url = https://bitbucket.org/shlevy/node-cipher-block-size/get/0.0.0.tar.gz;
-      sha256 = "0j4i19ckb9ab9aqd4w3j0vrvcw7c6icq279x4fx8xs1h9massxng";
-      name = "${name}.tgz";
-    };
-    deps = [
-      self."bindings-1"
-    ];
-    buildInputs = [
-      pkgs.openssl
-    ];
-  };
-
-  "coffee-script" = self."coffee-script-1.4.0";
-  "coffee-script-~1" = self."coffee-script-1.4.0";
-
-  "coffee-script-~1.1.2" = self.buildNodePackage rec {
-    name = "coffee-script-1.1.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/coffee-script/-/${name}.tgz";
-      sha256 = "3b431da901f753bde0ab26245c7111e1e4b8be1bba0086cf4a7470d739acae87";
-    };
-    deps = [
-
-    ];
-  };
-
-  "coffee-script-1.3.3" = self.buildNodePackage rec {
-    name = "coffee-script-1.3.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/coffee-script/-/${name}.tgz";
-      sha256 = "deedd2cf9d5abe2bad724e6809bec40efa07215dae85f44d78cd37736bb50bc5";
-    };
-    deps = [
-
-    ];
-  };
-
-  "coffee-script-1.4.0" = self.buildNodePackage rec {
-    name = "coffee-script-1.4.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/coffee-script/-/${name}.tgz";
-      sha256 = "146e8985d89210b63dae83378fd851ccf54d38d7d11cadcdca01520d50882613";
-    };
-    deps = [
-
-    ];
-  };
-
-  "commander" = self."commander-~0.6.1";
-
-  "commander-0.5.1" = self.buildNodePackage rec {
-    name = "commander-0.5.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/commander/-/${name}.tgz";
-      sha256 = "91042851d0731b28a5e7c342e5cbce7723a7243d31ae378fa86c45ca9493a924";
-    };
-    deps = [
-
-    ];
-  };
-
-  "commander-~0.6.1" = self.buildNodePackage rec {
-    name = "commander-0.6.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/commander/-/${name}.tgz";
-      sha256 = "7b7fdd1bc4d16f6776169a64f133d629efe2e3a7cd338b1d0884ee909abbd729";
-    };
-    deps = [
-
-    ];
-  };
-
-  "connect" = self."connect-2.7.7";
-
-  "connect-2.7.7" = self.buildNodePackage rec {
-    name = "connect-2.7.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect/-/${name}.tgz";
-      sha256 = "e4cf5b03c051d9b4b0e27a76ec76da0b8ca38d0e4ce1d8ba8c4c3b3caac7b032";
-    };
-    deps = [
-      self."qs-0.6.1"
-      self."formidable-1.0.13"
-      self."cookie-signature-1.0.1"
-      self."buffer-crc32-0.2.1"
-      self."cookie-0.0.5"
-      self."send-0.1.0"
-      self."bytes-0.2.0"
-      self."fresh-0.1.0"
-      self."pause-0.0.1"
-      self."debug"
-    ];
-  };
-
-  "connect-~1.7" = self.buildNodePackage rec {
-    name = "connect-1.7.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect/-/${name}.tgz";
-      sha256 = "773fd6ca8c90e33cc28d012fb3d72d66eb99114b20d88228330458628f030d12";
-    };
-    deps = [
-      self."qs->= 0.3.1"
-      self."mime->= 0.0.1"
-    ];
-  };
-
-  "connect-2.4.4" = self.buildNodePackage rec {
-    name = "connect-2.4.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect/-/${name}.tgz";
-      sha256 = "1f474ca9db05b9d58f3469ad4932722e49bec1f6ec35665ddea09155382914e9";
-    };
-    deps = [
-      self."qs-0.4.2"
-      self."formidable-1.0.11"
-      self."crc-0.2.0"
-      self."cookie-0.0.4"
-      self."bytes-0.1.0"
-      self."send-0.0.4"
-      self."fresh-0.1.0"
-      self."pause-0.0.1"
-      self."debug"
-    ];
-  };
-
-  "cookie" = self."cookie-0.0.5";
-
-  "cookie-0.0.5" = self.buildNodePackage rec {
-    name = "cookie-0.0.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/cookie/-/${name}.tgz";
-      sha256 = "17938b21dcd85f09994b85484abb5aeddc4e92c61d1b599b764bbaaa7ad6adee";
-    };
-    deps = [
-
-    ];
-  };
-
-  "cookie-0.0.4" = self.buildNodePackage rec {
-    name = "cookie-0.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/cookie/-/${name}.tgz";
-      sha256 = "a917477c448a6a91ef73d550d8d8a6d4864e8fbd247b6f73baaca66c9bfc3b0b";
-    };
-    deps = [
-
-    ];
-  };
-
-  "cookie-signature" = self."cookie-signature-1.0.1";
-
-  "cookie-signature-1.0.1" = self.buildNodePackage rec {
-    name = "cookie-signature-1.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/cookie-signature/-/${name}.tgz";
-      sha256 = "e2ea4f290fdcfe82d8fb76991fee4106d4ae1f5d5a2f8b8d91442e047c538c8e";
-    };
-    deps = [
-
-    ];
-  };
-
-  "crc" = self."crc-0.2.0";
-
-  "crc-0.2.0" = self.buildNodePackage rec {
-    name = "crc-0.2.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/crc/-/${name}.tgz";
-      sha256 = "027c180bbbddd0960e6000f7ef60623997dfa61b3c2ef141acf00c29a1763b5d";
-    };
-    deps = [
-
-    ];
-  };
-
-  "cssmin" = self."cssmin-0.3.1";
-
-  "cssmin-0.3.1" = self.buildNodePackage rec {
-    name = "cssmin-0.3.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/cssmin/-/${name}.tgz";
-      sha256 = "56f1854fd0c6cb4cf78cea861e7b617ccf1daf91b47fba5bc80abdf2529b3102";
-    };
-    deps = [
-
-    ];
-  };
-
-  "ctype" = self."ctype->=0.0.2";
-
-  "ctype->=0.0.2" = self.buildNodePackage rec {
-    name = "ctype-0.5.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ctype/-/${name}.tgz";
-      sha256 = "4a7224a74f19dc6a1206fa1c04ae1a4ab795cd4ba842466e2f511fa714f82c60";
-    };
-    deps = [
-
-    ];
-  };
-
-  "ctype-0.5.0" = self.buildNodePackage rec {
-    name = "ctype-0.5.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ctype/-/${name}.tgz";
-      sha256 = "50157e6c5e44d1c833bfc239a7a337ee08fd6f3c5a15f7ef5cee5571a86b0378";
-    };
-    deps = [
-
-    ];
-  };
-
-  "datetime" = self."datetime-0.0.3";
-
-  "datetime-0.0.3" = self.buildNodePackage rec {
-    name = "datetime-0.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/datetime/-/${name}.tgz";
-      sha256 = "d584a5b140ced7bd44199fc5e1b6cd55ec2d3c946dc990ced42f6ab2687747f0";
-    };
-    deps = [
-      self."vows->=0.5.4"
-    ];
-  };
-
-  "debug" = self."debug-*";
-
-  "debug-*" = self.buildNodePackage rec {
-    name = "debug-0.7.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/debug/-/${name}.tgz";
-      sha256 = "f9142856b1c2652a11e50f2aca068edbad7598f50d9e6d003b8ee85b2a333d63";
-    };
-    deps = [
-
-    ];
-  };
-
-
-  "diff" = self."diff-~1.0.3";
-
-  "diff-~1.0.2" = self.buildNodePackage rec {
-    name = "diff-1.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/diff/-/${name}.tgz";
-      sha256 = "0i9hpssk0sx3a7610qr58cm9bx1fr95dvjk4wsklgi5zyb1xiqax";
-    };
-    deps = [
-
-    ];
-  };
-
-  "diff-~1.0.3" = self.buildNodePackage rec {
-    name = "diff-1.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/diff/-/${name}.tgz";
-      sha256 = "88e1bb04e3707c5601ec0841e170f8892a3b929bf8c4030f826cd32c1fa21472";
-    };
-    deps = [
-
-    ];
-  };
-
-  "dtrace-provider" = self."dtrace-provider-0.0.6";
-
-  "dtrace-provider-0.0.6" = self.buildNodePackage rec {
-    name = "dtrace-provider-0.0.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/dtrace-provider/-/${name}.tgz";
-      sha256 = "ce48363aefa9e8afb3c8e8e5ce8d321a5d5a7eecbb28eaa997c48c5e9d502508";
-    };
-    deps = [
-
-    ];
-  };
-
-  "escape-html" = self."escape-html-0.0.1";
-
-  "escape-html-0.0.1" = self.buildNodePackage rec {
-    name = "escape-html-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/escape-html/-/${name}.tgz";
-      sha256 = "03c24a492f80659c25f788809ae64277408a4c12594cff62f89db4b3259c6b58";
-    };
-    deps = [
-
-    ];
-  };
-
-  "events.node" = self."events.node-0.4.9";
-  
-  "events.node-0.4.9" = self.buildNodePackage rec {
-    name = "events.node-0.4.9";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/events.node/-/${name}.tgz";
-      sha256 = "1dphp42qir4f3j68lx3403870rc3iacfsm0ppzi1cgx3lzxgknmf";
-    };
-  };
-
-  "express" = self."express-*";
-
-  "express-*" = self.buildNodePackage rec {
-    name = "express-3.2.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/express/-/${name}.tgz";
-      sha256 = "4ca52cccef971707a368f98c09baced9e06f4013b81c0cbcbf2c57c48982c428";
-    };
-    deps = [
-      self."connect-2.7.7"
-      self."commander-~0.6.1"
-      self."range-parser-0.0.4"
-      self."mkdirp-0.3.4"
-      self."cookie-0.0.5"
-      self."buffer-crc32-0.2.1"
-      self."fresh-0.1.0"
-      self."methods-0.0.1"
-      self."send-0.1.0"
-      self."cookie-signature-1.0.1"
-      self."debug"
-      self."qs-0.6.1"
-    ];
-  };
-
-  "extend" = self."extend-*";
-
-  "extend-*" = self.buildNodePackage rec {
-    name = "extend-1.1.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/extend/-/${name}.tgz";
-      sha256 = "0b27709829110f2e84926ebe3494b82df6e79ad49a618ad3444e4edf62b57a57";
-    };
-    deps = [
-
-    ];
-  };
-
-  "eyes" = self."eyes->=0.1.6";
-
-  "eyes->=0.1.6" = self.buildNodePackage rec {
-    name = "eyes-0.1.8";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/eyes/-/${name}.tgz";
-      sha256 = "4fa6db8f2c9926fb39a211c622d7eb3a76efbc4878559f9bd155d647a6963735";
-    };
-    deps = [
-
-    ];
-  };
-
-  "faye-websocket" = self."faye-websocket-0.4.0";
-
-  "faye-websocket-0.4.0" = self.buildNodePackage rec {
-    name = "faye-websocket-0.4.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/faye-websocket/-/${name}.tgz";
-      sha256 = "853b8d2f4611013da89faf45b6c9f6e440ad6c46616e405b8cf59b4302e78e2f";
-    };
-    deps = [
-
-    ];
-  };
-
-  "formidable" = self."formidable-1.0.13";
-
-  "formidable-1.0.13" = self.buildNodePackage rec {
-    name = "formidable-1.0.13";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/formidable/-/${name}.tgz";
-      sha256 = "c3c7c6ecdd4b1ad9ec9b1c273d8dd1db2bc12f9a699c233d3885fcded58ceec6";
-    };
-    deps = [
-
-    ];
-  };
-
-  "formidable-1.0.11" = self.buildNodePackage rec {
-    name = "formidable-1.0.11";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/formidable/-/${name}.tgz";
-      sha256 = "39b345d14d69c27fe262e12f16900cef6be220510788866e0a12c9fedd03766e";
-    };
-    deps = [
-
-    ];
-  };
-
-  "fresh" = self."fresh-0.1.0";
-
-  "fresh-0.1.0" = self.buildNodePackage rec {
-    name = "fresh-0.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/fresh/-/${name}.tgz";
-      sha256 = "c402fbd25e26c0167bf288e1ba791716808bfaa5de32b76ae68e8e8a3d7e2b33";
-    };
-    deps = [
-
-    ];
-  };
-
-  "fstream" = self."fstream-0.1.18";
-  "fstream-~0.1.8" = self."fstream-0.1.18";
-  "fstream-~0.1.13" = self."fstream-0.1.18";
-
-  "fstream-0.1.18" = self.buildNodePackage rec {
-    name = "fstream-0.1.18";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/fstream/-/${name}.tgz";
-      sha256 = "fd5791dd0ce8d7b707fa171ac5bd482e09f80cd09ec8176b45d547416893372d";
-    };
-    deps = [
-      self."rimraf-2"
-      self."mkdirp-0.3.4"
-      self."graceful-fs-~1.1.2"
-      self."inherits-~1.0.0"
-    ];
-  };
-
-  "glob" = self."glob-3";
-
-  "glob-3" = self.buildNodePackage rec {
-    name = "glob-3.1.12";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/glob/-/${name}.tgz";
-      sha256 = "a37c02e9a91915fe4e3232229676e842803151dde831d1046620ec96118f6036";
-    };
-    deps = [
-      self."minimatch-0.2"
-      self."graceful-fs-~1.1.2"
-      self."inherits-1"
-    ];
-  };
-
-  "graceful-fs" = self."graceful-fs-1.1.10";
-  "graceful-fs-1" = self."graceful-fs-1.1.10";
-  "graceful-fs-~1.1" = self."graceful-fs-1.1.10";
-  "graceful-fs-~1.1.2" = self."graceful-fs-1.1.10";
-
-  "graceful-fs-1.1.10" = self.buildNodePackage rec {
-    name = "graceful-fs-1.1.10";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/graceful-fs/-/${name}.tgz";
-      sha256 = "1f9b7da8b0c75db49e0e5d2aaecc6f1dd3fca2bdbb2aecf95d1dbdec7f0cee24";
-    };
-    deps = [
-
-    ];
-  };
-  
-  "growl" = self."growl-1.7.0";
-  
-  "growl-1.7.0" = self.buildNodePackage rec {
-    name = "growl-1.7.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/growl/-/${name}.tgz";
-      sha256 = "1kzzygdxr9h6jl74iqg8n1z6kvhpi8wjmic7vdnsdm9gmvnyk9jj";
-    };
-  };
-
-  "hat" = self."hat-0.0.3";
-
-  "hat-0.0.3" = self.buildNodePackage rec {
-    name = "hat-0.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/hat/-/${name}.tgz";
-      sha256 = "7bf52b3b020ca333a42eb67411090912b21abb6ac746d587022a0955b16e5f5c";
-    };
-    deps = [
-
-    ];
-  };
-
-  "hiredis" = self."hiredis-*";
-
-  "hiredis-*" = self.buildNodePackage rec {
-    name = "hiredis-0.1.14";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/hiredis/-/${name}.tgz";
-      sha256 = "9d7ce0a7ae81cf465a0c26c07fb618b6ffd98ca344f14369114abf548d75637a";
-    };
-    deps = [
-
-    ];
-  };
-
-  "htdigest" = self."htdigest-1.0.7";
-
-  "htdigest-1.0.7" = self.buildNodePackage rec {
-    name = "htdigest-1.0.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/htdigest/-/${name}.tgz";
-      sha256 = "10fb047addf1c4f1089a26389066d5ff8f5ffa1ccce272a701bb4c2a30d90c58";
-    };
-    deps = [
-      self."commander-0.5.1"
-    ];
-  };
-
-  "htpasswd" = self."htpasswd-1.1.0";
-
-  "htpasswd-1.1.0" = self.buildNodePackage rec {
-    name = "htpasswd-1.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/htpasswd/-/${name}.tgz";
-      sha256 = "cee9c0a525e717e3565ba6ffea8a64c480bc8a9e7800cb9bfc385d1a8e713ec9";
-    };
-    deps = [
-      self."commander-0.5.1"
-    ];
-  };
-
-  "http-auth" = self."http-auth-*";
-
-  "http-auth-*" = self.buildNodePackage rec {
-    name = "http-auth-1.2.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/http-auth/-/${name}.tgz";
-      sha256 = "874dbb5907d03602f31eae959a0927a3112da8e868231d9a2119bb50d2fe63d2";
-    };
-    deps = [
-      self."node-uuid-1.2.0"
-      self."htpasswd-1.1.0"
-      self."htdigest-1.0.7"
-    ];
-  };
-
-  "http-signature" = self."http-signature-0.9.9";
-
-  "http-signature-0.9.9" = self.buildNodePackage rec {
-    name = "http-signature-0.9.9";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/http-signature/-/${name}.tgz";
-      sha256 = "c1e193f1195028f2cc8a8f402c7755fc215552a81f6bebbdf6f21de9390a438e";
-    };
-    deps = [
-      self."asn1-0.1.11"
-      self."ctype-0.5.0"
-    ];
-  };
-
-  "inherits" = self."inherits-1.0.0";
-  "inherits-1" = self."inherits-1.0.0";
-  "inherits-1.x" = self."inherits-1.0.0";
-  "inherits-~1.0.0" = self."inherits-1.0.0";
-
-  "inherits-1.0.0" = self.buildNodePackage rec {
-    name = "inherits-1.0.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/inherits/-/${name}.tgz";
-      sha256 = "2be196fa6bc6a0c65fecd737af457589ef88b22a95d5dc31aab01d92ace48186";
-    };
-    deps = [
-
-    ];
-  };
-
-  "jade" = self."jade-0.26.3";
-  
-  "jade-0.26.3" = self.buildNodePackage rec {
-    name = "jade-0.26.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/jade/-/${name}.tgz";
-      sha256 = "02sdl7dkpnbag40gl9gii1igyd9cpw8717dvyy3njaqrxf3l4cga";
-    };
-    deps = [
-      self."commander-~0.6.1"
-      self."mkdirp-0.3.0"
-    ];
-  };
-
-  "jayschema" = self."jayschema-*";
-  
-  "jayschema-*" = self.buildNodePackage rec {
-    name = "jayschema-0.1.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/jayschema/-/${name}.tgz";
-      sha256 = "03f8ymrfc03qhs48nm9zibgi8axbjkqa4bfl44iqhkdjy217vqb6";
-    };
-  };
-
-  "jsontool" = self."jsontool-*";
-
-  "jsontool-*" = self.buildNodePackage rec {
-    name = "jsontool-5.1.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/jsontool/-/${name}.tgz";
-      sha256 = "f7c12a0de635905f8134dfc8385f237135494d8c99fc0a5f112ee9735c2b6d05";
-    };
-    deps = [
-
-    ];
-  };
-
-  "knox" = self."knox-*";
-
-  "knox-*" = self.buildNodePackage rec {
-    name = "knox-0.3.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/knox/-/${name}.tgz";
-      sha256 = "d62623482cc2f8b2fe08ff0c0cf2ed7f35a320e806ebdfa6ac36df5486018517";
-    };
-    deps = [
-      self."mime"
-    ];
-  };
-
-  "less" = self."less-1.3.0";
-
-  "less-1.3.0" = self.buildNodePackage rec {
-    name = "less-1.3.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/less/-/${name}.tgz";
-      sha256 = "a182824764d5feefe8a66c5f9c7fe8b92d24a7677942fd650b9092bbd3f63d1b";
-    };
-    deps = [
-
-    ];
-  };
-
-  "lru-cache" = self."lru-cache-~2.0.0";
-
-  "lru-cache-1.1.0" = self.buildNodePackage rec {
-    name = "lru-cache-1.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/lru-cache/-/${name}.tgz";
-      sha256 = "735898f87ba800d6f2f3517ab92b631f03976c9d3fbaedb6ce357cfe3813ee8b";
-    };
-    deps = [
-
-    ];
-  };
-
-  "lru-cache-~2.0.0" = self.buildNodePackage rec {
-    name = "lru-cache-2.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/lru-cache/-/${name}.tgz";
-      sha256 = "3b4fd68f0bd75f5abf69e349b6ffa918bfe4990ff36d2d88dc74f334a9ed627e";
-    };
-    deps = [
-
-    ];
-  };
-
-  "methods" = self."methods-0.0.1";
-
-  "methods-0.0.1" = self.buildNodePackage rec {
-    name = "methods-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/methods/-/${name}.tgz";
-      sha256 = "2f7e32954dff5991dd8220e8f5dcdd32aeec5ec56ce9f7235872444af51b3adb";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mime" = self."mime-*";
-
-  "mime->= 0.0.1" = self."mime-*";
-
-  "mime-1.2.5" = self.buildNodePackage rec {
-    name = "mime-1.2.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mime/-/${name}.tgz";
-      sha256 = "ccf05a6c47146e8acb9d0671eee09d2eb077cf9ddd1f7e8eccf49dbf969d6c72";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mime-1.2.6" = self.buildNodePackage rec {
-    name = "mime-1.2.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mime/-/${name}.tgz";
-      sha256 = "7460134d6b4686d64fd1e7b878d34e2bdd258ad29b6665cf62e6d92659e81591";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mime-*" = self.buildNodePackage rec {
-    name = "mime-1.2.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mime/-/${name}.tgz";
-      sha256 = "a80244918c9c75fa4d0b37f311920c7d5270aab9a05aca9a74783764ad152df6";
-    };
-    deps = [
-
-    ];
-  };
-
-  "minimatch" = self."minimatch-0.2";
-
-  "minimatch-0.2" = self.buildNodePackage rec {
-    name = "minimatch-0.2.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/minimatch/-/${name}.tgz";
-      sha256 = "f0030112575a815ff304fa3bc64ee7e60ab8bfddb281602bc37eca0cddd48350";
-    };
-    deps = [
-      self."lru-cache-~2.0.0"
-    ];
-  };
-
-  "mkdirp" = self."mkdirp-0.3.4";
-
-  "mkdirp-0.3.0" = self.buildNodePackage rec {
-    name = "mkdirp-0.3.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mkdirp/-/${name}.tgz";
-      sha256 = "0zf2yxajyv94nydky2g8229pn544yz2z4ml087l6m5wwm3ind0vh";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mkdirp-0.3.3" = self.buildNodePackage rec {
-    name = "mkdirp-0.3.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mkdirp/-/${name}.tgz";
-      sha256 = "1ybxjmcj45s90izizl2v7i19vbzayjanpqv7nz7w68kmbf2i4ymn";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mkdirp-0.3.4" = self.buildNodePackage rec {
-    name = "mkdirp-0.3.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mkdirp/-/${name}.tgz";
-      sha256 = "f87444f2376c56bf47846f3b885aae926c5d9504328923b166794b78c0e08425";
-    };
-    deps = [
-
-    ];
-  };
-
-  "mocha" = self."mocha-1.9.0";
-  
-  "mocha-1.9.0" = self.buildNodePackage rec {
-    name = "mocha-1.9.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mocha/-/${name}.tgz";
-      sha256 = "1l175lzff4h4skf98xq259jr0dv3gb3pygbpdbkb2n9jd1pd6xih";
-    };
-    deps = [
-      self."commander-~0.6.1"
-      self."growl-1.7.0"
-      self."diff-~1.0.2"
-      self."debug"
-      self."mkdirp-0.3.3"
-      self."ms-0.3.0"
-      self."jade-0.26.3"
-    ];
-  };
-
-  "mongodb" = self."mongodb-1.1.11";
-
-  "mongodb-1.1.11" = self.buildNodePackage rec {
-    name = "mongodb-1.1.11";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mongodb/-/${name}.tgz";
-      sha256 = "fedd14b097a58ae5c2c83e5cb0af85a191ad00c2ce8d6db46520ee6cc1650277";
-    };
-    deps = [
-      self."bson-0.1.5"
-    ];
-  };
-
-  "mrclean" = self."mrclean-0.1.0";
-
-  "mrclean-0.1.0" = self.buildNodePackage rec {
-    name = "mrclean-0.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mrclean/-/${name}.tgz";
-      sha256 = "5a8921007d8d3db990d41924d220f90efc8cbeb1f425c52fe0fe28be22223705";
-    };
-    deps = [
-
-    ];
-  };
-
-  "ms" = self."ms-0.3.0";
-  
-  "ms-0.3.0" = self.buildNodePackage rec {
-    name = "ms-0.3.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ms/-/${name}.tgz";
-      sha256 = "1wh7pqm55vf7l2b10rzn4zj1j4f0wba873qilyzbpnm6hq0snbpp";
-    };
-  };
-
-  "nijs" = self."nijs-0.0.5";
-
-  "nijs-0.0.5" = self.buildNodePackage rec {
-    name = "nijs-0.0.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/nijs/-/${name}.tgz";
-      sha256 = "026lxgm75mqy5n1yjsk1n8xbgq5n9lw43lqa5nmy2mq74hzzksf5";
-    };
-    deps = [
-      self."optparse"
-    ];
-  };
-
-  "node-expat" = self."node-expat-*";
-
-  "node-expat-*" = self.buildNodePackage rec {
-    name = "node-expat-1.6.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-expat/-/${name}.tgz";
-      sha256 = "15c0566889ef8a54b2b626956b7dfc160469eb6c0d44a582a0b1077fadf034d2";
-    };
-    deps = [
-
-    ];
-    buildInputs = [ pkgs.expat ];
-  };
-
-  "node-gyp" = self."node-gyp-*";
-
-  "node-gyp-*" = self.buildNodePackage rec {
-    name = "node-gyp-0.6.8";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-gyp/-/${name}.tgz";
-      sha256 = "b40064d825c492c544389812ecea2089606c31cbe4f3ee9e68048ea56a9aed4d";
-    };
-    deps = [
-      self."glob-3"
-      self."graceful-fs-1"
-      self."fstream-~0.1.13"
-      self."minimatch-0.2"
-      self."mkdirp-0.3.4"
-      self."nopt-2"
-      self."npmlog-0"
-      self."osenv-0"
-      self."request-2.9"
-      self."rimraf-2"
-      self."semver-1"
-      self."tar-~0.1.12"
-      self."which-1"
-    ];
-  };
-
-  "node-uuid" = self."node-uuid-1.3.3";
-
-  "node-uuid-1.2.0" = self.buildNodePackage rec {
-    name = "node-uuid-1.2.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-uuid/-/${name}.tgz";
-      sha256 = "96d3ce178ea0825d27a855630de74243a577dc988512512eea572829b208a3d2";
-    };
-    deps = [
-
-    ];
-  };
-
-  "node-uuid-1.3.3" = self.buildNodePackage rec {
-    name = "node-uuid-1.3.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-uuid/-/${name}.tgz";
-      sha256 = "a3fbccc904944a9c8eadc59e55aaac908cc458569f539b50077d9672a84587a8";
-    };
-    deps = [
-
-    ];
-  };
-
-  "nopt" = self."nopt-2";
-
-  "nopt-1.0.10" = self.buildNodePackage rec {
-    name = "nopt-1.0.10";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/nopt/-/${name}.tgz";
-      sha256 = "426562943bfbbfc059eac83575ade5b78c6c01e5c1000a90a7defecfe2334927";
-    };
-    deps = [
-      self."abbrev-1"
-    ];
-  };
-
-  "nopt-2" = self.buildNodePackage rec {
-    name = "nopt-2.0.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/nopt/-/${name}.tgz";
-      sha256 = "112e9bea8b745a2e5a59d239e6f6f02e720e080ab8cdca89b6b8f0143ae718b5";
-    };
-    deps = [
-      self."abbrev-1"
-    ];
-  };
-
-  "npm2nix" = self."npm2nix-0.1.3";
-
-  "npm2nix-0.1.3" = self.buildNodePackage rec {
-    name = "npm2nix-0.1.3";
-    src = fetchurl {
-      url = https://bitbucket.org/shlevy/npm2nix/get/0.1.3.tar.gz;
-      sha256 = "1728fzmixcyg4g8mqcgn5yf7d4nin9zyqv8bs8b6660swhfdn4il";
-      name = "${name}.tgz";
-    };
-    deps = [
-      self."semver-1"
-    ];
-  };
-
-  "npmlog" = self."npmlog-0";
-
-  "npmlog-0" = self.buildNodePackage rec {
-    name = "npmlog-0.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/npmlog/-/${name}.tgz";
-      sha256 = "ce98d4d3380390c0259695cce407e2e96d2970c5caee1461a62ecbd38e8caed4";
-    };
-    deps = [
-      self."ansi-~0.1.2"
-    ];
-  };
-
-  "optimist" = self."optimist-*";
-
-  "optimist-*" = self."optimist-0.3.5";
-  "optimist-~0.3.5" = self."optimist-0.3.5";
-
-  "optimist-0.3.5" = self.buildNodePackage rec {
-    name = "optimist-0.3.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/optimist/-/${name}.tgz";
-      sha256 = "17d06n3y9difknq9j340qksj2zllal6sg0pj4clj9ja5jxf721x4";
-    };
-    deps = [
-      self."wordwrap-~0.0.2"
-    ];
-  };
-
-  "options" = self."options-*";
-
-  "options-*" = self.buildNodePackage rec {
-    name = "options-0.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/options/-/${name}.tgz";
-      sha256 = "06cfe21b54b45f8cf7bb0a184d6ea6de3adb2dc471bf0663d06c791b4d48536d";
-    };
-    deps = [
-
-    ];
-  };
-
-  "optparse" = self."optparse-1.0.3";
-
-  "optparse-1.0.3" = self.buildNodePackage rec {
-    name = "optparse-1.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/optparse/-/${name}.tgz";
-      sha256 = "1cg99i4rq8azxikzqz0ykw4q971azbj49d3m7slj041yscb6m883";
-    };
-    deps = [
-
-    ];
-  };
-
-  "osenv" = self."osenv-0";
-
-  "osenv-0" = self.buildNodePackage rec {
-    name = "osenv-0.0.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/osenv/-/${name}.tgz";
-      sha256 = "aafbb23637b7338c9025f9da336f31f96674d7926c30f209e4d93ce16d5251c4";
-    };
-    deps = [
-
-    ];
-  };
-
-  "pause" = self."pause-0.0.1";
-
-  "pause-0.0.1" = self.buildNodePackage rec {
-    name = "pause-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/pause/-/${name}.tgz";
-      sha256 = "d37b84046db0c28c9768be649e8f02bd991ede34b276b5dba7bade23b523235e";
-    };
-    deps = [
-
-    ];
-  };
-
-  "policyfile" = self."policyfile-0.0.4";
-
-  "policyfile-0.0.4" = self.buildNodePackage rec {
-    name = "policyfile-0.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/policyfile/-/${name}.tgz";
-      sha256 = "e19e9e57d6262ab7965212ec5456eae2c07438de3b09fd8f3cba36a61a14c43f";
-    };
-    deps = [
-
-    ];
-  };
-
-  "qs" = self."qs-0.6.1";
-  "qs->= 0.3.1" = self."qs-0.6.1";
-
-  "qs-0.4.2" = self.buildNodePackage rec {
-    name = "qs-0.4.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/qs/-/${name}.tgz";
-      sha256 = "c44875d3aa882693cf73185b46fed63c1a89c34dce600b191b41dd90fb019b86";
-    };
-    deps = [
-
-    ];
-  };
-
-  "qs-0.5.0" = self.buildNodePackage rec {
-    name = "qs-0.5.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/qs/-/${name}.tgz";
-      sha256 = "229a99fc833d50307833a13d898f3de137f2823593220273295e7e1dc81ab993";
-    };
-    deps = [
-
-    ];
-  };
-
-  "qs-0.6.1" = self.buildNodePackage rec {
-    name = "qs-0.6.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/qs/-/${name}.tgz";
-      sha256 = "afb476cec9b40a7801fe21f4056bfffb2270e126d7136f955c810fa7181f972a";
-    };
-    deps = [
-
-    ];
-  };
-
-  "range-parser" = self."range-parser-0.0.4";
-
-  "range-parser-0.0.4" = self.buildNodePackage rec {
-    name = "range-parser-0.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/range-parser/-/${name}.tgz";
-      sha256 = "8e1bcce3544330b51644ea0cb4d25f0daa4b43008a75da27e285635f4ac4b1ce";
-    };
-    deps = [
-
-    ];
-  };
-
-  "rbytes" = self."rbytes-0.0.2";
-
-  "rbytes-0.0.2" = self.buildNodePackage rec {
-    name = "rbytes-0.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/rbytes/-/${name}.tgz";
-      sha256 = "0fd4697be996ee12c65f8fb13b2edc7a554d22c31d1a344539bc611ce73b69aa";
-    };
-    deps = [
-
-    ];
-    buildInputs = [
-      pkgs.openssl
-    ];
-  };
-
-  "redis" = self."redis-0.7.2";
-
-  "redis-0.6.7" = self.buildNodePackage rec {
-    name = "redis-0.6.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/redis/-/${name}.tgz";
-      sha256 = "6a65c0204a773ca4adec0635d747c80a7565ba5e2028775c7d0e95d23df088bb";
-    };
-    deps = [
-
-    ];
-  };
-
-  "redis-0.7.2" = self.buildNodePackage rec {
-    name = "redis-0.7.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/redis/-/${name}.tgz";
-      sha256 = "d56d99e15dd35f6fabf545d9e91545553d60eaeb32ecf5caa1f357458df161ab";
-    };
-    deps = [
-      self."hiredis"
-    ];
-  };
-
-  "request" = self."request-~2";
-
-  "request-2.9" = self.buildNodePackage rec {
-    name = "request-2.9.203";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/request/-/${name}.tgz";
-      sha256 = "2af8f83a63c7227383fbdd6114e470e0921af86a037c4e82f42883120f35f836";
-    };
-    deps = [
-
-    ];
-  };
-
-  "request-~2" = self.buildNodePackage rec {
-    name = "request-2.11.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/request/-/${name}.tgz";
-      sha256 = "01e5c144c755c8ee1a1ec93077b684bd63efb8df32d54675e20737e8e1c1afa6";
-    };
-    deps = [
-
-    ];
-  };
-
-  "requirejs" = self."requirejs-0.26.0";
-
-  "requirejs-==0.26.0" = self."requirejs-0.26.0";
-
-  "requirejs-0.26.0" = self.buildNodePackage rec {
-    name = "requirejs-0.26.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/requirejs/-/${name}.tgz";
-      sha256 = "5ec7264031784fd1b5844aba813ace9045918a0b004a52fafa6b52e9e9760407";
-    };
-    deps = [
-
-    ];
-  };
-
-  "restify" = self."restify-1.4.3";
-
-  "restify-1.4.3" = self.buildNodePackage rec {
-    name = "restify-1.4.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/restify/-/${name}.tgz";
-      sha256 = "7c95b1e58d6effab3b947409892a20260b6d1142aefec9c3eb1e46165363d64e";
-    };
-    deps = [
-      self."async-0.1.22"
-      self."bunyan-0.8.0"
-      self."byline-2.0.2"
-      self."formidable-1.0.11"
-      self."dtrace-provider-0.0.6"
-      self."http-signature-0.9.9"
-      self."lru-cache-1.1.0"
-      self."mime-1.2.5"
-      self."node-uuid-1.3.3"
-      self."qs-0.5.0"
-      self."retry-0.6.0"
-      self."semver-1.0.14"
-    ];
-  };
-
-  "retry" = self."retry-0.6.0";
-
-  "retry-0.6.0" = self.buildNodePackage rec {
-    name = "retry-0.6.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/retry/-/${name}.tgz";
-      sha256 = "983e676af24ff4dcbac396420fca3c195ce3b1de5f731f697888b4fe6b7bbd2a";
-    };
-    deps = [
-
-    ];
-  };
-
-  "rimraf" = self."rimraf-2";
-
-  "rimraf-2" = self.buildNodePackage rec {
-    name = "rimraf-2.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/rimraf/-/${name}.tgz";
-      sha256 = "3efcc60c9f6715a8746f3e0b82770468247f3e256778ef20733f334377392ab0";
-    };
-    deps = [
-      self."graceful-fs-~1.1"
-    ];
-  };
-
-  "s3http" = self."s3http-*";
-
-  "s3http-*" = self.buildNodePackage rec {
-    name = "s3http-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/s3http/-/${name}.tgz";
-      sha256 = "7140a0ee6df9fb90fd74aa0b68b73f899c6d8e2eaa2de89fde3f634e9bf10dba";
-    };
-    deps = [
-      self."aws-sdk-git"
-      self."commander-0.5.1"
-      self."http-auth-*"
-    ];
-  };
-
-  "sax" = self."sax->=0.4.2";
-
-  "sax->=0.4.2" = self.buildNodePackage rec {
-    name = "sax-0.5.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/sax/-/${name}.tgz";
-      sha256 = "6bb7cd44e9dfea598997d4ba9d3279dafe75bed7b45904561ca9eb4d85cfd953";
-    };
-    deps = [
-
-    ];
-  };
-
-  "semver" = self."semver-1";
-
-  "semver-1" = self."semver-1.0.14";
-
-  "semver-1.0.14" = self.buildNodePackage rec {
-    name = "semver-1.0.14";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/semver/-/${name}.tgz";
-      sha256 = "560df522ae0e8834d8b07f6ca9c60bd8836e844642361abde108018cbe9ca82f";
-    };
-    deps = [
-
-    ];
-  };
-
-  "send" = self."send-0.1.0";
-
-  "send-0.1.0" = self.buildNodePackage rec {
-    name = "send-0.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/send/-/${name}.tgz";
-      sha256 = "28b5a6ec41b5072521eb792cc901b92cdbb6b743c578d7008727dbbd3eb717de";
-    };
-    deps = [
-      self."debug"
-      self."mime-1.2.6"
-      self."fresh-0.1.0"
-      self."range-parser-0.0.4"
-    ];
-  };
-
-  "send-0.0.4" = self.buildNodePackage rec {
-    name = "send-0.0.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/send/-/${name}.tgz";
-      sha256 = "7e028fa3760884d8103414f079dc4bcc99d0b72bc21bcaa9d66a319d59010d6c";
-    };
-    deps = [
-      self."debug"
-      self."mime-1.2.6"
-      self."fresh-0.1.0"
-      self."range-parser-0.0.4"
-    ];
-  };
-
-  "showdown" = self."showdown-0.0.1";
-
-  "showdown-0.0.1" = self.buildNodePackage rec {
-    name = "showdown-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/showdown/-/${name}.tgz";
-      sha256 = "669a3284344a4cb51b0327af8d84b9e35c895ef1cedbafada5284a31f4d4783d";
-    };
-    deps = [
-
-    ];
-  };
-
-  "smartdc" = self."smartdc-*";
-
-  "smartdc-*" = self.buildNodePackage rec {
-    name = "smartdc-6.5.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/smartdc/-/${name}.tgz";
-      sha256 = "a5d7ba965a863a411b52f0321a9fa1be350cb6af807175beb16529e4282dff4d";
-    };
-    deps = [
-      self."http-signature-0.9.9"
-      self."lru-cache-1.1.0"
-      self."nopt-1.0.10"
-      self."restify-1.4.3"
-      self."bunyan-0.8.0"
-      self."ssh-agent-0.1.0"
-    ];
-  };
-
-  "ssh-agent" = self."ssh-agent-0.1.0";
-
-  "ssh-agent-0.1.0" = self.buildNodePackage rec {
-    name = "ssh-agent-0.1.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ssh-agent/-/${name}.tgz";
-      sha256 = "62860d09a84d0bf1250d8c90aae3d0a922a7812591a9f4243330178774eb87b5";
-    };
-    deps = [
-      self."ctype->=0.0.2"
-    ];
-  };
-
-  "socket.io" = self."socket.io-0.9.6";
-
-  "socket.io-0.9.6" = self.buildNodePackage rec {
-    name = "socket.io-0.9.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/socket.io/-/${name}.tgz";
-      sha256 = "444e346e2701e2212590461a1fcf656f5d685ceb209e473517603286f09e743c";
-    };
-    deps = [
-      self."socket.io-client-0.9.6"
-      self."policyfile-0.0.4"
-      self."redis-0.6.7"
-    ];
-  };
-
-  "socket.io-client" = self."socket.io-client-0.9.6";
-
-  "socket.io-client-0.9.6" = self.buildNodePackage rec {
-    name = "socket.io-client-0.9.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/socket.io-client/-/${name}.tgz";
-      sha256 = "eab65186515d5206fe18b9ced75aae8c803dbcd18295a9a1cb71e5ae772ba399";
-    };
-    deps = [
-      self."uglify-js-1.2.5"
-      self."ws-0.4.x"
-      self."xmlhttprequest-1.2.2"
-      self."active-x-obfuscator-0.0.1"
-    ];
-  };
-
-  "sockjs" = self."sockjs-0.3.1";
-
-  "sockjs-0.3.1" = self.buildNodePackage rec {
-    name = "sockjs-0.3.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/sockjs/-/${name}.tgz";
-      sha256 = "056476f23dbe2e2182e5edea755108a8b6dbaea4b675b228172e876c8649efdf";
-    };
-    deps = [
-      self."node-uuid-1.3.3"
-      self."faye-websocket-0.4.0"
-      self."rbytes-0.0.2"
-    ];
-  };
-
-  "source-map" = self."source-map-0.1.7";
-
-  "source-map-~0.1.7" = self."source-map-0.1.7";
-
-  "source-map-0.1.7" = self.buildNodePackage rec {
-    name = "source-map-0.1.7";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/source-map/-/${name}.tgz";
-      sha256 = "041skhq60kwpx319iy0m33zcgc7q2ddlfl3vvmwl5ssl9p46g8x2";
-    };
-    deps = [
-      self."amdefine->=0.0.4"
-    ];
-  };
-
-  "source-map-0.1.2" = self.buildNodePackage rec {
-    name = "source-map-0.1.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/source-map/-/${name}.tgz";
-      sha256 = "4465bb3a293c0e86092affb7cbdd6d9356cad69231c56f6e73bba7750497035f";
-    };
-    deps = [
-      self."requirejs-==0.26.0"
-    ];
-  };
-
-  "swig" = self."swig-0.13.2";
-
-  "swig-0.13.2" = self.buildNodePackage rec {
-    name = "swig-0.13.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/swig/-/${name}.tgz";
-      sha256 = "1fxc1cg0g5bn0ksm4gddx75ff5yzzbhqn4yqh6xqa5ag73nvxiyg";
-    };
-    deps = [
-      self."underscore"
-    ];
-  };
-
-  "tar" = self."tar-~0.1.12";
-
-  "tar-~0.1.12" = self.buildNodePackage rec {
-    name = "tar-0.1.13";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/tar/-/${name}.tgz";
-      sha256 = "fdf79b5e172badf924a12b501686e5cbf33c3ec7631eccc29c0e3e9fdcbb5ffe";
-    };
-    deps = [
-      self."inherits-1.x"
-      self."block-stream"
-      self."fstream-~0.1.8"
-    ];
-  };
-
-  "temp" = self."temp-*";
-
-  "temp-*" = self.buildNodePackage rec {
-    name = "temp-0.4.0";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/temp/-/${name}.tgz";
-      sha256 = "ca8274250d36d94e670b8773bf062a28bc43eb342ae47ff629fbb627d48d710b";
-    };
-    deps = [
-
-    ];
-  };
-
-  "timerstub" = self."timerstub-*";
-
-  "timerstub-*" = self.buildNodePackage rec {
-    name = "timerstub-0.1.3";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/timerstub/-/${name}.tgz";
-      sha256 = "0ecbd05a10e0db1d628505c8a3b6ae07246bb8cf1074c435ddc26f22fcb5e153";
-    };
-    deps = [
-      self."coffee-script-~1.1.2"
-    ];
-  };
-
-  "tinycolor" = self."tinycolor-0.x";
-
-  "tinycolor-0.x" = self.buildNodePackage rec {
-    name = "tinycolor-0.0.1";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/tinycolor/-/${name}.tgz";
-      sha256 = "f5aaf5df002750c4af19181988c8789c9e230445747e511dde7c660424f286a0";
-    };
-    deps = [
-
-    ];
-  };
-
-  "uglify-js" = self."uglify-js-2.2.5";
-
-  "uglify-js-2.2.5" = self.buildNodePackage rec {
-    name = "uglify-js-2.2.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/uglify-js/-/${name}.tgz";
-      sha256 = "18ic581gjyvfl4gvlcdmzw4vrcbvn698i2rznnba70f8lk6ndlgr";
-    };
-    deps = [
-      self."source-map-~0.1.7"
-      self."optimist-~0.3.5"
-    ];
-  };
-
-  "uglify-js-1.2.5" = self.buildNodePackage rec {
-    name = "uglify-js-1.2.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/uglify-js/-/${name}.tgz";
-      sha256 = "111fa1b844885b94df8cd73eb864bd96ff2e9173e8eb7045cc778fa237304a74";
-    };
-    deps = [
-
-    ];
-  };
-
-  "uglify-js-1.2.6" = self.buildNodePackage rec {
-    name = "uglify-js-1.2.6";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/uglify-js/-/${name}.tgz";
-      sha256 = "6d9202c8332e78868510a5441de4d54d8c2e08901ea7945eb332be8d7670788d";
-    };
-    deps = [
-
-    ];
-  };
-
-  "underscore" = self."underscore-*";
-  "underscore->=1.3.1" = self."underscore-*";
-
-  "underscore-*" = self.buildNodePackage rec {
-    name = "underscore-1.4.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore/-/${name}.tgz";
-      sha256 = "a848a28193850d58d7b98249d70844bc7f35a7d8b6b5ed75e08e829aa6e763d3";
-    };
-    deps = [
-
-    ];
-  };
-
-  "util" = self."util-0.4.9";
-  
-  "util-0.4.9" = self.buildNodePackage rec {
-    name = "util-0.4.9";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/util/-/${name}.tgz";
-      sha256 = "1rchmv7d29j5wc5m2jqk170xgn50y71hpwhy5ib515klkrnc5v1h";
-    };
-    deps = [
-      self."events.node"
-    ];
-  };
-
-  "vows" = self."vows->=0.5.4";
-
-  "vows->=0.5.4" = self.buildNodePackage rec {
-    name = "vows-0.6.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/vows/-/${name}.tgz";
-      sha256 = "017586c2fbdd5cd15aacdc870ea0c1b1ab60558306457ddc9b0aa4dae8290597";
-    };
-    deps = [
-      self."eyes->=0.1.6"
-      self."diff-~1.0.3"
-    ];
-  };
-
-  "which" = self."which-1";
-
-  "which-1" = self.buildNodePackage rec {
-    name = "which-1.0.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/which/-/${name}.tgz";
-      sha256 = "e26f39d7b152c700636472ab4da57bfb9af17972c49a9e2a06f9ff347d8fad42";
-    };
-    deps = [
-
-    ];
-  };
-
-  "wordwrap" = self."wordwrap-~0.0.2";
-
-  "wordwrap-~0.0.2" = self.buildNodePackage rec {
-    name = "wordwrap-0.0.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/wordwrap/-/${name}.tgz";
-      sha256 = "66a2fa688509738922c3ad62a6159fe3c93268bd3bca2bff24df4bc02cc31582";
-    };
-    deps = [
-
-    ];
-  };
-
-  "ws" = self."ws-0.4.x";
-  "ws-0.4.x" = self."ws-0.4.21";
-
-  "ws-0.4.21" = self.buildNodePackage rec {
-    name = "ws-0.4.21";
-    src = self.patchLatest {
-      url = "http://registry.npmjs.org/ws/-/${name}.tgz";
-      sha256 = "f21bc0058730355e1ff9d6ccf84a4cb56a2fc28e939edd15395770ea9e87fa0e";
-    };
-    deps = [
-      self."commander-~0.6.1"
-      self."tinycolor-0.x"
-      self."options"
-    ];
-  };
-
-  "wu" = self."wu-0.1.8";
-
-  "wu-0.1.8" = self.buildNodePackage rec {
-    name = "wu-0.1.8";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/wu/-/${name}.tgz";
-      sha256 = "2400d0ca7da862a9063a6a8d914bb4e585f81a5121b0fda8e40b1f6e782c72c6";
-    };
-    deps = [
-
-    ];
-  };
-
-  "xml2js" = self."xml2js-0.2.4";
-
-  "xml2js-0.2.4" = self.buildNodePackage rec {
-    name = "xml2js-0.2.4";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/xml2js/-/${name}.tgz";
-      sha256 = "8daebb075fc7c564d84221a0cef7825ac824db8e312f873daee59a6adf38da28";
-    };
-    deps = [
-      self."sax->=0.4.2"
-    ];
-  };
-
-  "xmlbuilder" = self."xmlbuilder-*";
-
-  "xmlbuilder-*" = self.buildNodePackage rec {
-    name = "xmlbuilder-0.4.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/xmlbuilder/-/${name}.tgz";
-      sha256 = "3137e5bf9db1f114767f8ba56be753f2a9f512e38a2df64d7677ae3c9318a0fe";
-    };
-    deps = [
-
-    ];
-  };
-
-  "xmlhttprequest" = self."xmlhttprequest-1.2.2";
-
-  "xmlhttprequest-1.2.2" = self.buildNodePackage rec {
-    name = "xmlhttprequest-1.2.2";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/xmlhttprequest/-/${name}.tgz";
-      sha256 = "44ce4ed6e5f7b5df84f27590fa142ecd175f53da4807b9f06c0c4733e23bd95d";
-    };
-    deps = [
-
-    ];
-  };
-
-  "zeparser" = self."zeparser-0.0.5";
-
-  "zeparser-0.0.5" = self.buildNodePackage rec {
-    name = "zeparser-0.0.5";
-    src = fetchurl {
-      url = "http://registry.npmjs.org/zeparser/-/${name}.tgz";
-      sha256 = "8b5a57ae84a7b7adf8827d1469c8f66d08d1660bd1375a07381877cd1bb9ed0b";
-    };
-    deps = [
-
-    ];
-  };
-};
-
+let
+  generated = builtins.listToAttrs (pkgs.lib.fold (pkg: pairs:
+    (pkgs.lib.optional pkg.topLevel { name = pkg.baseName; value = builtins.getAttr pkg.fullName self; }) ++ [
+      {
+        name = pkg.fullName;
+        value = self.buildNodePackage rec {
+          name = "${pkg.baseName}-${pkg.version}";
+          src = (if pkg.patchLatest then self.patchLatest else fetchurl) {
+            url = "http://registry.npmjs.org/${pkg.baseName}/-/${name}.tgz";
+            sha256 = pkg.hash;
+          };
+          deps = map (dep: builtins.getAttr "${dep.name}-${dep.range}" self) pkg.dependencies;
+          buildInputs = if builtins.hasAttr name nativeDeps then builtins.getAttr name nativeDeps else [];
+        };
+      }
+    ] ++ pairs
+  ) [] (import ./node-packages-generated.nix));
+
+  nativeDeps = {
+    "node-expat-*" = [ pkgs.expat ];
+    "rbytes-0.0.2" = [ pkgs.openssl ];
+  };
+
+  self = {
+    buildNodePackage = import ../development/web/nodejs/build-node-package.nix {
+      inherit stdenv nodejs neededNatives;
+      inherit (pkgs) runCommand;
+    };
+
+    patchLatest = srcAttrs:
+      let src = fetchurl srcAttrs; in pkgs.runCommand src.name {} ''
+        mkdir unpack
+        cd unpack
+        tar xf ${src}
+        mv */ package 2>/dev/null || true
+        sed -i -e "s/: \"latest\"/: \"*\"/" package/package.json
+        tar cf $out *
+      '';
+
+    /* Put manual packages below here (ideally eventually managed by npm2nix */
+  } // generated;
 in self