diff options
Diffstat (limited to 'krebs')
-rw-r--r-- | krebs/3modules/default.nix | 1 | ||||
-rw-r--r-- | krebs/3modules/lass/default.nix | 9 | ||||
-rw-r--r-- | krebs/3modules/newsbot-js.nix | 89 | ||||
-rw-r--r-- | krebs/3modules/nginx.nix | 58 | ||||
-rw-r--r-- | krebs/5pkgs/newsbot-js/default.nix | 60 | ||||
-rw-r--r-- | krebs/5pkgs/newsbot-js/packages.nix | 1442 |
6 files changed, 1651 insertions, 8 deletions
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index 77fb3d61c..be530d46f 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -21,6 +21,7 @@ let ./go.nix ./iptables.nix ./lib.nix + ./newsbot-js.nix ./nginx.nix ./nixpkgs.nix ./on-failure.nix diff --git a/krebs/3modules/lass/default.nix b/krebs/3modules/lass/default.nix index 4bf10ac56..148460735 100644 --- a/krebs/3modules/lass/default.nix +++ b/krebs/3modules/lass/default.nix @@ -19,6 +19,7 @@ with config.krebs.lib; addrs6 = ["42:0000:0000:0000:0000:0000:d15f:1233"]; aliases = [ "dishfire.retiolum" + "dishfire.r" ]; tinc.pubkey = '' -----BEGIN RSA PUBLIC KEY----- @@ -50,8 +51,10 @@ with config.krebs.lib; addrs6 = ["42:941e:2816:35f4:5c5e:206b:3f0b:f763"]; aliases = [ "echelon.retiolum" + "echelon.r" "cgit.echelon.retiolum" "go.retiolum" + "go.r" ]; tinc.pubkey = '' -----BEGIN RSA PUBLIC KEY----- @@ -83,6 +86,7 @@ with config.krebs.lib; addrs6 = ["42:0000:0000:0000:0000:0000:0000:15ab"]; aliases = [ "prism.retiolum" + "prism.r" "cgit.prism.retiolum" ]; tinc.pubkey = '' @@ -114,6 +118,7 @@ with config.krebs.lib; addrs6 = ["42:422a:194f:ff3b:e196:2f82:5cf5:bc00"]; aliases = [ "fastpoke.retiolum" + "fastpoke.r" "cgit.fastpoke.retiolum" ]; tinc.pubkey = '' @@ -144,6 +149,7 @@ with config.krebs.lib; addrs6 = ["42:941e:2816:35f4:5c5e:206b:3f0b:f762"]; aliases = [ "cloudkrebs.retiolum" + "cloudkrebs.r" "cgit.cloudkrebs.retiolum" ]; tinc.pubkey = '' @@ -173,6 +179,7 @@ with config.krebs.lib; addrs6 = ["42:dc25:60cf:94ef:759b:d2b6:98a9:2e56"]; aliases = [ "uriel.retiolum" + "uriel.r" "cgit.uriel.retiolum" ]; tinc.pubkey = '' @@ -203,6 +210,7 @@ with config.krebs.lib; addrs6 = ["42:0:0:0:0:0:0:dea7"]; aliases = [ "mors.retiolum" + "mors.r" "cgit.mors.retiolum" ]; tinc.pubkey = '' @@ -229,6 +237,7 @@ with config.krebs.lib; addrs6 = ["42:0:0:0:0:0:0:7105"]; aliases = [ "helios.retiolum" + "helios.r" "cgit.helios.retiolum" ]; tinc.pubkey = '' diff --git a/krebs/3modules/newsbot-js.nix b/krebs/3modules/newsbot-js.nix new file mode 100644 index 000000000..b58c555e7 --- /dev/null +++ b/krebs/3modules/newsbot-js.nix @@ -0,0 +1,89 @@ +{ config, lib, pkgs, ... }: + +with builtins; +with lib; + +let + inherit (config.krebs.lib) genid; + + cfg = config.krebs.newsbot-js; + + out = { + options.krebs.newsbot-js = api; + config = mkIf cfg.enable imp; + }; + + api = { + enable = mkEnableOption "Enable krebs newsbot"; + ircServer = mkOption { + type = types.str; + default = "echelon.retiolum"; + description = "to which server the bot should connect"; + }; + channel = mkOption { + type = types.str; + default = "#news"; + description = "post the news in this channel"; + }; + masterNick = mkOption { + type = types.str; + default = "knews"; + description = "nickname of the master bot"; + }; + feeds = mkOption { + type = types.path; + description = '' + file with feeds to post + format: + $nick|$feedURI + ''; + }; + urlShortenerHost = mkOption { + type = types.str; + default = "echelon"; + description = "what server to use for url shortening, host"; + }; + urlShortenerPort = mkOption { + type = types.str; + default = "80"; + description = "what server to use for url shortening, port"; + }; + }; + + imp = { + users.extraUsers.newsbot-js = { + name = "newsbot-js"; + uid = genid "newsbot-js"; + description = "newsbot-js user"; + home = "/var/empty"; + }; + + systemd.services.newsbot-js = { + description = "krebs newsbot"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = with pkgs; [ + newsbot-js + ]; + + environment = { + irc_server = cfg.ircServer; + master_nick = cfg.masterNick; + news_channel = cfg.channel; + feeds_file = cfg.feeds; + url_shortener_host = cfg.urlShortenerHost; + url_shortener_port = cfg.urlShortenerPort; + }; + + restartIfChanged = true; + + serviceConfig = { + User = "newsbot-js"; + Restart = "always"; + ExecStart = "${pkgs.newsbot-js}/bin/newsbot"; + }; + }; + }; + +in out diff --git a/krebs/3modules/nginx.nix b/krebs/3modules/nginx.nix index 8d0704e8c..816c2ff69 100644 --- a/krebs/3modules/nginx.nix +++ b/krebs/3modules/nginx.nix @@ -54,6 +54,34 @@ let type = with types; string; default = ""; }; + ssl = mkOption { + type = with types; submodule ({ + options = { + enable = mkEnableOption "ssl"; + certificate = mkOption { + type = str; + }; + certificate_key = mkOption { + type = str; + }; + #TODO: check for valid cipher + ciphers = mkOption { + type = str; + default = "AES128+EECDH:AES128+EDH"; + }; + prefer_server_ciphers = mkOption { + type = bool; + default = true; + }; + protocols = mkOption { + type = listOf (enum [ "SSLv2" "SSLv3" "TLSv1" "TLSv1.1" "TLSv1.2" ]); + default = [ "TLSv1.1" "TLSv1.2" ]; + + }; + }; + }); + default = {}; + }; }; }); default = {}; @@ -89,14 +117,28 @@ let } ''; - to-server = { server-names, listen, locations, extraConfig, ... }: '' - server { - ${concatMapStringsSep "\n" (x: "listen ${x};") listen} - server_name ${toString server-names}; - ${indent extraConfig} - ${indent (concatMapStrings to-location locations)} - } - ''; + to-server = { server-names, listen, locations, extraConfig, ssl, ... }: + let + _extraConfig = if ssl.enable then + extraConfig + '' + ssl_certificate ${ssl.certificate}; + ssl_certificate_key ${ssl.certificate_key}; + ${optionalString ssl.prefer_server_ciphers "ssl_prefer_server_ciphers On;"} + ssl_ciphers ${ssl.ciphers}; + ssl_protocols ${toString ssl.protocols}; + '' + else + extraConfig + ; + + in '' + server { + ${concatMapStringsSep "\n" (x: "listen ${x};") (listen ++ optional ssl.enable "443 ssl")} + server_name ${toString server-names}; + ${indent _extraConfig} + ${indent (concatMapStrings to-location locations)} + } + ''; in out diff --git a/krebs/5pkgs/newsbot-js/default.nix b/krebs/5pkgs/newsbot-js/default.nix new file mode 100644 index 000000000..9e4a51306 --- /dev/null +++ b/krebs/5pkgs/newsbot-js/default.nix @@ -0,0 +1,60 @@ +{ stdenv, makeWrapper, lib, buildEnv, fetchgit, nodePackages, nodejs }: + +with lib; + +let + np = nodePackages.override { + generated = ./packages.nix; + self = np; + }; + + node_env = buildEnv { + name = "node_env"; + paths = [ + np.feedparser + np.form-data + np.irc + np.request + np.shell-quote + ]; + pathsToLink = [ "/lib" ]; + ignoreCollisions = true; + }; + +in nodePackages.buildNodePackage { + name = "newsbot-js"; + + src = fetchgit { + url = "http://cgit.prism/newsbot-js/"; + rev = "09e01639be4ea9691cf5b33f7d9057b68ac98079"; + sha256 = "28ffbed66c2efcd194c47823c7d5d5533c80852fc0cf9d9d4ee609c71d50c142"; + }; + + phases = [ + "unpackPhase" + "installPhase" + ]; + + deps = (filter (v: nixType v == "derivation") (attrValues np)); + + buildInputs = [ + nodejs + makeWrapper + ]; + + installPhase = '' + mkdir -p $out/bin + + cp newsbot.js $out/ + cat > $out/newsbot << EOF + ${nodejs}/bin/node $out/newsbot.js + EOF + chmod +x $out/newsbot + + wrapProgram $out/newsbot \ + --prefix NODE_PATH : ${node_env}/lib/node_modules + + ln -s $out/newsbot /$out/bin/newsbot + ''; + +} diff --git a/krebs/5pkgs/newsbot-js/packages.nix b/krebs/5pkgs/newsbot-js/packages.nix new file mode 100644 index 000000000..982a9d55c --- /dev/null +++ b/krebs/5pkgs/newsbot-js/packages.nix @@ -0,0 +1,1442 @@ +{ self, fetchurl, fetchgit ? null, lib }: + +{ + by-spec."addressparser"."~0.1.3" = + self.by-version."addressparser"."0.1.3"; + by-version."addressparser"."0.1.3" = self.buildNodePackage { + name = "addressparser-0.1.3"; + version = "0.1.3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/addressparser/-/addressparser-0.1.3.tgz"; + name = "addressparser-0.1.3.tgz"; + sha1 = "9e9ab43d257e1ae784e1df5f580c9f5240f58874"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."ansi-color"."0.2.1" = + self.by-version."ansi-color"."0.2.1"; + by-version."ansi-color"."0.2.1" = self.buildNodePackage { + name = "ansi-color-0.2.1"; + version = "0.2.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz"; + name = "ansi-color-0.2.1.tgz"; + sha1 = "3e75c037475217544ed763a8db5709fa9ae5bf9a"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."ansi-regex"."^2.0.0" = + self.by-version."ansi-regex"."2.0.0"; + by-version."ansi-regex"."2.0.0" = self.buildNodePackage { + name = "ansi-regex-2.0.0"; + version = "2.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"; + name = "ansi-regex-2.0.0.tgz"; + sha1 = "c5061b6e0ef8a81775e50f5d66151bf6bf371107"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."ansi-styles"."^2.1.0" = + self.by-version."ansi-styles"."2.1.0"; + by-version."ansi-styles"."2.1.0" = self.buildNodePackage { + name = "ansi-styles-2.1.0"; + version = "2.1.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"; + name = "ansi-styles-2.1.0.tgz"; + sha1 = "990f747146927b559a932bf92959163d60c0d0e2"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."array-filter"."~0.0.0" = + self.by-version."array-filter"."0.0.1"; + by-version."array-filter"."0.0.1" = self.buildNodePackage { + name = "array-filter-0.0.1"; + version = "0.0.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz"; + name = "array-filter-0.0.1.tgz"; + sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."array-indexofobject"."~0.0.1" = + self.by-version."array-indexofobject"."0.0.1"; + by-version."array-indexofobject"."0.0.1" = self.buildNodePackage { + name = "array-indexofobject-0.0.1"; + version = "0.0.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz"; + name = "array-indexofobject-0.0.1.tgz"; + sha1 = "aaa128e62c9b3c358094568c219ff64fe489d42a"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."array-map"."~0.0.0" = + self.by-version."array-map"."0.0.0"; + by-version."array-map"."0.0.0" = self.buildNodePackage { + name = "array-map-0.0.0"; + version = "0.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz"; + name = "array-map-0.0.0.tgz"; + sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."array-reduce"."~0.0.0" = + self.by-version."array-reduce"."0.0.0"; + by-version."array-reduce"."0.0.0" = self.buildNodePackage { + name = "array-reduce-0.0.0"; + version = "0.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz"; + name = "array-reduce-0.0.0.tgz"; + sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."asn1"."0.1.11" = + self.by-version."asn1"."0.1.11"; + by-version."asn1"."0.1.11" = self.buildNodePackage { + name = "asn1-0.1.11"; + version = "0.1.11"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"; + name = "asn1-0.1.11.tgz"; + sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."assert-plus"."^0.1.5" = + self.by-version."assert-plus"."0.1.5"; + by-version."assert-plus"."0.1.5" = self.buildNodePackage { + name = "assert-plus-0.1.5"; + version = "0.1.5"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"; + name = "assert-plus-0.1.5.tgz"; + sha1 = "ee74009413002d84cec7219c6ac811812e723160"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."async"."^1.4.0" = + self.by-version."async"."1.4.2"; + by-version."async"."1.4.2" = self.buildNodePackage { + name = "async-1.4.2"; + version = "1.4.2"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/async/-/async-1.4.2.tgz"; + name = "async-1.4.2.tgz"; + sha1 = "6c9edcb11ced4f0dd2f2d40db0d49a109c088aab"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."aws-sign2"."~0.5.0" = + self.by-version."aws-sign2"."0.5.0"; + by-version."aws-sign2"."0.5.0" = self.buildNodePackage { + name = "aws-sign2-0.5.0"; + version = "0.5.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"; + name = "aws-sign2-0.5.0.tgz"; + sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."bl"."~1.0.0" = + self.by-version."bl"."1.0.0"; + by-version."bl"."1.0.0" = self.buildNodePackage { + name = "bl-1.0.0"; + version = "1.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/bl/-/bl-1.0.0.tgz"; + name = "bl-1.0.0.tgz"; + sha1 = "ada9a8a89a6d7ac60862f7dec7db207873e0c3f5"; + }; + deps = { + "readable-stream-2.0.2" = self.by-version."readable-stream"."2.0.2"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."bluebird"."^2.9.30" = + self.by-version."bluebird"."2.10.2"; + by-version."bluebird"."2.10.2" = self.buildNodePackage { + name = "bluebird-2.10.2"; + version = "2.10.2"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz"; + name = "bluebird-2.10.2.tgz"; + sha1 = "024a5517295308857f14f91f1106fc3b555f446b"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."boom"."2.x.x" = + self.by-version."boom"."2.9.0"; + by-version."boom"."2.9.0" = self.buildNodePackage { + name = "boom-2.9.0"; + version = "2.9.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/boom/-/boom-2.9.0.tgz"; + name = "boom-2.9.0.tgz"; + sha1 = "a54b7fd2fee477d351bf9e371680cbea67f12715"; + }; + deps = { + "hoek-2.16.3" = self.by-version."hoek"."2.16.3"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."boom"."^2.8.x" = + self.by-version."boom"."2.9.0"; + by-spec."caseless"."~0.11.0" = + self.by-version."caseless"."0.11.0"; + by-version."caseless"."0.11.0" = self.buildNodePackage { + name = "caseless-0.11.0"; + version = "0.11.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz"; + name = "caseless-0.11.0.tgz"; + sha1 = "715b96ea9841593cc33067923f5ec60ebda4f7d7"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."chalk"."^1.0.0" = + self.by-version."chalk"."1.1.1"; + by-version."chalk"."1.1.1" = self.buildNodePackage { + name = "chalk-1.1.1"; + version = "1.1.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"; + name = "chalk-1.1.1.tgz"; + sha1 = "509afb67066e7499f7eb3535c77445772ae2d019"; + }; + deps = { + "ansi-styles-2.1.0" = self.by-version."ansi-styles"."2.1.0"; + "escape-string-regexp-1.0.3" = self.by-version."escape-string-regexp"."1.0.3"; + "has-ansi-2.0.0" = self.by-version."has-ansi"."2.0.0"; + "strip-ansi-3.0.0" = self.by-version."strip-ansi"."3.0.0"; + "supports-color-2.0.0" = self.by-version."supports-color"."2.0.0"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."combined-stream"."^1.0.5" = + self.by-version."combined-stream"."1.0.5"; + by-version."combined-stream"."1.0.5" = self.buildNodePackage { + name = "combined-stream-1.0.5"; + version = "1.0.5"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"; + name = "combined-stream-1.0.5.tgz"; + sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009"; + }; + deps = { + "delayed-stream-1.0.0" = self.by-version."delayed-stream"."1.0.0"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."combined-stream"."~1.0.1" = + self.by-version."combined-stream"."1.0.5"; + by-spec."commander"."^2.8.1" = + self.by-version."commander"."2.8.1"; + by-version."commander"."2.8.1" = self.buildNodePackage { + name = "commander-2.8.1"; + version = "2.8.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz"; + name = "commander-2.8.1.tgz"; + sha1 = "06be367febfda0c330aa1e2a072d3dc9762425d4"; + }; + deps = { + "graceful-readlink-1.0.1" = self.by-version."graceful-readlink"."1.0.1"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."core-util-is"."~1.0.0" = + self.by-version."core-util-is"."1.0.1"; + by-version."core-util-is"."1.0.1" = self.buildNodePackage { + name = "core-util-is-1.0.1"; + version = "1.0.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"; + name = "core-util-is-1.0.1.tgz"; + sha1 = "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."cryptiles"."2.x.x" = + self.by-version."cryptiles"."2.0.5"; + by-version."cryptiles"."2.0.5" = self.buildNodePackage { + name = "cryptiles-2.0.5"; + version = "2.0.5"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"; + name = "cryptiles-2.0.5.tgz"; + sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8"; + }; + deps = { + "boom-2.9.0" = self.by-version."boom"."2.9.0"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."ctype"."0.5.3" = + self.by-version."ctype"."0.5.3"; + by-version."ctype"."0.5.3" = self.buildNodePackage { + name = "ctype-0.5.3"; + version = "0.5.3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"; + name = "ctype-0.5.3.tgz"; + sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."delayed-stream"."~1.0.0" = + self.by-version."delayed-stream"."1.0.0"; + by-version."delayed-stream"."1.0.0" = self.buildNodePackage { + name = "delayed-stream-1.0.0"; + version = "1.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"; + name = "delayed-stream-1.0.0.tgz"; + sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."escape-string-regexp"."^1.0.2" = + self.by-version."escape-string-regexp"."1.0.3"; + by-version."escape-string-regexp"."1.0.3" = self.buildNodePackage { + name = "escape-string-regexp-1.0.3"; + version = "1.0.3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"; + name = "escape-string-regexp-1.0.3.tgz"; + sha1 = "9e2d8b25bc2555c3336723750e03f099c2735bb5"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."extend"."~3.0.0" = + self.by-version."extend"."3.0.0"; + by-version."extend"."3.0.0" = self.buildNodePackage { + name = "extend-3.0.0"; + version = "3.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/extend/-/extend-3.0.0.tgz"; + name = "extend-3.0.0.tgz"; + sha1 = "5a474353b9f3353ddd8176dfd37b91c83a46f1d4"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."feedparser"."*" = + self.by-version."feedparser"."1.1.3"; + by-version."feedparser"."1.1.3" = self.buildNodePackage { + name = "feedparser-1.1.3"; + version = "1.1.3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/feedparser/-/feedparser-1.1.3.tgz"; + name = "feedparser-1.1.3.tgz"; + sha1 = "0b725f6b4cbe4b26d518baec0d010ad020156c8b"; + }; + deps = { + "sax-0.6.1" = self.by-version."sax"."0.6.1"; + "addressparser-0.1.3" = self.by-version."addressparser"."0.1.3"; + "array-indexofobject-0.0.1" = self.by-version."array-indexofobject"."0.0.1"; + "readable-stream-1.0.33" = self.by-version."readable-stream"."1.0.33"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + "feedparser" = self.by-version."feedparser"."1.1.3"; + by-spec."forever-agent"."~0.6.0" = + self.by-version."forever-agent"."0.6.1"; + by-version."forever-agent"."0.6.1" = self.buildNodePackage { + name = "forever-agent-0.6.1"; + version = "0.6.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"; + name = "forever-agent-0.6.1.tgz"; + sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."form-data"."*" = + self.by-version."form-data"."1.0.0-rc3"; + by-version."form-data"."1.0.0-rc3" = self.buildNodePackage { + name = "form-data-1.0.0-rc3"; + version = "1.0.0-rc3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz"; + name = "form-data-1.0.0-rc3.tgz"; + sha1 = "d35bc62e7fbc2937ae78f948aaa0d38d90607577"; + }; + deps = { + "async-1.4.2" = self.by-version."async"."1.4.2"; + "combined-stream-1.0.5" = self.by-version."combined-stream"."1.0.5"; + "mime-types-2.1.7" = self.by-version."mime-types"."2.1.7"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + "form-data" = self.by-version."form-data"."1.0.0-rc3"; + by-spec."form-data"."~1.0.0-rc1" = + self.by-version."form-data"."1.0.0-rc3"; + by-spec."generate-function"."^2.0.0" = + self.by-version."generate-function"."2.0.0"; + by-version."generate-function"."2.0.0" = self.buildNodePackage { + name = "generate-function-2.0.0"; + version = "2.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"; + name = "generate-function-2.0.0.tgz"; + sha1 = "6858fe7c0969b7d4e9093337647ac79f60dfbe74"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."generate-object-property"."^1.1.0" = + self.by-version."generate-object-property"."1.2.0"; + by-version."generate-object-property"."1.2.0" = self.buildNodePackage { + name = "generate-object-property-1.2.0"; + version = "1.2.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"; + name = "generate-object-property-1.2.0.tgz"; + sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0"; + }; + deps = { + "is-property-1.0.2" = self.by-version."is-property"."1.0.2"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."graceful-readlink".">= 1.0.0" = + self.by-version."graceful-readlink"."1.0.1"; + by-version."graceful-readlink"."1.0.1" = self.buildNodePackage { + name = "graceful-readlink-1.0.1"; + version = "1.0.1"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"; + name = "graceful-readlink-1.0.1.tgz"; + sha1 = "4cafad76bc62f02fa039b2f94e9a3dd3a391a725"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."har-validator"."^1.6.1" = + self.by-version."har-validator"."1.8.0"; + by-version."har-validator"."1.8.0" = self.buildNodePackage { + name = "har-validator-1.8.0"; + version = "1.8.0"; + bin = true; + src = fetchurl { + url = "http://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz"; + name = "har-validator-1.8.0.tgz"; + sha1 = "d83842b0eb4c435960aeb108a067a3aa94c0eeb2"; + }; + deps = { + "bluebird-2.10.2" = self.by-version."bluebird"."2.10.2"; + "chalk-1.1.1" = self.by-version."chalk"."1.1.1"; + "commander-2.8.1" = self.by-version."commander"."2.8.1"; + "is-my-json-valid-2.12.2" = self.by-version."is-my-json-valid"."2.12.2"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."has-ansi"."^2.0.0" = + self.by-version."has-ansi"."2.0.0"; + by-version."has-ansi"."2.0.0" = self.buildNodePackage { + name = "has-ansi-2.0.0"; + version = "2.0.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; + name = "has-ansi-2.0.0.tgz"; + sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; + }; + deps = { + "ansi-regex-2.0.0" = self.by-version."ansi-regex"."2.0.0"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."hashish"."~0.0.4" = + self.by-version."hashish"."0.0.4"; + by-version."hashish"."0.0.4" = self.buildNodePackage { + name = "hashish-0.0.4"; + version = "0.0.4"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/hashish/-/hashish-0.0.4.tgz"; + name = "hashish-0.0.4.tgz"; + sha1 = "6d60bc6ffaf711b6afd60e426d077988014e6554"; + }; + deps = { + "traverse-0.6.6" = self.by-version."traverse"."0.6.6"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."hawk"."~3.1.0" = + self.by-version."hawk"."3.1.0"; + by-version."hawk"."3.1.0" = self.buildNodePackage { + name = "hawk-3.1.0"; + version = "3.1.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz"; + name = "hawk-3.1.0.tgz"; + sha1 = "8a13ae19977ec607602f3f0b9fd676f18c384e44"; + }; + deps = { + "hoek-2.16.3" = self.by-version."hoek"."2.16.3"; + "boom-2.9.0" = self.by-version."boom"."2.9.0"; + "cryptiles-2.0.5" = self.by-version."cryptiles"."2.0.5"; + "sntp-1.0.9" = self.by-version."sntp"."1.0.9"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."hoek"."2.x.x" = + self.by-version."hoek"."2.16.3"; + by-version."hoek"."2.16.3" = self.buildNodePackage { + name = "hoek-2.16.3"; + version = "2.16.3"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"; + name = "hoek-2.16.3.tgz"; + sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."http-signature"."~0.11.0" = + self.by-version."http-signature"."0.11.0"; + by-version."http-signature"."0.11.0" = self.buildNodePackage { + name = "http-signature-0.11.0"; + version = "0.11.0"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz"; + name = "http-signature-0.11.0.tgz"; + sha1 = "1796cf67a001ad5cd6849dca0991485f09089fe6"; + }; + deps = { + "assert-plus-0.1.5" = self.by-version."assert-plus"."0.1.5"; + "asn1-0.1.11" = self.by-version."asn1"."0.1.11"; + "ctype-0.5.3" = self.by-version."ctype"."0.5.3"; + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."iconv"."~2.1.6" = + self.by-version."iconv"."2.1.11"; + by-version."iconv"."2.1.11" = self.buildNodePackage { + name = "iconv-2.1.11"; + version = "2.1.11"; + bin = false; + src = fetchurl { + url = "http://registry.npmjs.org/iconv/-/iconv-2.1.11.tgz"; + name = "iconv-2.1.11.tgz"; + sha1 = "5f5da93a643506f5ceaa8bd9c78d6174f8b9351a"; + }; + deps = { + "nan-2.0.9" = s |