summaryrefslogtreecommitdiffstats
path: root/krebs
diff options
context:
space:
mode:
Diffstat (limited to 'krebs')
-rw-r--r--krebs/3modules/Reaktor.nix216
-rw-r--r--krebs/3modules/default.nix3
-rw-r--r--krebs/3modules/exim-smarthost.nix1
-rw-r--r--krebs/3modules/fetchWallpaper.nix2
-rw-r--r--krebs/3modules/git.nix8
-rw-r--r--krebs/3modules/nginx.nix2
-rw-r--r--krebs/3modules/nin/default.nix65
-rw-r--r--krebs/3modules/tv/default.nix2
-rw-r--r--krebs/4lib/infest/prepare.sh10
-rw-r--r--krebs/5pkgs/Reaktor/plugins.nix12
-rw-r--r--krebs/5pkgs/bepasty-client-cli/default.nix13
-rw-r--r--krebs/5pkgs/kapacitor/default.nix23
-rw-r--r--krebs/5pkgs/telegraf/default.nix27
-rw-r--r--krebs/5pkgs/telegraf/deps-1.1.2.nix588
14 files changed, 846 insertions, 126 deletions
diff --git a/krebs/3modules/Reaktor.nix b/krebs/3modules/Reaktor.nix
index d87003ac2..a70f1ef5d 100644
--- a/krebs/3modules/Reaktor.nix
+++ b/krebs/3modules/Reaktor.nix
@@ -3,99 +3,88 @@
with import <stockholm/lib>;
let
- ReaktorConfig = pkgs.writeText "config.py" ''
- ${if (isString cfg.overrideConfig ) then ''
- # Overriden Config
- ${cfg.overrideConfig}
- '' else ""}
- ## Extra Config
- ${concatStringsSep "\n" (map (plug: plug.config) cfg.plugins)}
- ${cfg.extraConfig}
- '';
cfg = config.krebs.Reaktor;
+ workdir = "/var/lib/Reaktor";
+
out = {
options.krebs.Reaktor = api;
- config = lib.mkIf cfg.enable imp;
+ config = imp;
};
- api = {
- enable = mkOption {
- default = false;
- description = ''
- Start Reaktor at system boot
- '';
- };
+ api = mkOption {
+ default = {};
+ type = with types; attrsOf (submodule ({ options = {
- nickname = mkOption {
- default = config.krebs.build.host.name + "|r";
- type = types.string;
- description = ''
- The nick name of the irc bot.
- Defaults to {hostname}|r
- '';
- };
+ nickname = mkOption {
+ default = config.krebs.build.host.name + "|r";
+ type = types.string;
+ description = ''
+ The nick name of the irc bot.
+ Defaults to {hostname}|r
+ '';
+ };
- overrideConfig = mkOption {
- default = null;
- type = types.nullOr types.str;
- description = ''
- configuration to be used instead of default ones.
- Reaktor default cfg can be retrieved via `reaktor get-config`
- '';
- };
- plugins = mkOption {
- default = [pkgs.ReaktorPlugins.nixos-version];
- };
- extraConfig = mkOption {
- default = "";
- type = types.string;
- description = ''
- configuration appended to the default or overridden configuration
- '';
- };
+ overrideConfig = mkOption {
+ default = null;
+ type = types.nullOr types.str;
+ description = ''
+ configuration to be used instead of default ones.
+ Reaktor default cfg can be retrieved via `reaktor get-config`
+ '';
+ };
- workdir = mkOption {
- default = "/var/lib/Reaktor";
- type = types.str;
- description = ''
- Reaktor working directory
- '';
- };
- extraEnviron = mkOption {
- default = {};
- type = types.attrsOf types.str;
- description = ''
- Environment to be provided to the service, can be:
- REAKTOR_HOST
- REAKTOR_PORT
- REAKTOR_STATEDIR
-
- debug and nickname can be set separately via the Reaktor api
- '';
- };
- channels = mkOption {
- default = [ "#krebs" ];
- type = types.listOf types.str;
- description = ''
- Channels the Reaktor should connect to at startup.
- '';
- };
- debug = mkOption {
- default = false;
- description = ''
- Reaktor debug output
- '';
- };
+ plugins = mkOption {
+ default = [pkgs.ReaktorPlugins.nixos-version];
+ };
+
+ extraConfig = mkOption {
+ default = "";
+ type = types.string;
+ description = ''
+ configuration appended to the default or overridden configuration
+ '';
+ };
+
+ extraEnviron = mkOption {
+ default = {};
+ type = types.attrsOf types.str;
+ description = ''
+ Environment to be provided to the service, can be:
+ REAKTOR_HOST
+ REAKTOR_PORT
+ REAKTOR_STATEDIR
+
+ debug and nickname can be set separately via the Reaktor api
+ '';
+ };
+
+ channels = mkOption {
+ default = [ "#krebs" ];
+ type = types.listOf types.str;
+ description = ''
+ Channels the Reaktor should connect to at startup.
+ '';
+ };
+
+ debug = mkOption {
+ default = false;
+ description = ''
+ Reaktor debug output
+ '';
+ };
+ };}));
};
imp = {
+ # TODO get user per configured bot
+ # TODO get home from api
# for reaktor get-config
users.extraUsers = singleton rec {
name = "Reaktor";
uid = genid name;
description = "Reaktor user";
- home = cfg.workdir;
+ home = workdir;
createHome = true;
};
@@ -104,39 +93,52 @@ let
# gid = config.ids.gids.Reaktor;
#};
- systemd.services.Reaktor = {
- path = with pkgs; [
- utillinux #flock for tell_on-join
- git # for nag
- python # for caps
- ];
- description = "Reaktor IRC Bot";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- environment = {
- GIT_SSL_CAINFO = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
- REAKTOR_NICKNAME = cfg.nickname;
- REAKTOR_DEBUG = (if cfg.debug then "True" else "False");
- REAKTOR_CHANNELS = lib.concatStringsSep "," cfg.channels;
- state_dir = cfg.workdir;
-
- } // cfg.extraEnviron;
- serviceConfig= {
- ExecStartPre = pkgs.writeScript "Reaktor-init" ''
- #! /bin/sh
- ${if (isString cfg.overrideConfig) then
- ''cp ${ReaktorConfig} /tmp/config.py''
- else
- ''(${pkgs.Reaktor}/bin/reaktor get-config;cat "${ReaktorConfig}" ) > /tmp/config.py''
- }
+ systemd.services = mapAttrs' (name: botcfg:
+ let
+ ReaktorConfig = pkgs.writeText "config.py" ''
+ ${if (isString botcfg.overrideConfig ) then ''
+ # Overriden Config
+ ${botcfg.overrideConfig}
+ '' else ""}
+ ## Extra Config
+ ${concatStringsSep "\n" (map (plug: plug.config) botcfg.plugins)}
+ ${botcfg.extraConfig}
'';
- ExecStart = "${pkgs.Reaktor}/bin/reaktor run /tmp/config.py";
- PrivateTmp = "true";
- User = "Reaktor";
- Restart = "always";
- RestartSec= "30" ;
+ in nameValuePair "Reaktor-${name}" {
+ path = with pkgs; [
+ utillinux #flock for tell_on-join
+ git # for nag
+ python # for caps
+ ];
+ description = "Reaktor IRC Bot";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ environment = {
+ GIT_SSL_CAINFO = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
+ REAKTOR_NICKNAME = botcfg.nickname;
+ REAKTOR_DEBUG = (if botcfg.debug then "True" else "False");
+ REAKTOR_CHANNELS = lib.concatStringsSep "," botcfg.channels;
+ state_dir = workdir;
+
+ } // botcfg.extraEnviron;
+ serviceConfig= {
+ ExecStartPre = pkgs.writeScript "Reaktor-init" ''
+ #! /bin/sh
+ ${if (isString botcfg.overrideConfig) then
+ ''cp ${ReaktorConfig} /tmp/reaktor-${name}-config.py''
+ else
+ ''(${pkgs.Reaktor}/bin/reaktor get-config;cat "${ReaktorConfig}" ) > /tmp/reaktor-${name}-config.py''
+ }
+ '';
+ ExecStart = "${pkgs.Reaktor}/bin/reaktor run /tmp/reaktor-${name}-config.py";
+ PrivateTmp = "true";
+ User = "Reaktor";
+ Restart = "always";
+ RestartSec= "30" ;
};
- };
+ }
+ ) cfg;
+
};
in
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix
index bf09b7424..4b17c4abd 100644
--- a/krebs/3modules/default.nix
+++ b/krebs/3modules/default.nix
@@ -93,6 +93,7 @@ let
{ krebs = import ./lass { inherit config; }; }
{ krebs = import ./makefu { inherit config; }; }
{ krebs = import ./mv { inherit config; }; }
+ { krebs = import ./nin { inherit config; }; }
{ krebs = import ./shared { inherit config; }; }
{ krebs = import ./tv { inherit config; }; }
{
@@ -200,7 +201,7 @@ let
})
//
# GitHub's IPv4 address range is 192.30.252.0/22
- # Refs https://help.github.com/articles/what-ip-addresses-does-github-use-that-i-should-whitelist/
+ # Refs https://help.github.com/articles/github-s-ip-addresses/
# 192.30.252.0/22 = 192.30.252.0-192.30.255.255 (1024 addresses)
# Because line length is limited by OPENSSH_LINE_MAX (= 8192),
# we split each /24 into its own entry.
diff --git a/krebs/3modules/exim-smarthost.nix b/krebs/3modules/exim-smarthost.nix
index c96b14723..bda563f8d 100644
--- a/krebs/3modules/exim-smarthost.nix
+++ b/krebs/3modules/exim-smarthost.nix
@@ -2,7 +2,6 @@
with import <stockholm/lib>;
let
- indent = replaceChars ["\n"] ["\n "];
cfg = config.krebs.exim-smarthost;
out = {
diff --git a/krebs/3modules/fetchWallpaper.nix b/krebs/3modules/fetchWallpaper.nix
index 94bcbed9d..aed5f595c 100644
--- a/krebs/3modules/fetchWallpaper.nix
+++ b/krebs/3modules/fetchWallpaper.nix
@@ -45,7 +45,7 @@ let
mkdir -p ${shell.escape cfg.stateDir}
cd ${shell.escape cfg.stateDir}
- curl -s -o wallpaper.tmp -z wallpaper ${shell.escape cfg.url} && mv wallpaper.tmp wallpaper
+ (curl -s -o wallpaper.tmp -z wallpaper ${shell.escape cfg.url} && mv wallpaper.tmp wallpaper) || :
feh --no-fehbg --bg-scale ${shell.escape cfg.stateDir}/wallpaper
'';
diff --git a/krebs/3modules/git.nix b/krebs/3modules/git.nix
index 164831846..a08dbb32c 100644
--- a/krebs/3modules/git.nix
+++ b/krebs/3modules/git.nix
@@ -339,9 +339,11 @@ let
description = "Git repository hosting user";
shell = "/bin/sh";
openssh.authorizedKeys.keys =
- mapAttrsToList (_: makeAuthorizedKey git-ssh-command)
- (filterAttrs (_: user: isString user.pubkey)
- config.krebs.users);
+ unique
+ (sort lessThan
+ (map (makeAuthorizedKey git-ssh-command)
+ (filter (user: isString user.pubkey)
+ (concatMap (getAttr "user") cfg.rules))));
};
};
diff --git a/krebs/3modules/nginx.nix b/krebs/3modules/nginx.nix
index 933c2e513..b28e97e37 100644
--- a/krebs/3modules/nginx.nix
+++ b/krebs/3modules/nginx.nix
@@ -129,8 +129,6 @@ let
};
};
- indent = replaceChars ["\n"] ["\n "];
-
to-acme = { server-names, ssl, ... }:
optionalAttrs ssl.acmeEnable {
email = "lassulus@gmail.com";
diff --git a/krebs/3modules/nin/default.nix b/krebs/3modules/nin/default.nix
new file mode 100644
index 000000000..3231c0e23
--- /dev/null
+++ b/krebs/3modules/nin/default.nix
@@ -0,0 +1,65 @@
+{ config, ... }:
+
+with import <stockholm/lib>;
+
+{
+ hosts = mapAttrs (_: setAttr "owner" config.krebs.users.nin) {
+ hiawatha = {
+ cores = 2;
+ nets = {
+ retiolum = {
+ ip4.addr = "10.243.132.96";
+ ip6.addr = "42:0000:0000:0000:0000:0000:0000:2342";
+ aliases = [
+ "hiawatha.retiolum"
+ "hiawatha.r"
+ ];
+ tinc.pubkey = ''
+ -----BEGIN RSA PUBLIC KEY-----
+ MIIBCgKCAQEAucIe5yLzKJ8F982XRpZT6CvyXuPrtnNTmw/E/T6Oyq88m/OVHh6o
+ Viho1XAlJZZwqNniItD0AQB98uFB3+3yA7FepnwwC+PEceIfBG4bTDNyYD3ZCsAB
+ iWpmRar9SQ7LFnoZ6X2lYaJkUD9afmvXqJJLR5MClnRQo5OSqXaFdp7ryWinHP7E
+ UkPSNByu4LbQ9CnBEW8mmCVZSBLb8ezxg3HpJSigmUcJgiDBJ6aj22BsZ5L+j1Sr
+ lvUuaCr8WOS41AYsD5dbTYk7EG42tU5utrOS6z5yHmhbA5r8Ro2OFi/R3Td68BIJ
+ yw/m8sfItBCvjJSMEpKHEDfGMBCfQKltCwIDAQAB
+ -----END RSA PUBLIC KEY-----
+ '';
+ };
+ };
+ ssh.privkey.path = <secrets/ssh.id_ed25519>;
+ ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFizK5kauDlnjm/IzyzLi+W4hLKqjSWMkfuxzLwg6egx";
+ };
+ onondaga = {
+ cores = 1;
+ nets = {
+ retiolum = {
+ ip4.addr = "10.243.132.55";
+ ip6.addr = "42:0000:0000:0000:0000:0000:0000:1357";
+ aliases = [
+ "onondaga.retiolum"
+ "onondaga.r"
+ ];
+ tinc.pubkey = ''
+ -----BEGIN RSA PUBLIC KEY-----
+ MIIBCgKCAQEAqj6NPhRVsr8abz9FFx9+ld3amfxN7SRNccbksUOqkufGS0vaupFR
+ OWsgj4Qmt3lQ82YVt5yjx0FZHkAsenCEKM3kYoIb4nipT0e1MWkQ7plVveMfGkiu
+ htaJ1aCbI2Adxfmk4YbyAr8k3G+Zl9t7gTikBRh7cf5PMiu2JhGUZHzx9urR0ieH
+ xyashZFjl4TtIy4q6QTiyST9kfzteh8k7CJ72zfYkdHl9dPlr5Nk22zH9xPkyzmO
+ kCNeknuDqKeTT9erNtRLk6pjEcyutt0y2/Uq6iZ38z5qq9k4JzcMuQ3YPpNy8bxn
+ hVuk2qBu6kBTUW3iLchoh0d4cfFLWLx1SQIDAQAB
+ -----END RSA PUBLIC KEY-----
+ '';
+ };
+ };
+ ssh.privkey.path = <secrets/ssh.id_ed25519>;
+ ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmQk7AXsYLzjUrOjsuhZ3+gT7FjhPtjwxv5XnuU8GJO";
+ };
+
+ };
+ users = {
+ nin = {
+ mail = "nin@hiawatha.retiolum";
+ pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDicZLUPEVNX7SgqYWcjPo0UESRizEfIvVVbiwa1aApA8x25u/5R3sevcgbIpLHYKDMl5tebny9inr6G2zqB6oq/pocQjHxrPnuLzqjvqeSpbjQjlNWJ9GaHT5koTXZHdkEXGL0vfv1SRDNWUiK0rNymr3GXab4DyrnRnuNl/G1UtLf4Zka94YUD0SSPdS9y6knnRrUWKjGMFBZEbNSgHqMGATPQP9VDwKHIO2OWGfiBAJ4nj/MWj+BxHDleCMY9zbym8yY7p/0PLaUe9eIyLC8MftJ5suuMmASlj+UGWgnqUxWxsMHax9y7CTAc23r1NNCXN5LC6/facGt0rEQrdrTizBgOA1FSHAPCl5f0DBEgWBrRuygEcAueuGWvI8/uvtvQQZLhosDbXEfs/3vm2xoYBe7wH4NZHm+d2LqgIcPXehH9hVQsl6pczngTCJt0Q/6tIMffjhDHeYf6xbe/n3AqFT0PylUSvOw/H5iHws3R6rxtgnOio7yTJ4sq0NMzXCtBY6LYPGnkwf0oKsgB8KavZVnxzF8B1TD4nNi0a7ma7bd1LMzI/oGE6i8kDMROgisIECOcoe8YYJZXIne/wimhhRKZAsd+VrKUo4SzNIavCruCodGAVh2vfrqRJD+HD/aWH7Vr1fCEexquaxeKpRtKGIPW9LRCcEsTilqpZdAiw== nin@hiawatha";
+ };
+ };
+}
diff --git a/krebs/3modules/tv/default.nix b/krebs/3modules/tv/default.nix
index d44c322aa..1220143a7 100644
--- a/krebs/3modules/tv/default.nix
+++ b/krebs/3modules/tv/default.nix
@@ -85,7 +85,7 @@ with import <stockholm/lib>;
};
nets = {
internet = {
- ip4.addr = "45.62.237.203";
+ ip4.addr = "64.137.177.226";
aliases = [
"cd.i"
"cd.krebsco.de"
diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh
index e265b0e67..3f5d66431 100644
--- a/krebs/4lib/infest/prepare.sh
+++ b/krebs/4lib/infest/prepare.sh
@@ -143,10 +143,10 @@ prepare_common() {(
mkdir -p /mnt/boot
if mount | grep -Fq ' on /boot type '; then
- bootdev=$(mount | grep " on /boot type " | sed 's/ .*//')
- mount $bootdev /mnt/boot
+ bootpart=$(mount | grep ' on /boot type ' | sed 's/ .*//')
+ mount $bootpart /mnt/boot
else
- mount --bind /boot/ /mnt/boot
+ mount --bind /boot /mnt/boot
fi
fi
@@ -155,10 +155,12 @@ prepare_common() {(
# prepare install directory
#
- rootpart=$(mount | grep " on / type" | sed 's/ .*//')
+ rootpart=$(mount | grep ' on / type ' | sed 's/ .*//')
mkdir -p /mnt/etc/nixos
mkdir -m 0555 -p /mnt/var/empty
+ mkdir -p /mnt/var/src
+ touch /mnt/var/src/.populate
if ! mount | grep -Fq "$rootpart on /mnt/root type "; then
mkdir -p /mnt/root
diff --git a/krebs/5pkgs/Reaktor/plugins.nix b/krebs/5pkgs/Reaktor/plugins.nix
index a483db32c..d4774dd69 100644
--- a/krebs/5pkgs/Reaktor/plugins.nix
+++ b/krebs/5pkgs/Reaktor/plugins.nix
@@ -116,4 +116,16 @@ rec {
commands.insert(0,titlebot_cmd('clear'))
'';
};
+
+ url-title = (buildSimpleReaktorPlugin "url-title" {
+ 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
+ curl -SsL --max-time 5 "$1" |
+ perl -l -0777 -ne 'print $1 if /<title.*?>\s*(.*?)(?: - youtube)?\s*<\/title/si'
+ fi
+ '';
+ });
+
}
diff --git a/krebs/5pkgs/bepasty-client-cli/default.nix b/krebs/5pkgs/bepasty-client-cli/default.nix
index 990f99af6..c58e637b3 100644
--- a/krebs/5pkgs/bepasty-client-cli/default.nix
+++ b/krebs/5pkgs/bepasty-client-cli/default.nix
@@ -1,17 +1,18 @@
-{ lib, pkgs, pythonPackages, fetchurl, ... }:
+{ lib, pkgs, pythonPackages, fetchFromGitHub, ... }:
with pythonPackages; buildPythonPackage rec {
- name = "bepasty-client-cli-${version}";
- version = "0.3.0";
+ name = "bepasty-client-cli";
propagatedBuildInputs = [
python_magic
click
requests2
];
- src = fetchurl {
- url = "https://pypi.python.org/packages/source/b/bepasty-client-cli/bepasty-client-cli-${version}.tar.gz";
- sha256 = "002kcplyfnmr5pn2ywdfilss0rmbm8wcdzz8hzp03ksy2zr4sdbw";
+ src = fetchFromGitHub {
+ owner = "bepasty";
+ repo = "bepasty-client-cli";
+ rev = "4b7135ba8ba1e17501de08ad7b6aca73c0d949d2";
+ sha256 = "1svchyk9zai1vip9ppm12jm7wfjbdr9ijhgcd2n10xh73jrn9cnc";
};
meta = {
diff --git a/krebs/5pkgs/kapacitor/default.nix b/krebs/5pkgs/kapacitor/default.nix
new file mode 100644
index 000000000..804826941
--- /dev/null
+++ b/krebs/5pkgs/kapacitor/default.nix
@@ -0,0 +1,23 @@
+{ 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/telegraf/default.nix b/krebs/5pkgs/telegraf/default.nix
new file mode 100644
index 000000000..996c839ac
--- /dev/null
+++ b/krebs/5pkgs/telegraf/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+ name = "telegraf-${version}";
+ version = "1.1.2";
+
+ goPackagePath = "github.com/influxdata/telegraf";
+
+ excludedPackages = "test";
+
+ src = fetchFromGitHub {
+ owner = "influxdata";
+ repo = "telegraf";
+ rev = "${version}";
+ sha256 = "0dgrbdyz261j28wcq636125ha4xmfgh4y9shlg8m1y6jqdqd2zf2";
+ };
+
+ goDeps = ./. + builtins.toPath "/deps-${version}.nix";
+
+ meta = with lib; {
+ description = "The plugin-driven server agent for collecting & reporting metrics.";
+ license = licenses.mit;
+ homepage = https://www.influxdata.com/time-series-platform/telegraf/;
+ maintainers = with maintainers; [ mic92 roblabla ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/krebs/5pkgs/telegraf/deps-1.1.2.nix b/krebs/5pkgs/telegraf/deps-1.1.2.nix
new file mode 100644
index 000000000..b62ae44db
--- /dev/null
+++ b/krebs/5pkgs/telegraf/deps-1.1.2.nix
@@ -0,0 +1,588 @@
+# This file was generated by go2nix.
+[
+ {
+ goPackagePath = "github.com/Shopify/sarama";
+ fetch = {
+ type = "git";
+ url = "https://github.com/Shopify/sarama";
+ rev = "8aadb476e66ca998f2f6bb3c993e9a2daa3666b9";
+ sha256 = "1ndaddqcll9r22jg9x36acanxv5ds3xwahrm4b6nmmg06670gksv";
+ };
+ }
+ {
+ goPackagePath = "github.com/Sirupsen/logrus";
+ fetch = {
+ type = "git";
+ url = "https://github.com/Sirupsen/logrus";
+ rev = "219c8cb75c258c552e999735be6df753ffc7afdc";
+ sha256 = "04v55846v1535dplldyjhr0yqxl6n1mr4kiy2vz3ragv92xpshr6";
+ };
+ }
+ {
+ goPackagePath = "github.com/aerospike/aerospike-client-go";
+ fetch = {
+ type = "git";
+ url = "https://github.com/aerospike/aerospike-client-go";
+ rev = "7f3a312c3b2a60ac083ec6da296091c52c795c63";
+ sha256 = "05ancqplckvni9xp6xd4bv2pgkfa4v23svfcg27m8xinzi4ry219";
+ };
+ }
+ {
+ goPackagePath = "github.com/amir/raidman";
+ fetch = {
+ type = "git";
+ url = "https://github.com/amir/raidman";
+ rev = "53c1b967405155bfc8758557863bf2e14f814687";
+ sha256 = "08a6zz4akkm7lk02w53vfhkxdf0ikv32x41rc4jyi2qaf0wyw6b4";
+ };
+ }
+ {
+ goPackagePath = "github.com/aws/aws-sdk-go";
+ fetch = {
+ type = "git";
+ url = "https://github.com/aws/aws-sdk-go";
+ rev = "13a12060f716145019378a10e2806c174356b857";
+ sha256 = "09yl85kk2y4ayk44af5rbnkq4vy82vbh2z5ac4vpl2vgv7zyh46h";
+ };
+ }
+ {
+ goPackagePath = "github.com/beorn7/perks";
+ fetch = {
+ type = "git";
+ url = "https://github.com/beorn7/perks";
+ rev = "3ac7bf7a47d159a033b107610db8a1b6575507a4";
+ sha256 = "1qc3l4r818xpvrhshh1sisc5lvl9479qspcfcdbivdyh0apah83r";
+ };
+ }
+ {
+ goPackagePath = "github.com/cenkalti/backoff";
+ fetch = {
+ type = "git";
+ url = "https://github.com/cenkalti/backoff";
+ rev = "4dc77674aceaabba2c7e3da25d4c823edfb73f99";
+ sha256 = "0icf4vrgzksr0g8h6y00rd92h1mym6waf3mbqpf890bkw60gnm0w";
+ };
+ }
+ {
+ goPackagePath = "github.com/couchbase/go-couchbase";
+ fetch = {
+ type = "git";
+ url = "https://github.com/couchbase/go-couchbase";
+ rev = "cb664315a324d87d19c879d9cc67fda6be8c2ac1";
+ sha256 = "1dfw1apwrlfwl7bahb6dy5g9z2vs431l4lpaj3k9bnm13p0awivr";
+ };
+ }
+ {
+ goPackagePath = "github.com/couchbase/gomemcached";
+ fetch = {
+ type = "git";
+ url = "https://github.com/couchbase/gomemcached";
+ rev = "a5ea6356f648fec6ab89add00edd09151455b4b2";
+ sha256 = "00x57qqdv9ciyxiw2y6p4s65sfgi4cs6zi39qlqlw90nh133xnwi";
+ };
+ }
+ {
+ goPackagePath = "github.com/couchbase/goutils";
+ fetch = {
+ type = "git";
+ url = "https://github.com/couchbase/goutils";
+ rev = "5823a0cbaaa9008406021dc5daf80125ea30bba6";
+ sha256 = "15v5ps2i2y2hczwxs2ci4c2w4p3pn3bl7vc5wlaqnc7i14f9285c";
+ };
+ }
+ {
+ goPackagePath = "github.com/dancannon/gorethink";
+ fetch = {
+ type = "git";
+ url = "https://github.com/dancannon/gorethink";
+ rev = "e7cac92ea2bc52638791a021f212145acfedb1fc";
+ sha256 = "0f9gwsqf93qzvfpdwgam7vcfzrrkcj2s9ms4p056kcyxv9snwq3g";
+ };
+ }
+ {
+ goPackagePath = "github.com/davecgh/go-spew";
+ fetch = {
+ type = "git";
+ url = "https://github.com/davecgh/go-spew";
+ rev = "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d";
+ sha256 = "15h9kl73rdbzlfmsdxp13jja5gs7sknvqkpq2qizq3qv3nr1x8dk";
+ };
+ }
+ {
+ goPackagePath = "github.com/docker/engine-api";
+ fetch = {
+ type = "git";
+ url = "https://github.com/docker/engine-api";
+ rev = "8924d6900370b4c7e7984be5adc61f50a80d7537";
+ sha256 = "1klimc3d1a2vfgl14a7js20ricpghq5jzvh8l46kf87ycjwc0q4n";
+ };
+ }
+ {
+ goPackagePath = "github.com/docker/go-connections";
+ fetch = {
+ type = "git";
+ url = "https://github.com/docker/go-connections";
+ rev = "f549a9393d05688dff0992ef3efd8bbe6c628aeb";
+ sha256 = "0k1yf4bimmwxc0qiz997nagfmddbm8nwb0c1q16387m8lgw1gbwg";
+ };
+ }
+ {
+ goPackagePath = "github.com/docker/go-units";
+ fetch = {
+ type = "git";
+ url = "https://github.com/docker/go-units";
+ rev = "5d2041e26a699eaca682e2ea41c8f891e1060444";
+ sha256 = "0hn8xdbaykp046inc4d2mwig5ir89ighma8hk18dfkm8rh1vvr8i";
+ };
+ }
+ {
+ goPackagePath = "github.com/eapache/go-resiliency";
+ fetch = {
+ type = "git";
+ url = "https://github.com/eapache/go-resiliency";
+ rev = "b86b1ec0dd4209a588dc1285cdd471e73525c0b3";
+ sha256 = "1kzv95bh3nidm2cr7iv9lk3s2qiw1i17n8gyl2x6xk6qv8b0bc21";
+ };
+ }
+ {
+ goPackagePath = "github.com/eapache/queue";
+ fetch = {
+ type = "git";
+ url = "https://github.com/eapache/queue";
+ rev = "ded5959c0d4e360646dc9e9908cff48666781367";
+ sha256 = "0inclypw0kln8hsn34c5ww34h0qa9fcqwak93lac5dp59rz5430n";
+ };
+ }
+ {
+ goPackagePath = "github.com/eclipse/paho.mqtt.golang";
+ fetch = {
+ type = "git";
+ url = "https://github.com/eclipse/paho.mqtt.golang";
+ rev = "0f7a459f04f13a41b7ed752d47944528d4bf9a86";
+ sha256 = "13l6mrx9z859r4r7kpa9rsbf4ni7dn6xgz8iyv2xnz53pqffanjh";
+ };
+ }
+ {
+ goPackagePath = "github.com/go-sql-driver/mysql";
+ fetch = {
+ type = "git";
+ url = "https://github.com/go-sql-driver/mysql";
+ rev = "1fca743146605a172a266e1654e01e5cd5669bee";
+ sha256 = "02vbq8j4r3skg3fmiv1wvjqh1542dr515w8f3d42b5lpwc1fsn38";
+ };
+ }
+ {
+ goPackagePath = "github.com/gobwas/glob";
+ fetch = {
+ type = "git";
+ url = "https://github.com/gobwas/glob";
+ rev = "49571a1557cd20e6a2410adc6421f85b66c730b5";
+ sha256 = "16j7pdxajqrl20a737p7kgsngr2f7gkkpgqxxmfkrmgckgkc8cvk";
+ };
+ }
+ {
+ goPackagePath = "github.com/golang/protobuf";
+ fetch = {
+ type = "git";
+ url = "https://github.com/golang/protobuf";
+ rev = "552c7b9542c194800fd493123b3798ef0a832032";
+ sha256 = "1zaw1xxnvgsvfcrv5xkn1f7p87vyh9i6mc44csl11fgc2hvqp6xm";
+ };
+ }
+ {
+ goPackagePath = "github.com/golang/snappy";
+ fetch = {
+ type = "git";
+ url = "https://github.com/golang/snappy";
+ rev = "d9eb7a3d35ec988b8585d4a0068e462c27d28380";
+ sha256 = "0wynarlr1y8sm9y9l29pm9dgflxriiialpwn01066snzjxnpmbyn";
+ };
+ }
+ {
+ goPackagePath = "github.com/gonuts/go-shellquote";
+ fetch = {
+ type = "git";
+ url = "https://github.com/gonuts/go-shellquote";
+ rev = "e842a11b24c6abfb3dd27af69a17f482e4b483c2";
+ sha256 = "19lbz7wl241bsyzsv2ai40b2vnj8c9nl107b6jf9gid3i6h0xydg";
+ };
+ }
+ {
+ goPackagePath = "github.com/gorilla/context";
+ fetch = {
+ type = "git";
+ url = "https://github.com/gorilla/context";
+ rev = "1ea25387ff6f684839d82767c1733ff4d4d15d0a";
+ sha256 = "1nh1nzxcsgd215x4xn59wc4cbqfa8zvhvnnx5p8fkrn4bj1cgak4";
+ };
+ }
+ {
+ goPackagePath = "github.com/gorilla/mux";
+ fetch = {
+ type = "git";
+ url = "https://github.com/gorilla/mux";
+ rev = "c9e326e2bdec29039a3761c07bece13133863e1e";
+ sha256 = "1bplp6v14isjdfpf8328k8bvkn35n451axkxlm822d9h5ccg47g6";
+ };
+ }
+ {
+ goPackagePath = "github.com/hailocab/go-hostpool";
+ fetch = {
+ type = "git";
+ url = "https://github.com/hailocab/go-hostpool";
+ rev = "e80d13ce29ede4452c43dea11e79b9bc8a15b478";
+ sha256 = "05ld4wp3illkbgl043yf8jq9y1ld0zzvrcg8jdij129j50xgfxny";
+ };
+ }
+ {
+ goPackagePath = "github.com/hashicorp/consul";
+ fetch = {
+ type = "git";
+ url = "https://github.com/hashicorp/consul";
+ rev = "5aa90455ce78d4d41578bafc86305e6e6b28d7d2";
+ sha256 = "1xas814kkhwnjg5ghhlkgygcgi5p7h6dczmpbrzzh3yygbfdzxgw";
+ };
+ }
+ {
+ goPackagePath = "github.com/hpcloud/tail";
+ fetch = {
+ type = "git";
+ url = "https://github.com/hpcloud/tail";
+ rev = "b2940955ab8b26e19d43a43c4da0475dd81bdb56";
+ sha256 = "1x266pdfvcymsbdrdsns06qq5qfjb62z6h4512ylhakbm64qkn4s";
+ };
+ }
+ {
+ goPackagePath = "github.com/influxdata/config";
+ fetch = {
+ type = "git";
+ url = "https://github.com/influxdata/config";
+ rev = "b79f6829346b8d6e78ba73544b1e1038f1f1c9da";
+ sha256 = "0k4iywy83n3kq2f58a41rjinj03wp1di67aacpf04p25qmf46c4z";
+ };
+ }
+ {
+ goPackagePath = "github.com/influxdata/influxdb";
+ fetch = {
+ type = "git";
+ url = "https://github.com/influxdata/influxdb";
+ rev = "fc57c0f7c635df3873f3d64f0ed2100ddc94d5ae";
+ sha256 = "07cv1gryp4a84a2acgc8k8alr7jw4jwphf12cby8jjy1br35jrbq";
+ };
+ }
+ {
+ goPackagePath = "github.com/influxdata/toml";
+ fetch = {
+ type = "git";
+ url = "https://github.com/influxdata/toml";
+ rev = "af4df43894b16e3fd2b788d01bd27ad0776ef2d0";
+ sha256 = "1faf51s89sk1z41qfsazmddgwll7jq9xna67k3h3vry86c4vs2j4";
+ };
+ }
+ {
+ goPackagePath = "github.com/influxdata/wlog";
+ fetch = {
+ type = "git";
+ url = "https://github.com/influxdata/wlog";
+ rev = "7c63b0a71ef8300adc255344d275e10e5c3a71ec";
+ sha256 = "04kw4kivxvr3kkmghj3427b1xyhzbhnfr971qfn3lv2vvhs8kpfl";
+ };
+ }
+ {
+ goPackagePath = "github.com/kardianos/osext";
+ fetch = {
+ type = "git";
+ url = "https://github.com/kardianos/osext";
+ rev = "29ae4ffbc9a6fe9fb2bc5029050ce6996ea1d3bc";
+ sha256 = "1mawalaz84i16njkz6f9fd5jxhcbxkbsjnav3cmqq2dncv2hyv8a";
+ };
+ }
+ {
+ goPackagePath = "github.com/kardianos/service";
+ fetch = {
+ type = "git";
+ url = "https://github.com/kardianos/service";
+ rev = "5e335590050d6d00f3aa270217d288dda1c94d0a";
+ sha256 = "1g10qisgywfqj135yyiq63pnbjgr201gz929ydlgyzqq6yk3bn3h";
+ };
+ }
+ {
+ goPackagePath = "github.com/klauspost/crc32";
+ fetch = {
+ type = "git";
+ url = "https://github.com/klauspost/crc32";
+ rev = "19b0b332c9e4516a6370a0456e6182c3b5036720";
+ sha256 = "0fcnsf1m0bzplgp28dz8skza6l7rc65s180x85rzbdl9l3zzi43r";
+ };
+ }
+ {
+ goPackagePath = "github.com/lib/pq";
+ fetch = {
+ type = "git";
+ url = "https://github.com/lib/pq";
+ rev = "e182dc4027e2ded4b19396d638610f2653295f36";
+ sha256 = "1636v3snixapjf7rbjq0xn1sbym7hwckqfla0dm5cr4a5q4fw5cj";
+ };
+ }
+ {
+ goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+ fetch = {
+ type = "git";
+ url = "https://github.com/matttproud/golang_protobuf_extensions";
+ rev = "d0c3fe89de86839aecf2e0579c40ba3bb336a453";
+ sha256 = "0jkjgpi1s8l9bdbf14fh8050757jqy36kn1l1hxxlb2fjn1pcg0r";
+ };
+ }
+ {
+ goPackagePath = "github.com/miekg/dns";
+ fetch = {
+ type = "git";
+ url = "https://github.com/miekg/dns";
+ rev = "cce6c130cdb92c752850880fd285bea1d64439dd";
+ sha256 = "098gadhfjiijlgq497gbccvf26xrmjvln1fws56m0ljcgszq3jdx";
+ };
+ }
+ {
+ goPackagePath = "github.com/mreiferson/go-snappystream";
+ fetch = {
+ type = "git";
+ url = "https://github.com/mreiferson/go-snappystream";
+ rev = "028eae7ab5c4c9e2d1cb4c4ca1e53259bbe7e504";
+ sha256 = "0jdd5whp74nvg35d9hzydsi3shnb1vrnd7shi9qz4wxap7gcrid6";
+ };
+ }
+ {
+ goPackagePath = "github.com/naoina/go-stringutil";
+ fetch = {
+ type = "git";
+ url = "https://github.com/naoina/go-stringutil";
+ rev = "6b638e95a32d0c1131db0e7fe83775cbea4a0d0b";
+ sha256 = "00831p1wn3rimybk1z8l30787kn1akv5jax5wx743nn76qcmkmc6";
+ };
+ }
+ {
+ goPackagePath = "github.com/nats-io/nats";
+ fetch = {
+ type = "git";
+ url = "https://github.com/nats-io/nats";
+ rev = "ea8b4fd12ebb823073c0004b9f09ac8748f4f165";
+ sha256 = "0i5f6n9k0d2vzdy20sqygmss5j45y72irxsi80grjsh7qkxa6vn1";
+ };
+ }
+ {
+ goPackagePath = "github.com/nats-io/nuid";
+ fetch = {
+ type = "git";
+ url = "https://github.com/nats-io/nuid";
+ rev = "a5152d67cf63cbfb5d992a395458722a45194715";
+ sha256 = "0fphar5bz735wwa7549j31nxnm5a9dyw472gs9zafz0cv7g8np40";
+ };
+ }
+ {
+ goPackagePath = "github.com/nsqio/go-nsq";
+ fetch = {
+ type = "git";
+ url = "https://github.com/nsqio/go-nsq";
+ rev = "0b80d6f05e15ca1930e0c5e1d540ed627e299980";
+ sha256 = "1zi9jazjfzilp2g0xy30dlx9nd9g47cjqrnqxallly97mz9n01xr";
+ };
+ }
+ {
+ goPackagePath = "g