]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Make etherpad derivation pure
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Thu, 9 May 2019 08:03:16 +0000 (10:03 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Thu, 9 May 2019 08:56:07 +0000 (10:56 +0200)
It also moves .ep_initialized to /var/lib to allow proper
initialization.

50 files changed:
nixops/modules/websites/tools/ether/default.nix
nixops/modules/websites/tools/ether/etherpad_lite.nix
pkgs/impure/etherpad-lite/default.nix [deleted file]
pkgs/webapps/default.nix
pkgs/webapps/etherpad-lite/default.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/etherpad-lite.json [moved from pkgs/impure/etherpad-lite/etherpad-lite.json with 100% similarity]
pkgs/webapps/etherpad-lite/libreoffice_patch.diff [moved from pkgs/impure/etherpad-lite/libreoffice_patch.diff with 100% similarity]
pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/node-packages.nix [new file with mode: 0644]

index 09e5c9daffdf08b0cd1272e65de8b641158f0a04..c4685a443b7db8102388ffc74ce989164e072220 100644 (file)
@@ -5,6 +5,7 @@ let
     env = myconfig.env.tools.etherpad-lite;
   };
 
     env = myconfig.env.tools.etherpad-lite;
   };
 
+  varDir = etherpad.webappDir.varDir;
   cfg = config.services.myWebsites.tools.etherpad-lite;
 in {
   options.services.myWebsites.tools.etherpad-lite = {
   cfg = config.services.myWebsites.tools.etherpad-lite;
 in {
   options.services.myWebsites.tools.etherpad-lite = {
@@ -26,6 +27,8 @@ in {
 
       script = ''
         exec ${pkgs.nodejs}/bin/node ${etherpad.webappDir}/src/node/server.js \
 
       script = ''
         exec ${pkgs.nodejs}/bin/node ${etherpad.webappDir}/src/node/server.js \
+          --sessionkey /var/secrets/webapps/tools-etherpad-sessionkey \
+          --apikey /var/secrets/webapps/tools-etherpad-apikey \
           --settings /var/secrets/webapps/tools-etherpad
       '';
 
           --settings /var/secrets/webapps/tools-etherpad
       '';
 
@@ -44,7 +47,12 @@ in {
         Restart = "always";
         Type = "simple";
         TimeoutSec = 60;
         Restart = "always";
         Type = "simple";
         TimeoutSec = 60;
-        ExecStartPre = "+${pkgs.coreutils}/bin/chown -R etherpad-lite:etherpad-lite /var/secrets/webapps/tools-etherpad /var/secrets/webapps/tools-etherpad-sessionkey /var/secrets/webapps/tools-etherpad-apikey";
+        # Use ReadWritePaths= instead if varDir is outside of /var/lib
+        StateDirectory="etherpad-lite";
+        ExecStartPre = [
+          "+${pkgs.coreutils}/bin/install -d -m 0755 -o etherpad-lite -g etherpad-lite ${varDir}/ep_initialized"
+          "+${pkgs.coreutils}/bin/chown -R etherpad-lite:etherpad-lite ${varDir} /var/secrets/webapps/tools-etherpad /var/secrets/webapps/tools-etherpad-sessionkey /var/secrets/webapps/tools-etherpad-apikey"
+        ];
       };
     };
 
       };
     };
 
index 35220eee210e3ae67674dcfc748c51992ee9409a..c6f3704c5f4fa324d5dfa5584287cb9adc5d01d3 100644 (file)
@@ -119,10 +119,7 @@ let
         '';
     }
   ];
         '';
     }
   ];
