stockholm/krebs/3modules/makefu/default.nix

391 lines
9.7 KiB
Nix
Raw Normal View History

2018-09-15 22:32:35 +00:00
## generate keys with:
# tinc generate-keys
# ssh-keygen -f ssh.id_ed25519 -t ed25519 -C host
with import <stockholm/lib>;
{ config, ... }: let
hostDefaults = hostName: host: flip recursiveUpdate host ({
owner = config.krebs.users.makefu;
} // optionalAttrs (host.nets?retiolum) {
nets.retiolum.ip6.addr =
(krebs.genipv6 "retiolum" "makefu" { inherit hostName; }).address;
});
2018-09-24 21:33:42 +00:00
pub-for = name: builtins.readFile (./ssh + "/${name}.pub");
sshd-for = name: builtins.readFile (./sshd + "/${name}.pub");
tinc-for= name: builtins.readFile (./tinc + "/${name}.pub");
2018-09-24 21:33:42 +00:00
in {
hosts = mapAttrs hostDefaults {
2017-10-01 12:01:48 +00:00
cake = rec {
2017-11-14 09:18:20 +00:00
cores = 4;
2017-10-01 12:01:48 +00:00
ci = false;
nets = {
retiolum = {
ip4.addr = "10.243.136.236";
aliases = [
"cake.r"
];
tinc.pubkey = tinc-for "cake";
2017-10-01 12:01:48 +00:00
};
};
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
ssh.pubkey = sshd-for "cake";
2017-10-01 12:01:48 +00:00
};
2018-09-15 22:32:35 +00:00
crapi = rec { # raspi1
cores = 1;
ci = false;
nets = {
retiolum = {
ip4.addr = "10.243.136.237";
aliases = [
"crapi.r"
];
tinc.pubkey = tinc-for "crapi";
2018-09-15 22:32:35 +00:00
};
};
ssh.privkey.path = <secrets/ssh.id_ed25519>;
ssh.pubkey = sshd-for "crapi";
2018-09-15 22:32:35 +00:00
};
firecracker = {
cores = 4;
2017-02-12 19:13:45 +00:00
nets = {
retiolum = {
ip4.addr = "10.243.12.12";
ip6.addr = "42:0:0:0:0:0:0:12";
2017-02-12 19:13:45 +00:00
aliases = [
"firecracker.r"
2017-02-12 19:13:45 +00:00
];
tinc.pubkey = tinc-for "firecracker";
2016-08-20 23:24:50 +00:00
};
2017-02-12 19:13:45 +00:00
};
ssh.privkey.path = <secrets/ssh.id_ed25519>;
ssh.pubkey = sshd-for "firecracker";
2016-08-20 23:24:50 +00:00
};
2017-05-12 09:30:26 +00:00
studio = rec {
2018-11-10 20:11:23 +00:00
ci = false;
2017-05-12 09:30:26 +00:00
cores = 4;
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
ssh.pubkey = sshd-for "studio";
2017-05-12 09:30:26 +00:00
nets = {
retiolum = {
ip4.addr = "10.243.227.163";
aliases = [
"studio.r"
];
tinc.pubkey = tinc-for "studio";
2017-05-12 09:30:26 +00:00
};
};
};
2016-12-22 13:12:24 +00:00
fileleech = rec {
2018-11-10 20:11:23 +00:00
ci = false;
2017-02-12 19:13:45 +00:00
cores = 4;
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
ssh.pubkey = "";
2017-02-12 19:13:45 +00:00
nets = {
retiolum = {
ip4.addr = "10.243.113.98";
aliases = [
"fileleech.r"
2017-02-12 19:13:45 +00:00
];
tinc.pubkey = tinc-for "fileleech";
2016-07-11 18:44:16 +00:00
};
};
};
tsp = {
2017-08-31 17:15:09 +00:00
ci = true;
cores = 1;
nets = {
retiolum = {
ip4.addr = "10.243.0.212";
aliases = [
"tsp.r"
];
tinc.pubkey = tinc-for "tsp";
};
};
};
2016-07-28 10:58:54 +00:00
x = {
2017-08-31 17:15:09 +00:00
ci = true;
2017-04-24 21:21:07 +00:00
cores = 4;
nets = {
retiolum = {
ip4.addr = "10.243.0.91";
aliases = [
2016-07-28 10:58:54 +00:00
"x.r"
];
tinc.pubkey = tinc-for "x";
2016-06-23 14:45:44 +00:00
};
2018-09-15 22:32:35 +00:00
#wiregrill = {
# aliases = [
# "x.w"
# ];
# wireguard.pubkey = "fe5smvKVy5GAn7EV4w4tav6mqIAKhGWQotm7dRuRt1g=";
#};
};
2015-12-29 20:20:11 +00:00
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
ssh.pubkey = sshd-for "x";
2015-12-14 13:33:06 +00:00
};
2015-11-06 09:59:40 +00:00
filepimp = rec {
2018-11-10 20:11:23 +00:00
ci = false;
2015-11-06 09:59:40 +00:00
cores = 1;
nets = {
2016-07-18 13:35:36 +00:00
lan = {
ip4.addr = "192.168.1.12";
aliases = [
"filepimp.lan"
];
};
2015-11-06 09:59:40 +00:00
retiolum = {
ip4.addr = "10.243.153.102";
2015-11-06 09:59:40 +00:00
aliases = [
"filepimp.r"
2015-11-06 09:59:40 +00:00
];
tinc.pubkey = tinc-for "filepimp";
2015-11-06 09:59:40 +00:00
};
};
};
2015-12-16 11:06:44 +00:00
omo = rec {
2017-08-31 17:15:09 +00:00
ci = true;
2015-12-16 11:06:44 +00:00
cores = 2;
nets = {
2016-07-18 13:35:36 +00:00
lan = {
ip4.addr = "192.168.1.11";
aliases = [
"omo.lan"
];
};
2015-12-16 11:06:44 +00:00
retiolum = {
ip4.addr = "10.243.0.89";
2015-12-16 11:06:44 +00:00
aliases = [
2016-03-08 17:35:32 +00:00
"omo.r"
2018-11-05 15:22:39 +00:00
"dcpp.omo.r"
"torrent.omo.r"
2015-12-16 11:06:44 +00:00
];
tinc.pubkey = tinc-for "omo";
2015-12-16 11:06:44 +00:00
};
};
2016-10-19 10:33:56 +00:00
ssh.privkey.path = <secrets/ssh.id_ed25519>;
ssh.pubkey = sshd-for "omo";
2015-12-16 11:06:44 +00:00
};
2016-01-19 19:26:38 +00:00
wbob = rec {
2017-08-31 17:15:09 +00:00
ci = true;
2017-07-16 21:29:03 +00:00
cores = 4;
2016-01-19 19:26:38 +00:00
nets = {
2016-02-17 09:51:26 +00:00
retiolum = {
ip4.addr = "10.243.214.15";
2016-01-19 19:26:38 +00:00
aliases = [
"wbob.r"
2018-02-26 17:59:43 +00:00
"hydra.wbob.r"
2016-01-19 19:26:38 +00:00
];
tinc.pubkey = tinc-for "wbob";
2016-01-19 19:26:38 +00:00
};
};
2017-09-29 19:29:26 +00:00
ssh.privkey.path = <secrets/ssh.id_ed25519>;
ssh.pubkey = sshd-for "wbob";
2016-01-19 19:26:38 +00:00
};
2018-11-05 15:22:39 +00:00
gum = rec {
2018-06-24 21:41:27 +00:00
ci = true;
extraZones = {
"krebsco.de" = ''
boot IN A ${nets.internet.ip4.addr}
boot.euer IN A ${nets.internet.ip4.addr}
cache.euer IN A ${nets.internet.ip4.addr}
cache.gum IN A ${nets.internet.ip4.addr}
cgit.euer IN A ${nets.internet.ip4.addr}
dl.euer IN A ${nets.internet.ip4.addr}
dockerhub IN A ${nets.internet.ip4.addr}
euer IN A ${nets.internet.ip4.addr}
euer IN MX 1 aspmx.l.google.com.
ghook IN A ${nets.internet.ip4.addr}
git.euer IN A ${nets.internet.ip4.addr}
gold IN A ${nets.internet.ip4.addr}
graph IN A ${nets.internet.ip4.addr}
gum IN A ${nets.internet.ip4.addr}
2018-09-15 22:32:35 +00:00
iso.euer IN A ${nets.internet.ip4.addr}
2018-11-05 15:22:39 +00:00
mon.euer IN A ${nets.internet.ip4.addr}
netdata.euer IN A ${nets.internet.ip4.addr}
nixos.unstable IN CNAME krebscode.github.io.
o.euer IN A ${nets.internet.ip4.addr}
photostore IN A ${nets.internet.ip4.addr}
2018-11-05 15:22:39 +00:00
pigstarter IN A ${nets.internet.ip4.addr}
share.euer IN A ${nets.internet.ip4.addr}
wg.euer IN A ${nets.internet.ip4.addr}
wiki.euer IN A ${nets.internet.ip4.addr}
2018-11-05 15:22:39 +00:00
wikisearch IN A ${nets.internet.ip4.addr}
io IN NS gum.krebsco.de.
'';
};
2018-06-24 21:41:27 +00:00
cores = 8;
nets = rec {
internet = {
ip4.addr = "144.76.26.247";
ip6.addr = "2a01:4f8:191:12f6::2";
aliases = [
2018-11-05 15:22:39 +00:00
"gum.i"
2018-06-24 21:41:27 +00:00
"nextgum.i"
];
};
2018-09-15 22:32:35 +00:00
#wiregrill = {
# via = internet;
# aliases = [
# "gum.w"
# ];
# wireguard.pubkey = "yAKvxTvcEVdn+MeKsmptZkR3XSEue+wSyLxwcjBYxxo=";
#};
2018-06-24 21:41:27 +00:00
retiolum = {
via = internet;
ip4.addr = "10.243.0.213";
aliases = [
"backup.makefu.r"
"blog.gum.r"
"blog.makefu.r"
"cache.gum.r"
"cgit.gum.r"
"dcpp.gum.r"
2018-09-24 21:33:42 +00:00
"dcpp.nextgum.r"
"graph.r"
"gum.r"
"logs.makefu.r"
"netdata.makefu.r"
"nextgum.r"
2017-01-09 14:56:44 +00:00
"o.gum.r"
"search.makefu.r"
"stats.makefu.r"
"torrent.gum.r"
"tracker.makefu.r"
"wiki.gum.r"
"wiki.makefu.r"
];
tinc.pubkey = tinc-for "gum";
};
};
ssh.pubkey = sshd-for "gum";
};
2018-11-10 20:11:23 +00:00
2016-10-19 10:33:56 +00:00
sdev = rec {
2017-08-31 17:15:09 +00:00
ci = true;
2016-10-19 10:33:56 +00:00
cores = 1;
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
ssh.pubkey = sshd-for "sdev";
2016-10-19 10:33:56 +00:00
nets = {
retiolum = {
ip4.addr = "10.243.83.237";
aliases = [
2017-02-12 19:13:45 +00:00
"sdev.r"
2016-10-19 10:33:56 +00:00
];
tinc.pubkey = tinc-for "sdev";
2016-10-19 10:33:56 +00:00
};
};
};
2017-02-12 19:13:45 +00:00
# non-stockholm
flap = rec {
cores = 1;
extraZones = {
"krebsco.de" = ''
mediengewitter IN A ${nets.internet.ip4.addr}
flap IN A ${nets.internet.ip4.addr}
'';
};
nets = {
internet = {
ip4.addr = "162.248.11.162";
aliases = [
"flap.i"
];
};
retiolum = {
ip4.addr = "10.243.211.172";
aliases = [
"flap.r"
];
tinc.pubkey = tinc-for "flap";
};
};
};
nukular = rec {
cores = 1;
nets = {
retiolum = {
ip4.addr = "10.243.231.219";
aliases = [
"nukular.r"
];
tinc.pubkey = tinc-for "nukular";
};
};
};
filebitch = rec {
cores = 4;
nets = {
retiolum = {
ip4.addr = "10.243.189.130";
aliases = [
"filebitch.r"
];
tinc.pubkey = tinc-for "filebitch";
};
};
};
2016-04-07 17:54:17 +00:00
senderechner = rec {
cores = 2;
nets = {
retiolum = {
ip4.addr = "10.243.0.163";
2016-04-07 17:54:17 +00:00
aliases = [
"senderechner.r"
];
tinc.pubkey = tinc-for "senderechner";
2016-08-22 16:41:07 +00:00
};
2017-02-12 19:13:45 +00:00
};
2016-08-22 16:41:07 +00:00
};
};
users = rec {
makefu = {
mail = "makefu@x.r";
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.x";
pgp.pubkeys.default = builtins.readFile ./pgp/default.asc;
pgp.pubkeys.brain = builtins.readFile ./pgp/brain.asc;
2015-12-14 16:04:16 +00:00
};
2015-12-14 16:12:51 +00:00
makefu-omo = {
2016-03-16 07:35:06 +00:00
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.omo";
2015-12-14 16:04:16 +00:00
};
2015-12-14 16:12:51 +00:00
makefu-tsp = {
2016-03-16 07:35:06 +00:00
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.tsp";
2015-12-14 16:04:16 +00:00
};
2015-12-14 16:12:51 +00:00
makefu-vbob = {
2016-03-16 07:35:06 +00:00
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.vbob";
2015-12-14 16:12:51 +00:00
};
2017-02-04 13:35:29 +00:00
makefu-tempx = {
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.tempx";
2017-02-04 13:35:29 +00:00
};
2017-10-08 20:20:46 +00:00
makefu-android = {
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.android";
2017-10-08 20:20:46 +00:00
};
2018-02-14 00:33:05 +00:00
makefu-remote-builder = {
2018-02-14 07:12:06 +00:00
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.remote-builder";
2018-02-14 00:33:05 +00:00
};
makefu-bob = {
inherit (makefu) mail pgp;
2018-09-24 21:33:42 +00:00
pubkey = pub-for "makefu.bob";
};
};
}