diff options
29 files changed, 1524 insertions, 1846 deletions
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index 4b17c4abd..e0810ab63 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -21,6 +21,7 @@ let ./git.nix ./go.nix ./iptables.nix + ./kapacitor.nix ./newsbot-js.nix ./nginx.nix ./nixpkgs.nix diff --git a/krebs/3modules/kapacitor.nix b/krebs/3modules/kapacitor.nix new file mode 100644 index 000000000..2ec67c73d --- /dev/null +++ b/krebs/3modules/kapacitor.nix @@ -0,0 +1,173 @@ +{ config, lib, pkgs, ... }: + +with builtins; +with import <stockholm/lib>; + +let + cfg = config.krebs.kapacitor; + + out = { + options.krebs.kapacitor = api; + config = mkIf cfg.enable imp; + }; + + configOptions = recursiveUpdate { + hostname = "localhost"; + data_dir = cfg.dataDir; + http = { + bind-address = ":9092"; + auth-enabled = false; + log-enabled = false; + gtgwrite-tracing = false; + pprof-enabled = false; + https-enabled = false; + https-certificate = "/etc/ssl/kapacitor.pem"; + shutdown-timeout = "10s"; + shared-secret = ""; + }; + + replay ={ + dir = "${cfg.dataDir}/replay"; + }; + + storage = { + boltdb = "${cfg.dataDir}/kapacitor.db"; + }; + + task = { + dir = "${cfg.dataDir}/tasks"; + snapshot-interval = "1m0s"; + }; + + influxdb = [{ + enabled = true; + name = "default"; + default = false; + urls = ["http://localhost:8086"]; + username = ""; + password = ""; + ssl-ca = ""; + ssl-cert = ""; + ssl-key = ""; + insecure-skip-verify = false; + timeout = "0s"; + disable-subscriptions = false; + subscription-protocol = "http"; + udp-bind = ""; + udp-buffer = 1000; + udp-read-buffer = 0; + startup-timeout = "5m0s"; + subscriptions-sync-interval = "1m0s"; + influxdb.excluded-subscriptions = { + _kapacitor = ["autogen"]; + }; + }]; + + logging = { + file = "STDERR"; + level = "INFO"; + }; + + deadman = { + interval = "10s"; + id = "{{ .Group }}:NODE_NAME for task '{{ .TaskName }}'"; + message = "{{ .ID }} is {{ if eq .Level \"OK\" }}alive{{ else }}dead{{ end }}: {{ index .Fields \"emitted\" | printf \"%0.3f\" }} points/INTERVAL."; + global = false; + }; + } cfg.extraConfig; + + api = { + enable = mkEnableOption "kapacitor"; + dataDir = mkOption { + type = types.str; + default = "/var/lib/kapacitor"; + }; + user = mkOption { + type = types.user; + default = { + name = "kapacitor"; + home = cfg.dataDir; + }; + }; + group = mkOption { + type = types.group; + default = { + name = "kapacitor"; + }; + }; + extraConfig = mkOption { + type = types.attrs; + default = {}; + }; + alarms = mkOption { + type = with types; attrsOf (submodule { + options = { + database = mkOption { + type = str; + }; + text = mkOption { + type = str; + }; + }; + }); + default = {}; + }; + }; + + configFile = pkgs.runCommand "kapacitor.toml" {} '' + ${pkgs.remarshal}/bin/remarshal -if json -of toml \ + < ${pkgs.writeText "kapacitor.json" (builtins.toJSON configOptions)} \ + > $out + ''; + + imp = { + users = { + groups.${cfg.group.name} = { + inherit (cfg.group) name gid; + }; + users.${cfg.user.name} = { + inherit (cfg.user) home name uid; + createHome = true; + group = cfg.group.name; + }; + }; + + systemd.services.kapacitor = { + description = "kapacitor"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + restartIfChanged = true; + + serviceConfig = { + Restart = "always"; + User = cfg.user.name; + ExecStart = "${pkgs.kapacitor}/bin/kapacitord -config ${configFile}"; + }; + }; + + systemd.services.kapacitor-alarms = { + description = "kapacitor-alarms"; + after = [ "kapacitor.service" ]; + wantedBy = [ "multi-user.target" ]; + + restartIfChanged = true; + + serviceConfig = { + Type = "oneshot"; + User = cfg.user.name; + ExecStart = pkgs.writeDash "add_alarms" '' + ${pkgs.kapacitor}/bin/kapacitor delete tasks \* + ${concatStrings (mapAttrsToList (name: alarm: '' + ${pkgs.kapacitor}/bin/kapacitor define ${name} \ + -type batch \ + -tick ${pkgs.writeText "${name}.tick" alarm.text} \ + -dbrp ${alarm.database}.default + ${pkgs.kapacitor}/bin/kapacitor enable ${name} + '') cfg.alarms)} + ''; + }; + }; + + }; +in out diff --git a/krebs/3modules/lass/default.nix b/krebs/3modules/lass/default.nix index d35a9f357..0b67abd11 100644 --- a/krebs/3modules/lass/default.nix +++ b/krebs/3modules/lass/default.nix @@ -302,7 +302,9 @@ with import <stockholm/lib>; ssh.privkey.path = <secrets/ssh.id_ed25519>; ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOPgQIMYiyD4/Co+nlOQWEzCKssemOEXAY/lbIZZaMhj"; }; - + iso = { + cores = 1; + }; }; users = { lass = { diff --git a/krebs/5pkgs/Reaktor/plugins.nix b/krebs/5pkgs/Reaktor/plugins.nix index d4774dd69..e85e41cfe 100644 --- a/krebs/5pkgs/Reaktor/plugins.nix +++ b/krebs/5pkgs/Reaktor/plugins.nix @@ -118,7 +118,7 @@ rec { }; url-title = (buildSimpleReaktorPlugin "url-title" { - pattern = "^.*(?P<args>http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)$$"; + pattern = "^.*(?P<args>http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+).*$$"; path = with pkgs; [ curl perl ]; script = pkgs.writeDash "lambda-pl" '' if [ "$#" -gt 0 ]; then diff --git a/krebs/5pkgs/builders.nix b/krebs/5pkgs/builders.nix deleted file mode 100644 index 49d04be4d..000000000 --- a/krebs/5pkgs/builders.nix +++ /dev/null @@ -1,293 +0,0 @@ -{ config, pkgs, ... }: -with import <stockholm/lib>; -rec { - execve = name: { filename, argv ? null, envp ? {}, destination ? "" }: let - in writeC name { inherit destination; } /* c */ '' - #include <unistd.h> - - static char *const filename = ${toC filename}; - - ${if argv == null - then /* Propagate arguments */ /* c */ '' - #define MAIN_ARGS int argc, char **argv - '' - else /* Provide fixed arguments */ /* c */ '' - #define MAIN_ARGS void - static char *const argv[] = ${toC (argv ++ [null])}; - ''} - - static char *const envp[] = ${toC ( - mapAttrsToList (k: v: "${k}=${v}") envp ++ [null] - )}; - - int main (MAIN_ARGS) { - execve(filename, argv, envp); - return -1; - } - ''; - - execveBin = name: cfg: execve name (cfg // { destination = "/bin/${name}"; }); - - makeScriptWriter = interpreter: name: text: - assert (with types; either absolute-pathname filename).check name; - pkgs.writeOut (baseNameOf name) { - ${optionalString (types.absolute-pathname.check name) name} = { - executable = true; - text = "#! ${interpreter}\n${text}"; - }; - }; - - writeBash = name: text: - assert (with types; either absolute-pathname filename).check name; - pkgs.writeOut (baseNameOf name) { - ${optionalString (types.absolute-pathname.check name) name} = { - check = pkgs.writeDash "shellcheck.sh" '' - ${pkgs.haskellPackages.ShellCheck}/bin/shellcheck "$1" || : - ''; - executable = true; - text = "#! ${pkgs.bash}/bin/bash\n${text}"; - }; - }; - - writeBashBin = name: - assert types.filename.check name; - pkgs.writeBash "/bin/${name}"; - - writeC = name: { destination ? "" }: src: pkgs.runCommand name {} /* sh */ '' - PATH=${makeBinPath (with pkgs; [ - binutils - coreutils - gcc - ])} - src=${pkgs.writeText "${name}.c" src} - exe=$out${destination} - mkdir -p "$(dirname "$exe")" - gcc -O -Wall -o "$exe" $src - strip --strip-unneeded "$exe" - ''; - - writeDash = makeScriptWriter "${pkgs.dash}/bin/dash"; - - writeDashBin = name: - assert types.filename.check name; - pkgs.writeDash "/bin/${name}"; - - writeEximConfig = name: text: pkgs.runCommand name { - inherit text; - passAsFile = [ "text" ]; - } /* sh */ '' - # TODO validate exim config even with config.nix.useChroot == true - # currently doing so will fail because "user exim was not found" - #${pkgs.exim}/bin/exim -C "$textPath" -bV >/dev/null - mv "$textPath" $out - ''; - - writeOut = name: specs0: - let - writers.link = - { path - , link - }: - assert path == "" || types.absolute-pathname.check path; - assert types.package.check link; - { - install = /* sh */ '' - ${optionalString (dirOf path != "/") /* sh */ '' - ${pkgs.coreutils}/bin/mkdir -p $out${dirOf path} - ''} - ${pkgs.coreutils}/bin/ln -s ${link} $out${path} - ''; - }; - - writers.text = - { path - , check ? null - , executable ? false - , mode ? if executable then "0755" else "0644" - , text - }: - assert path == "" || types.absolute-pathname.check path; - assert types.bool.check executable; - assert types.file-mode.check mode; - rec { - var = "file_${hashString "sha1" path}"; - val = text; - install = /* sh */ '' - ${optionalString (check != null) /* sh */ '' - ${check} ''$${var}Path - ''} - ${pkgs.coreutils}/bin/install -m ${mode} -D ''$${var}Path $out${path} - ''; - }; - - write = spec: writers.${spec.type} (removeAttrs spec ["type"]); - - specs = - mapAttrsToList - (path: spec: let - known-types = [ "link" "text" ]; - found-types = attrNames (getAttrs known-types spec); - type = assert length found-types == 1; head found-types; - in spec // { inherit path type; }) - specs0; - - files = map write specs; - - filevars = genAttrs' (filter (hasAttr "var") files) - (spec: nameValuePair spec.var spec.val); - - env = filevars // { passAsFile = attrNames filevars; }; - in - pkgs.runCommand name env /* sh */ '' - set -efu - ${concatMapStringsSep "\n" (getAttr "install") files} - ''; - - writeHaskell = - k: - let - k' = parseDrvName k; - name = k'.name; - version = if k'.version != "" then k'.version else "0"; - in - { base-depends ? ["base"] - , executables ? {} - , ghc-options ? ["-Wall" "-O3" "-threaded" "-rtsopts"] - , haskellPackages ? pkgs.haskellPackages - , library ? null - , license ? "WTFPL" - }: - let - isExecutable = executables != {}; - isLibrary = library != null; - - cabal-file = pkgs.writeText "${name}-${version}.cabal" /* cabal */ '' - build-type: Simple - cabal-version: >= 1.2 - name: ${name} - version: ${version} - ${concatStringsSep "\n" (mapAttrsToList exe-section executables)} - ${optionalString isLibrary (lib-section library)} - ''; - - exe-install = - exe-name: - { file ? pkgs.writeText "${name}-${exe-name}.hs" text - , relpath ? "${exe-name}.hs" - , text - , ... }: - if types.filename.check exe-name - then /* sh */ "install -D ${file} $out/${relpath}" - else throw "argument ‘exe-name’ is not a ${types.filename.name}"; - - exe-section = - exe-name: - { build-depends ? base-depends ++ extra-depends - , extra-depends ? [] - , file ? pkgs.writeText "${name}-${exe-name}.hs" text - , relpath ? "${exe-name}.hs" - , text - , ... }: /* cabal */ '' - executable ${exe-name} - build-depends: ${concatStringsSep "," build-depends} - ghc-options: ${toString ghc-options} - main-is: ${relpath} - ''; - - get-depends = - { build-depends ? base-depends ++ extra-depends - , extra-depends ? [] - , ... - }: - build-depends; - - lib-install = - { exposed-modules - , ... }: - concatStringsSep "\n" (mapAttrsToList mod-install exposed-modules); - - lib-section = - { build-depends ? base-depends ++ extra-depends - , extra-depends ? [] - , exposed-modules - , ... }: /* cabal */ '' - library - build-depends: ${concatStringsSep "," build-depends} - ghc-options: ${toString ghc-options} - exposed-modules: ${concatStringsSep "," (attrNames exposed-modules)} - ''; - - mod-install = - mod-name: - { file ? pkgs.writeText "${name}-${mod-name}.hs" text - , relpath ? "${replaceStrings ["."] ["/"] mod-name}.hs" - , text - , ... }: - if types.haskell.modid.check mod-name - then /* sh */ "install -D ${file} $out/${relpath}" - else throw "argument ‘mod-name’ is not a ${types.haskell.modid.name}"; - in - haskellPackages.mkDerivation { - inherit isExecutable isLibrary license version; - executableHaskellDepends = - attrVals - (concatMap get-depends (attrValues executables)) - haskellPackages; - libraryHaskellDepends = - attrVals - (optionals isLibrary (get-depends library)) - haskellPackages; - pname = name; - src = pkgs.runCommand "${name}-${version}-src" {} /* sh */ '' - install -D ${cabal-file} $out/${cabal-file.name} - ${optionalString isLibrary (lib-install library)} - ${concatStringsSep "\n" (mapAttrsToList exe-install executables)} - ''; - }; - - writeJq = name: src: pkgs.runCommand name {} /* sh */ '' - name=${assert types.filename.check name; name} - src=${shell.escape src} - - # syntax check - printf '%s' "$src" > src.jq - ${pkgs.jq}/bin/jq -f src.jq < /dev/null - - cp src.jq "$out" - ''; - - writeJSON = name: value: pkgs.writeText name (toJSON value); - - writeNixFromCabal = - trace (toString [ - "The function `writeNixFromCabal` has been deprecated in favour of" - "`writeHaskell`." - ]) - (name: path: pkgs.runCommand name {} /* sh */ '' - ${pkgs.cabal2nix}/bin/cabal2nix ${path} > $out - ''); - - writePython2 = name: src: pkgs.runCommand name {} /* sh */ '' - name=${assert types.filename.check name; name} - src=${shell.escape src} - - # syntax check - printf '%s' "$src" > src.py - ${pkgs.python2}/bin/python -m py_compile src.py - - cp src.py "$out" - ''; - - writePython3 = name: src: pkgs.runCommand name {} /* sh */ '' - name=${assert types.filename.check name; name} - src=${shell.escape src} - - # syntax check - printf '%s' "$src" > src.py - ${pkgs.python3}/bin/python -m py_compile src.py - - cp src.py "$out" - ''; - - writeSed = makeScriptWriter "${pkgs.gnused}/bin/sed -f"; -} diff --git a/krebs/5pkgs/default.nix b/krebs/5pkgs/default.nix index e01b6e804..8bb244cd3 100644 --- a/krebs/5pkgs/default.nix +++ b/krebs/5pkgs/default.nix @@ -1,13 +1,16 @@ { config, lib, pkgs, ... }@args: with import <stockholm/lib>; { - nixpkgs.config.packageOverrides = pkgs: let + imports = [ + ./writers.nix + ]; + nixpkgs.config.packageOverrides = oldpkgs: let # This callPackage will try to detect obsolete overrides. callPackage = path: args: let override = pkgs.callPackage path args; upstream = optionalAttrs (override ? "name") - (pkgs.${(parseDrvName override.name).name} or {}); + (oldpkgs.${(parseDrvName override.name).name} or {}); in if upstream ? "name" && override ? "name" && compareVersions upstream.name override.name != -1 @@ -15,14 +18,13 @@ with import <stockholm/lib>; else override; in {} - // import ./builders.nix args // mapAttrs (_: flip callPackage {}) (filterAttrs (_: dir: pathExists (dir + "/default.nix")) (subdirsOf ./.)) // { empty = pkgs.runCommand "empty-1.0.0" {} "mkdir $out"; - haskellPackages = pkgs.haskellPackages.override { + haskellPackages = oldpkgs.haskellPackages.override { overrides = self: super: mapAttrs (name: path: self.callPackage path {}) (mapAttrs' @@ -45,17 +47,15 @@ with import <stockholm/lib>; buildbot-worker = callPackage ./buildbot/worker.nix {}; # https://github.com/proot-me/PRoot/issues/106 - proot = overrideDerivation pkgs.proot (oldAttrs: { - patches = singleton (pkgs.fetchurl { - url = https://github.com/openmole/PRoot/commit/10119a1f1fd7dea012464ae176c2b5fc3eb18928.diff; - sha256 = "0cmd95mz8p5ifjvfvi4g9zzyxqddbscxin2j3a9zbmbjl2wi458g"; - }); - }); + proot = pkgs.writeDashBin "proot" '' + export PROOT_NO_SECCOMP=1 + exec ${oldpkgs.proot}/bin/proot "$@" + ''; # XXX symlinkJoin changed arguments somewhere around nixpkgs d541e0d symlinkJoin = { name, paths, ... }@args: let - x = pkgs.symlinkJoin args; - in if typeOf x != "lambda" then x else pkgs.symlinkJoin name paths; + x = oldpkgs.symlinkJoin args; + in if typeOf x != "lambda" then x else oldpkgs.symlinkJoin name paths; test = { infest-cac-centos7 = callPackage ./test/infest-cac-centos7 {}; diff --git a/krebs/5pkgs/fortclientsslvpn/default.nix b/krebs/5pkgs/fortclientsslvpn/default.nix index 07420c4d3..cbcfab05f 100644 --- a/krebs/5pkgs/fortclientsslvpn/default.nix +++ b/krebs/5pkgs/fortclientsslvpn/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, gtk, glib, libSM, gdk_pixbuf, libX11, libXinerama, iproute, +{ stdenv, lib, fetchurl, gnome3, glib, libSM, gdk_pixbuf, libX11, libXinerama, iproute, makeWrapper, libredirect, ppp, coreutils, gawk, pango }: stdenv.mkDerivation rec { name = "forticlientsslvpn"; @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ]; guiLibPath = lib.makeLibraryPath [ - gtk + gnome3.gtk glib libSM gdk_pixbuf diff --git a/krebs/5pkgs/kapacitor/default.nix b/krebs/5pkgs/kapacitor/default.nix deleted file mode 100644 index 804826941..000000000 --- a/krebs/5pkgs/kapacitor/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, lib, fetchFromGitHub, buildGoPackage }: - -buildGoPackage rec { - name = "kapacitor-${version}"; - version = "1.0.0"; - - goPackagePath = "github.com/influxdata/kapacitor"; - - src = fetchFromGitHub { - owner = "influxdata"; - repo = "kapacitor"; - rev = "v${version}"; - sha256 = "14l9bhj6qdif79s4dyqqbnjgj3m4iarvw0ckld1wdhpdgvl8w9qh"; - }; - - meta = with lib; { - description = "Open source framework for processing, monitoring, and alerting on time series data"; - license = licenses.mit; - homepage = https://influxdata.com/time-series-platform/kapacitor/; - maintainers = with maintainers; [offline]; - platforms = with platforms; linux; - }; -} diff --git a/krebs/5pkgs/newsbot-js/packages.nix b/krebs/5pkgs/newsbot-js/packages.nix index 982a9d55c..62921cb8f 100644 --- a/krebs/5pkgs/newsbot-js/packages.nix +++ b/krebs/5pkgs/newsbot-js/packages.nix @@ -1,35 +1,16 @@ { 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"; + by-spec."addressparser"."^1.0.1" = + self.by-version."addressparser"."1.0.1"; + by-version."addressparser"."1.0.1" = self.buildNodePackage { + name = "addressparser-1.0.1"; + version = "1.0.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"; + url = "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz"; + name = "addressparser-1.0.1.tgz"; + sha1 = "47afbe1a2a9262191db6838e4fd1d39b40821746"; }; deps = { }; @@ -40,15 +21,15 @@ 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"; + self.by-version."ansi-regex"."2.1.1"; + by-version."ansi-regex"."2.1.1" = self.buildNodePackage { + name = "ansi-regex-2.1.1"; + version = "2.1.1"; 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"; + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; + name = "ansi-regex-2.1.1.tgz"; + sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; }; deps = { }; @@ -58,16 +39,16 @@ 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"; + by-spec."ansi-styles"."^2.2.1" = + self.by-version."ansi-styles"."2.2.1"; + by-version."ansi-styles"."2.2.1" = self.buildNodePackage { + name = "ansi-styles-2.2.1"; + version = "2.2.1"; 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"; + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; + name = "ansi-styles-2.2.1.tgz"; + sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; }; deps = { }; @@ -84,7 +65,7 @@ version = "0.0.1"; bin = false; src = fetchurl { - url = "http://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz"; + url = "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz"; name = "array-filter-0.0.1.tgz"; sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec"; }; @@ -103,7 +84,7 @@ version = "0.0.1"; bin = false; src = fetchurl { - url = "http://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz"; + url = "https://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz"; name = "array-indexofobject-0.0.1.tgz"; sha1 = "aaa128e62c9b3c358094568c219ff64fe489d42a"; }; @@ -122,7 +103,7 @@ version = "0.0.0"; bin = false; src = fetchurl { - url = "http://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz"; + url = "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz"; name = "array-map-0.0.0.tgz"; sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662"; }; @@ -141,7 +122,7 @@ version = "0.0.0"; bin = false; src = fetchurl { - url = "http://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz"; + url = "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz"; name = "array-reduce-0.0.0.tgz"; sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b"; }; @@ -153,16 +134,35 @@ 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"; + by-spec."asn1"."~0.2.3" = + self.by-version."asn1"."0.2.3"; + by-version."asn1"."0.2.3" = self.buildNodePackage { + name = "asn1-0.2.3"; + version = "0.2.3"; + bin = false; + src = fetchurl { + url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz"; + name = "asn1-0.2.3.tgz"; + sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86"; + }; + deps = { + }; + optionalDependencies = { + }; + peerDependencies = []; + os = [ ]; + cpu = [ ]; + }; + by-spec."assert-plus"."^0.2.0" = + self.by-version."assert-plus"."0.2.0"; + by-version."assert-plus"."0.2.0" = self.buildNodePackage { + name = "assert-plus-0.2.0"; + version = "0.2.0"; bin = false; src = fetc |