-  webappDir = (etherpad-lite.override {
-    session_key = "/var/secrets/webapps/tools-etherpad-sessionkey";
-    api_key = "/var/secrets/webapps/tools-etherpad-apikey";
-  }).withModules etherpad-lite-modules;
+  webappDir = etherpad-lite.withModules (builtins.attrValues etherpad-lite-modules);
 in
   {
     inherit webappDir keys listenPort;
 in
   {
     inherit webappDir keys listenPort;
diff --git a/pkgs/impure/etherpad-lite/default.nix b/pkgs/impure/etherpad-lite/default.nix
deleted file mode 100644 (file)
index c85bd7e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-{ session_key ? "/etc/etherpad-lite/SESSIONKEY.txt"
-, api_key ? "/etc/etherpad-lite/APIKEY.txt"
-, stdenv, mylibs, cacert, nodejs, python, fetchurl }:
-let
-  jquery = fetchurl {
-    url = https://code.jquery.com/jquery-1.9.1.js;
-    sha256 = "0h4dk67yc9d0kadqxb6b33585f3x3559p6qmp70l00qwq030vn3v";
-  };
-  withModules = modules: package.overrideAttrs(old: {
-    buildPhase = old.buildPhase +
-      builtins.concatStringsSep "\n"
-        (map (n: "npm install ${n}; touch node_modules/${n}/.ep_initialized") modules);
-    # FIXME: ln -s don’t seem to work, etherpad seems
-    # unable to "touch" them after initialization
-    passthru = old.passthru // {
-      inherit modules;
-      withModules = moreModules: old.withModules (moreModules ++ modules);
-    };
-  });
-  package = stdenv.mkDerivation (mylibs.fetchedGithub ./etherpad-lite.json // rec {
-    __noChroot = true;
-    patches = [ ./libreoffice_patch.diff ];
-    buildPhase = ''
-      export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
-      export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
-      export HOME=$PWD
-
-      touch src/.ep_initialized
-      cp -v src/static/custom/js.template src/static/custom/index.js
-      cp -v src/static/custom/js.template src/static/custom/pad.js
-      cp -v src/static/custom/js.template src/static/custom/timeslider.js
-      cp -v src/static/custom/css.template src/static/custom/index.css
-      cp -v src/static/custom/css.template src/static/custom/pad.css
-      cp -v src/static/custom/css.template src/static/custom/timeslider.css
-
-      sed -i 's/var\/dirty.db/\/var\/lib\/etherpad-lite\/dirty.db/g' \
-        settings.json.template
-
-      mkdir -v node_modules
-      ln -s ../src node_modules/ep_etherpad-lite
-
-      node bin/doc/generate doc/index.md --format=html \
-        --template=doc/template.html > documentation.html
-
-      cd src
-      npm install
-      cd ..
-      '';
-    installPhase = ''
-      mkdir -p $out
-      install -t $out/src/ -vDm 644 src/.ep_initialized
-      cp -a node_modules $out/
-      cp -a src/* $out/src/
-      ln -sf ${session_key} $out/SESSIONKEY.txt
-      ln -sf ${api_key} $out/APIKEY.txt
-      cp ${jquery} $out/src/static/js/jquery.js
-
-      mkdir $out/doc
-      install -t "$out/doc/" \
-        -vDm 644 {CHANGELOG,CONTRIBUTING,README}.md \
-        -vDm 644 documentation.html
-    '';
-    buildInputs = [ nodejs python ];
-    passthru = {
-      modules = [];
-      inherit withModules;
-    };
-  });
-in package
index a771aeeb9e41bed090b5fab34dec25b96f6805f4..11bd0ce0ca02e981f9be6e3992955134eef866f9 100644 (file)
@@ -13,31 +13,23 @@ rec {
     lib.attrsets.genAttrs names
       (name: callPackage (./dokuwiki/plugins + "/${name}.nix") {});
 
     lib.attrsets.genAttrs names
       (name: callPackage (./dokuwiki/plugins + "/${name}.nix") {});
 
-  etherpad-lite = callPackage ../impure/etherpad-lite {};
-  etherpad-lite-with-modules = etherpad-lite.withModules etherpad-lite-modules;
-  etherpad-lite-modules = [
-    "ep_aa_file_menu_toolbar"
-    "ep_adminpads"
-    "ep_align"
-    "ep_bookmark"
-    "ep_clear_formatting"
-    "ep_colors"
-    "ep_copy_paste_select_all"
-    "ep_cursortrace"
-    "ep_embedmedia"
-    "ep_font_family"
-    "ep_font_size"
-    "ep_headings2"
-    "ep_ldapauth"
-    "ep_line_height"
-    "ep_markdown"
-    "ep_previewimages"
-    "ep_ruler"
-    "ep_scrollto"
-    "ep_set_title_on_pad"
-    "ep_subscript_and_superscript"
-    "ep_timesliderdiff"
+  etherpad-lite = callPackage ./etherpad-lite {};
+  etherpad-lite-with-modules = etherpad-lite.withModules (builtins.attrValues etherpad-lite-modules);
+  etherpad-lite-modules = let
+    nodeEnv = callPackage mylibs.nodeEnv {};
+    names = [
+      "ep_aa_file_menu_toolbar" "ep_adminpads" "ep_align" "ep_bookmark"
+      "ep_clear_formatting" "ep_colors" "ep_copy_paste_select_all"
+      "ep_cursortrace" "ep_embedmedia" "ep_font_family" "ep_font_size"
+      "ep_headings2" "ep_ldapauth" "ep_line_height" "ep_markdown"
+      "ep_previewimages" "ep_ruler" "ep_scrollto" "ep_set_title_on_pad"
+      "ep_subscript_and_superscript" "ep_timesliderdiff"
     ];
     ];
+  in
+    # nix files are built using node2nix -i node-packages.json
+    lib.attrsets.genAttrs names
+    (name: (callPackage (./etherpad-lite/modules + "/${name}/node-packages.nix") { inherit nodeEnv; })
+      .${name}.overrideAttrs(old: { passthru = (old.passthru or {}) // { moduleName = name; }; }));
 
   infcloud = callPackage ./infcloud {};
 
 
   infcloud = callPackage ./infcloud {};
 
diff --git a/pkgs/webapps/etherpad-lite/default.nix b/pkgs/webapps/etherpad-lite/default.nix
new file mode 100644 (file)
index 0000000..ab8e84c
--- /dev/null
@@ -0,0 +1,61 @@
+{ varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too!
+, stdenv, callPackage, mylibs, fetchurl }:
+let
+  jquery = fetchurl {
+    url = https://code.jquery.com/jquery-1.9.1.js;
+    sha256 = "0h4dk67yc9d0kadqxb6b33585f3x3559p6qmp70l00qwq030vn3v";
+  };
+  withModules = modules: package.overrideAttrs(old: {
+    installPhase = let
+      modInst = n:
+      let n' = n.override {
+        postInstall = ''
+          if [ ! -f $out/lib/node_modules/${n.moduleName}/.ep_initialized ]; then
+            ln -s ${varDir}/ep_initialized/${n.moduleName} $out/lib/node_modules/${n.moduleName}/.ep_initialized
+          fi
+        '';
+      };
+        in "cp -a ${n'}/lib/node_modules/${n.moduleName} $out/node_modules";
+    in old.installPhase + builtins.concatStringsSep "\n" (map modInst modules);
+    passthru = old.passthru // {
+      inherit modules;
+      withModules = moreModules: old.withModules (moreModules ++ modules);
+    };
+  });
+  # built using node2nix -l package-lock.json
+  # and changing "./." to "src"
+  node-environment = (callPackage ./node-packages.nix {
+    nodeEnv = callPackage mylibs.nodeEnv {};
+    src = stdenv.mkDerivation (mylibs.fetchedGithub ./etherpad-lite.json // rec {
+      patches = [ ./libreoffice_patch.diff ];
+      buildPhase = ''
+        touch src/.ep_initialized
+        cp -v src/static/custom/js.template src/static/custom/index.js
+        cp -v src/static/custom/js.template src/static/custom/pad.js
+        cp -v src/static/custom/js.template src/static/custom/timeslider.js
+        cp -v src/static/custom/css.template src/static/custom/index.css
+        cp -v src/static/custom/css.template src/static/custom/pad.css
+        cp -v src/static/custom/css.template src/static/custom/timeslider.css
+        '';
+      installPhase = ''
+        cp -a src/ $out
+        '';
+    });
+  }).package;
+  package = stdenv.mkDerivation rec {
+    name = (mylibs.fetchedGithub ./etherpad-lite.json).name;
+    src = node-environment;
+    installPhase = ''
+      mkdir -p $out
+      mkdir $out/node_modules
+      cp -a lib/node_modules/ep_etherpad-lite $out/src
+      chmod u+w $out/src/static/js/
+      cp ${jquery} $out/src/static/js/jquery.js
+      ln -s ../src $out/node_modules/ep_etherpad-lite
+      '';
+    passthru = {
+      modules = [];
+      inherit varDir withModules;
+    };
+  };
+in package
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json
new file mode 100644 (file)
index 0000000..9b0f681
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_aa_file_menu_toolbar" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix
new file mode 100644 (file)
index 0000000..ddaf6fe
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_aa_file_menu_toolbar = nodeEnv.buildNodePackage {
+    name = "ep_aa_file_menu_toolbar";
+    packageName = "ep_aa_file_menu_toolbar";
+    version = "0.1.6";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_aa_file_menu_toolbar/-/ep_aa_file_menu_toolbar-0.1.6.tgz";
+      sha1 = "aaa374d9429c9b2382311fab69e0ff819b53b7b0";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "File / Menu style toolbar";
+      homepage = https://github.com/JohnMcLear/ep_file_menu_toolbar;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.json
new file mode 100644 (file)
index 0000000..7643607
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_adminpads" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.nix
new file mode 100644 (file)
index 0000000..562953d
--- /dev/null
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_adminpads = nodeEnv.buildNodePackage {
+    name = "ep_adminpads";
+    packageName = "ep_adminpads";
+    version = "0.0.12";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_adminpads/-/ep_adminpads-0.0.12.tgz";
+      sha1 = "e8a04b6c77f76d9d8703c9b40e656950f2f5c125";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Gives the ability to list and administrate all pads on admin page";
+      homepage = "https://github.com/spcsser/ep_adminpads#readme";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.json
new file mode 100644 (file)
index 0000000..9405dd2
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_align" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_align/node-packages.nix
new file mode 100644 (file)
index 0000000..9d045f2
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_align = nodeEnv.buildNodePackage {
+    name = "ep_align";
+    packageName = "ep_align";
+    version = "0.0.24";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_align/-/ep_align-0.0.24.tgz";
+      sha512 = "hQwIerjWtcY3qWfqCsm+MIk/eo/hfpOl7mkGS+YZFJvljv4xuDk8QK8gnYY7RLtiKGo8jN8fKlht2w6DCLosjg==";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Add Left/Center/Right/Justify to lines of text in a pad";
+      homepage = "https://github.com/johnmclear/ep_align#readme";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.json
new file mode 100644 (file)
index 0000000..80745ca
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_bookmark" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_bookmark/node-packages.nix
new file mode 100644 (file)
index 0000000..9b3c2cd
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_bookmark = nodeEnv.buildNodePackage {
+    name = "ep_bookmark";
+    packageName = "ep_bookmark";
+    version = "1.0.2";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_bookmark/-/ep_bookmark-1.0.2.tgz";
+      sha1 = "14ef41ab3eccc3c387f40a0093683fc6497cb560";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Etherpad plugin for users to save a list of bookmarks of their visited pads locally in the browser's local storage";
+      homepage = "https://github.com/Gared/ep_bookmark#readme";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.json
new file mode 100644 (file)
index 0000000..07c0662
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_clear_formatting" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_clear_formatting/node-packages.nix
new file mode 100644 (file)
index 0000000..03d364a
--- /dev/null
@@ -0,0 +1,24 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_clear_formatting = nodeEnv.buildNodePackage {
+    name = "ep_clear_formatting";
+    packageName = "ep_clear_formatting";
+    version = "0.0.2";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_clear_formatting/-/ep_clear_formatting-0.0.2.tgz";
+      sha1 = "b16970b9c6be01246d23cb5a81777aa220d06fc4";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Clear formatting on a selection, this plugin requires the file menu";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.json
new file mode 100644 (file)
index 0000000..b513f5c
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_colors" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_colors/node-packages.nix
new file mode 100644 (file)
index 0000000..8840d0d
--- /dev/null
@@ -0,0 +1,24 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_colors = nodeEnv.buildNodePackage {
+    name = "ep_colors";
+    packageName = "ep_colors";
+    version = "0.0.3";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_colors/-/ep_colors-0.0.3.tgz";
+      sha1 = "aa95e1b12e009ed6b05d0ccb188ca4829e799780";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "add colors to the etherpad";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json
new file mode 100644 (file)
index 0000000..f6da8df
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_copy_paste_select_all" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix
new file mode 100644 (file)
index 0000000..82b7b91
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_copy_paste_select_all = nodeEnv.buildNodePackage {
+    name = "ep_copy_paste_select_all";
+    packageName = "ep_copy_paste_select_all";
+    version = "0.0.4";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_copy_paste_select_all/-/ep_copy_paste_select_all-0.0.4.tgz";
+      sha1 = "41b89ece9da8e549a7ca4b11cdfa0a27344f21c8";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Add support to do Copy, Paste, Select All and Find and Replace, this plugin requires the file menu";
+      homepage = https://github.com/ether/ep_copy_paste_select_all;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.json
new file mode 100644 (file)
index 0000000..b409581
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_cursortrace" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_cursortrace/node-packages.nix
new file mode 100644 (file)
index 0000000..40d0eec
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_cursortrace = nodeEnv.buildNodePackage {
+    name = "ep_cursortrace";
+    packageName = "ep_cursortrace";
+    version = "2.0.15";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_cursortrace/-/ep_cursortrace-2.0.15.tgz";
+      sha1 = "fa374f2d4be2708af998fbb407633c55d9031326";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Show cursor/caret movements of other users in real time";
+      homepage = https://github.com/redhog/ep_cursortrace;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.json
new file mode 100644 (file)
index 0000000..e4961d3
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_embedmedia" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_embedmedia/node-packages.nix
new file mode 100644 (file)
index 0000000..caa7982
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_embedmedia = nodeEnv.buildNodePackage {
+    name = "ep_embedmedia";
+    packageName = "ep_embedmedia";
+    version = "0.0.4";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_embedmedia/-/ep_embedmedia-0.0.4.tgz";
+      sha1 = "b24bf0fe9702d21aa73079890e93183efc6a0975";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Embed media (youtube, vimeo etc)";
+      homepage = https://github.com/JohnMcLear/ep_embedmedia;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.json
new file mode 100644 (file)
index 0000000..a719a45
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_font_family" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_font_family/node-packages.nix
new file mode 100644 (file)
index 0000000..9465a9f
--- /dev/null
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_font_family = nodeEnv.buildNodePackage {
+    name = "ep_font_family";
+    packageName = "ep_font_family";
+    version = "0.2.7";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_font_family/-/ep_font_family-0.2.7.tgz";
+      sha1 = "a31c06b1684c7fd65c1d5bf96bcf99b6faa79893";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Add support for different Fonts";
+      homepage = https://github.com/JohnMcLear/ep_font_family;
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.json
new file mode 100644 (file)
index 0000000..472df3b
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_font_size" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_font_size/node-packages.nix
new file mode 100644 (file)
index 0000000..03061ad
--- /dev/null
@@ -0,0 +1,24 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_font_size = nodeEnv.buildNodePackage {
+    name = "ep_font_size";
+    packageName = "ep_font_size";
+    version = "0.1.11";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_font_size/-/ep_font_size-0.1.11.tgz";
+      sha1 = "997c079bab97e04196c9db43b3bb238c804d8126";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Add support for Font Sizes";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.json
new file mode 100644 (file)
index 0000000..adbc268
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_headings2" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_headings2/node-packages.nix
new file mode 100644 (file)
index 0000000..17af4c6
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_headings2 = nodeEnv.buildNodePackage {
+    name = "ep_headings2";
+    packageName = "ep_headings2";
+    version = "0.0.9";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_headings2/-/ep_headings2-0.0.9.tgz";
+      sha1 = "115f4162a2e49808a0cee50e04aff26c591db0d4";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Adds heading support to Etherpad Lite.  Includes improved suppot for export, i18n etc.";
+      homepage = https://github.com/johnmclear/ep_headings2;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.json
new file mode 100644 (file)
index 0000000..cacc12a
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_ldapauth" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_ldapauth/node-packages.nix
new file mode 100644 (file)
index 0000000..d294a8f
--- /dev/null
@@ -0,0 +1,388 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "asn1-0.2.3" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
+        sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
+      };
+    };
+    "assert-plus-0.1.5" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
+        sha1 = "ee74009413002d84cec7219c6ac811812e723160";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "async-stacktrace-0.0.2" = {
+      name = "async-stacktrace";
+      packageName = "async-stacktrace";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async-stacktrace/-/async-stacktrace-0.0.2.tgz";
+        sha1 = "8bbb9787e3b38c836c729a7e9d7c08630db5d1ef";
+      };
+    };
+    "backoff-2.5.0" = {
+      name = "backoff";
+      packageName = "backoff";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
+        sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
+      };
+    };
+    "balanced-match-1.0.0" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+      };
+    };
+    "bunyan-1.8.12" = {
+      name = "bunyan";
+      packageName = "bunyan";
+      version = "1.8.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
+        sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "dtrace-provider-0.7.1" = {
+      name = "dtrace-provider";
+      packageName = "dtrace-provider";
+      version = "0.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.7.1.tgz";
+        sha1 = "c06b308f2f10d5d5838aec9c571e5d588dc71d04";
+      };
+    };
+    "dtrace-provider-0.8.7" = {
+      name = "dtrace-provider";
+      packageName = "dtrace-provider";
+      version = "0.8.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz";
+        sha1 = "dc939b4d3e0620cfe0c1cd803d0d2d7ed04ffd04";
+      };
+    };
+    "extsprintf-1.2.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
+        sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
+      };
+    };
+    "glob-6.0.4" = {
+      name = "glob";
+      packageName = "glob";
+      version = "6.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
+        sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "ldap-filter-0.2.2" = {
+      name = "ldap-filter";
+      packageName = "ldap-filter";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
+        sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
+      };
+    };
+    "ldapjs-1.0.1" = {
+      name = "ldapjs";
+      packageName = "ldapjs";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.1.tgz";
+        sha1 = "352b812ae74b0a8e96549a4b896060eee1b9a546";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+      };
+    };
+    "minimist-0.0.8" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "0.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
+        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+      };
+    };
+    "mkdirp-0.5.1" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    };
+    "moment-2.24.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.24.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
+        sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
+      };
+    };
+    "mv-2.1.1" = {
+      name = "mv";
+      packageName = "mv";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
+        sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
+      };
+    };
+    "nan-2.13.2" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.13.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz";
+        sha512 = "TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==";
+      };
+    };
+    "ncp-2.0.0" = {
+      name = "ncp";
+      packageName = "ncp";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
+        sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "precond-0.2.3" = {
+      name = "precond";
+      packageName = "precond";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
+        sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
+      };
+    };
+    "rimraf-2.4.5" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.4.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
+        sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
+      };
+    };
+    "safe-json-stringify-1.2.0" = {
+      name = "safe-json-stringify";
+      packageName = "safe-json-stringify";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
+        sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
+      };
+    };
+    "vasync-1.6.4" = {
+      name = "vasync";
+      packageName = "vasync";
+      version = "1.6.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
+        sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "verror-1.6.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
+        sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+  };
+in
+{
+  ep_ldapauth = nodeEnv.buildNodePackage {
+    name = "ep_ldapauth";
+    packageName = "ep_ldapauth";
+    version = "0.3.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_ldapauth/-/ep_ldapauth-0.3.0.tgz";
+      sha1 = "8b34ea34b20ae97d53d753cc7d1f6f191800e3b0";
+    };
+    dependencies = [
+      sources."asn1-0.2.3"
+      sources."assert-plus-1.0.0"
+      sources."async-stacktrace-0.0.2"
+      sources."backoff-2.5.0"
+      sources."balanced-match-1.0.0"
+      sources."brace-expansion-1.1.11"
+      (sources."bunyan-1.8.12" // {
+        dependencies = [
+          sources."dtrace-provider-0.8.7"
+        ];
+      })
+      sources."concat-map-0.0.1"
+      sources."core-util-is-1.0.2"
+      sources."dashdash-1.14.1"
+      sources."dtrace-provider-0.7.1"
+      sources."extsprintf-1.2.0"
+      sources."glob-6.0.4"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.3"
+      (sources."ldap-filter-0.2.2" // {
+        dependencies = [
+          sources."assert-plus-0.1.5"
+        ];
+      })
+      sources."ldapjs-1.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-0.0.8"
+      sources."mkdirp-0.5.1"
+      sources."moment-2.24.0"
+      sources."mv-2.1.1"
+      sources."nan-2.13.2"
+      sources."ncp-2.0.0"
+      sources."once-1.4.0"
+      sources."path-is-absolute-1.0.1"
+      sources."precond-0.2.3"
+      sources."rimraf-2.4.5"
+      sources."safe-json-stringify-1.2.0"
+      (sources."vasync-1.6.4" // {
+        dependencies = [
+          sources."verror-1.6.0"
+        ];
+      })
+      sources."verror-1.10.0"
+      sources."wrappy-1.0.2"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Hooks into etherpad lite auth to provide LDAP authentication.";
+      homepage = "https://github.com/tykeal/ep_ldapauth#readme";
+      license = "GPL-2.0";
+    };
+    production = true;
+    bypassCache = true;
+  };
+}
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.json
new file mode 100644 (file)
index 0000000..307c2e7
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_line_height" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_line_height/node-packages.nix
new file mode 100644 (file)
index 0000000..bfea115
--- /dev/null
@@ -0,0 +1,24 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_line_height = nodeEnv.buildNodePackage {
+    name = "ep_line_height";
+    packageName = "ep_line_height";
+    version = "0.0.4";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_line_height/-/ep_line_height-0.0.4.tgz";
+      sha1 = "8afbb441e6d65db97d2335887f9352b10b5d22d2";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Change the line height";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.json
new file mode 100644 (file)
index 0000000..1c5526c
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_markdown" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_markdown/node-packages.nix
new file mode 100644 (file)
index 0000000..7b165d8
--- /dev/null
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_markdown = nodeEnv.buildNodePackage {
+    name = "ep_markdown";
+    packageName = "ep_markdown";
+    version = "0.0.10";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_markdown/-/ep_markdown-0.0.10.tgz";
+      sha1 = "d3f624f7bba64d350ff028ed2413ad3cd5eeb91e";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Edit and Export as Markdown in Etherpad";
+      homepage = https://github.com/johnmclear/ep_markdown;
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.json
new file mode 100644 (file)
index 0000000..cc14ec4
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_previewimages" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_previewimages/node-packages.nix
new file mode 100644 (file)
index 0000000..4790d43
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_previewimages = nodeEnv.buildNodePackage {
+    name = "ep_previewimages";
+    packageName = "ep_previewimages";
+    version = "0.0.9";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_previewimages/-/ep_previewimages-0.0.9.tgz";
+      sha1 = "417d96249c50f8a59a1ef6c640e4ac98c26a106b";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Image previewer, paste the URL of an image or upload an image using ep_fileupload";
+      homepage = https://github.com/JohnMcLear/ep_previewimages;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.json
new file mode 100644 (file)
index 0000000..d31b236
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_ruler" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_ruler/node-packages.nix
new file mode 100644 (file)
index 0000000..c8697d4
--- /dev/null
@@ -0,0 +1,27 @@
+{stdenv, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_ruler = nodeEnv.buildNodePackage {
+    name = "ep_ruler";
+    packageName = "ep_ruler";
+    version = "0.0.2";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_ruler/-/ep_ruler-0.0.2.tgz";
+      sha1 = "5af10dfe0b5f33459566ce649cc483c680ed7811";
+    };
+    preRebuild = ''
+      sed -i -e 's/"dependencies"/"peerDependencies"/' package.json
+      '';
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Adds a ruler to Etherpad lite";
+      homepage = https://github.com/iquidus/ep_ruler;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
+
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.json
new file mode 100644 (file)
index 0000000..6d068d0
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_scrollto" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.nix
new file mode 100644 (file)
index 0000000..ba50b56
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_scrollto = nodeEnv.buildNodePackage {
+    name = "ep_scrollto";
+    packageName = "ep_scrollto";
+    version = "0.0.6";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_scrollto/-/ep_scrollto-0.0.6.tgz";
+      sha1 = "6b57e2243cb8477e1437c348a94cb6bcc162f91d";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Scroll to a specific line number based on a parameter of lineNumber in the URL IE http://test.com/p/foo#lineNumber=10 -- Users can click on the line number to get a link";
+      homepage = https://github.com/johnmclear/ep_scrollto;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json
new file mode 100644 (file)
index 0000000..8755cd2
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_set_title_on_pad" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix
new file mode 100644 (file)
index 0000000..b03b555
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_set_title_on_pad = nodeEnv.buildNodePackage {
+    name = "ep_set_title_on_pad";
+    packageName = "ep_set_title_on_pad";
+    version = "0.1.4";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_set_title_on_pad/-/ep_set_title_on_pad-0.1.4.tgz";
+      sha1 = "b89b354242509c0cc825b7532de505a883bab2b3";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Set the title on a pad in Etherpad, also includes real time updates to the UI";
+      homepage = https://github.com/JohnMcLear/ep_set_title_on_pad;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json
new file mode 100644 (file)
index 0000000..aa1cf21
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_subscript_and_superscript" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix
new file mode 100644 (file)
index 0000000..89664e5
--- /dev/null
@@ -0,0 +1,24 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_subscript_and_superscript = nodeEnv.buildNodePackage {
+    name = "ep_subscript_and_superscript";
+    packageName = "ep_subscript_and_superscript";
+    version = "0.0.3";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_subscript_and_superscript/-/ep_subscript_and_superscript-0.0.3.tgz";
+      sha1 = "47f74a242fe8be5911391943f718eab81c390620";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Add support for Subscript and Superscript";
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.json
new file mode 100644 (file)
index 0000000..d50e856
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_timesliderdiff" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix
new file mode 100644 (file)
index 0000000..b40c971
--- /dev/null
@@ -0,0 +1,25 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_timesliderdiff = nodeEnv.buildNodePackage {
+    name = "ep_timesliderdiff";
+    packageName = "ep_timesliderdiff";
+    version = "0.0.5";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_timesliderdiff/-/ep_timesliderdiff-0.0.5.tgz";
+      sha1 = "f8e0543677f7ac643936a2afce9f370d08a43310";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "See a diff view showing the changes between the latest pad and a revision";
+      homepage = https://github.com/JohnMcLear/ep_timesliderdiff;
+    };
+    production = true;
+    bypassCache = false;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/node-packages.nix b/pkgs/webapps/etherpad-lite/node-packages.nix
new file mode 100644 (file)
index 0000000..25f2d2d
--- /dev/null
@@ -0,0 +1,3288 @@
+# This file has been generated by node2nix 1.6.0. Do not edit!
+
+{src, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "abab-1.0.4" = {
+      name = "abab";
+      packageName = "abab";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz";
+        sha1 = "5faad9c2c07f60dd76770f71cf025b62a63cfd4e";
+      };
+    };
+    "accepts-1.3.3" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz";
+        sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca";
+      };
+    };
+    "accepts-1.3.7" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
+        sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
+      };
+    };
+    "acorn-2.7.0" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "2.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz";
+        sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
+      };
+    };
+    "acorn-globals-1.0.9" = {
+      name = "acorn-globals";
+      packageName = "acorn-globals";
+      version = "1.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz";
+        sha1 = "55bb5e98691507b74579d0513413217c380c54cf";
+      };
+    };
+    "after-0.8.2" = {
+      name = "after";
+      packageName = "after";
+      version = "0.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/after/-/after-0.8.2.tgz";
+        sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
+      };
+    };
+    "agentkeepalive-3.5.2" = {
+      name = "agentkeepalive";
+      packageName = "agentkeepalive";
+      version = "3.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz";
+        sha512 = "e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==";
+      };
+    };
+    "ajv-5.5.2" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "5.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz";
+        sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
+      };
+    };
+    "ajv-6.10.0" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "6.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz";
+        sha512 = "nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==";
+      };
+    };
+    "align-text-0.1.4" = {
+      name = "align-text";
+      packageName = "align-text";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz";
+        sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
+      };
+    };
+    "amdefine-1.0.1" = {
+      name = "amdefine";
+      packageName = "amdefine";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
+        sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
+      };
+    };
+    "ansi-regex-2.1.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    };
+    "ansi-styles-2.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
+        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+      };
+    };
+    "array-flatten-1.1.1" = {
+      name = "array-flatten";
+      packageName = "array-flatten";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
+        sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
+      };
+    };
+    "arraybuffer.slice-0.0.6" = {
+      name = "arraybuffer.slice";
+      packageName = "arraybuffer.slice";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz";
+        sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca";
+      };
+    };
+    "asn1-0.2.4" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
+        sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "async-0.1.15" = {
+      name = "async";
+      packageName = "async";
+      version = "0.1.15";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.1.15.tgz";
+        sha1 = "2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3";
+      };
+    };
+    "async-0.2.10" = {
+      name = "async";
+      packageName = "async";
+      version = "0.2.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
+        sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
+      };
+    };
+    "async-0.9.0" = {
+      name = "async";
+      packageName = "async";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.9.0.tgz";
+        sha1 = "ac3613b1da9bed1b47510bb4651b8931e47146c7";
+      };
+    };
+    "async-stacktrace-0.0.2" = {
+      name = "async-stacktrace";
+      packageName = "async-stacktrace";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async-stacktrace/-/async-stacktrace-0.0.2.tgz";
+        sha1 = "8bbb9787e3b38c836c729a7e9d7c08630db5d1ef";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "aws-sign2-0.7.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    };
+    "aws4-1.8.0" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz";
+        sha512 = "ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==";
+      };
+    };
+    "backo2-1.0.2" = {
+      name = "backo2";
+      packageName = "backo2";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz";
+        sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
+      };
+    };
+    "base64-arraybuffer-0.1.5" = {
+      name = "base64-arraybuffer";
+      packageName = "base64-arraybuffer";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
+        sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
+      };
+    };
+    "base64id-1.0.0" = {
+      name = "base64id";
+      packageName = "base64id";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz";
+        sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
+      };
+    };
+    "bcrypt-pbkdf-1.0.2" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    };
+    "better-assert-1.0.2" = {
+      name = "better-assert";
+      packageName = "better-assert";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz";
+        sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
+      };
+    };
+    "bignumber.js-4.0.4" = {
+      name = "bignumber.js";
+      packageName = "bignumber.js";
+      version = "4.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.4.tgz";
+        sha512 = "LDXpJKVzEx2/OqNbG9mXBNvHuiRL4PzHCGfnANHMJ+fv68Ads3exDVJeGDJws+AoNEuca93bU3q+S0woeUaCdg==";
+      };
+    };
+    "binary-search-1.3.5" = {
+      name = "binary-search";
+      packageName = "binary-search";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/binary-search/-/binary-search-1.3.5.tgz";
+        sha512 = "RHFP0AdU6KAB0CCZsRMU2CJTk2EpL8GLURT+4gilpjr1f/7M91FgUMnXuQLmf3OKLet34gjuNFwO7e4agdX5pw==";
+      };
+    };
+    "blob-0.0.4" = {
+      name = "blob";
+      packageName = "blob";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz";
+        sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
+      };
+    };
+    "bluebird-2.11.0" = {
+      name = "bluebird";
+      packageName = "bluebird";
+      version = "2.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz";
+        sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
+      };
+    };
+    "body-parser-1.18.2" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.18.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz";
+        sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
+      };
+    };
+    "boolbase-1.0.0" = {
+      name = "boolbase";
+      packageName = "boolbase";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz";
+        sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
+      };
+    };
+    "boom-4.3.1" = {
+      name = "boom";
+      packageName = "boom";
+      version = "4.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
+        sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
+      };
+    };
+    "boom-5.2.0" = {
+      name = "boom";
+      packageName = "boom";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
+        sha512 = "Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==";
+      };
+    };
+    "browser-request-0.3.3" = {
+      name = "browser-request";
+      packageName = "browser-request";
+      version = "0.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
+        sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
+      };
+    };
+    "buffer-writer-1.0.1" = {
+      name = "buffer-writer";
+      packageName = "buffer-writer";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz";
+        sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
+      };
+    };
+    "bytes-3.0.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";
+        sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
+      };
+    };
+    "callsite-1.0.0" = {
+      name = "callsite";
+      packageName = "callsite";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz";
+        sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
+      };
+    };
+    "camelcase-1.2.1" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz";
+        sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
+      };
+    };
+    "caseless-0.12.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    };
+    "cassandra-driver-2.0.1" = {
+      name = "cassandra-driver";
+      packageName = "cassandra-driver";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-2.0.1.tgz";
+        sha1 = "072759ab837628dcbcb5bc678283dcc922c767e2";
+      };
+    };
+    "center-align-0.1.3" = {
+      name = "center-align";
+      packageName = "center-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz";
+        sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
+      };
+    };
+    "chalk-1.1.3" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
+        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+      };
+    };
+    "channels-0.0.4" = {
+      name = "channels";
+      packageName = "channels";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/channels/-/channels-0.0.4.tgz";
+        sha1 = "1bee323edea152bb9ef04f41bc6e6b0f5948a941";
+      };
+    };
+    "cheerio-0.20.0" = {
+      name = "cheerio";
+      packageName = "cheerio";
+      version = "0.20.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz";
+        sha1 = "5c710f2bab95653272842ba01c6ea61b3545ec35";
+      };
+    };
+    "clean-css-3.4.19" = {
+      name = "clean-css";
+      packageName = "clean-css";
+      version = "3.4.19";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clean-css/-/clean-css-3.4.19.tgz";
+        sha1 = "c32a8a13ca3b824609b14306a5da76d8793c7874";
+      };
+    };
+    "cliui-2.1.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz";
+        sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
+      };
+    };
+    "cloudant-follow-0.17.0" = {
+      name = "cloudant-follow";
+      packageName = "cloudant-follow";
+      version = "0.17.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.17.0.tgz";
+        sha512 = "JQ1xvKAHh8rsnSVBjATLCjz/vQw1sWBGadxr2H69yFMwD7hShUGDwwEefdypaxroUJ/w6t1cSwilp/hRUxEW8w==";
+      };
+    };
+    "co-4.6.0" = {
+      name = "co";
+      packageName = "co";
+      version = "4.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
+        sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
+      };
+    };
+    "combined-stream-1.0.7" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz";
+        sha512 = "brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==";
+      };
+    };
+    "commander-2.8.1" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz";
+        sha1 = "06be367febfda0c330aa1e2a072d3dc9762425d4";
+      };
+    };
+    "component-bind-1.0.0" = {
+      name = "component-bind";
+      packageName = "component-bind";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz";
+        sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
+      };
+    };
+    "component-emitter-1.1.2" = {
+      name = "component-emitter";
+      packageName = "component-emitter";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz";
+        sha1 = "296594f2753daa63996d2af08d15a95116c9aec3";
+      };
+    };
+    "component-emitter-1.2.1" = {
+      name = "component-emitter";
+      packageName = "component-emitter";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz";
+        sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
+      };
+    };
+    "component-inherit-0.0.3" = {
+      name = "component-inherit";
+      packageName = "component-inherit";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz";
+        sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
+      };
+    };
+    "content-disposition-0.5.2" = {
+      name = "content-disposition";
+      packageName = "content-disposition";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz";
+        sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
+      };
+    };
+    "content-type-1.0.4" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+        sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
+      };
+    };
+    "cookie-0.1.2" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";
+        sha1 = "72fec3d24e48a3432073d90c12642005061004b1";
+      };
+    };
+    "cookie-0.3.1" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
+        sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+      };
+    };
+    "cookie-parser-1.3.4" = {
+      name = "cookie-parser";
+      packageName = "cookie-parser";
+      version = "1.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.4.tgz";
+        sha1 = "193035a5be97117a21709b3aa737f6132717bda6";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "crc-3.4.4" = {
+      name = "crc";
+      packageName = "crc";
+      version = "3.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz";
+        sha1 = "9da1e980e3bd44fc5c93bf5ab3da3378d85e466b";
+      };
+    };
+    "cryptiles-3.1.4" = {
+      name = "cryptiles";
+      packageName = "cryptiles";
+      version = "3.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz";
+        sha512 = "8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==";
+      };
+    };
+    "css-select-1.2.0" = {
+      name = "css-select";
+      packageName = "css-select";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz";
+        sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
+      };
+    };
+    "css-what-2.1.3" = {
+      name = "css-what";
+      packageName = "css-what";
+      version = "2.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz";
+        sha512 = "a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==";
+      };
+    };
+    "cssom-0.3.6" = {
+      name = "cssom";
+      packageName = "cssom";
+      version = "0.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz";
+        sha512 = "DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==";
+      };
+    };
+    "cssstyle-0.2.37" = {
+      name = "cssstyle";
+      packageName = "cssstyle";
+      version = "0.2.37";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz";
+        sha1 = "541097234cb2513c83ceed3acddc27ff27987d54";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "debug-2.2.0" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
+        sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
+      };
+    };
+    "debug-2.3.3" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz";
+        sha1 = "40c453e67e6e13c901ddec317af8986cda9eff8c";
+      };
+    };
+    "debug-2.6.9" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.6.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+      };
+    };
+    "debug-3.2.6" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
+        sha512 = "mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==";
+      };
+    };
+    "decamelize-1.2.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    };
+    "deep-is-0.1.3" = {
+      name = "deep-is";
+      packageName = "deep-is";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
+        sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+      };
+    };
+    "define-properties-1.1.3" = {
+      name = "define-properties";
+      packageName = "define-properties";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz";
+        sha512 = "3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "depd-1.1.1" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz";
+        sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
+      };
+    };
+    "depd-1.1.2" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
+        sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
+      };
+    };
+    "destroy-1.0.4" = {
+      name = "destroy";
+      packageName = "destroy";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    };
+    "dirty-0.9.9" = {
+      name = "dirty";
+      packageName = "dirty";
+      version = "0.9.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dirty/-/dirty-0.9.9.tgz";
+        sha1 = "f785804c4cf7907220cb10fa576b22329feda545";
+      };
+    };
+    "dom-serializer-0.1.1" = {
+      name = "dom-serializer";
+      packageName = "dom-serializer";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz";
+        sha512 = "l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==";
+      };
+    };
+    "domelementtype-1.3.1" = {
+      name = "domelementtype";
+      packageName = "domelementtype";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz";
+        sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
+      };
+    };
+    "domhandler-2.3.0" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
+        sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
+      };
+    };
+    "domutils-1.5.1" = {
+      name = "domutils";
+      packageName = "domutils";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
+        sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
+      };
+    };
+    "double-ended-queue-2.1.0-0" = {
+      name = "double-ended-queue";
+      packageName = "double-ended-queue";
+      version = "2.1.0-0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz";
+        sha1 = "103d3527fd31528f40188130c841efdd78264e5c";
+      };
+    };
+    "ecc-jsbn-0.1.2" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "ejs-2.5.7" = {
+      name = "ejs";
+      packageName = "ejs";
+      version = "2.5.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz";
+        sha1 = "cc872c168880ae3c7189762fd5ffc00896c9518a";
+      };
+    };
+    "elasticsearch-15.1.1" = {
+      name = "elasticsearch";
+      packageName = "elasticsearch";
+      version = "15.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/elasticsearch/-/elasticsearch-15.1.1.tgz";
+        sha512 = "Yr9xy10rUMjDty7qCys7X9AIW5+PX4Gtv2NksZqXIc+AZiWna/y2QwZdiSLtb5LTOKDp7PbegfuokhIjMHUpKw==";
+      };
+    };
+    "encodeurl-1.0.2" = {
+      name = "encodeurl";
+      packageName = "encodeurl";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    };
+    "engine.io-1.8.3" = {
+      name = "engine.io";
+      packageName = "engine.io";
+      version = "1.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz";
+        sha1 = "8de7f97895d20d39b85f88eeee777b2bd42b13d4";
+      };
+    };
+    "engine.io-client-1.8.3" = {
+      name = "engine.io-client";
+      packageName = "engine.io-client";
+      version = "1.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz";
+        sha1 = "1798ed93451246453d4c6f635d7a201fe940d5ab";
+      };
+    };
+    "engine.io-parser-1.3.2" = {
+      name = "engine.io-parser";
+      packageName = "engine.io-parser";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz";
+        sha1 = "937b079f0007d0893ec56d46cb220b8cb435220a";
+      };
+    };
+    "entities-1.0.0" = {
+      name = "entities";
+      packageName = "entities";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
+        sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
+      };
+    };
+    "entities-1.1.2" = {
+      name = "entities";
+      packageName = "entities";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz";
+        sha512 = "f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==";
+      };
+    };
+    "errs-0.3.2" = {
+      name = "errs";
+      packageName = "errs";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz";
+        sha1 = "798099b2dbd37ca2bc749e538a7c1307d0b50499";
+      };
+    };
+    "es-abstract-1.13.0" = {
+      name = "es-abstract";
+      packageName = "es-abstract";
+      version = "1.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz";
+        sha512 = "vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==";
+      };
+    };
+    "es-to-primitive-1.2.0" = {
+      name = "es-to-primitive";
+      packageName = "es-to-primitive";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz";
+        sha512 = "qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "escodegen-1.11.1" = {
+      name = "escodegen";
+      packageName = "escodegen";
+      version = "1.11.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz";
+        sha512 = "JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==";
+      };
+    };
+    "esprima-3.1.3" = {
+      name = "esprima";
+      packageName = "esprima";
+      version = "3.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
+        sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
+      };
+    };
+    "estraverse-4.2.0" = {
+      name = "estraverse";
+      packageName = "estraverse";
+      version = "4.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
+        sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
+      };
+    };
+    "esutils-2.0.2" = {
+      name = "esutils";
+      packageName = "esutils";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
+        sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
+      };
+    };
+    "etag-1.8.1" = {
+      name = "etag";
+      packageName = "etag";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
+        sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
+      };
+    };
+    "etherpad-require-kernel-1.0.9" = {
+      name = "etherpad-require-kernel";
+      packageName = "etherpad-require-kernel";
+      version = "1.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etherpad-require-kernel/-/etherpad-require-kernel-1.0.9.tgz";
+        sha1 = "ed8f04e9fd2ccec3a0055bb6d2dfe9d99912e7e2";
+      };
+    };
+    "etherpad-yajsml-0.0.2" = {
+      name = "etherpad-yajsml";
+      packageName = "etherpad-yajsml";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etherpad-yajsml/-/etherpad-yajsml-0.0.2.tgz";
+        sha1 = "1c24d268b09476e637d049cddb1c6df8c729b46e";
+      };
+    };
+    "express-4.16.3" = {
+      name = "express";
+      packageName = "express";
+      version = "4.16.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express/-/express-4.16.3.tgz";
+        sha1 = "6af8a502350db3246ecc4becf6b5a34d22f7ed53";
+      };
+    };
+    "express-session-1.15.6" = {
+      name = "express-session";
+      packageName = "express-session";
+      version = "1.15.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz";
+        sha512 = "r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==";
+      };
+    };
+    "extend-3.0.2" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+      };
+    };
+    "extsprintf-1.3.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    };
+    "fast-deep-equal-1.1.0" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz";
+        sha1 = "c053477817c86b51daa853c81e059b733d023614";
+      };
+    };
+    "fast-deep-equal-2.0.1" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
+        sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
+      };
+    };
+    "fast-json-stable-stringify-2.0.0" = {
+      name = "fast-json-stable-stringify";
+      packageName = "fast-json-stable-stringify";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+        sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+      };
+    };
+    "fast-levenshtein-2.0.6" = {
+      name = "fast-levenshtein";
+      packageName = "fast-levenshtein";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
+        sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
+      };
+    };
+    "finalhandler-1.1.1" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz";
+        sha512 = "Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-2.3.3" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
+      };
+    };
+    "formidable-1.2.1" = {
+      name = "formidable";
+      packageName = "formidable";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz";
+        sha512 = "Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==";
+      };
+    };
+    "forwarded-0.1.2" = {
+      name = "forwarded";
+      packageName = "forwarded";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
+        sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
+      };
+    };
+    "fresh-0.5.2" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
+        sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
+      };
+    };
+    "function-bind-1.1.1" = {
+      name = "function-bind";
+      packageName = "function-bind";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz";
+        sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==";
+      };
+    };
+    "generic-pool-2.4.3" = {
+      name = "generic-pool";
+      packageName = "generic-pool";
+      version = "2.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz";
+        sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
+      };
+    };
+    "getpass-0.1.7" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    };
+    "graceful-fs-4.1.3" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz";
+        sha1 = "92033ce11113c41e2628d61fdfa40bc10dc0155c";
+      };
+    };
+    "graceful-readlink-1.0.1" = {
+      name = "graceful-readlink";
+      packageName = "graceful-readlink";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz";
+        sha1 = "4cafad76bc62f02fa039b2f94e9a3dd3a391a725";
+      };
+    };
+    "har-schema-2.0.0" = {
+      name = "har-schema";
+      packageName = "har-schema";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    };
+    "har-validator-5.0.3" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
+        sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
+      };
+    };
+    "har-validator-5.1.3" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
+        sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
+      };
+    };
+    "has-1.0.3" = {
+      name = "has";
+      packageName = "has";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz";
+        sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
+      };
+    };
+    "has-ansi-2.0.0" = {
+      name = "has-ansi";
+      packageName = "has-ansi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
+        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+      };
+    };
+    "has-binary-0.1.7" = {
+      name = "has-binary";
+      packageName = "has-binary";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz";
+        sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c";
+      };
+    };
+    "has-cors-1.1.0" = {
+      name = "has-cors";
+      packageName = "has-cors";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz";
+        sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
+      };
+    };
+    "has-symbols-1.0.0" = {
+      name = "has-symbols";
+      packageName = "has-symbols";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz";
+        sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
+      };
+    };
+    "hawk-6.0.2" = {
+      name = "hawk";
+      packageName = "hawk";
+      version = "6.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
+        sha512 = "miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==";
+      };
+    };
+    "hoek-4.2.1" = {
+      name = "hoek";
+      packageName = "hoek";
+      version = "4.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
+        sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
+      };
+    };
+    "htmlparser2-3.8.3" = {
+      name = "htmlparser2";
+      packageName = "htmlparser2";
+      version = "3.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
+        sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
+      };
+    };
+    "http-errors-1.6.2" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz";
+        sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
+      };
+    };
+    "http-errors-1.6.3" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
+        sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
+      };
+    };
+    "http-signature-1.2.0" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    };
+    "humanize-ms-1.2.1" = {
+      name = "humanize-ms";
+      packageName = "humanize-ms";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz";
+        sha1 = "c46e3159a293f6b896da29316d8b6fe8bb79bbed";
+      };
+    };
+    "iconv-lite-0.4.19" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.19";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
+        sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
+      };
+    };
+    "indexof-0.0.1" = {
+      name = "indexof";
+      packageName = "indexof";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz";
+        sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "ipaddr.js-1.9.0" = {
+      name = "ipaddr.js";
+      packageName = "ipaddr.js";
+      version = "1.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz";
+        sha512 = "M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==";
+      };
+    };
+    "is-buffer-1.1.6" = {
+      name = "is-buffer";
+      packageName = "is-buffer";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
+        sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
+      };
+    };
+    "is-callable-1.1.4" = {
+      name = "is-callable";
+      packageName = "is-callable";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz";
+        sha512 = "r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==";
+      };
+    };
+    "is-date-object-1.0.1" = {
+      name = "is-date-object";
+      packageName = "is-date-object";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz";
+        sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
+      };
+    };
+    "is-regex-1.0.4" = {
+      name = "is-regex";
+      packageName = "is-regex";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz";
+        sha1 = "5517489b547091b0930e095654ced25ee97e9491";
+      };
+    };
+    "is-symbol-1.0.2" = {
+      name = "is-symbol";
+      packageName = "is-symbol";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz";
+        sha512 = "HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "isarray-0.0.1" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    };
+    "isarray-1.0.0" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "js-string-escape-1.0.1" = {
+      name = "js-string-escape";
+      packageName = "js-string-escape";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz";
+        sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
+      };
+    };
+    "jsbn-0.1.1" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    };
+    "jsdom-7.2.2" = {
+      name = "jsdom";
+      packageName = "jsdom";
+      version = "7.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz";
+        sha1 = "40b402770c2bda23469096bee91ab675e3b1fc6e";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "json-schema-traverse-0.3.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
+        sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
+      };
+    };
+    "json-schema-traverse-0.4.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "json3-3.3.2" = {
+      name = "json3";
+      packageName = "json3";
+      version = "3.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz";
+        sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
+      };
+    };
+    "jsonminify-0.4.1" = {
+      name = "jsonminify";
+      packageName = "jsonminify";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.1.tgz";
+        sha1 = "805dafbb39395188cee9ab582c81ef959d7e710c";
+      };
+    };
+    "jsprim-1.4.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    };
+    "kind-of-3.2.2" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
+        sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+      };
+    };
+    "languages4translatewiki-0.1.3" = {
+      name = "languages4translatewiki";
+      packageName = "languages4translatewiki";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/languages4translatewiki/-/languages4translatewiki-0.1.3.tgz";
+        sha1 = "c436206e052d21490b11017a44d5118f9221e5db";
+      };
+    };
+    "lazy-cache-1.0.4" = {
+      name = "lazy-cache";
+      packageName = "lazy-cache";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz";
+        sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
+      };
+    };
+    "levn-0.3.0" = {
+      name = "levn";
+      packageName = "levn";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
+        sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+      };
+    };
+    "lodash-1.3.1" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-1.3.1.tgz";
+        sha1 = "a4663b53686b895ff074e2ba504dfb76a8e2b770";
+      };
+    };
+    "lodash-4.17.11" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.17.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz";
+        sha512 = "cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==";
+      };
+    };
+    "lodash.isempty-4.4.0" = {
+      name = "lodash.isempty";
+      packageName = "lodash.isempty";
+      version = "4.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz";
+        sha1 = "6f86cbedd8be4ec987be9aaf33c9684db1b31e7e";
+      };
+    };
+    "log4js-0.6.35" = {
+      name = "log4js";
+      packageName = "log4js";
+      version = "0.6.35";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/log4js/-/log4js-0.6.35.tgz";
+        sha1 = "3ab1da7cb14823b74ed3865c48593acdf11f1b59";
+      };
+    };
+    "long-2.4.0" = {
+      name = "long";
+      packageName = "long";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/long/-/long-2.4.0.tgz";
+        sha1 = "9fa180bb1d9500cdc29c4156766a1995e1f4524f";
+      };
+    };
+    "longest-1.0.1" = {
+      name = "longest";
+      packageName = "longest";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz";
+        sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
+      };
+    };
+    "measured-core-1.11.2" = {
+      name = "measured-core";
+      packageName = "measured-core";
+      version = "1.11.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/measured-core/-/measured-core-1.11.2.tgz";
+        sha1 = "9dbea6d20741b56f61abd866e496eb8b85e69349";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "merge-descriptors-1.0.1" = {
+      name = "merge-descriptors";
+      packageName = "merge-descriptors";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
+        sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
+      };
+    };
+    "methods-1.1.2" = {
+      name = "methods";
+      packageName = "methods";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    };
+    "mime-1.4.1" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz";
+        sha512 = "KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==";
+      };
+    };
+    "mime-db-1.40.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.40.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz";
+        sha512 = "jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==";
+      };
+    };
+    "mime-types-2.1.24" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz";
+        sha512 = "WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==";
+      };
+    };
+    "ms-0.7.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "0.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
+        sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
+      };
+    };
+    "ms-0.7.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "0.7.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz";
+        sha1 = "ae25cf2512b3885a1d95d7f037868d8431124765";
+      };
+    };
+    "ms-2.0.0" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    };
+    "ms-2.1.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
+        sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+      };
+    };
+    "mysql-2.15.0" = {
+      name = "mysql";
+      packageName = "mysql";
+      version = "2.15.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mysql/-/mysql-2.15.0.tgz";
+        sha512 = "C7tjzWtbN5nzkLIV+E8Crnl9bFyc7d3XJcBAvHKEVkjrYjogz3llo22q6s/hw+UcsE4/844pDob9ac+3dVjQSA==";
+      };
+    };
+    "nano-6.4.4" = {
+      name = "nano";
+      packageName = "nano";
+      version = "6.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nano/-/nano-6.4.4.tgz";
+        sha512 = "7sldMrZI1ZH8QE29PnzohxLfR67WNVzMKLa7EMl3x9Hr+0G+YpOUCq50qZ9G66APrjcb0Of2BTOZLNBCutZGag==";
+      };
+    };
+    "negotiator-0.6.1" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";
+        sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
+      };
+    };
+    "negotiator-0.6.2" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
+        sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
+      };
+    };
+    "npm-6.4.0" = {
+      name = "npm";
+      packageName = "npm";
+      version = "6.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/npm/-/npm-6.4.0.tgz";
+        sha512 = "k0VteQaxRuI1mREBxCtLUksesD2ZmX5gxjXNEjTmTrxQ3SHW22InkCKyX4NzoeGAYtgmDg5MuE7rcXYod7xgug==";
+      };
+    };
+    "nth-check-1.0.2" = {
+      name = "nth-check";
+      packageName = "nth-check";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz";
+        sha512 = "WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==";
+      };
+    };
+    "nwmatcher-1.4.4" = {
+      name = "nwmatcher";
+      packageName = "nwmatcher";
+      version = "1.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz";
+        sha512 = "3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==";
+      };
+    };
+    "oauth-sign-0.8.2" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
+        sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
+      };
+    };
+    "oauth-sign-0.9.0" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
+      };
+    };
+    "object-assign-4.1.0" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz";
+        sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
+      };
+    };
+    "object-component-0.0.3" = {
+      name = "object-component";
+      packageName = "object-component";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz";
+        sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
+      };
+    };
+    "object-keys-1.1.1" = {
+      name = "object-keys";
+      packageName = "object-keys";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz";
+        sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==";
+      };
+    };
+    "object.values-1.1.0" = {
+      name = "object.values";
+      packageName = "object.values";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz";
+        sha512 = "8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "on-headers-1.0.2" = {
+      name = "on-headers";
+      packageName = "on-headers";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
+        sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==";
+      };
+    };
+    "optional-js-2.1.1" = {
+      name = "optional-js";
+      packageName = "optional-js";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optional-js/-/optional-js-2.1.1.tgz";
+        sha512 = "mUS4bDngcD5kKzzRUd1HVQkr9Lzzby3fSrrPR9wOHhQiyYo+hDS5NVli5YQzGjQRQ15k5Sno4xH9pfykJdeEUA==";
+      };
+    };
+    "optionator-0.8.2" = {
+      name = "optionator";
+      packageName = "optionator";
+      version = "0.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
+        sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
+      };
+    };
+    "options-0.0.6" = {
+      name = "options";
+      packageName = "options";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/options/-/options-0.0.6.tgz";
+        sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
+      };
+    };
+    "packet-reader-0.2.0" = {
+      name = "packet-reader";
+      packageName = "packet-reader";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz";
+        sha1 = "819df4d010b82d5ea5671f8a1a3acf039bcd7700";
+      };
+    };
+    "parse5-1.5.1" = {
+      name = "parse5";
+      packageName = "parse5";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
+        sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
+      };
+    };
+    "parsejson-0.0.3" = {
+      name = "parsejson";
+      packageName = "parsejson";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz";
+        sha1 = "ab7e3759f209ece99437973f7d0f1f64ae0e64ab";
+      };
+    };
+    "parseqs-0.0.5" = {
+      name = "parseqs";
+      packageName = "parseqs";
+      version = "0.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz";
+        sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
+      };
+    };
+    "parseuri-0.0.5" = {
+      name = "parseuri";
+      packageName = "parseuri";
+      version = "0.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz";
+        sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
+      };
+    };
+    "parseurl-1.3.3" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+        sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
+      };
+    };
+    "path-to-regexp-0.1.7" = {
+      name = "path-to-regexp";
+      packageName = "path-to-regexp";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
+        sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
+      };
+    };
+    "performance-now-2.1.0" = {
+      name = "performance-now";
+      packageName = "performance-now";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    };
+    "pg-6.1.6" = {
+      name = "pg";
+      packageName = "pg";
+      version = "6.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg/-/pg-6.1.6.tgz";
+        sha1 = "dd22758250d5ad6eef5a2bf88d96f276d1e95b0d";
+      };
+    };
+    "pg-connection-string-0.1.3" = {
+      name = "pg-connection-string";
+      packageName = "pg-connection-string";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
+        sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
+      };
+    };
+    "pg-int8-1.0.1" = {
+      name = "pg-int8";
+      packageName = "pg-int8";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
+        sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
+      };
+    };
+    "pg-pool-1.8.0" = {
+      name = "pg-pool";
+      packageName = "pg-pool";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-1.8.0.tgz";
+        sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
+      };
+    };
+    "pg-types-1.13.0" = {
+      name = "pg-types";
+      packageName = "pg-types";
+      version = "1.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-types/-/pg-types-1.13.0.tgz";
+        sha512 = "lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ==";
+      };
+    };
+    "pgpass-1.0.2" = {
+      name = "pgpass";
+      packageName = "pgpass";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz";
+        sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
+      };
+    };
+    "postgres-array-1.0.3" = {
+      name = "postgres-array";
+      packageName = "postgres-array";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz";
+        sha512 = "5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ==";
+      };
+    };
+    "postgres-bytea-1.0.0" = {
+      name = "postgres-bytea";
+      packageName = "postgres-bytea";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
+        sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
+      };
+    };
+    "postgres-date-1.0.4" = {
+      name = "postgres-date";
+      packageName = "postgres-date";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.4.tgz";
+        sha512 = "bESRvKVuTrjoBluEcpv2346+6kgB7UlnqWZsnbnCccTNq/pqfj1j6oBaN5+b/NrDXepYUT/HKadqv3iS9lJuVA==";
+      };
+    };
+    "postgres-interval-1.2.0" = {
+      name = "postgres-interval";
+      packageName = "postgres-interval";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
+        sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
+      };
+    };
+    "prelude-ls-1.1.2" = {
+      name = "prelude-ls";
+      packageName = "prelude-ls";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
+        sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+      };
+    };
+    "process-nextick-args-1.0.7" = {
+      name = "process-nextick-args";
+      packageName = "process-nextick-args";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
+        sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
+      };
+    };
+    "proxy-addr-2.0.5" = {
+      name = "proxy-addr";
+      packageName = "proxy-addr";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz";
+        sha512 = "t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==";
+      };
+    };
+    "psl-1.1.31" = {
+      name = "psl";
+      packageName = "psl";
+      version = "1.1.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz";
+        sha512 = "/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==";
+      };
+    };
+    "punycode-1.4.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    };
+    "punycode-2.1.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
+      };
+    };
+    "qs-6.5.1" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
+        sha512 = "eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==";
+      };
+    };
+    "qs-6.5.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
+      };
+    };
+    "random-bytes-1.0.0" = {
+      name = "random-bytes";
+      packageName = "random-bytes";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
+        sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
+      };
+    };
+    "range-parser-1.2.0" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz";
+        sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
+      };
+    };
+    "raw-body-2.3.2" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz";
+        sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
+      };
+    };
+    "readable-stream-1.0.34" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "1.0.34";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz";
+        sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
+      };
+    };
+    "readable-stream-1.1.14" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "1.1.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
+        sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+      };
+    };
+    "readable-stream-2.3.3" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
+        sha512 = "m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==";
+      };
+    };
+    "redis-2.8.0" = {
+      name = "redis";
+      packageName = "redis";
+      version = "2.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz";
+        sha512 = "M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==";
+      };
+    };
+    "redis-commands-1.4.0" = {
+      name = "redis-commands";
+      packageName = "redis-commands";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz";
+        sha512 = "cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==";
+      };
+    };
+    "redis-parser-2.6.0" = {
+      name = "redis-parser";
+      packageName = "redis-parser";
+      version = "2.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz";
+        sha1 = "52ed09dacac108f1a631c07e9b69941e7a19504b";
+      };
+    };
+    "repeat-string-1.6.1" = {
+      name = "repeat-string";
+      packageName = "repeat-string";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
+        sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+      };
+    };
+    "request-2.83.0" = {
+      name = "request";
+      packageName = "request";
+      version = "2.83.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.83.0.tgz";
+        sha512 = "lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==";
+      };
+    };
+    "request-2.88.0" = {
+      name = "request";
+      packageName = "request";
+      version = "2.88.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.88.0.tgz";
+        sha512 = "NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==";
+      };
+    };
+    "resolve-1.1.7" = {
+      name = "resolve";
+      packageName = "resolve";
+      version = "1.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz";
+        sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
+      };
+    };
+    "rethinkdb-2.3.3" = {
+      name = "rethinkdb";
+      packageName = "rethinkdb";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.3.3.tgz";
+        sha1 = "3dc6586e22fa1dabee0d254e64bd0e379fad2f72";
+      };
+    };
+    "right-align-0.1.3" = {
+      name = "right-align";
+      packageName = "right-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz";
+        sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
+      };
+    };
+    "safe-buffer-5.1.1" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
+        sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
+      };
+    };
+    "safe-buffer-5.1.2" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+      };
+    };
+    "sax-1.2.4" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+        sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+      };
+    };
+    "security-1.0.0" = {
+      name = "security";
+      packageName = "security";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/security/-/security-1.0.0.tgz";
+        sha1 = "811c300313686133ef0007125e3b0ed700978815";
+      };
+    };
+    "semver-4.3.2" = {
+      name = "semver";
+      packageName = "semver";
+      version = "4.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz";
+        sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
+      };
+    };
+    "semver-4.3.6" = {
+      name = "semver";
+      packageName = "semver";
+      version = "4.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
+        sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
+      };
+    };
+    "semver-5.1.0" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz";
+        sha1 = "85f2cf8550465c4df000cf7d86f6b054106ab9e5";
+      };
+    };
+    "send-0.16.2" = {
+      name = "send";
+      packageName = "send";
+      version = "0.16.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.16.2.tgz";
+        sha512 = "E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==";
+      };
+    };
+    "serve-static-1.13.2" = {
+      name = "serve-static";
+      packageName = "serve-static";
+      version = "1.13.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz";
+        sha512 = "p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==";
+      };
+    };
+    "setprototypeof-1.0.3" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz";
+        sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
+      };
+    };
+    "setprototypeof-1.1.0" = {
+      name = "setprototypeof";
+      packageName = "setprototypeof";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz";
+        sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==";
+      };
+    };
+    "slide-1.1.6" = {
+      name = "slide";
+      packageName = "slide";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
+        sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
+      };
+    };
+    "sntp-2.1.0" = {
+      name = "sntp";
+      packageName = "sntp";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz";
+        sha512 = "FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==";
+      };
+    };
+    "socket.io-1.7.3" = {
+      name = "socket.io";
+      packageName = "socket.io";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz";
+        sha1 = "b8af9caba00949e568e369f1327ea9be9ea2461b";
+      };
+    };
+    "socket.io-adapter-0.5.0" = {
+      name = "socket.io-adapter";
+      packageName = "socket.io-adapter";
+      version = "0.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz";
+        sha1 = "cb6d4bb8bec81e1078b99677f9ced0046066bb8b";
+      };
+    };
+    "socket.io-client-1.7.3" = {
+      name = "socket.io-client";
+      packageName = "socket.io-client";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz";
+        sha1 = "b30e86aa10d5ef3546601c09cde4765e381da377";
+      };
+    };
+    "socket.io-parser-2.3.1" = {
+      name = "socket.io-parser";
+      packageName = "socket.io-parser";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz";
+        sha1 = "dd532025103ce429697326befd64005fcfe5b4a0";
+      };
+    };
+    "source-map-0.4.4" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz";
+        sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
+      };
+    };
+    "source-map-0.5.7" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.5.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
+        sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+      };
+    };
+    "source-map-0.6.1" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+        sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+      };
+    };
+    "split-1.0.1" = {
+      name = "split";
+      packageName = "split";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
+        sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
+      };
+    };
+    "sqlstring-2.3.0" = {
+      name = "sqlstring";
+      packageName = "sqlstring";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.0.tgz";
+        sha1 = "525b8a4fd26d6f71aa61e822a6caf976d31ad2a8";
+      };
+    };
+    "sshpk-1.16.1" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.16.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+      };
+    };
+    "statuses-1.4.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz";
+        sha512 = "zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==";
+      };
+    };
+    "string_decoder-0.10.31" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "0.10.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    };
+    "string_decoder-1.0.3" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
+        sha512 = "4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==";
+      };
+    };
+    "stringstream-0.0.6" = {
+      name = "stringstream";
+      packageName = "stringstream";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
+        sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "supports-color-2.0.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
+        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+      };
+    };
+    "swagger-node-express-2.1.3" = {
+      name = "swagger-node-express";
+      packageName = "swagger-node-express";
+      version = "2.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/swagger-node-express/-/swagger-node-express-2.1.3.tgz";
+        sha1 = "4b1fee976e11284d276575911980b2258e379dab";
+      };
+    };
+    "symbol-tree-3.2.2" = {
+      name = "symbol-tree";
+      packageName = "symbol-tree";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz";
+        sha1 = "ae27db38f660a7ae2e1c3b7d1bc290819b8519e6";
+      };
+    };
+    "through-2.3.8" = {
+      name = "through";
+      packageName = "through";
+      version = "2.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
+        sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+      };
+    };
+    "tinycon-0.0.1" = {
+      name = "tinycon";
+      packageName = "tinycon";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tinycon/-/tinycon-0.0.1.tgz";
+        sha1 = "6de10cd5219a1f121d9a0a24b2c11b3fb24dffed";
+      };
+    };
+    "to-array-0.1.4" = {
+      name = "to-array";
+      packageName = "to-array";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz";
+        sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
+      };
+    };
+    "tough-cookie-2.3.4" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz";
+        sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==";
+      };
+    };
+    "tough-cookie-2.4.3" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz";
+        sha512 = "Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==";
+      };
+    };
+    "tough-cookie-2.5.0" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
+      };
+    };
+    "tr46-0.0.3" = {
+      name = "tr46";
+      packageName = "tr46";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz";
+        sha1 = "8184fd347dac9cdc185992f3a6622e14b9d9ab6a";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-0.14.5" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    };
+    "type-check-0.3.2" = {
+      name = "type-check";
+      packageName = "type-check";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
+        sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+      };
+    };
+    "type-is-1.6.18" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
+        sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
+      };
+    };
+    "ueberdb2-0.4.0" = {
+      name = "ueberdb2";
+      packageName = "ueberdb2";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.4.0.tgz";
+        sha512 = "iY4+J8D+S5OP6dP9bSomJfN7zIZMcsO8h7J+EsxXod+iUpnQXmIIYsb9+Ui1Fz4KFiGbMDSaDP6Ipqz/l/1hmA==";
+      };
+    };
+    "uglify-js-2.6.2" = {
+      name = "uglify-js";
+      packageName = "uglify-js";
+      version = "2.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.2.tgz";
+        sha1 = "f50be88a42cd396a6251dc52ab372f71cc12fef0";
+      };
+    };
+    "uglify-to-browserify-1.0.2" = {
+      name = "uglify-to-browserify";
+      packageName = "uglify-to-browserify";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
+        sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
+      };
+    };
+    "uid-safe-2.1.5" = {
+      name = "uid-safe";
+      packageName = "uid-safe";
+      version = "2.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
+        sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
+      };
+    };
+    "ultron-1.0.2" = {
+      name = "ultron";
+      packageName = "ultron";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz";
+        sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa";
+      };
+    };
+    "underscore-1.8.3" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
+        sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
+      };
+    };
+    "unorm-1.4.1" = {
+      name = "unorm";
+      packageName = "unorm";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz";
+        sha1 = "364200d5f13646ca8bcd44490271335614792300";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "uri-js-4.2.2" = {
+      name = "uri-js";
+      packageName = "uri-js";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
+        sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "utils-merge-1.0.1" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    };
+    "uuid-3.3.2" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz";
+        sha512 = "yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==";
+      };
+    };
+    "vary-1.1.2" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
+        sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "webidl-conversions-2.0.1" = {
+      name = "webidl-conversions";
+      packageName = "webidl-conversions";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz";
+        sha1 = "3bf8258f7d318c7443c36f2e169402a1a6703506";
+      };
+    };
+    "whatwg-url-compat-0.6.5" = {
+      name = "whatwg-url-compat";
+      packageName = "whatwg-url-compat";
+      version = "0.6.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz";
+        sha1 = "00898111af689bb097541cd5a45ca6c8798445bf";
+      };
+    };
+    "window-size-0.1.0" = {
+      name = "window-size";
+      packageName = "window-size";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz";
+        sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
+      };
+    };
+    "wordwrap-0.0.2" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz";
+        sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
+      };
+    };
+    "wordwrap-1.0.0" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
+        sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
+      };
+    };
+    "ws-1.1.2" = {
+      name = "ws";
+      packageName = "ws";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz";
+        sha1 = "8a244fa052401e08c9886cf44a85189e1fd4067f";
+      };
+    };
+    "wtf-8-1.0.0" = {
+      name = "wtf-8";
+      packageName = "wtf-8";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz";
+        sha1 = "392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a";
+      };
+    };
+    "xml-name-validator-2.0.1" = {
+      name = "xml-name-validator";
+      packageName = "xml-name-validator";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz";
+        sha1 = "4d8b8f1eccd3419aa362061becef515e1e559635";
+      };
+    };
+    "xmlhttprequest-ssl-1.5.3" = {
+      name = "xmlhttprequest-ssl";
+      packageName = "xmlhttprequest-ssl";
+      version = "1.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz";
+        sha1 = "185a888c04eca46c3e4070d99f7b49de3528992d";
+      };
+    };
+    "xtend-4.0.1" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz";
+        sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
+      };
+    };
+    "yargs-3.10.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "3.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz";
+        sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
+      };
+    };
+    "yeast-0.1.2" = {
+      name = "yeast";
+      packageName = "yeast";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz";
+        sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
+      };
+    };
+  };
+  args = {
+    name = "ep_etherpad-lite";
+    packageName = "ep_etherpad-lite";
+    version = "1.7.0";
+    inherit src;
+    dependencies = [
+      sources."abab-1.0.4"
+      sources."accepts-1.3.7"
+      sources."acorn-2.7.0"
+      sources."acorn-globals-1.0.9"
+      sources."after-0.8.2"
+      sources."agentkeepalive-3.5.2"
+      sources."ajv-5.5.2"
+      sources."align-text-0.1.4"
+      sources."amdefine-1.0.1"
+      sources."ansi-regex-2.1.1"
+      sources."ansi-styles-2.2.1"
+      sources."array-flatten-1.1.1"
+      sources."arraybuffer.slice-0.0.6"
+      sources."asn1-0.2.4"
+      sources."assert-plus-1.0.0"
+      sources."async-0.9.0"
+      sources."async-stacktrace-0.0.2"
+      sources."asynckit-0.4.0"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.8.0"
+      sources."backo2-1.0.2"
+      sources."base64-arraybuffer-0.1.5"
+      sources."base64id-1.0.0"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."better-assert-1.0.2"
+      sources."bignumber.js-4.0.4"
+      sources."binary-search-1.3.5"
+      sources."blob-0.0.4"
+      sources."bluebird-2.11.0"
+      (sources."body-parser-1.18.2" // {
+        dependencies = [
+          sources."qs-6.5.1"
+        ];
+      })
+      sources."boolbase-1.0.0"
+      sources."boom-4.3.1"
+      sources."browser-request-0.3.3"
+      sources."buffer-writer-1.0.1"
+      sources."bytes-3.0.0"
+      sources."callsite-1.0.0"
+      sources."camelcase-1.2.1"
+      sources."caseless-0.12.0"
+      sources."cassandra-driver-2.0.1"
+      sources."center-align-0.1.3"
+      sources."chalk-1.1.3"
+      sources."channels-0.0.4"
+      sources."cheerio-0.20.0"
+      (sources."clean-css-3.4.19" // {
+        dependencies = [
+          sources."source-map-0.4.4"
+        ];
+      })
+      (sources."cliui-2.1.0" // {
+        dependencies = [
+          sources."wordwrap-0.0.2"
+        ];
+      })
+      (sources."cloudant-follow-0.17.0" // {
+        dependencies = [
+          sources."debug-3.2.6"
+          sources."ms-2.1.1"
+        ];
+      })
+      sources."co-4.6.0"
+      sources."combined-stream-1.0.7"
+      sources."commander-2.8.1"
+      sources."component-bind-1.0.0"
+      sources."component-emitter-1.1.2"
+      sources."component-inherit-0.0.3"
+      sources."content-disposition-0.5.2"
+      sources."content-type-1.0.4"
+      sources."cookie-0.1.2"
+      sources."cookie-parser-1.3.4"
+      sources."cookie-signature-1.0.6"
+      sources."core-util-is-1.0.2"
+      sources."crc-3.4.4"
+      (sources."cryptiles-3.1.4" // {
+        dependencies = [
+          sources."boom-5.2.0"
+        ];
+      })
+      sources."css-select-1.2.0"
+      sources."css-what-2.1.3"
+      sources."cssom-0.3.6"
+      sources."cssstyle-0.2.37"
+      sources."dashdash-1.14.1"
+      sources."debug-2.6.9"
+      sources."decamelize-1.2.0"
+      sources."deep-is-0.1.3"
+      sources."define-properties-1.1.3"
+      sources."delayed-stream-1.0.0"
+      sources."depd-1.1.2"
+      sources."destroy-1.0.4"
+      sources."dirty-0.9.9"
+      sources."dom-serializer-0.1.1"
+      sources."domelementtype-1.3.1"
+      sources."domhandler-2.3.0"
+      sources."domutils-1.5.1"
+      sources."double-ended-queue-2.1.0-0"
+      sources."ecc-jsbn-0.1.2"
+      sources."ee-first-1.1.1"
+      sources."ejs-2.5.7"
+      sources."elasticsearch-15.1.1"
+      sources."encodeurl-1.0.2"
+      (sources."engine.io-1.8.3" // {
+        dependencies = [
+          sources."accepts-1.3.3"
+          sources."cookie-0.3.1"
+          sources."debug-2.3.3"
+          sources."ms-0.7.2"
+          sources."negotiator-0.6.1"
+        ];
+      })
+      (sources."engine.io-client-1.8.3" // {
+        dependencies = [
+          sources."component-emitter-1.2.1"
+          sources."debug-2.3.3"
+          sources."ms-0.7.2"
+        ];
+      })
+      sources."engine.io-parser-1.3.2"
+      sources."entities-1.1.2"
+      sources."errs-0.3.2"
+      sources."es-abstract-1.13.0"
+      sources."es-to-primitive-1.2.0"
+      sources."escape-html-1.0.3"
+      sources."escape-string-regexp-1.0.5"
+      sources."escodegen-1.11.1"
+      sources."esprima-3.1.3"
+      sources."estraverse-4.2.0"
+      sources."esutils-2.0.2"
+      sources."etag-1.8.1"
+      sources."etherpad-require-kernel-1.0.9"
+      sources."etherpad-yajsml-0.0.2"
+      (sources."express-4.16.3" // {
+        dependencies = [
+          sources."cookie-0.3.1"
+          sources."qs-6.5.1"
+          sources."safe-buffer-5.1.1"
+        ];
+      })
+      (sources."express-session-1.15.6" // {
+        dependencies = [
+          sources."cookie-0.3.1"
+        ];
+      })
+      sources."extend-3.0.2"
+      sources."extsprintf-1.3.0"
+      sources."fast-deep-equal-1.1.0"
+      sources."fast-json-stable-stringify-2.0.0"
+      sources."fast-levenshtein-2.0.6"
+      sources."finalhandler-1.1.1"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."formidable-1.2.1"
+      sources."forwarded-0.1.2"
+      sources."fresh-0.5.2"
+      sources."function-bind-1.1.1"
+      sources."generic-pool-2.4.3"
+      sources."getpass-0.1.7"
+      sources."graceful-fs-4.1.3"
+      sources."graceful-readlink-1.0.1"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.0.3"
+      sources."has-1.0.3"
+      sources."has-ansi-2.0.0"
+      sources."has-binary-0.1.7"
+      sources."has-cors-1.1.0"
+      sources."has-symbols-1.0.0"
+      sources."hawk-6.0.2"
+      sources."hoek-4.2.1"
+      (sources."htmlparser2-3.8.3" // {
+        dependencies = [
+          sources."entities-1.0.0"
+        ];
+      })
+      sources."http-errors-1.6.3"
+      sources."http-signature-1.2.0"
+      sources."humanize-ms-1.2.1"
+      sources."iconv-lite-0.4.19"
+      sources."indexof-0.0.1"
+      sources."inherits-2.0.3"
+      sources."ipaddr.js-1.9.0"
+      sources."is-buffer-1.1.6"
+      sources."is-callable-1.1.4"
+      sources."is-date-object-1.0.1"
+      sources."is-regex-1.0.4"
+      sources."is-symbol-1.0.2"
+      sources."is-typedarray-1.0.0"
+      sources."isarray-0.0.1"
+      sources."isstream-0.1.2"
+      sources."js-string-escape-1.0.1"
+      sources."jsbn-0.1.1"
+      sources."jsdom-7.2.2"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.3.1"
+      sources."json-stringify-safe-5.0.1"
+      sources."json3-3.3.2"
+      sources."jsonminify-0.4.1"
+      sources."jsprim-1.4.1"
+      sources."kind-of-3.2.2"
+      sources."languages4translatewiki-0.1.3"
+      sources."lazy-cache-1.0.4"
+      sources."levn-0.3.0"
+      sources."lodash-4.17.11"
+      sources."lodash.isempty-4.4.0"
+      (sources."log4js-0.6.35" // {
+        dependencies = [
+          sources."readable-stream-1.0.34"
+          sources."semver-4.3.6"
+        ];
+      })
+      sources."long-2.4.0"
+      sources."longest-1.0.1"
+      sources."measured-core-1.11.2"
+      sources."media-typer-0.3.0"
+      sources."merge-descriptors-1.0.1"
+      sources."methods-1.1.2"
+      sources."mime-1.4.1"
+      sources."mime-db-1.40.0"
+      sources."mime-types-2.1.24"
+      sources."ms-2.0.0"
+      (sources."mysql-2.15.0" // {
+        dependencies = [
+          sources."isarray-1.0.0"
+          sources."readable-stream-2.3.3"
+          sources."safe-buffer-5.1.1"
+          sources."string_decoder-1.0.3"
+        ];
+      })
+      (sources."nano-6.4.4" // {
+        dependencies = [
+          sources."ajv-6.10.0"
+          sources."fast-deep-equal-2.0.1"
+          sources."har-validator-5.1.3"
+          sources."json-schema-traverse-0.4.1"
+          sources."oauth-sign-0.9.0"
+          sources."request-2.88.0"
+          sources."tough-cookie-2.4.3"
+        ];
+      })
+      sources."negotiator-0.6.2"
+      sources."npm-6.4.0"
+      sources."nth-check-1.0.2"
+      sources."nwmatcher-1.4.4"
+      sources."oauth-sign-0.8.2"
+      sources."object-assign-4.1.0"
+      sources."object-component-0.0.3"
+      sources."object-keys-1.1.1"
+      sources."object.values-1.1.0"
+      sources."on-finished-2.3.0"
+      sources."on-headers-1.0.2"
+      sources."optional-js-2.1.1"
+      sources."optionator-0.8.2"
+      sources."options-0.0.6"
+      sources."packet-reader-0.2.0"
+      sources."parse5-1.5.1"
+      sources."parsejson-0.0.3"
+      sources."parseqs-0.0.5"
+      sources."parseuri-0.0.5"
+      sources."parseurl-1.3.3"
+      sources."path-to-regexp-0.1.7"
+      sources."performance-now-2.1.0"
+      (sources."pg-6.1.6" // {
+        dependencies = [
+          sources."semver-4.3.2"
+        ];
+      })
+      sources."pg-connection-string-0.1.3"
+      sources."pg-int8-1.0.1"
+      sources."pg-pool-1.8.0"
+      sources."pg-types-1.13.0"
+      sources."pgpass-1.0.2"
+      sources."postgres-array-1.0.3"
+      sources."postgres-bytea-1.0.0"
+      sources."postgres-date-1.0.4"
+      sources."postgres-interval-1.2.0"
+      sources."prelude-ls-1.1.2"
+      sources."process-nextick-args-1.0.7"
+      sources."proxy-addr-2.0.5"
+      sources."psl-1.1.31"
+      sources."punycode-1.4.1"
+      sources."qs-6.5.2"
+      sources."random-bytes-1.0.0"
+      sources."range-parser-1.2.0"
+      (sources."raw-body-2.3.2" // {
+        dependencies = [
+          sources."depd-1.1.1"
+          sources."http-errors-1.6.2"
+          sources."setprototypeof-1.0.3"
+        ];
+      })
+      sources."readable-stream-1.1.14"
+      sources."redis-2.8.0"
+      sources."redis-commands-1.4.0"
+      sources."redis-parser-2.6.0"
+      sources."repeat-string-1.6.1"
+      (sources."request-2.83.0" // {
+        dependencies = [
+          sources."tough-cookie-2.3.4"
+        ];
+      })
+      sources."resolve-1.1.7"
+      sources."rethinkdb-2.3.3"
+      sources."right-align-0.1.3"
+      sources."safe-buffer-5.1.2"
+      sources."safer-buffer-2.1.2"
+      sources."sax-1.2.4"
+      sources."security-1.0.0"
+      sources."semver-5.1.0"
+      sources."send-0.16.2"
+      sources."serve-static-1.13.2"
+      sources."setprototypeof-1.1.0"
+      sources."slide-1.1.6"
+      sources."sntp-2.1.0"
+      (sources."socket.io-1.7.3" // {
+        dependencies = [
+          sources."debug-2.3.3"
+          sources."ms-0.7.2"
+        ];
+      })
+      (sources."socket.io-adapter-0.5.0" // {
+        dependencies = [
+          sources."debug-2.3.3"
+          sources."ms-0.7.2"
+        ];
+      })
+      (sources."socket.io-client-1.7.3" // {
+        dependencies = [
+          sources."component-emitter-1.2.1"
+          sources."debug-2.3.3"
+          sources."ms-0.7.2"
+        ];
+      })
+      (sources."socket.io-parser-2.3.1" // {
+        dependencies = [
+          sources."debug-2.2.0"
+          sources."ms-0.7.1"
+        ];
+      })
+      sources."source-map-0.6.1"
+      sources."split-1.0.1"
+      sources."sqlstring-2.3.0"
+      sources."sshpk-1.16.1"
+      sources."statuses-1.4.0"
+      sources."string_decoder-0.10.31"
+      sources."stringstream-0.0.6"
+      sources."strip-ansi-3.0.1"
+      sources."supports-color-2.0.0"
+      (sources."swagger-node-express-2.1.3" // {
+        dependencies = [
+          sources."lodash-1.3.1"
+        ];
+      })
+      sources."symbol-tree-3.2.2"
+      sources."through-2.3.8"
+      sources."tinycon-0.0.1"
+      sources."to-array-0.1.4"
+      (sources."tough-cookie-2.5.0" // {
+        dependencies = [
+          sources."punycode-2.1.1"
+        ];
+      })
+      sources."tr46-0.0.3"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
+      sources."type-check-0.3.2"
+      sources."type-is-1.6.18"
+      (sources."ueberdb2-0.4.0" // {
+        dependencies = [
+          sources."async-0.1.15"
+        ];
+      })
+      (sources."uglify-js-2.6.2" // {
+        dependencies = [
+          sources."async-0.2.10"
+          sources."source-map-0.5.7"
+        ];
+      })
+      sources."uglify-to-browserify-1.0.2"
+      sources."uid-safe-2.1.5"
+      sources."ultron-1.0.2"
+      sources."underscore-1.8.3"
+      sources."unorm-1.4.1"
+      sources."unpipe-1.0.0"
+      (sources."uri-js-4.2.2" // {
+        dependencies = [
+          sources."punycode-2.1.1"
+        ];
+      })
+      sources."util-deprecate-1.0.2"
+      sources."utils-merge-1.0.1"
+      sources."uuid-3.3.2"
+      sources."vary-1.1.2"
+      sources."verror-1.10.0"
+      sources."webidl-conversions-2.0.1"
+      sources."whatwg-url-compat-0.6.5"
+      sources."window-size-0.1.0"
+      sources."wordwrap-1.0.0"
+      sources."ws-1.1.2"
+      sources."wtf-8-1.0.0"
+      sources."xml-name-validator-2.0.1"
+      sources."xmlhttprequest-ssl-1.5.3"
+      sources."xtend-4.0.1"
+      sources."yargs-3.10.0"
+      sources."yeast-0.1.2"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "A Etherpad based on node.js";
+      homepage = http://etherpad.org/;
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = true;
+  };
+in
+{
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+}