Merge branch 'master' of prism.r:stockholm into new-master
This commit is contained in:
commit
a045a7f054
@ -61,7 +61,7 @@ let
|
|||||||
];
|
];
|
||||||
hooks.PRIVMSG = [
|
hooks.PRIVMSG = [
|
||||||
{
|
{
|
||||||
pattern = "^bier bal(ance)*$";
|
pattern = "^bier bal(an(ce)?)?$";
|
||||||
activate = "match";
|
activate = "match";
|
||||||
command = {
|
command = {
|
||||||
env = {
|
env = {
|
||||||
@ -134,6 +134,7 @@ in {
|
|||||||
};
|
};
|
||||||
r = {
|
r = {
|
||||||
nick = "reaktor2|krebs";
|
nick = "reaktor2|krebs";
|
||||||
|
sendDelaySec = null;
|
||||||
plugins = [
|
plugins = [
|
||||||
{
|
{
|
||||||
plugin = "register";
|
plugin = "register";
|
||||||
|
@ -45,7 +45,6 @@ let
|
|||||||
./reaktor2.nix
|
./reaktor2.nix
|
||||||
./realwallpaper.nix
|
./realwallpaper.nix
|
||||||
./retiolum-bootstrap.nix
|
./retiolum-bootstrap.nix
|
||||||
./retiolum-hosts.nix
|
|
||||||
./rtorrent.nix
|
./rtorrent.nix
|
||||||
./secret.nix
|
./secret.nix
|
||||||
./setuid.nix
|
./setuid.nix
|
||||||
@ -101,6 +100,7 @@ let
|
|||||||
{ krebs = import ./krebs { inherit config; }; }
|
{ krebs = import ./krebs { inherit config; }; }
|
||||||
{ krebs = import ./lass { inherit config; }; }
|
{ krebs = import ./lass { inherit config; }; }
|
||||||
{ krebs = import ./makefu { inherit config; }; }
|
{ krebs = import ./makefu { inherit config; }; }
|
||||||
|
{ krebs = import ./external/palo.nix { inherit config; }; }
|
||||||
{ krebs = import ./tv { inherit config; }; }
|
{ krebs = import ./tv { inherit config; }; }
|
||||||
{
|
{
|
||||||
krebs.dns.providers = {
|
krebs.dns.providers = {
|
||||||
|
84
krebs/3modules/external/default.nix
vendored
84
krebs/3modules/external/default.nix
vendored
@ -16,7 +16,33 @@ with import <stockholm/lib>;
|
|||||||
tinc-for = name: builtins.readFile (./tinc + "/${name}.pub");
|
tinc-for = name: builtins.readFile (./tinc + "/${name}.pub");
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
|
||||||
hosts = mapAttrs hostDefaults {
|
hosts = mapAttrs hostDefaults {
|
||||||
|
catullus = {
|
||||||
|
owner = config.krebs.users.kmein;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.2.3";
|
||||||
|
aliases = [ "catullus.r" ];
|
||||||
|
tinc.pubkey = ''
|
||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2tRtskPP6391+ZX9xzsx
|
||||||
|
CUotXuqYucYmnUbrRSIlxASVqTmAf3nDOE5EDBBcTdSwnb02JcJW4Zh7+BGgMxjF
|
||||||
|
GxDPs6ETI28mHK+6rp8TOkMnyDb5mtSGVZPvKJU9fFOt6aAX1J1BzTfwtHtVQq7K
|
||||||
|
WBzdpeKXlw4dIQ6K6SGmPIPpEh9pE1Xb+GuVljCXKxGJFbW40dmh2ZdadO7umBDu
|
||||||
|
vRk08jT9/BUnUP6KrZlvyePnG38z6srMrVU+XAHu5D2qZ9y+QIp3kw7Y5JUrNXc7
|
||||||
|
9q9P9TYx15GiIz2mSJKcLVmkLRebsaqdV7dBibPbfdGE+NB+F1FYPGDdW4cnonon
|
||||||
|
DzzjGm/FDfOCXEnSkYGQDBWpfd/8AWum1xGJxJCPNBJElGE2o5jDWo4Y1b9gHP0M
|
||||||
|
vARm8AOK8R1pQ7BP+pNMO0gGw2NDrtWiWpTeZ7SqXmZAZ/Gmyen9X+/fowcbTyDH
|
||||||
|
b9joIuMQeOtxbUV2JprZIdit9NBFSZq/7Re/GBUwjGBm3LabIXFNGKZovx/f9lf8
|
||||||
|
r5tVs4SPauiKzZS0K1Gz1NSq+3OXaY5EwVrBUXptYqRT7uyhVloOPRUsqRFeB0Fn
|
||||||
|
Y5xOpDJ0UiJxgFbdH5Vb81D/VjNO9Q4nZib8wSEuLrYLHGoceQPX4+Ov9IdhIL4B
|
||||||
|
BMTCaF+VCWC5PCLr0e61KqMCAwEAAQ==
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
dpdkm = {
|
dpdkm = {
|
||||||
owner = config.krebs.users.Mic92;
|
owner = config.krebs.users.Mic92;
|
||||||
nets = rec {
|
nets = rec {
|
||||||
@ -176,32 +202,6 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kruck = {
|
|
||||||
owner = config.krebs.users.palo;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.29.201";
|
|
||||||
aliases = [
|
|
||||||
"kruck.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIICCgKCAgEAxcui2sirT5YY9HrSauj9nSF3AxUnfd2CCEGyzmzbi5+qw8T9jdNh
|
|
||||||
QcIG3s+eC3uEy6leL/eeR4NjVtQRt8CDmhGul95Vs3I1jx9gdvYR+HOatPgK0YQA
|
|
||||||
EFwk0jv8Z8tOc87X1qwA00Gb+25+kAzsf+8+4HQuh/szSGje3RBmBFkUyNHh8R0U
|
|
||||||
uzs8NSTRdN+edvYtzjnYcE1sq59HFBPkVcJNp5I3qYTp6m9SxGHMvsq6vRpNnjq/
|
|
||||||
/RZVBhnPDBlgxia/aVfVQKeEOHZV3svLvsJzGDrUWsJCEvF0YwW4bvohY19myTNR
|
|
||||||
9lXo/VFx86qAkY09il2OloE7iu5cA2RV+FWwLeajE9vIDA06AD7nECVgthNoZd1s
|
|
||||||
qsDfuu3WqlpyBmr6XhRkYOFFE4xVLrZ0vItGYlgR2UPp9TjHrzfsedoyJoJAbhMH
|
|
||||||
gDlFgiHlAy1fhG1sCX5883XmSjWn0eJwmZ2O9sZNBP5dxfGUXg/x8NWfQj7E1lqj
|
|
||||||
jQ59UC6yiz7bFtObKvpdn1D4tPbqBvndZzn19U/3wKo+cCBRjtLmUD7HQHC65dCs
|
|
||||||
fAiCFvUTVMM3SNDvYChm0U/KGjZZFwQ+cCLj1JNVPet2C+CJ0qI2muXOnCuv/0o5
|
|
||||||
TBZrrHMpj6Th8AiOgeMVuxzjX1FsmAThWj9Qp/jQu6O0qvnkUNaU7I8CAwEAAQ==
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
qubasa = {
|
qubasa = {
|
||||||
owner = config.krebs.users.qubasa;
|
owner = config.krebs.users.qubasa;
|
||||||
nets = {
|
nets = {
|
||||||
@ -299,6 +299,33 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
toastbrot = {
|
||||||
|
owner = config.krebs.users.jan;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.117.12";
|
||||||
|
aliases = [
|
||||||
|
"toastbrot.r"
|
||||||
|
];
|
||||||
|
tinc.pubkey = ''
|
||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA12VLPJMhGSh5fQgrB6bP
|
||||||
|
2H1eew0/7t1xr3oJ3uaTZd7UIvPQ/aA5pB9xL5s+BIBvRa5P3QFWUAVhqchsPiRc
|
||||||
|
yC4awLvo6zrUZB3pJBFiUuThx1xzmazTbRNyJ0E3Dwi2VSp3dAi5xEwHSVDSElGj
|
||||||
|
DyRrdwyLe9lKghGHgNhB01QAt1/AO3A/TBs2RS/E0kuPhVQzpo5Ae5I530Cr0pf3
|
||||||
|
r/de1TdArIcOfnTvW7WNrdBhwLq14cfdXkZwJ2bBE9Q22FAJp5k21PW5dQ41oDuT
|
||||||
|
PYHZIH555sxifMThrUpuNHIrDtIQk6D+Km90WNf/lBGwZqQr/B5G6zSNX7d/0JbY
|
||||||
|
Hi8Ltq++Sf0XgWNir9+evGNLCBqAXdvQFrj2l7BuNywE0L2nZThnxjTxP6QLFnqO
|
||||||
|
IXY97x3p7AYcfmVFutfYqYM1HdyyehF711hhm30fdcXHsJ+GpQgGrj67+++N7g7g
|
||||||
|
fjWBGNI9EL9CyTZ/N9U3TGeoxooc1BSaAiHmaPoYaAeI0Y/W6bNrixpL3aI5X8MH
|
||||||
|
Flen2y2XEk2n+pXozPDbLAT+MZ3sWwODDYRc8zGbV2RlMvL94LHh95/JC0itdXa3
|
||||||
|
uNRDtSnfbNe4eHw9/HMDkclhywuE+hbyq+JNNodqLwG/o1/r3GI+ggOyCdZHjF4B
|
||||||
|
4R8QXUJiqUdcbR3WQDR5i10CAwEAAQ==
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
tpsw = {
|
tpsw = {
|
||||||
cores = 2;
|
cores = 2;
|
||||||
owner = config.krebs.users.ciko; # main laptop
|
owner = config.krebs.users.ciko; # main laptop
|
||||||
@ -411,6 +438,9 @@ in {
|
|||||||
mail = "dickbutt@excogitation.de";
|
mail = "dickbutt@excogitation.de";
|
||||||
pubkey = ssh-for "exco";
|
pubkey = ssh-for "exco";
|
||||||
};
|
};
|
||||||
|
jan = {
|
||||||
|
mail = "jan.heidbrink@posteo.de";
|
||||||
|
};
|
||||||
kmein = {
|
kmein = {
|
||||||
mail = "kieran.meinhardt@gmail.com";
|
mail = "kieran.meinhardt@gmail.com";
|
||||||
pubkey = ssh-for "kmein";
|
pubkey = ssh-for "kmein";
|
||||||
@ -419,8 +449,6 @@ in {
|
|||||||
mail = "joerg@thalheim.io";
|
mail = "joerg@thalheim.io";
|
||||||
pubkey = ssh-for "Mic92";
|
pubkey = ssh-for "Mic92";
|
||||||
};
|
};
|
||||||
palo = {
|
|
||||||
};
|
|
||||||
qubasa = {
|
qubasa = {
|
||||||
mail = "luis.nixos@gmail.com";
|
mail = "luis.nixos@gmail.com";
|
||||||
};
|
};
|
||||||
|
84
krebs/3modules/external/palo.nix
vendored
Normal file
84
krebs/3modules/external/palo.nix
vendored
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
with import <stockholm/lib>;
|
||||||
|
{ config, ... }: let
|
||||||
|
|
||||||
|
hostDefaults = hostName: host: flip recursiveUpdate host ({
|
||||||
|
ci = false;
|
||||||
|
external = true;
|
||||||
|
monitoring = false;
|
||||||
|
} // optionalAttrs (host.nets?retiolum) {
|
||||||
|
nets.retiolum.ip6.addr =
|
||||||
|
(krebs.genipv6 "retiolum" "external" { inherit hostName; }).address;
|
||||||
|
} // optionalAttrs (host.nets?wiregrill) {
|
||||||
|
nets.wiregrill.ip6.addr =
|
||||||
|
(krebs.genipv6 "wiregrill" "external" { inherit hostName; }).address;
|
||||||
|
});
|
||||||
|
ssh-for = name: builtins.readFile (./ssh + "/${name}.pub");
|
||||||
|
tinc-for = name: builtins.readFile (./tinc + "/${name}.pub");
|
||||||
|
|
||||||
|
in {
|
||||||
|
hosts = mapAttrs hostDefaults {
|
||||||
|
pepe = {
|
||||||
|
owner = config.krebs.users.palo;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.23.1";
|
||||||
|
tinc.port = 720;
|
||||||
|
aliases = [ "pepe.r" ];
|
||||||
|
tinc.pubkey = tinc-for "palo";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
kruck = {
|
||||||
|
owner = config.krebs.users.palo;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.23.3";
|
||||||
|
tinc.port = 720;
|
||||||
|
aliases = [ "kruck.r" ];
|
||||||
|
tinc.pubkey = tinc-for "palo";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
schasch = {
|
||||||
|
owner = config.krebs.users.palo;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.23.2";
|
||||||
|
tinc.port = 720;
|
||||||
|
aliases = [ "schasch.r" ];
|
||||||
|
tinc.pubkey = tinc-for "palo";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
workhorse = {
|
||||||
|
owner = config.krebs.users.palo;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.23.5";
|
||||||
|
tinc.port = 720;
|
||||||
|
aliases = [ "workhorse.r" ];
|
||||||
|
tinc.pubkey = tinc-for "palo";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
workout = {
|
||||||
|
owner = config.krebs.users.palo;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.23.4";
|
||||||
|
tinc.port = 720;
|
||||||
|
aliases = [ "workout.r" ];
|
||||||
|
tinc.pubkey = tinc-for "palo";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users = {
|
||||||
|
palo = {
|
||||||
|
};
|
||||||
|
palo-pepe = {
|
||||||
|
pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCe3j1dk8o7e0cFn+RepOjdeYcS0YcG0d6NnsMoq8pjqzLRuvOVN4CmsuRo4UJtWOUVv8kIWLcegks2RXbKOSTFAnvEIpPlSmL3BgvFGmUiOmPw1w93yxdVnfd9kJ6SBNuS+kFspKPvOEV9yVpjTywKZ0qKWjRd89Vz2+8aFJ/R3hyE+YqpzlzYbrucEIXbEWESqnzrx61NrWwd1ueHj0RYMDBjIJjVfIIK3W32vQ//pYJio1di0PpOPK2Ya0yugSixymuQBvzCgaedVeLdJ0k1d7d5iVb4LjCR8zg0Jnf1RLfpqRrFYwMJpwuhtIEevfNrhzqZA58QgHO6iOg50FeaD5k1rlWfoOvX2rcV5iqCC9jClIfMKzePdm+MeVorBXp+bflOhyPJG+Qrz6NTE9Ohe5A71Z0bBa96MEoW1hyrLCn0+z+Cx5kt7n2QzAAa/VPNjRDZeHbsu26MrvViEoh+FcPqx4DUIUaDRs/TNIvMGAl14E6gur68AI01a0PZJ/gnqZeOJKuyz4pKT0nIcg0EvkjXM2uEJ9m8h4IBAqTUYMZYm7iJBfpbwT6ePxFfah4q960orBUwW87CyPu/wDGmDblQ7dpkuw+skpzNgOGzerDyGAGKOsjGfYZpqsv9303S2f7884NAIK1ohgpMELytEYpY4YNi2KQYfHhgoQRJ5w== palo@pepe";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
13
krebs/3modules/external/tinc/palo.pub
vendored
Normal file
13
krebs/3modules/external/tinc/palo.pub
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIICCgKCAgEA2ACttoosnRZ99o+OyMrxBdUWPqsT5btzSIQ5dU1XWqGjO4nRchCE
|
||||||
|
8tO0b/4jqVgJVTRZVIUJQESZRlSmclsCAjdM8tsGj74CJrm7tBvgbBn2IObSs5+4
|
||||||
|
oJWe57VsQaeHPuI2JZuGqv8Z3Esw+B07bQS5VTaC1ISo7vnLG/q5XLCbKHB9JZc/
|
||||||
|
ztYbk4bEQHwbulfoPjD9FY3heLnTzqPw9Xr3ixao5gbAXfWNJM+iCluMq+Q2g1BD
|
||||||
|
ozSnyYvaGLQ6h4yksDp+xuK8YCqiRj174EkXySI8Jee1CBMuI8ciX/5Q7yzvzscQ
|
||||||
|
ZQ/MLVdx3MRW+VeT0ctaRzoA9E09ILqPe+56DjpsKzt4Ne8qeMG5HdpzO9UdNzTu
|
||||||
|
MuibsCL7CJy5Ytl38PK+LAXHQr3Os1Z4OHjeTZ38vTAZcOUJZEkl6w9nO1XjcyBL
|
||||||
|
rIaG+20Nx0ZU79MlJZFiG7ovlUiDfIEKNygng8v/yoTMaqMYLxQZ/leQwLMNLujo
|
||||||
|
sku8+oV4Jvx4SyUjuAS6jgG9CnejLCnHP/yyDGdaMQSzmlzYXacLMfnPZE3r7bj1
|
||||||
|
EjA6yQbkPixm7xLCyMm5u2leWtqtbg1oRA6Mw3UyYkNy3hiTU+jTvztEI3SCliDH
|
||||||
|
yjGlESH4/edryKjLNjmYP77VFbM9ZSQ+QGlbMGPvjcn6XCdJGdxm3PUCAwEAAQ==
|
||||||
|
-----END RSA PUBLIC KEY-----
|
@ -1,6 +1,5 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
{ config, ... }: let
|
{ config, ... }: let
|
||||||
# TODO dedup functions with ./retiolum-hosts.nix
|
|
||||||
check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
|
check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
|
||||||
domains = attrNames (filterAttrs (_: eq "hosts") config.krebs.dns.providers);
|
domains = attrNames (filterAttrs (_: eq "hosts") config.krebs.dns.providers);
|
||||||
in {
|
in {
|
||||||
@ -30,6 +29,66 @@ in {
|
|||||||
map (addr: { ${addr} = aliases; }) net.addrs)
|
map (addr: { ${addr} = aliases; }) net.addrs)
|
||||||
(attrValues host.nets))
|
(attrValues host.nets))
|
||||||
(attrValues config.krebs.hosts)));
|
(attrValues config.krebs.hosts)));
|
||||||
|
|
||||||
|
nixpkgs.config.packageOverrides = super: let
|
||||||
|
# nameValuePair name value : { "name" : name, "value" : value }
|
||||||
|
|
||||||
|
# addr : str
|
||||||
|
# aliase : str
|
||||||
|
# hostname : str
|
||||||
|
# netname : str
|
||||||
|
|
||||||
|
# addrAliases : nameValuePair addr [alias]
|
||||||
|
|
||||||
|
# hostNetAliases : host -> { ${netname} : [addrAliases] }
|
||||||
|
hostNetAliases = host:
|
||||||
|
mapAttrs (_: net: filter (x: x.name != null && x.value != []) [
|
||||||
|
{ name = net.ip4.addr or null; value = net.aliases; }
|
||||||
|
{ name = net.ip6.addr or null; value = net.aliases; }
|
||||||
|
]) host.nets;
|
||||||
|
|
||||||
|
# netAliases : { ${netname} : [addrAliases] }
|
||||||
|
netAliases =
|
||||||
|
foldl'
|
||||||
|
(result: host:
|
||||||
|
foldl'
|
||||||
|
# λ netAliases -> [addrAliases] -> netAliases
|
||||||
|
(result: { name, value }: result // {
|
||||||
|
${name} = result.${name} or [] ++ value;
|
||||||
|
})
|
||||||
|
result
|
||||||
|
(mapAttrsToList nameValuePair (hostNetAliases host))
|
||||||
|
)
|
||||||
|
{}
|
||||||
|
(attrValues config.krebs.hosts);
|
||||||
|
|
||||||
|
# writeHosts : str -> [addrAliases] -> package
|
||||||
|
writeHosts = name: addrAliases: super.writeText name ''
|
||||||
|
${concatMapStringsSep
|
||||||
|
"\n"
|
||||||
|
({ name, value }: "${name} ${toString value}")
|
||||||
|
addrAliases}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# hosts file for all krebs networks
|
||||||
|
krebs-hosts =
|
||||||
|
writeHosts "krebs-hosts" (concatLists [
|
||||||
|
netAliases.internet
|
||||||
|
netAliases.retiolum
|
||||||
|
netAliases.wiregrill
|
||||||
|
]);
|
||||||
|
|
||||||
|
# combined hosts file for all networks (even custom ones)
|
||||||
|
krebs-hosts_combined =
|
||||||
|
writeHosts "krebs-hosts_combined"
|
||||||
|
(concatLists (attrValues netAliases));
|
||||||
|
}
|
||||||
|
//
|
||||||
|
genAttrs' (attrNames netAliases) (netname: rec {
|
||||||
|
name = "krebs-hosts-${netname}";
|
||||||
|
value = writeHosts name netAliases.${netname};
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,443 +5,105 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
{ config, ... }: let
|
{ config, ... }: let
|
||||||
|
|
||||||
hostDefaults = hostName: host: flip recursiveUpdate host ({
|
hostDefaults = hostName: host: foldl' recursiveUpdate {} [
|
||||||
owner = config.krebs.users.makefu;
|
{
|
||||||
} // optionalAttrs (host.nets?retiolum) {
|
owner = config.krebs.users.makefu;
|
||||||
nets.retiolum.ip6.addr =
|
}
|
||||||
(krebs.genipv6 "retiolum" "makefu" { inherit hostName; }).address;
|
# Retiolum defaults
|
||||||
});
|
(let
|
||||||
|
pubkey-path = ./retiolum + "/${hostName}.pub";
|
||||||
|
in optionalAttrs (pathExists pubkey-path) {
|
||||||
|
nets.retiolum = {
|
||||||
|
tinc.pubkey = readFile pubkey-path;
|
||||||
|
aliases = [
|
||||||
|
"${hostName}.r"
|
||||||
|
];
|
||||||
|
ip6.addr =
|
||||||
|
(krebs.genipv6 "retiolum" "makefu" { inherit hostName; }).address;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
# Wiregrill defaults
|
||||||
|
(let
|
||||||
|
pubkey-path = ./wiregrill + "/${hostName}.pub";
|
||||||
|
in optionalAttrs (pathExists pubkey-path) {
|
||||||
|
nets.wiregrill = {
|
||||||
|
aliases = [
|
||||||
|
"${hostName}.w"
|
||||||
|
];
|
||||||
|
ip6.addr =
|
||||||
|
(krebs.genipv6 "wiregrill" "makefu" { inherit hostName; }).address;
|
||||||
|
wireguard.pubkey = readFile pubkey-path;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
# SSHD defaults
|
||||||
|
(let
|
||||||
|
pubkey-path = ./sshd + "/${hostName}.pub";
|
||||||
|
in optionalAttrs (pathExists pubkey-path) {
|
||||||
|
ssh.pubkey = readFile pubkey-path;
|
||||||
|
# We assume that if the sshd pubkey exits then there must be a privkey in
|
||||||
|
# the screts store as well
|
||||||
|
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
||||||
|
})
|
||||||
|
host
|
||||||
|
];
|
||||||
|
|
||||||
pub-for = name: builtins.readFile (./ssh + "/${name}.pub");
|
pub-for = name: builtins.readFile (./ssh + "/${name}.pub");
|
||||||
|
w6 = ip: (krebs.genipv6 "wiregrill" "makefu" ip).address;
|
||||||
in {
|
in {
|
||||||
hosts = mapAttrs hostDefaults {
|
hosts = mapAttrs hostDefaults {
|
||||||
cake = rec {
|
cake = rec {
|
||||||
cores = 4;
|
cores = 4;
|
||||||
ci = false;
|
ci = false;
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.136.236";
|
||||||
ip4.addr = "10.243.136.236";
|
|
||||||
aliases = [
|
|
||||||
"cake.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA0khdelSrOV/ZI9vvbV5aT1wVn2IfUfIdDCQIOnF2mZsrnIcuaedu
|
|
||||||
jRfZnJST1vOfL7JksF1+8pYwSn34CjJCGhyFf25lc6mARXmZe/araNrVpTntCy2+
|
|
||||||
MqG8KZe4mIda/WPTXRYGtFVQZeClM5SCZ7EECtw8sEkwt2QtOv43p/hiMXAkOQsq
|
|
||||||
6xc9/b4Bry7d+IjJs3waKfFQllF+C+GuK8yF0YnCEb6GZw7xkxHIO1QV4KSQ4CH7
|
|
||||||
36kEAdCSQ5rgaygRanUlUl+duQn1MLQ+lRlerAEcFfKrr3MKNz2jmGth8iUURdyP
|
|
||||||
MHjSWe+RkLQ6zzBaVgoKKuI9MbIbhenJWwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGyJlI0YpIh/LiiPMseD2IBHg+uVGrkSy0MPNeD+Jv8Y cake";
|
|
||||||
};
|
};
|
||||||
crapi = rec { # raspi1
|
crapi = rec { # raspi1
|
||||||
cores = 1;
|
cores = 1;
|
||||||
ci = false;
|
ci = false;
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.136.237";
|
||||||
ip4.addr = "10.243.136.237";
|
|
||||||
aliases = [
|
|
||||||
"crapi.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
Ed25519PublicKey = Zkh6vtSNBvKYUjCPsMyAFJmxzueglCDoawVPCezKy4F
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAloXLBfZQEVW9mJ7uwOoa+DfV4ek/SG+JQuexJMugei/iNy0NjY66
|
|
||||||
OVIkzFmED32c3D7S1+Q+5Mc3eR02k1o7XERpZeZhCtJOBlS4xMzCKH62E4USvH5L
|
|
||||||
R4O8XX1o/tpeOuZvpnpY1oPmFFc/B5G2jWWQR4Slpbw7kODwYYm5o+B7n+MkVNrk
|
|
||||||
OEOHLaaO6I5QB3GJvDH2JbwzDKLVClQM20L/EvIwnB+Xg0q3veKFj0WTXEK+tuME
|
|
||||||
di++RV4thhZ9IOgRTJOeT94j7ulloh15gqYaIqRqgtzfWE2TnUxvl+upB+yQHNtl
|
|
||||||
bJFLHkE34cQGxEv9dMjRe8i14+Onhb3B6wIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGaV5Ga5R8RTrA+nclxw6uy5Z+hPBLitQTfuXdsmbVW6 crapi";
|
|
||||||
};
|
};
|
||||||
drop = rec {
|
firecracker = {
|
||||||
ci = false;
|
cores = 4;
|
||||||
cores = 1;
|
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.12.12";
|
||||||
ip4.addr = "10.243.177.9";
|
|
||||||
aliases = [
|
|
||||||
"drop.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA1QxukdeDqI47nm7/gd5Y9dZZbJULA02ak0A2cB4lmysJjgMFAfbl
|
|
||||||
6qpH7HCZk6s+4eI7H+UHUF177W7Z1qq3bqGLmlgdMMAzuDNz9UvNLhrthZMp3tCI
|
|
||||||
GIFD28O1bKgDAYgsF/X21CRqEvgk3vRDp9yqIVIzQDmerOrZUx62Rx9Fssl/7ooW
|
|
||||||
0319fxcTw6GZEp7RXNzgIobnWPydakh+/I0inP0rC6It/vM5Hi2bV71QPZUyJ78C
|
|
||||||
Szh4S8TznW7yMzTQaOENeaUKfqEyN+CW2OomVdWIBOvTJVpvfAut/kg1dyUGgHlT
|
|
||||||
F8OlAoNAyxCSxqbM0fY0wtqKD7FaYY9cbQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
studio = rec {
|
studio = rec {
|
||||||
ci = false;
|
ci = false;
|
||||||
cores = 4;
|
cores = 4;
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIqBR5gjJkR1TEIs2yx6JRoIOA7+/LJA6kjju8yCauFa studio";
|
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.227.163";
|
||||||
ip4.addr = "10.243.227.163";
|
|
||||||
aliases = [
|
|
||||||
"studio.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAwAdSac8Oy5tPu7ejwojY5YqaNOfd7i0NToE+oaRJ1yxzmUpj8Fti
|
|
||||||
cGpcgBYhFXMVYoYfzLdkAlSYjWKAoShCq/ZEfIM67okXegXvL68zGksfXrmpdUuk
|
|
||||||
GCCy2/Ul5urvYEis9UeUpbe6tUxU0zXUWCkhMQgHeO2xQEizfIfWsUn5sYtFFoKI
|
|
||||||
jYbAcLbRtw+Islfih8G7ydPBh78WPGz6Xx79A5nmfI1VZDAToEqpqUoaqfzsTGd1
|
|
||||||
78GZssE3o4veTmBFvLV3Fm/ltfXpzhAIcsi89V3RjrzFM7UMD8aV153OAzhddxIu
|
|
||||||
8x6FibmMSzBXQDFuAac2+kp9mU0F0W4G1wIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fileleech = rec {
|
fileleech = rec {
|
||||||
ci = false;
|
ci = false;
|
||||||
cores = 4;
|
cores = 4;
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+jB5QdPsAJc90alYDhAEP3sPDJb6eIj9bebj+rTBEJ fileleech";
|
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.113.98";
|
||||||
ip4.addr = "10.243.113.98";
|
|
||||||
aliases = [
|
|
||||||
"fileleech.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA2W20+jYvuFUjPQ+E+7Xlabf8fW/XSnTTelfo2uRcJ3FMLYQ9H3rF
|
|
||||||
8L8StPmxn8Q20FFH/MvRmgW8pU9z4RQ3nAi+utVYqAJQtOYA9FPMxssC08w82r0K
|
|
||||||
YC6sgc9MeRjnCjQxQrQs4fqA6KpqSLxRf2c6kfNwYRgCxFMns2ncxOiPOoGLZait
|
|
||||||
nJR3m0cSRm8yCTMbznlGH99+5+3HgvuBE/UYXmmGBs7w8DevaX76butzprZ8fm4z
|
|
||||||
e5C7R9ofdVW70GGksfSI81y5xODWMbfjTRHKm4OBX7NOCiOTwx1wu8bYDN3EzN6V
|
|
||||||
UM5PJfU42sViPEZmVuC8cDcP1xemHTkh9QIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
latte = rec {
|
|
||||||
ci = false;
|
|
||||||
cores = 1;
|
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
# ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrkK1mWfPvfZ9ALC1irGLuzOtMefaGAmGY1VD4dj7K1 latte";
|
|
||||||
nets = {
|
|
||||||
internet = {
|
|
||||||
ip4.addr = "185.215.224.160";
|
|
||||||
aliases = [
|
|
||||||
"latte.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.80.249";
|
|
||||||
aliases = [
|
|
||||||
"latte.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAx70gmNoP4RYeF3ShddEMsbNad9L5ezegwxJTZA7XTfF+/cwr/QwU
|
|
||||||
5BL0QXTwBnKzS0gun5NXmhwPzvOdvfczAxtJLk8/NjVHFeE39CiTHGgIxkZFgnbo
|
|
||||||
r2Rj6jJb89ZPaTr+hl0+0WQQVpl9NI7MTCUimvFBaD6IPmBh5wTySu6mYBs0mqmf
|
|
||||||
43RrvS42ieqQJAvVPkIzxxJeTS/M3NXmjbJ3bdx/2Yzd7INdfPkMhOONHcQhTKS4
|
|
||||||
GSXJRTytLYZEah8lp8F4ONggN6ixlhlcQAotToFP4s8c+KqYfIZrtP+pRj7W72Y6
|
|
||||||
vhnobLDJwBbAsW1RQ6FHcw10TrP2H+haewIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pnp = {
|
|
||||||
ci = false;
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.0.210";
|
|
||||||
aliases = [
|
|
||||||
"pnp.r"
|
|
||||||
"cgit.pnp.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAugkgEK4iy2C5+VZHwhjj/q3IOhhazE3TYHuipz37KxHWX8ZbjH+g
|
|
||||||
Ewtm79dVysujAOX8ZqV8nD8JgDAvkIZDp8FCIK0/rgckhpTsy1HVlHxa7ECrOS8V
|
|
||||||
pGz4xOxgcPFRbv5H2coHtbnfQc4GdA5fcNedQ3BP3T2Tn7n/dbbVs30bOP5V0EMR
|
|
||||||
SqZwNmtqaDQxOvjpPg9EoHvAYTevrpbbIst9UzCyvmNli9R+SsiDrzEPgB7zOc4T
|
|
||||||
TG12MT+XQr6JUu4jPpzdhb6H/36V6ADCIkBjzWh0iSfWGiFDQFinD+YSWbA1NOTr
|
|
||||||
Qtd1I3Ov+He7uc2Z719mb0Og2kCGnCnPIwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
darth = {
|
|
||||||
ci = false;
|
|
||||||
cores = 4;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.0.84";
|
|
||||||
aliases = [
|
|
||||||
"darth.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA1pWNU+FY9XpQxw6srUb5mvGFgqSyJQAelFoufZng6EFeTnAzQOdq
|
|
||||||
qT7IWN+o3kSbQQsC2tQUnRYFoPagsgFP610D+LGwmeJlNgAf23gBI9ar1agUAvYX
|
|
||||||
yzYBj7R9OgGXHm6ECKwsxUJoGxM4L0l6mk/rTMVFnzgYPbpVJk1o6NPmiZhW8xIi
|
|
||||||
3BfxJUSt8rEQ1OudCirvdSr9uYv/WMR5B538wg4JeQK715yKEYbYi8bqOPnTvGD8
|
|
||||||
q5HRwXszWzCYYnqrdlmXzoCA1fT4vQdtov+63CvHT2RV7o42ruGZbHy7JIX9X3IE
|
|
||||||
u0nA8nZhZ5byhWGCpDyr6bTkvwJpltJypQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
siem = {
|
|
||||||
ip4.addr = "10.8.10.2";
|
|
||||||
ip4.prefix = "10.8.10.0/24";
|
|
||||||
aliases = [
|
|
||||||
"darth.siem"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
Ed25519PublicKey = 24t9ye4gRLg6UbVxBvuuDlvU/cnByxMjYjym4LO6GkK
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCQKCAQEApcUeTecVahqNIfLEkfgNiaW+eHQ9Y90DxHhy9vdPZh8dmLqoFBoW
|
|
||||||
TCPcZIRpyj7hxRkNIhh34Ewpul0oQ1tzrUGcT2xvMNwaCupRDmhZn9jR9aFFEYKb
|
|
||||||
fUOplCxb4y2UKbWAA6hie3PKH9wnPfbwSsexb2BSQAqSt4iNIVCV6j7LXpiopbGS
|
|
||||||
Exs3/Pz+IeMtGyuMYA3rUmJsVRKR1o7axLtlhYK7JSMbqdYhaQJ4NZrvIXw//w21
|
|
||||||
kM/TJTPZ4j47ME18jQInO62X5h+xVch6DtvwvjBMMMKbS0am9qw1P3qo7MP3PmQh
|
|
||||||
rvVQRth8L63q4NLOnT29XmnxPSVGL1PBQQICEAE=
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ossim = { # vm on darth
|
|
||||||
nets = {
|
|
||||||
siem = {
|
|
||||||
ip4.addr = "10.8.10.6";
|
|
||||||
ip4.prefix = "10.8.10.0/24";
|
|
||||||
aliases = [
|
|
||||||
"ossim.siem"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAv5qv9R3E1AHJOhTnHJ2E5zWjItRdXSw/inpz/W+KcBeM/HSG0XEl
|
|
||||||
RyGAwty7VP4CiLp7CagWmtVsz/5ytnXJzLDeRLn5t+KzO6am0aOpvAt6ZggZXPhL
|
|
||||||
cQkn4IGi1TJE5tw+lzabBkUZm3zD1KEXpqJeZ6spA4e9lB/+T3Tx23g9WDEOKand
|
|
||||||
mAJrsdsvTCIiVJefidOAmgeZVVOV3ltBonNP1nqEy+5v4B3EBT/Uj7ImL2aRj/pd
|
|
||||||
dPs6dGV2LqSQvnrSbFZzuKVXKpD1M+wgT/5NQk/hVJJxBQC6rxvpg1XyQkepcLWL
|
|
||||||
WjvogOl4NjXStmKDX2+gPPFx6XTmwDenOwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
honeydrive = { # vm on darth
|
|
||||||
nets = {
|
|
||||||
internet = { # via shoney
|
|
||||||
ip4.addr = "64.137.234.232";
|
|
||||||
aliases = [
|
|
||||||
"honeydrive.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
tsp = {
|
tsp = {
|
||||||
ci = true;
|
ci = true;
|
||||||
cores = 1;
|
cores = 1;
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.0.212";
|
||||||
ip4.addr = "10.243.0.212";
|
|
||||||
aliases = [
|
|
||||||
"tsp.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIICCgKCAgEAwW+RjRcp3uarkfXZ+FcCYY2GFcfI595GDpLRuiS/YQAB3JZEirHi
|
|
||||||
HFhDJN80fZ9qHqtq9Af462xSx+cIb282TxAqCM1Z9buipOcYTYo0m8xIqkT10dB3
|
|
||||||
mR87B+Ed1H6G3J6isdwEb9ZMegyGIIeyR53FJQYMZXjxdJbAmGMDKqjZSk1D5mo+
|
|
||||||
n5Vx3lGzTuDy84VyphfO2ypG48RHCxHUAx4Yt3o84LKoiy/y5E66jaowCOjZ6SqG
|
|
||||||
R0cymuhoBhMIk2xAXk0Qn7MZ1AOm9N7Wru7FXyoLc7B3+Gb0/8jXOJciysTG7+Gr
|
|
||||||
Txza6fJvq2FaH8iBnfezSELmicIYhc8Ynlq4xElcHhQEmRTQavVe/LDhJ0i6xJSi
|
|
||||||
aOu0njnK+9xK+MyDkB7n8dO1Iwnn7aG4n3CjVBB4BDO08lrovD3zdpDX0xhWgPRo
|
|
||||||
ReOJ3heRO/HsVpzxKlqraKWoHuOXXcREfU9cj3F6CRd0ECOhqtFMEr6TnuSc8GaE
|
|
||||||
KCKxY1oN45NbEFOCv2XKd2wEZFH37LFO6xxzSRr1DbVuKRYIPjtOiFKpwN1TIT8v
|
|
||||||
XGzTT4TJpBGnq0jfhFwhVjfCjLuGj29MCkvg0nqObQ07qYrjdQI4W1GnGOuyXkvQ
|
|
||||||
teyxjUXYbp0doTGxKvQaTWp+JapeEaJPN2MDOhrRFjPrzgo3aW9+97UCAwEAAQ==
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
x = {
|
x = {
|
||||||
ci = true;
|
ci = true;
|
||||||
cores = 4;
|
cores = 4;
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.0.91";
|
||||||
ip4.addr = "10.243.0.91";
|
wiregrill = {
|
||||||
aliases = [
|
# defaults
|
||||||
"x.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAnztrijsfao+fmNtwAjqwIDKsRaMP3ECsq2T2zqKvxwCyXk69G9bG
|
|
||||||
RFhWjgaawS9ZhnHSlgWK/vtoR0O9NxpzdU/mvdQijbVGxM02DegjO9qDSIe8EGmA
|
|
||||||
kscW4nDqYtw4rtjOVPfnNiWXbcWD8eiYR0kcSWmSvfOpVvdhTETqduTx5HRHyEFD
|
|
||||||
JRQYR/tJSvVWXmM670PENAPNJFJ4VSJR60s5A+bFT7J/uw7HzJXX28LygJz73Dj2
|
|
||||||
2a4ev0WcZQngLq072h/91R/TOpg+ogUDVhXkQtKyFj7im0287JTL4bXGofZBhzaf
|
|
||||||
+h9dFGs1QLoNyhG/cgt9fog7boSXTelAiQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
siem = {
|
|
||||||
ip4.addr = "10.8.10.4";
|
|
||||||
ip4.prefix = "10.8.10.0/24";
|
|
||||||
aliases = [
|
|
||||||
"makefu.siem"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
Ed25519PublicKey = rFTglGxm563e/w82Q9Qqy/E+V/ipT4DOTyTuYrWrtmI
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCQKCAQEAx+OQXQj6rlXIByo48JZXSexRz5G5oJVZTHAJ0GF5f70U65C0x83p
|
|
||||||
XtNp4LGYti+cyyzmQjf/N7jr2CxUlOATN2nRO4CT+JaMM2MoqnPWqTZBPMDiHq2y
|
|
||||||
ce0zjLPPl0hVc5mg+6F0tgolbUvTIo2CgAIl5lNvJiVfmXRSehmMprf1NPkxJd/O
|
|
||||||
vAOD7mgnCjkEAWElf1cfxSGZqSLbNltRK340nE5x6A5tY7iEueP/r9chEmOnVjKm
|
|
||||||
t+GJAJIe1PClWJHJYAXF8I7R3g+XQIqgw+VTN3Ng5cS5W/mbTFIzLWMZpdZaAhWR
|
|
||||||
56pthtZAE5FZ+4vxMpDQ4yeDu0b6gajWNQICEAE=
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
#wiregrill = {
|
|
||||||
# aliases = [
|
|
||||||
# "x.w"
|
|
||||||
# ];
|
|
||||||
# wireguard.pubkey = "fe5smvKVy5GAn7EV4w4tav6mqIAKhGWQotm7dRuRt1g=";
|
|
||||||
#};
|
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHDM0E608d/6rGzXqGbNSuMb2RlCojCJSiiz6QcPOC2G root@x";
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vbob = {
|
|
||||||
ci = true;
|
|
||||||
cores = 2;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.1.91";
|
|
||||||
aliases = [
|
|
||||||
"vbob.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA+0TIo0dS9LtSdrmH0ClPHLO7dHtV9Dj7gaBAsbyuwxAI5cQgYKwr
|
|
||||||
4G6t7IcJW+Gu2bh+LKtPP91+zYXq4Qr1nAaKw4ajsify6kpxsCBzknmwi6ibIJMI
|
|
||||||
AK114dr/XSk/Pc6hOSA8kqDP4c0MZXwitRBiNjrWbTrQh6GJ3CXhmpZ2lJkoAyNP
|
|
||||||
hjdPerbTUrhQlNW8FanyQQzOgN5I7/PXsZShmb3iNKz1Ban5yWKFCVpn8fjWQs5o
|
|
||||||
Un2AKowH4Y+/g8faGemL8uy/k5xrHSrn05L92TPDUpAXrcZXzo6ao1OBiwJJVl7s
|
|
||||||
AVduOY18FU82GUw7edR0e/b2UC6hUONflwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPLTMl+thSq77cjYa2XF7lz5fA7JMftrLo8Dy/OBXSg root@nixos";
|
|
||||||
};
|
|
||||||
pigstarter = rec {
|
|
||||||
cores = 1;
|
|
||||||
|
|
||||||
extraZones = {
|
|
||||||
"krebsco.de" = ''
|
|
||||||
euer IN MX 1 aspmx.l.google.com.
|
|
||||||
nixos.unstable IN CNAME krebscode.github.io.
|
|
||||||
boot IN A ${nets.internet.ip4.addr}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
nets = {
|
|
||||||
internet = {
|
|
||||||
ip4.addr = "192.40.56.122";
|
|
||||||
ip6.addr = "2604:2880::841f:72c";
|
|
||||||
aliases = [
|
|
||||||
"pigstarter.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.0.153";
|
|
||||||
aliases = [
|
|
||||||
"pigstarter.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA/efJuJRLUIZROe3QE8WYTD/zyNGRh9I2/yw+5It9HSNVDMIOV1FZ
|
|
||||||
9PaspsC+YQSBUQRN8SJ95G4RM6TIn/+ei7LiUYsf1Ik+uEOpP5EPthXqvdJEeswv
|
|
||||||
3QFwbpBeOMNdvmGvQLeR1uJKVyf39iep1wWGOSO1sLtUA+skUuN38QKc1BPASzFG
|
|
||||||
4ATM6rd2Tkt8+9hCeoePJdLr3pXat9BBuQIxImgx7m5EP02SH1ndb2wttQeAi9cE
|
|
||||||
DdJadpzOcEgFatzXP3SoKVV9loRHz5HhV4WtAqBIkDvgjj2j+NnXolAUY25Ix+kv
|
|
||||||
sfqfIw5aNLoIX4kDhuDEVBIyoc7/ofSbkQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wry = rec {
|
|
||||||
ci = false;
|
|
||||||
cores = 1;
|
|
||||||
extraZones = {
|
|
||||||
"krebsco.de" = ''
|
|
||||||
wry IN A ${nets.internet.ip4.addr}
|
|
||||||
tinc IN A ${nets.internet.ip4.addr}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
nets = rec {
|
|
||||||
internet = {
|
|
||||||
ip4.addr = "104.233.87.86";
|
|
||||||
aliases = [
|
|
||||||
"wry.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
retiolum = {
|
|
||||||
via = internet;
|
|
||||||
ip4.addr = "10.243.29.169";
|
|
||||||
aliases = [
|
|
||||||
"wry.r"
|
|
||||||
"graph.wry.r"
|
|
||||||
"paste.wry.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIICCgKCAgEAs9bq++H4HF8EpZMfWGfoIsh/C+YNO2pg74UPBsP/tFFe71yzWwUn
|
|
||||||
U9LW0n3bBqCMQ/oDthbSMwCkS9JzcUi22QJEdjbQs/aay9gZR115b+UxWPocw0Ms
|
|
||||||
ZoREKo3Oe0hETk7Ing8NdBDI0kCBh9QnvqQ3iKd0rBae3DYvcWlDsY93GLGMddgA
|
|
||||||
7E9oa3EHVYH/MPZaeJtTknaJduanBSbiEb/xQOqxTadHoQASKU6DQD1czMH3hLG2
|
|
||||||
8Wn4MBj9fgKBAoIy092tIzPtE2QwAHO73yz4mSW/3r190hREgVbjuEPiw4w5mEyQ
|
|
||||||
j+NeN3f3heFKx+GCgdWH9xPw6m6qPdqUiGUPq91KXMOhNa8lLcTp95mHdCMesZCF
|
|
||||||
TFj7hf6y+SVt17Vo+YUL7UqnMtAm3eZZmwyDu0DfKFrdgz6MtDD+5dQp9g8VHpqw
|
|
||||||
RfbaB1Srlr24EUYYoOBEF9CcIacFbsr+MKh+hQk5R0uEMSeAWARzxvvr69iMgdEC
|
|
||||||
zDiu0rrRLN+CrfgkDir7pkRKxeA1lz8KpySyIZRziNg6mSHjKjih4++Bbu4N2ack
|
|
||||||
86h84qBrA8lq2xsub4+HgKZGH2l5Y8tvlr+rx0mQKEJkT6XDKCXZFPfl2N0QrWGT
|
|
||||||
Dv7l2vn0QMj9E6+BdRhYaO/m3+cIZ9faM851nRj/gq2OOtzW3ekrne0CAwEAAQ==
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH4Tjx9qK6uWtxT1HCpeC0XvDZKO/kaPygyKatpAqU6I root@wry";
|
|
||||||
};
|
|
||||||
filepimp = rec {
|
filepimp = rec {
|
||||||
ci = false;
|
ci = false;
|
||||||
cores = 1;
|
cores = 1;
|
||||||
@ -452,22 +114,7 @@ in {
|
|||||||
"filepimp.lan"
|
"filepimp.lan"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.153.102";
|
||||||
ip4.addr = "10.243.153.102";
|
|
||||||
aliases = [
|
|
||||||
"filepimp.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA43w+A1TMOfugZ/CVwilJn4c36wWSjihaeVe7suZD0DSscKBcbkGg
|
|
||||||
3dTCSTnu6Qb9sYd2mKebKXLreO6nhEEoFGsRU0yw/1h8gl7mWYEdTifPfvM5EWwS
|
|
||||||
wkN9dJ5njwIUSRyWH7QTsLkiRJVFN2UxEwrhAbo1FJ7yuhRgAKqKJSN4yPVViZwR
|
|
||||||
oHyyobvm/i2J+XSiDI9MRo74vNjnDLvO7R6ErIrhOPP1bD9fx3u+UYUfgS0iCO3X
|
|
||||||
UN0duBz/faRcl6IRytZOuHaIp30eJ4850ZK8RPz/Dqqj+USMFq60i0oMsuAi/ljB
|
|
||||||
8b+eQBt6OXu4MSntxoR8Ja7ht+EOTDnBOwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -489,68 +136,27 @@ in {
|
|||||||
"dcpp.omo.r"
|
"dcpp.omo.r"
|
||||||
"torrent.omo.r"
|
"torrent.omo.r"
|
||||||
];
|
];
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAuHQEeowvxRkoHJUw6cUp431pnoIy4MVv7kTLgWEK46nzgZtld9LM
|
|
||||||
ZdNMJB9CuOVVMHEaiY6Q5YchUmapGxwEObc0y+8zQxTPw3I4q0GkSJqKLPrsTpkn
|
|
||||||
sgEkHPfs2GVdtIBXDn9I8i5JsY2+U8QF8fbIQSOO08/Vpa3nknDAMege9yEa3NFm
|
|
||||||
s/+x+2pS+xV6uzf/H21XNv0oufInXwZH1NCNXAy5I2V6pz7BmAHilVOGCT7g2zn6
|
|
||||||
GasmofiYEnro4V5s8gDlQkb7bCZEIA9EgX/HP6fZJQezSUHcDCQFI0vg26xywbr6
|
|
||||||
5+9tTn8fN2mWS5+Pdmx3haX1qFcBP5HglwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTBGboU/P00yYiwYje53G0oqDFWmcSJ+hIpMsl4f/HH";
|
|
||||||
};
|
};
|
||||||
wbob = rec {
|
wbob = rec {
|
||||||
ci = true;
|
ci = true;
|
||||||
cores = 4;
|
cores = 4;
|
||||||
nets = {
|
nets = {
|
||||||
siem = {
|
|
||||||
ip4.addr = "10.8.10.7";
|
|
||||||
ip4.prefix = "10.8.10.0/24";
|
|
||||||
aliases = [ "display.siem" ];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA+/TpxsVIBL9J9QAe/+jB6sgu/O6J+KY4YrAzZ6dM4kbFv5JA64f5
|
|
||||||
6znv8EFqn6loS9Aez3e08P5scyGjiwWytdKN5Yztlffc0xDD7MUU2RiCsQF1X74J
|
|
||||||
+1i8NhSq3PJ6UeUURxYYnAYzBlFvsxev4vpniFTsIR9tmcAYX9NT9420D6nV7xq7
|
|
||||||
FdkoBlYj4eUQqQzHH1T/Lmt+BGmf+BufIJas+Oo/Sg59vIk9OM08WyAjHVT2iNbg
|
|
||||||
LXDhzVaeGOOM3GOa0YGG0giM3Rd245YPaPiVbwrMy8HQRBpMzXOPjcC1nYZSjxrW
|
|
||||||
LQxtRS+dmfEMG7MJ8T2T2bseX6z6mONc1QIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
-----BEGIN ED25519 PUBLIC KEY-----
|
|
||||||
3JGeGnADWR+hfb4TEoHDyopEYgkfGNJKwy71bqcsNrO
|
|
||||||
-----END ED25519 PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.214.15";
|
ip4.addr = "10.243.214.15";
|
||||||
aliases = [
|
aliases = [
|
||||||
"wbob.r"
|
"wbob.r"
|
||||||
"hydra.wbob.r"
|
"hydra.wbob.r"
|
||||||
];
|
];
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAqLTJx91OdR0FlJAc2JGh+AJde95oMzzh8o36JBFpsaN7styNfD3e
|
|
||||||
QGM/bDXFjk4ieIe5At0Z63P2KWxRp3cz8LWKJsn5cGsX2074YWMAGmKX+ZZJNlal
|
|
||||||
cJ994xX+8MJ6L2tVKpY7Ace7gqDN+l650PrEzV2SLisIqOdxoBlbAupdwHieUBt8
|
|
||||||
khm4NLNUCxPYUx2RtHn4iGdgSgUD/SnyHEFdyDA17lWAGfEi4yFFjFMYQce/TFrs
|
|
||||||
rQV9t5hGaofu483Epo6mEfcBcsR4GIHI4a4WKYANsIyvFvzyGFEHOMusG6nRRqE9
|
|
||||||
TNs2RYfwDy/r6H/hDeB/BSngPouedEVcPwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN5ZmJSypW3LXIJ67DdbxMxCfLtORFkl5jEuD131S5Tr";
|
|
||||||
};
|
};
|
||||||
gum = rec {
|
gum = rec {
|
||||||
ci = true;
|
ci = true;
|
||||||
extraZones = {
|
extraZones = {
|
||||||
"krebsco.de" = ''
|
"krebsco.de" = ''
|
||||||
|
boot IN A ${nets.internet.ip4.addr}
|
||||||
boot.euer IN A ${nets.internet.ip4.addr}
|
boot.euer IN A ${nets.internet.ip4.addr}
|
||||||
cache.euer IN A ${nets.internet.ip4.addr}
|
cache.euer IN A ${nets.internet.ip4.addr}
|
||||||
cache.gum IN A ${nets.internet.ip4.addr}
|
cache.gum IN A ${nets.internet.ip4.addr}
|
||||||
@ -558,6 +164,7 @@ in {
|
|||||||
dl.euer IN A ${nets.internet.ip4.addr}
|
dl.euer IN A ${nets.internet.ip4.addr}
|
||||||
dockerhub IN A ${nets.internet.ip4.addr}
|
dockerhub IN A ${nets.internet.ip4.addr}
|
||||||
euer 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}
|
ghook IN A ${nets.internet.ip4.addr}
|
||||||
git.euer IN A ${nets.internet.ip4.addr}
|
git.euer IN A ${nets.internet.ip4.addr}
|
||||||
gold IN A ${nets.internet.ip4.addr}
|
gold IN A ${nets.internet.ip4.addr}
|
||||||
@ -566,6 +173,7 @@ in {
|
|||||||
iso.euer IN A ${nets.internet.ip4.addr}
|
iso.euer IN A ${nets.internet.ip4.addr}
|
||||||
mon.euer IN A ${nets.internet.ip4.addr}
|
mon.euer IN A ${nets.internet.ip4.addr}
|
||||||
netdata.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}
|
o.euer IN A ${nets.internet.ip4.addr}
|
||||||
photostore IN A ${nets.internet.ip4.addr}
|
photostore IN A ${nets.internet.ip4.addr}
|
||||||
pigstarter IN A ${nets.internet.ip4.addr}
|
pigstarter IN A ${nets.internet.ip4.addr}
|
||||||
@ -586,17 +194,21 @@ in {
|
|||||||
"nextgum.i"
|
"nextgum.i"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
#wiregrill = {
|
wiregrill = {
|
||||||
# via = internet;
|
via = internet;
|
||||||
# aliases = [
|
ip6.addr = w6 "1";
|
||||||
# "gum.w"
|
wireguard = {
|
||||||
# ];
|
subnets = [
|
||||||
# wireguard.pubkey = "yAKvxTvcEVdn+MeKsmptZkR3XSEue+wSyLxwcjBYxxo=";
|
(krebs.genipv6 "wiregrill" "external" 0).subnetCIDR
|
||||||
#};
|
(krebs.genipv6 "wiregrill" "makefu" 0).subnetCIDR
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
retiolum = {
|
retiolum = {
|
||||||
via = internet;
|
via = internet;
|
||||||
ip4.addr = "10.243.0.213";
|
ip4.addr = "10.243.0.213";
|
||||||
aliases = [
|
aliases = [
|
||||||
|
"gum.r"
|
||||||
"backup.makefu.r"
|
"backup.makefu.r"
|
||||||
"blog.gum.r"
|
"blog.gum.r"
|
||||||
"blog.makefu.r"
|
"blog.makefu.r"
|
||||||
@ -605,7 +217,6 @@ in {
|
|||||||
"dcpp.gum.r"
|
"dcpp.gum.r"
|
||||||
"dcpp.nextgum.r"
|
"dcpp.nextgum.r"
|
||||||
"graph.r"
|
"graph.r"
|
||||||
"gum.r"
|
|
||||||
"logs.makefu.r"
|
"logs.makefu.r"
|
||||||
"netdata.makefu.r"
|
"netdata.makefu.r"
|
||||||
"nextgum.r"
|
"nextgum.r"
|
||||||
@ -617,91 +228,15 @@ in {
|
|||||||
"wiki.gum.r"
|
"wiki.gum.r"
|
||||||
"wiki.makefu.r"
|
"wiki.makefu.r"
|
||||||
];
|
];
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAvgvzx3rT/3zLuCkzXk1ZkYBkG4lltxrLOLNivohw2XAzrYDIw/ZY
|
|
||||||
BTDDcD424EkNOF6g/3tIRWqvVGZ1u12WQ9A/R+2F7i1SsaE4nTxdNlQ5rjy80gO3
|
|
||||||
i1ZubMkTGwd1OYjJytYdcMTwM9V9/8QYFiiWqh77Xxu/FhY6PcQqwHxM7SMyZCJ7
|
|
||||||
09gtZuR16ngKnKfo2tw6C3hHQtWCfORVbWQq5cmGzCb4sdIKow5BxUC855MulNsS
|
|
||||||
u5l+G8wX+UbDI85VSDAtOP4QaSFzLL+U0aaDAmq0NO1QiODJoCo0iPhULZQTFZUa
|
|
||||||
OMDYHHfqzluEI7n8ENI4WwchDXH+MstsgwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIcxWFEPzke/Sdd9qNX6rSJgXal8NmINYajpFCxXfYdj root@gum";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
shoney = rec {
|
|
||||||
ci = false;
|
|
||||||
cores = 1;
|
|
||||||
nets = rec {
|
|
||||||
siem = {
|
|
||||||
via = internet;
|
|
||||||
ip4.addr = "10.8.10.1";
|
|
||||||
ip4.prefix = "10.8.10.0/24";
|
|
||||||
aliases = [
|
|
||||||
"shoney.siem"
|
|
||||||
"graph.siem"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA0OK28PHsMGMxAqVRiRGv93zzEWJgV3hMFquWrpbYC3OZwHDYcNHu
|
|
||||||
74skwRRwwnbcq0ZtWroEvUTmZczuPt2FewdtuEutT7uZJnAYnzSOrB9lmmdoXKQU
|
|
||||||
l4ho1LEf/J0sMBi7RU/OJosuruQTAl53ca5KQbRCXkcPlmq4KzUpvgPINpEpYQjB
|
|
||||||
CGC3ErOvw2jXESbDnWomYZgJl3uilJUEYlyQEwyWVG+fO8uxlz9qKLXMlkoJTbs4
|
|
||||||
fTIcxh7y6ZA7QfMN3Ruq1R66smfXQ4xu1hybvqL66RLiDQgH3BRyKIgobS1UxI4z
|
|
||||||
L+xhIsiMXQIo2hv8aOUnf/7Ac9DXNR83GwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
tinc.port = 1655;
|
|
||||||
};
|
|
||||||
internet = {
|
|
||||||
ip4.addr = "64.137.234.215";
|
|
||||||
aliases = [
|
|
||||||
"shoney.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.205.131";
|
|
||||||
aliases = [
|
|
||||||
"shoney.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAsYXzbotmODJqos+Ilve8WyO2qBti6eMDSOP59Aqb18h8A5b4tCTL
|
|
||||||
ygDo2xLLzRaINQAxfdaKcdMOWSEkiy1j/pBYs1tfqv4mT6BO+1t8LXz82D+YcT+4
|
|
||||||
okGXklZ/H5L+T9cynbpKIwzTrw0DuOUhzs/WRFJU60B4cJ0Tl3IQs5ePX1SevVht
|
|
||||||
M5n1ob47SCHxEuC+ZLNdLc6KRumcp3Ozk6Yxj3lZ0tqyngxY1C+1kTJwRyw9A7vO
|
|
||||||
+DAH8t1YusYi7ICHcYt5J1p0ZGizcs8oEnZLBy4D+bJX86g7zbix1lZ37LxDCpQ5
|
|
||||||
uCoAYFes7QqLVDYhucZ5ElRWdATM2mBtZwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
sdev = rec {
|
sdev = rec {
|
||||||
ci = true;
|
ci = true;
|
||||||
cores = 1;
|
cores = 1;
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILtm6ETzNgLcXNkrKs2VUEiGsTKBmOFpW2fazbzdUfOg sdev";
|
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum.ip4.addr = "10.243.83.237";
|
||||||
ip4.addr = "10.243.83.237";
|
|
||||||
aliases = [
|
|
||||||
"sdev.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA8BwHwQ4pLZpskVnQONJsmzRPll4ZKMjAC56sY5p+GfT9ZBMkVDn+
|
|
||||||
LeH9wuTRiX/ehgtBiyu8w37cz62hz/71H+3mnWJlTm9bbBTc5N0y8l9b+YYeExW4
|
|
||||||
XPm4bUbJWKNRG9tHQAns/OREYDsHLsY6UoyNFmB0wTDpgs7egDCoe7E2eT+pG428
|
|
||||||
ysCDYlaZaigOyW+bj/HFLj8FSfpF5C/ug7NE/D7QocadsRUiLtVYrJsfmT+KHWf+
|
|
||||||
f5rLWLvuFiz1SWf7wZ9sICF3RCaC9Qhz7zplgHbvwbOHtF+Z/6DxduRMkggZUsUD
|
|
||||||
nm+40Ex1XJTe+s4V4GKLgh/fDKBTS6JwewIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -725,19 +260,6 @@ in {
|
|||||||
};
|
};
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.211.172";
|
ip4.addr = "10.243.211.172";
|
||||||
aliases = [
|
|
||||||
"flap.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAwtLD+sgTQGO+eh2Ipq2r54J1I0byvfkaTBeBwhtUmWst+lUQUoGy
|
|
||||||
2fGReRYsb4ThDLeyK439jZuQBeXSc5r2g0IHBJCSWj3pVxc1HRTa8LASY7QuprQM
|
|
||||||
8rSQa2XUtx/KpfM2eVX0yIvLuPTxBoOf/AwklIf+NmL7WCfN7sfZssoakD5a1LGn
|
|
||||||
3EtZ2M/4GyoXJy34+B8v7LugeClnW3WDqUBZnNfUnsNWvoldMucxsl4fAhvEehrL
|
|
||||||
hGgQMjHFOdKaLyatZOx6Pq4jAna+kiJoq3mVDsB4rcjLuz8XkAUZmVpe5fXAG4hr
|
|
||||||
Ig8l/SI6ilu0zCWNSJ/v3wUzksm0P9AJkwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -747,108 +269,6 @@ in {
|
|||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.231.219";
|
ip4.addr = "10.243.231.219";
|
||||||
aliases = [
|
|
||||||
"nukular.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAnt/d9Ys9gmQMGEPzPydAs0Etp9aPb5PreogzVilvazFCZ8HiQHl/
|
|
||||||
gRGlNBImcPPAPGgLjQ49TZ6V1s0bX0GMlu9gJxqU7Nz/TPbAaDJSmEDPkXnaMC97
|
|
||||||
gLoluwJHURKPP6+0VNQuK/IOjjDLzLjRDiVeIg6NR0nFAQPlxUhrCN/PhxqNV5WP
|
|
||||||
H1nR+a4UDoLcKbtgQP+4Eu09iEm+H6o5eCFTX2Ov9Ok2m948Jm0rAqUbPAISf9m4
|
|
||||||
tOOhhUhn0xvQy5iNHI72ndLvogQ968rnFwBpZM7HF1FsiaQfOF9Nhf11rHCJod3P
|
|
||||||
meq9GsIUyppZmEKecnTtVfG1oUHMbt1GxQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
heidi = rec {
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.124.21";
|
|
||||||
aliases = [
|
|
||||||
"heidi.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAqRLnAJNZ1OoO1bTS58DQgxi1VKgITHIuTW0fVGDvbXnsjPUB3cgx
|
|
||||||
1GEVtLc0LN6R9wrPKDaqHS6mkiRSDVScaW/FqkdFhTDaBJy8LfomL9ZmkU9DzkvQ
|
|
||||||
jncDjr0WoR+49rJHYsUULp1fe98Ev+y3VwVdJOOH92pAj1CAAUdtfG7XcGyHznYY
|
|
||||||
ZNLriGZe3l1AwsWMEflzHLeXcKQ/ZPOrjZ4EFVvfGfdQdJ24UUF3r4sBypYnasmA
|
|
||||||
q8lCw9rCrFh1OS6mHLC9qsvGfal6X4x2/xKc5VxZD4MQ/Bp7pBi1kwfHpKoREFKo
|
|
||||||
w/Jr3oG/uDxMGIzphGX185ObIkZ1wl/9DwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
lariat = rec {
|
|
||||||
cores = 2;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.64.7";
|
|
||||||
aliases = [
|
|
||||||
"lariat.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAqiDzxADQYY8cWBH+R5aKSoxaFHLvPvVMgB7R1Y6QVTqD5YUCuINX
|
|
||||||
eBLFV9idHnHzdZU+xo/c8EFQf0hvyP0z3bcXaiw+RlpEYdK6tuaypJ3870toqWmA
|
|
||||||
269H8ufA3DA0hxlY7dwnhg8Rb7KGIlNN8fy4RMGe73PupF5aAmiDiEhPalv4E0qJ
|
|
||||||
unmk5y1OHQFPxYm++yLo5SVFlcO89jDtGpvg5papp8JvtxTkrshby1lXf/sph3Cv
|
|
||||||
d1z6h7S+HgT+BMwTZY5dIrwYAcob/t1sRmWsY62P1n02RbiJFm27wg0t/ZcfsI2o
|
|
||||||
yBjRTiK5ACJaIdpM99/902gJsuJASPGB2QIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
soundflower = rec {
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.69.184";
|
|
||||||
aliases = [
|
|
||||||
"soundflower.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA0a0oenAy9MDa2M6NoLtB8elduGgc3oLtUwsm3iUu6w8L+Je5TndN
|
|
||||||
H8dPn3sByUk1Jkd8tGGRk/vSFj/mtUn7xXKCnFXfKDqVowu/0KS3Q+6o4mcoATeb
|
|
||||||
Ax7e6Cz1YH5+qhQjR7apuase9X9Dzp56//5VW2gaScvWevvzrij2x7eNvJRF+W/l
|
|
||||||
FDXc8zBPkFW5TLFHOizRoLl4mK1hz2NrUiqcq5Ghs2yPsFxl/o5+e2MOwtdI49T6
|
|
||||||
lMkeshAeNOSMKYfP9nmHZoKI/MIpGak0EF3ZQtLvyv+tM2Q0nuwH3RvxlK/Xf6U+
|
|
||||||
8SoQu4yRIeK+pMiLEHhFPzBpk+sblUlG7QIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
falk = rec {
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.120.19";
|
|
||||||
aliases = [
|
|
||||||
"falk.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA961eCQE562VPYjuZtd0+FNRfUghvD2ccjUlihMjzg46GAK+duqK+
|
|
||||||
4peWklGOL4eRYQBg6G2VDzWiU2MxXVbXUZaMrxh7fTc3G3LdbqTxzAv3GQKR/6iA
|
|
||||||
9bGUf6u4ztVNAcj2mrY3mfs4gMlBQyQ2wcM0ZUpiAMaRB4cdq7I4GVHbYTFYfQuI
|
|
||||||
2zdnr0w8AjlMpFFcD0ExsWeppiJsE7iiME/S2VVfh2NrEpAKQbLH9fKrfkiJA/+9
|
|
||||||
0VIH9wLLIYngUtQKbvEQ5xgx6ybrg0vO8ZqZ1ZGXYxOQZzWzPP0tvDU0QHSKYSWb
|
|
||||||
FjcOf1lWSWjsjHxMl/Gh57hjNJFCbs8yjQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -858,91 +278,6 @@ in {
|
|||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.189.130";
|
ip4.addr = "10.243.189.130";
|
||||||
aliases = [
|
|
||||||
"filebitch.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA2VjW30A3uQoo5QwbFTnl5fuGg81DZVu8HXmDwgEkhZYr5Xf3V5/d
|
|
||||||
fmPlX1igzatWYX0OylFAY69r0V4dqeTubIf83sz1eqtpXjK4czG8A3wMHEXj5Pzs
|
|
||||||
e1Qh8K4rHMEATc7Y/cwpQBi2THn2bhufqgaz94m8HrStCZcKCin3fDMbE01WHWX1
|
|
||||||
KFqeBtUd7b9pWbXKlLBNpHTZoGxVQk0Hto9pxYzHecRsbQXykYk3Rw2tSuf0aH99
|
|
||||||
oY0i3LjOb+f2oq2S4qVHqHZsMJfDVr+x2/LP1SIcc1lVTztWSSAzZEokE0/ejvXf
|
|
||||||
wkquBVHXdl6LuzH+/V1I7OsaMhHShYu1LwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
bridge = rec {
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.26.29";
|
|
||||||
aliases = [
|
|
||||||
"excobridge.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEApeeMSYMuXg4o/fNHnG2ftp2WskZLrt63zhRag7U1HqYUnuPqY60d
|
|
||||||
VVy9MBTawm6N02nC2Svm3V07ZXaRp/XsXQLx+evZcDjPjnDYgl2ZGX0ir5Cn50bm
|
|
||||||
UzhJiMW6/J7AYvucgeAaVJ0YmIwRw6ndYGcxmXWi4TK0jSzhuSLgookWM6iJfbdB
|
|
||||||
oaYsjiXisEvNxt7rBlCfacaHMlPhz3gr1gc4IDCwF+RAMM29NUN3OinI+/f56d7b
|
|
||||||
/hLZWbimiwtvGVsGLiA2EIcfxQ7aD/LINu+XXMaq7f8QByXj/Lzi7456tDi3pdJg
|
|
||||||
lyg9yqRJYt4Zle5PVejn08qiofTUmlEhnwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
horisa = rec {
|
|
||||||
cores = 2;
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.226.213";
|
|
||||||
aliases = [
|
|
||||||
"horisa.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA1hhBqCku98gimv0yXr6DFwE2HUemigyqX8o7IsPOW5XT/K8o+V40
|
|
||||||
Oxk3r0+c7IYREvug/raxoullf5TMJFzTzqzX4njgsiTs25V8D7hVT4jcRKTcXmBn
|
|
||||||
XpjtD+tIeDW1E6dIMMDbxKCyfd/qaeg83G7gPobeFYr4JNqQLXrnotlWMO9S13UT
|
|
||||||
+EgSP2pixv/dGIqX8WRg23YumO8jZKbso/sKKFMIEOJvnh/5EcWb24+q2sDRCitP
|
|
||||||
sWJ5j/9M1Naec/Zl27Ac2HyMWRk39F9Oo+iSbc47QvjKTEmn37P4bBg3hY9FSSFo
|
|
||||||
M90wG/NRbw1Voz6BgGlwOAoA+Ln0rVKqDQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
tahoe = rec {
|
|
||||||
cores = 1;
|
|
||||||
nets = {
|
|
||||||
internet = {
|
|
||||||
ip4.addr = "148.251.47.69";
|
|
||||||
aliases = [
|
|
||||||
"wooki.i"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.57.85";
|
|
||||||
aliases = [
|
|
||||||
"wooki.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEAx6R+CuJu4Bql+DgGPpE7wI+iasRY6ltxW0/L04uW9XiOKiEjx66y
|
|
||||||
QMMaW18bcb0SOfTE8qYo8pOsZ5E9FFPY6cKH4DGi8g1FpaODle9V8RrVg3F7RuZ8
|
|
||||||
dXDXeZxvYvJ2LwPBvlr1aisqJqgxAwF2ipPPX97rAYbp46a/vkgU5bPF1OFlTDaH
|
|
||||||
9jjThuidiEwY4EMtJGKisnTGx8yS5iQibDMqzrcRpCxCLcl68FgFNKCTtSIj1mo6
|
|
||||||
hgO1ZKmHw73ysmrL2tImmalHYcqDJnq/KInG2ZkCZI/2ZqfJyrRSTk86t5ubfD6p
|
|
||||||
egC5N0Y5dQHJd66AytNwXxymiAcWuYth9QIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -952,43 +287,6 @@ in {
|
|||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.0.163";
|
ip4.addr = "10.243.0.163";
|
||||||
aliases = [
|
|
||||||
"senderechner.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA0zCc5aLVRO6NuxUoR6BVzq2PQ/U5AEjYTdGkQufRot42N29MhxY7
|
|
||||||
lJBfPfkw/yg2FOzmAzTi62QyrLWSaF1x54rKu+JeNSsOAX+BorGhM67N45DGvJ0X
|
|
||||||
rakIL0BrVoV7Kxssq3DscGVbjbNS5B5c+IvTp97me/MpuDrfYqUyZk5mS9nB0oDL
|
|
||||||
inao/A5AtOO4sdqN5BNE9/KisN/9dD359Gz2ZGGq6Ki7o4HBdBj5vi0f4fTofZxT
|
|
||||||
BJH4BxbWaHwXMC0HYGlhQS0Y7tKYT6h3ChxoLDuW2Ox2IF5AQ/O4t4PIBDp1XaAO
|
|
||||||
OK8SsmsiD6ZZm6q/nLWBkYH08geYfq0BhQIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
tcac-0-1 = rec {
|
|
||||||
cores = 1;
|
|
||||||
ssh.privkey.path = <secrets/ssh_host_ed25519_key>;
|
|
||||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIcX7rlGmGp1zCStrERXZ3XuT/j69FDBXV4ceLn9RXsG tcac-0-1
|
|
||||||
";
|
|
||||||
nets = {
|
|
||||||
retiolum = {
|
|
||||||
ip4.addr = "10.243.144.142";
|
|
||||||
aliases = [
|
|
||||||
"tcac-0-1.r"
|
|
||||||
];
|
|
||||||
tinc.pubkey = ''
|
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
|
||||||
MIIBCgKCAQEA+3zuZa8FhFBcUNdNGyTQph6Jes0WDQB4CDcEcnK9okP60Z0ONq8j
|
|
||||||
7sKmxzQ43WFm04fd992Aa/KLbYBbXmGtYuu68DQwQGwk3HVNksp6ha7uVK1ibgNs
|
|
||||||
zJIKizpFqK4NAYit0OfAy7ugVSvtyIxg9CDhnASDZ5NRq8/OLhvo5M4c3r3lGOlO
|
|
||||||
Hv1nf4Tl2IYRln3c+AJEiw2369K46mRlt28yHeKUw1ur6hrbahnkYW+bjeliROIs
|
|
||||||
QLp8J8Jl6evtPOyZpgyGHLQ/WPsQRK5svVA9ou17R//m4KNL1kBjTfxs7GaJWHLl
|
|
||||||
HpSZTqRKsuK6K9R6kzu7NU81Wz0HXxw/qwIDAQAB
|
|
||||||
-----END RSA PUBLIC KEY-----
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
8
krebs/3modules/makefu/retiolum/cake.pub
Normal file
8
krebs/3modules/makefu/retiolum/cake.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA0khdelSrOV/ZI9vvbV5aT1wVn2IfUfIdDCQIOnF2mZsrnIcuaedu
|
||||||
|
jRfZnJST1vOfL7JksF1+8pYwSn34CjJCGhyFf25lc6mARXmZe/araNrVpTntCy2+
|
||||||
|
MqG8KZe4mIda/WPTXRYGtFVQZeClM5SCZ7EECtw8sEkwt2QtOv43p/hiMXAkOQsq
|
||||||
|
6xc9/b4Bry7d+IjJs3waKfFQllF+C+GuK8yF0YnCEb6GZw7xkxHIO1QV4KSQ4CH7
|
||||||
|
36kEAdCSQ5rgaygRanUlUl+duQn1MLQ+lRlerAEcFfKrr3MKNz2jmGth8iUURdyP
|
||||||
|
MHjSWe+RkLQ6zzBaVgoKKuI9MbIbhenJWwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
9
krebs/3modules/makefu/retiolum/crapi.pub
Normal file
9
krebs/3modules/makefu/retiolum/crapi.pub
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Ed25519PublicKey = Zkh6vtSNBvKYUjCPsMyAFJmxzueglCDoawVPCezKy4F
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAloXLBfZQEVW9mJ7uwOoa+DfV4ek/SG+JQuexJMugei/iNy0NjY66
|
||||||
|
OVIkzFmED32c3D7S1+Q+5Mc3eR02k1o7XERpZeZhCtJOBlS4xMzCKH62E4USvH5L
|
||||||
|
R4O8XX1o/tpeOuZvpnpY1oPmFFc/B5G2jWWQR4Slpbw7kODwYYm5o+B7n+MkVNrk
|
||||||
|
OEOHLaaO6I5QB3GJvDH2JbwzDKLVClQM20L/EvIwnB+Xg0q3veKFj0WTXEK+tuME
|
||||||
|
di++RV4thhZ9IOgRTJOeT94j7ulloh15gqYaIqRqgtzfWE2TnUxvl+upB+yQHNtl
|
||||||
|
bJFLHkE34cQGxEv9dMjRe8i14+Onhb3B6wIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/filebitch.pub
Normal file
8
krebs/3modules/makefu/retiolum/filebitch.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA2VjW30A3uQoo5QwbFTnl5fuGg81DZVu8HXmDwgEkhZYr5Xf3V5/d
|
||||||
|
fmPlX1igzatWYX0OylFAY69r0V4dqeTubIf83sz1eqtpXjK4czG8A3wMHEXj5Pzs
|
||||||
|
e1Qh8K4rHMEATc7Y/cwpQBi2THn2bhufqgaz94m8HrStCZcKCin3fDMbE01WHWX1
|
||||||
|
KFqeBtUd7b9pWbXKlLBNpHTZoGxVQk0Hto9pxYzHecRsbQXykYk3Rw2tSuf0aH99
|
||||||
|
oY0i3LjOb+f2oq2S4qVHqHZsMJfDVr+x2/LP1SIcc1lVTztWSSAzZEokE0/ejvXf
|
||||||
|
wkquBVHXdl6LuzH+/V1I7OsaMhHShYu1LwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/fileleech.pub
Normal file
8
krebs/3modules/makefu/retiolum/fileleech.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA2W20+jYvuFUjPQ+E+7Xlabf8fW/XSnTTelfo2uRcJ3FMLYQ9H3rF
|
||||||
|
8L8StPmxn8Q20FFH/MvRmgW8pU9z4RQ3nAi+utVYqAJQtOYA9FPMxssC08w82r0K
|
||||||
|
YC6sgc9MeRjnCjQxQrQs4fqA6KpqSLxRf2c6kfNwYRgCxFMns2ncxOiPOoGLZait
|
||||||
|
nJR3m0cSRm8yCTMbznlGH99+5+3HgvuBE/UYXmmGBs7w8DevaX76butzprZ8fm4z
|
||||||
|
e5C7R9ofdVW70GGksfSI81y5xODWMbfjTRHKm4OBX7NOCiOTwx1wu8bYDN3EzN6V
|
||||||
|
UM5PJfU42sViPEZmVuC8cDcP1xemHTkh9QIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/filepimp.pub
Normal file
8
krebs/3modules/makefu/retiolum/filepimp.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA43w+A1TMOfugZ/CVwilJn4c36wWSjihaeVe7suZD0DSscKBcbkGg
|
||||||
|
3dTCSTnu6Qb9sYd2mKebKXLreO6nhEEoFGsRU0yw/1h8gl7mWYEdTifPfvM5EWwS
|
||||||
|
wkN9dJ5njwIUSRyWH7QTsLkiRJVFN2UxEwrhAbo1FJ7yuhRgAKqKJSN4yPVViZwR
|
||||||
|
oHyyobvm/i2J+XSiDI9MRo74vNjnDLvO7R6ErIrhOPP1bD9fx3u+UYUfgS0iCO3X
|
||||||
|
UN0duBz/faRcl6IRytZOuHaIp30eJ4850ZK8RPz/Dqqj+USMFq60i0oMsuAi/ljB
|
||||||
|
8b+eQBt6OXu4MSntxoR8Ja7ht+EOTDnBOwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
14
krebs/3modules/makefu/retiolum/firecracker.pub
Normal file
14
krebs/3modules/makefu/retiolum/firecracker.pub
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuZaPnN4pQVpKWKG1Yylx
|
||||||
|
JghzOphuQMuzstedqKFo3MTUtgra27ul8IyqljJxVH+hnpObhDwzYS3Zz1BAp/WF
|
||||||
|
SFAslLbpPEG7UrwmvZHa3jqE4m/uIMtgYK65iIfB8bs17lkvRchfTfzTvwdtPSkM
|
||||||
|
zbgjq4HttI2aMoNggadfMSGdzv7hEhxFpRBAiXxJHOFTNa//ov/DehrW88blYQ3l
|
||||||
|
lSS2ZR+WHNVYfRPvfejDnstGenNCJXkpMYPe5YD9CZa0sy639ejTGs+nluU5+uId
|
||||||
|
lp+0QW5i8E3JvZDiIu9NF9cT+GZhKcgWyvwoA/yRFqRVWHUcK7w8MN1hmbExXFub
|
||||||
|
pS3GW2/f50USjT2jvK6zg2/KzTio2yEfd/FpQwTmyzAUJbwBkJNyD1YmFGv54tWS
|
||||||
|
/xDyn3+OsKT4VztfTPrH59MVZZd12WMavB3Y0VIEkVHhrK2BNIoMuJ9e96VDFZ14
|
||||||
|
9N6ouRAchIydQweESiBzHr0DUXeZO1jNLlNM0q8+aaS/bONkiFzRrKkYnbqB6ION
|
||||||
|
Ln6pg+5NtrZ/Cb7/UWwSNeooiiOnjzVLsZv3mEzt3IjcJO5iW3IOZhT29S9E3CwG
|
||||||
|
0rqK7CiByJJXPB/LqwKZdN3WtZgCfPJ48abmzobHhEKTsVG230G4jMF/dLpV3sZT
|
||||||
|
tIsbd9vYVSSP0Rg/K4hmsOMCAwEAAQ==
|
||||||
|
-----END PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/flap.pub
Normal file
8
krebs/3modules/makefu/retiolum/flap.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAwtLD+sgTQGO+eh2Ipq2r54J1I0byvfkaTBeBwhtUmWst+lUQUoGy
|
||||||
|
2fGReRYsb4ThDLeyK439jZuQBeXSc5r2g0IHBJCSWj3pVxc1HRTa8LASY7QuprQM
|
||||||
|
8rSQa2XUtx/KpfM2eVX0yIvLuPTxBoOf/AwklIf+NmL7WCfN7sfZssoakD5a1LGn
|
||||||
|
3EtZ2M/4GyoXJy34+B8v7LugeClnW3WDqUBZnNfUnsNWvoldMucxsl4fAhvEehrL
|
||||||
|
hGgQMjHFOdKaLyatZOx6Pq4jAna+kiJoq3mVDsB4rcjLuz8XkAUZmVpe5fXAG4hr
|
||||||
|
Ig8l/SI6ilu0zCWNSJ/v3wUzksm0P9AJkwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/gum.pub
Normal file
8
krebs/3modules/makefu/retiolum/gum.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAvgvzx3rT/3zLuCkzXk1ZkYBkG4lltxrLOLNivohw2XAzrYDIw/ZY
|
||||||
|
BTDDcD424EkNOF6g/3tIRWqvVGZ1u12WQ9A/R+2F7i1SsaE4nTxdNlQ5rjy80gO3
|
||||||
|
i1ZubMkTGwd1OYjJytYdcMTwM9V9/8QYFiiWqh77Xxu/FhY6PcQqwHxM7SMyZCJ7
|
||||||
|
09gtZuR16ngKnKfo2tw6C3hHQtWCfORVbWQq5cmGzCb4sdIKow5BxUC855MulNsS
|
||||||
|
u5l+G8wX+UbDI85VSDAtOP4QaSFzLL+U0aaDAmq0NO1QiODJoCo0iPhULZQTFZUa
|
||||||
|
OMDYHHfqzluEI7n8ENI4WwchDXH+MstsgwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/nukular.pub
Normal file
8
krebs/3modules/makefu/retiolum/nukular.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAnt/d9Ys9gmQMGEPzPydAs0Etp9aPb5PreogzVilvazFCZ8HiQHl/
|
||||||
|
gRGlNBImcPPAPGgLjQ49TZ6V1s0bX0GMlu9gJxqU7Nz/TPbAaDJSmEDPkXnaMC97
|
||||||
|
gLoluwJHURKPP6+0VNQuK/IOjjDLzLjRDiVeIg6NR0nFAQPlxUhrCN/PhxqNV5WP
|
||||||
|
H1nR+a4UDoLcKbtgQP+4Eu09iEm+H6o5eCFTX2Ov9Ok2m948Jm0rAqUbPAISf9m4
|
||||||
|
tOOhhUhn0xvQy5iNHI72ndLvogQ968rnFwBpZM7HF1FsiaQfOF9Nhf11rHCJod3P
|
||||||
|
meq9GsIUyppZmEKecnTtVfG1oUHMbt1GxQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/omo.pub
Normal file
8
krebs/3modules/makefu/retiolum/omo.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAuHQEeowvxRkoHJUw6cUp431pnoIy4MVv7kTLgWEK46nzgZtld9LM
|
||||||
|
ZdNMJB9CuOVVMHEaiY6Q5YchUmapGxwEObc0y+8zQxTPw3I4q0GkSJqKLPrsTpkn
|
||||||
|
sgEkHPfs2GVdtIBXDn9I8i5JsY2+U8QF8fbIQSOO08/Vpa3nknDAMege9yEa3NFm
|
||||||
|
s/+x+2pS+xV6uzf/H21XNv0oufInXwZH1NCNXAy5I2V6pz7BmAHilVOGCT7g2zn6
|
||||||
|
GasmofiYEnro4V5s8gDlQkb7bCZEIA9EgX/HP6fZJQezSUHcDCQFI0vg26xywbr6
|
||||||
|
5+9tTn8fN2mWS5+Pdmx3haX1qFcBP5HglwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/sdev.pub
Normal file
8
krebs/3modules/makefu/retiolum/sdev.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA8BwHwQ4pLZpskVnQONJsmzRPll4ZKMjAC56sY5p+GfT9ZBMkVDn+
|
||||||
|
LeH9wuTRiX/ehgtBiyu8w37cz62hz/71H+3mnWJlTm9bbBTc5N0y8l9b+YYeExW4
|
||||||
|
XPm4bUbJWKNRG9tHQAns/OREYDsHLsY6UoyNFmB0wTDpgs7egDCoe7E2eT+pG428
|
||||||
|
ysCDYlaZaigOyW+bj/HFLj8FSfpF5C/ug7NE/D7QocadsRUiLtVYrJsfmT+KHWf+
|
||||||
|
f5rLWLvuFiz1SWf7wZ9sICF3RCaC9Qhz7zplgHbvwbOHtF+Z/6DxduRMkggZUsUD
|
||||||
|
nm+40Ex1XJTe+s4V4GKLgh/fDKBTS6JwewIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/senderechner.pub
Normal file
8
krebs/3modules/makefu/retiolum/senderechner.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA0zCc5aLVRO6NuxUoR6BVzq2PQ/U5AEjYTdGkQufRot42N29MhxY7
|
||||||
|
lJBfPfkw/yg2FOzmAzTi62QyrLWSaF1x54rKu+JeNSsOAX+BorGhM67N45DGvJ0X
|
||||||
|
rakIL0BrVoV7Kxssq3DscGVbjbNS5B5c+IvTp97me/MpuDrfYqUyZk5mS9nB0oDL
|
||||||
|
inao/A5AtOO4sdqN5BNE9/KisN/9dD359Gz2ZGGq6Ki7o4HBdBj5vi0f4fTofZxT
|
||||||
|
BJH4BxbWaHwXMC0HYGlhQS0Y7tKYT6h3ChxoLDuW2Ox2IF5AQ/O4t4PIBDp1XaAO
|
||||||
|
OK8SsmsiD6ZZm6q/nLWBkYH08geYfq0BhQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/studio.pub
Normal file
8
krebs/3modules/makefu/retiolum/studio.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAwAdSac8Oy5tPu7ejwojY5YqaNOfd7i0NToE+oaRJ1yxzmUpj8Fti
|
||||||
|
cGpcgBYhFXMVYoYfzLdkAlSYjWKAoShCq/ZEfIM67okXegXvL68zGksfXrmpdUuk
|
||||||
|
GCCy2/Ul5urvYEis9UeUpbe6tUxU0zXUWCkhMQgHeO2xQEizfIfWsUn5sYtFFoKI
|
||||||
|
jYbAcLbRtw+Islfih8G7ydPBh78WPGz6Xx79A5nmfI1VZDAToEqpqUoaqfzsTGd1
|
||||||
|
78GZssE3o4veTmBFvLV3Fm/ltfXpzhAIcsi89V3RjrzFM7UMD8aV153OAzhddxIu
|
||||||
|
8x6FibmMSzBXQDFuAac2+kp9mU0F0W4G1wIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
13
krebs/3modules/makefu/retiolum/tsp.pub
Normal file
13
krebs/3modules/makefu/retiolum/tsp.pub
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIICCgKCAgEAwW+RjRcp3uarkfXZ+FcCYY2GFcfI595GDpLRuiS/YQAB3JZEirHi
|
||||||
|
HFhDJN80fZ9qHqtq9Af462xSx+cIb282TxAqCM1Z9buipOcYTYo0m8xIqkT10dB3
|
||||||
|
mR87B+Ed1H6G3J6isdwEb9ZMegyGIIeyR53FJQYMZXjxdJbAmGMDKqjZSk1D5mo+
|
||||||
|
n5Vx3lGzTuDy84VyphfO2ypG48RHCxHUAx4Yt3o84LKoiy/y5E66jaowCOjZ6SqG
|
||||||
|
R0cymuhoBhMIk2xAXk0Qn7MZ1AOm9N7Wru7FXyoLc7B3+Gb0/8jXOJciysTG7+Gr
|
||||||
|
Txza6fJvq2FaH8iBnfezSELmicIYhc8Ynlq4xElcHhQEmRTQavVe/LDhJ0i6xJSi
|
||||||
|
aOu0njnK+9xK+MyDkB7n8dO1Iwnn7aG4n3CjVBB4BDO08lrovD3zdpDX0xhWgPRo
|
||||||
|
ReOJ3heRO/HsVpzxKlqraKWoHuOXXcREfU9cj3F6CRd0ECOhqtFMEr6TnuSc8GaE
|
||||||
|
KCKxY1oN45NbEFOCv2XKd2wEZFH37LFO6xxzSRr1DbVuKRYIPjtOiFKpwN1TIT8v
|
||||||
|
XGzTT4TJpBGnq0jfhFwhVjfCjLuGj29MCkvg0nqObQ07qYrjdQI4W1GnGOuyXkvQ
|
||||||
|
teyxjUXYbp0doTGxKvQaTWp+JapeEaJPN2MDOhrRFjPrzgo3aW9+97UCAwEAAQ==
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/wbob.pub
Normal file
8
krebs/3modules/makefu/retiolum/wbob.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAqLTJx91OdR0FlJAc2JGh+AJde95oMzzh8o36JBFpsaN7styNfD3e
|
||||||
|
QGM/bDXFjk4ieIe5At0Z63P2KWxRp3cz8LWKJsn5cGsX2074YWMAGmKX+ZZJNlal
|
||||||
|
cJ994xX+8MJ6L2tVKpY7Ace7gqDN+l650PrEzV2SLisIqOdxoBlbAupdwHieUBt8
|
||||||
|
khm4NLNUCxPYUx2RtHn4iGdgSgUD/SnyHEFdyDA17lWAGfEi4yFFjFMYQce/TFrs
|
||||||
|
rQV9t5hGaofu483Epo6mEfcBcsR4GIHI4a4WKYANsIyvFvzyGFEHOMusG6nRRqE9
|
||||||
|
TNs2RYfwDy/r6H/hDeB/BSngPouedEVcPwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
8
krebs/3modules/makefu/retiolum/x.pub
Normal file
8
krebs/3modules/makefu/retiolum/x.pub
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAnztrijsfao+fmNtwAjqwIDKsRaMP3ECsq2T2zqKvxwCyXk69G9bG
|
||||||
|
RFhWjgaawS9ZhnHSlgWK/vtoR0O9NxpzdU/mvdQijbVGxM02DegjO9qDSIe8EGmA
|
||||||
|
kscW4nDqYtw4rtjOVPfnNiWXbcWD8eiYR0kcSWmSvfOpVvdhTETqduTx5HRHyEFD
|
||||||
|
JRQYR/tJSvVWXmM670PENAPNJFJ4VSJR60s5A+bFT7J/uw7HzJXX28LygJz73Dj2
|
||||||
|
2a4ev0WcZQngLq072h/91R/TOpg+ogUDVhXkQtKyFj7im0287JTL4bXGofZBhzaf
|
||||||
|
+h9dFGs1QLoNyhG/cgt9fog7boSXTelAiQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
1
krebs/3modules/makefu/sshd/cake.pub
Normal file
1
krebs/3modules/makefu/sshd/cake.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGyJlI0YpIh/LiiPMseD2IBHg+uVGrkSy0MPNeD+Jv8Y cake
|
1
krebs/3modules/makefu/sshd/crapi.pub
Normal file
1
krebs/3modules/makefu/sshd/crapi.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGaV5Ga5R8RTrA+nclxw6uy5Z+hPBLitQTfuXdsmbVW6 crapi
|
1
krebs/3modules/makefu/sshd/fileleech.pub
Normal file
1
krebs/3modules/makefu/sshd/fileleech.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM+jB5QdPsAJc90alYDhAEP3sPDJb6eIj9bebj+rTBEJ fileleech
|
1
krebs/3modules/makefu/sshd/firecracker.pub
Normal file
1
krebs/3modules/makefu/sshd/firecracker.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGk+QqJEPoBNP9KbPiivCI5YJ9psAKnujRrUL4bNqxwe firecracker
|
1
krebs/3modules/makefu/sshd/gum.pub
Normal file
1
krebs/3modules/makefu/sshd/gum.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIcxWFEPzke/Sdd9qNX6rSJgXal8NmINYajpFCxXfYdj root@gum
|
1
krebs/3modules/makefu/sshd/omo.pub
Normal file
1
krebs/3modules/makefu/sshd/omo.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTBGboU/P00yYiwYje53G0oqDFWmcSJ+hIpMsl4f/HH
|
1
krebs/3modules/makefu/sshd/sdev.pub
Normal file
1
krebs/3modules/makefu/sshd/sdev.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILtm6ETzNgLcXNkrKs2VUEiGsTKBmOFpW2fazbzdUfOg sdev
|
1
krebs/3modules/makefu/sshd/studio.pub
Normal file
1
krebs/3modules/makefu/sshd/studio.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIqBR5gjJkR1TEIs2yx6JRoIOA7+/LJA6kjju8yCauFa studio
|
1
krebs/3modules/makefu/sshd/wbob.pub
Normal file
1
krebs/3modules/makefu/sshd/wbob.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN5ZmJSypW3LXIJ67DdbxMxCfLtORFkl5jEuD131S5Tr
|
1
krebs/3modules/makefu/sshd/x.pub
Normal file
1
krebs/3modules/makefu/sshd/x.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHDM0E608d/6rGzXqGbNSuMb2RlCojCJSiiz6QcPOC2G root@x
|
1
krebs/3modules/makefu/wiregrill/gum.pub
Normal file
1
krebs/3modules/makefu/wiregrill/gum.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
yAKvxTvcEVdn+MeKsmptZkR3XSEue+wSyLxwcjBYxxo=
|
1
krebs/3modules/makefu/wiregrill/x.pub
Normal file
1
krebs/3modules/makefu/wiregrill/x.pub
Normal file
@ -0,0 +1 @@
|
|||||||
|
fe5smvKVy5GAn7EV4w4tav6mqIAKhGWQotm7dRuRt1g=
|
@ -33,6 +33,10 @@ with import <stockholm/lib>;
|
|||||||
default = "reaktor2${optionalString (name != "default") "-${name}"}";
|
default = "reaktor2${optionalString (name != "default") "-${name}"}";
|
||||||
type = types.filename;
|
type = types.filename;
|
||||||
};
|
};
|
||||||
|
sendDelaySec = mkOption {
|
||||||
|
default = 0.7;
|
||||||
|
type = types.nullOr types.float;
|
||||||
|
};
|
||||||
username = mkOption {
|
username = mkOption {
|
||||||
default = self.config.systemd-service-name;
|
default = self.config.systemd-service-name;
|
||||||
type = types.username;
|
type = types.username;
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
with import <stockholm/lib>;
|
|
||||||
{ config, ... }: let
|
|
||||||
# TODO dedup functions with ./hosts.nix
|
|
||||||
check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
|
|
||||||
domains = attrNames (filterAttrs (_: eq "hosts") config.krebs.dns.providers);
|
|
||||||
in {
|
|
||||||
nixpkgs.config.packageOverrides = super: {
|
|
||||||
retiolum-hosts =
|
|
||||||
super.writeText "retiolum-hosts" ''
|
|
||||||
${
|
|
||||||
concatStringsSep
|
|
||||||
"\n"
|
|
||||||
(flatten
|
|
||||||
(map
|
|
||||||
(host: let
|
|
||||||
net = host.nets.retiolum;
|
|
||||||
aliases = longs;
|
|
||||||
longs = filter check net.aliases;
|
|
||||||
in
|
|
||||||
optionals
|
|
||||||
(aliases != [])
|
|
||||||
(map (addr: "${addr} ${toString aliases}") net.addrs))
|
|
||||||
(filter (host: hasAttr "retiolum" host.nets)
|
|
||||||
(attrValues config.krebs.hosts))))
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
@ -13,15 +13,6 @@ foldl' mergeAttrs {}
|
|||||||
//
|
//
|
||||||
|
|
||||||
{
|
{
|
||||||
# https://github.com/NixOS/nixpkgs/pull/30065
|
|
||||||
brscan4 = overrideDerivation super.brscan4 (original: rec {
|
|
||||||
name = "brscan4-0.4.4-4";
|
|
||||||
src = super.fetchurl {
|
|
||||||
url = "http://download.brother.com/welcome/dlf006645/${name}.amd64.deb";
|
|
||||||
sha256 = "0xy5px96y1saq9l80vwvfn6anr2q42qlxdhm6ci2a0diwib5q9fd";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
reaktor2 = self.haskellPackages.reaktor2;
|
reaktor2 = self.haskellPackages.reaktor2;
|
||||||
|
|
||||||
ReaktorPlugins = self.callPackage ./simple/Reaktor/plugins.nix {};
|
ReaktorPlugins = self.callPackage ./simple/Reaktor/plugins.nix {};
|
||||||
@ -31,9 +22,4 @@ foldl' mergeAttrs {}
|
|||||||
export PROOT_NO_SECCOMP=1
|
export PROOT_NO_SECCOMP=1
|
||||||
exec ${super.proot}/bin/proot "$@"
|
exec ${super.proot}/bin/proot "$@"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# XXX symlinkJoin changed arguments somewhere around nixpkgs d541e0d
|
|
||||||
symlinkJoin = { name, paths, ... }@args: let
|
|
||||||
x = super.symlinkJoin args;
|
|
||||||
in if typeOf x != "lambda" then x else super.symlinkJoin name paths;
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
{ mkDerivation, base, fetchgit, stdenv }: let
|
{ mkDerivation, base, fetchgit, hspec, QuickCheck, stdenv, text }: let
|
||||||
|
|
||||||
cfg = {
|
cfg = {
|
||||||
"18.03" = {
|
"18.03" = {
|
||||||
@ -7,8 +7,8 @@ with import <stockholm/lib>;
|
|||||||
sha256 = "1k908zap3694fcxdk4bb29s54b0lhdh557y10ybjskfwnym7szn1";
|
sha256 = "1k908zap3694fcxdk4bb29s54b0lhdh557y10ybjskfwnym7szn1";
|
||||||
};
|
};
|
||||||
"18.09" = {
|
"18.09" = {
|
||||||
version = "2.1.0";
|
version = "2.2.0";
|
||||||
sha256 = "0wc8v48bb0bkvypc0j6imvnf8xc8572hykk9sgjhzf2w0ggqxv5d";
|
sha256 = "1pb56dgf3jj2kq3cbbppwzyg3ccgqy9xara62hkjwyxzdx20clk1";
|
||||||
};
|
};
|
||||||
}.${versions.majorMinor nixpkgsVersion};
|
}.${versions.majorMinor nixpkgsVersion};
|
||||||
|
|
||||||
@ -20,7 +20,8 @@ in mkDerivation {
|
|||||||
rev = "refs/tags/v${cfg.version}";
|
rev = "refs/tags/v${cfg.version}";
|
||||||
sha256 = cfg.sha256;
|
sha256 = cfg.sha256;
|
||||||
};
|
};
|
||||||
libraryHaskellDepends = [ base ];
|
libraryHaskellDepends = [ base text ];
|
||||||
|
testHaskellDepends = [ base hspec QuickCheck ];
|
||||||
doHaddock = false;
|
doHaddock = false;
|
||||||
# WTFPL is the true license, which is unknown to cabal.
|
# WTFPL is the true license, which is unknown to cabal.
|
||||||
license = stdenv.lib.licenses.wtfpl;
|
license = stdenv.lib.licenses.wtfpl;
|
||||||
|
21
krebs/5pkgs/haskell/flameshot-once.nix
Normal file
21
krebs/5pkgs/haskell/flameshot-once.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ mkDerivation, async, base, blessings, bytestring, dbus, fetchgit
|
||||||
|
, iso8601-time, process, random, stdenv, text, time, unagi-chan
|
||||||
|
, unix
|
||||||
|
}:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "flameshot-once";
|
||||||
|
version = "1.1.0";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://cgit.krebsco.de/flameshot-once";
|
||||||
|
sha256 = "158ha1yyj3p3mdjjga62j91ml83nhrsg34xbg3dir5cb399j8pxx";
|
||||||
|
rev = "9d688b6ffad14912bd1afe42555747cb3d213d95";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
isLibrary = false;
|
||||||
|
isExecutable = true;
|
||||||
|
executableHaskellDepends = [
|
||||||
|
async base blessings bytestring dbus iso8601-time process random
|
||||||
|
text time unagi-chan unix
|
||||||
|
];
|
||||||
|
license = stdenv.lib.licenses.mit;
|
||||||
|
}
|
@ -7,11 +7,11 @@
|
|||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "reaktor2";
|
pname = "reaktor2";
|
||||||
version = "0.2.1";
|
version = "0.2.2";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://cgit.krebsco.de/reaktor2";
|
url = "https://cgit.krebsco.de/reaktor2";
|
||||||
sha256 = "0wg76wlzfi893rl0lzhfs6bkpdcvwvgl6mpnz6w7r8f7znr4a9vr";
|
sha256 = "1kyr5i5zdzvc7fcyac1i1yvi88kcxafrgp8p79c1b9l4g9sjnv78";
|
||||||
rev = "0e199f7a357a4c5973e5837ec67699cf224ca69c";
|
rev = "9f4e2644188f985d7cd806c13e2c0dee1688b9f0";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
isLibrary = false;
|
isLibrary = false;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
python3Packages.buildPythonPackage rec {
|
python3Packages.buildPythonPackage rec {
|
||||||
name = "Reaktor-${version}";
|
name = "Reaktor-${version}";
|
||||||
version = "0.7.0";
|
version = "0.7.1";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ python3Packages.buildPythonPackage rec {
|
|||||||
owner = "krebs";
|
owner = "krebs";
|
||||||
repo = "Reaktor";
|
repo = "Reaktor";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "12yy06vk0smjs0rmahrn2kd4bcdh1yjw1fz6rifw6nmgx889d9hj";
|
sha256 = "0cv5a4x73ls6sk8qj2qi6gqn31rv8kvdg13dsf3jv92xdfx6brjn";
|
||||||
};
|
};
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://krebsco.de/;
|
homepage = http://krebsco.de/;
|
||||||
|
27
krebs/5pkgs/simple/flameshot-once/default.nix
Normal file
27
krebs/5pkgs/simple/flameshot-once/default.nix
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
with import <stockholm/lib>;
|
||||||
|
{ pkgs, ... }@args:
|
||||||
|
|
||||||
|
let
|
||||||
|
# config cannot be declared in the input attribute set because that would
|
||||||
|
# cause callPackage to inject the wrong config. Instead, get it from ...
|
||||||
|
# via args.
|
||||||
|
config = args.config or {};
|
||||||
|
in
|
||||||
|
|
||||||
|
pkgs.symlinkJoin {
|
||||||
|
name = "flameshot-once-wrapper";
|
||||||
|
paths = [
|
||||||
|
(pkgs.writeDashBin "flameshot-once" ''
|
||||||
|
export PATH=${makeBinPath [
|
||||||
|
pkgs.flameshot
|
||||||
|
pkgs.qt5.qtbase
|
||||||
|
pkgs.xclip
|
||||||
|
]}
|
||||||
|
${optionalString (config != null) /* sh */ ''
|
||||||
|
. ${import ./profile.nix { inherit config pkgs; }}
|
||||||
|
''}
|
||||||
|
exec ${pkgs.haskellPackages.flameshot-once}/bin/flameshot-once "$@"
|
||||||
|
'')
|
||||||
|
pkgs.haskellPackages.flameshot-once
|
||||||
|
];
|
||||||
|
}
|
129
krebs/5pkgs/simple/flameshot-once/profile.nix
Normal file
129
krebs/5pkgs/simple/flameshot-once/profile.nix
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
with import <stockholm/lib>;
|
||||||
|
{ config, pkgs }:
|
||||||
|
let
|
||||||
|
|
||||||
|
# Refs https://github.com/lupoDharkael/flameshot/blob/master/src/widgets/capture/capturebutton.h
|
||||||
|
ButtonType = {
|
||||||
|
PENCIL = 0;
|
||||||
|
DRAWER = 1;
|
||||||
|
ARROW = 2;
|
||||||
|
SELECTION = 3;
|
||||||
|
RECTANGLE = 4;
|
||||||
|
CIRCLE = 5;
|
||||||
|
MARKER = 6;
|
||||||
|
SELECTIONINDICATOR = 7;
|
||||||
|
MOVESELECTION = 8;
|
||||||
|
UNDO = 9;
|
||||||
|
COPY = 10;
|
||||||
|
SAVE = 11;
|
||||||
|
EXIT = 12;
|
||||||
|
IMAGEUPLOADER = 13;
|
||||||
|
OPEN_APP = 14;
|
||||||
|
BLUR = 15;
|
||||||
|
REDO = 16;
|
||||||
|
PIN = 17;
|
||||||
|
TEXT = 18;
|
||||||
|
};
|
||||||
|
|
||||||
|
cfg = eval.config;
|
||||||
|
|
||||||
|
eval = evalModules {
|
||||||
|
modules = singleton {
|
||||||
|
_file = toString ./config.nix;
|
||||||
|
imports = singleton config;
|
||||||
|
options = {
|
||||||
|
buttons = mkOption {
|
||||||
|
apply = map (name: ButtonType.${name});
|
||||||
|
default = [
|
||||||
|
"PENCIL"
|
||||||
|
"DRAWER"
|
||||||
|
"ARROW"
|
||||||
|
"SELECTION"
|
||||||
|
"RECTANGLE"
|
||||||
|
"CIRCLE"
|
||||||
|
"MARKER"
|
||||||
|
"SELECTIONINDICATOR"
|
||||||
|
"MOVESELECTION"
|
||||||
|
"UNDO"
|
||||||
|
"SAVE"
|
||||||
|
"EXIT"
|
||||||
|
"BLUR"
|
||||||
|
];
|
||||||
|
type = types.listOf (types.enum (attrNames ButtonType));
|
||||||
|
};
|
||||||
|
disabledTrayIcon = mkOption {
|
||||||
|
default = true;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
drawThickness = mkOption {
|
||||||
|
default = 8;
|
||||||
|
type = types.positive;
|
||||||
|
};
|
||||||
|
filenamePattern = mkOption {
|
||||||
|
default = "%FT%T%z_flameshot";
|
||||||
|
type =
|
||||||
|
# This is types.filename extended by [%:][%:+]*
|
||||||
|
types.addCheck types.str (test "[%:0-9A-Za-z._][%:+0-9A-Za-z._-]*");
|
||||||
|
};
|
||||||
|
savePath = mkOption {
|
||||||
|
default = "/tmp";
|
||||||
|
type = types.absolute-pathname;
|
||||||
|
};
|
||||||
|
showDesktopNotification = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
showHelp = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hexchars = stringToCharacters "0123456789abcdef";
|
||||||
|
|
||||||
|
# Encode integer to C-escaped string of bytes, little endian / LSB 0
|
||||||
|
le = rec {
|
||||||
|
x1 = i: let
|
||||||
|
i0 = mod i 16;
|
||||||
|
i1 = i / 16;
|
||||||
|
in
|
||||||
|
"\\x${elemAt hexchars i1}${elemAt hexchars i0}";
|
||||||
|
|
||||||
|
x2 = i: let
|
||||||
|
i0 = mod i 256;
|
||||||
|
i1 = i / 256;
|
||||||
|
in
|
||||||
|
"${x1 i0}${x1 i1}";
|
||||||
|
|
||||||
|
x4 = i: let
|
||||||
|
i0 = mod i 65536;
|
||||||
|
i1 = i / 65536;
|
||||||
|
in
|
||||||
|
"${x2 i0}${x2 i1}";
|
||||||
|
};
|
||||||
|
|
||||||
|
toQList = t: xs:
|
||||||
|
assert t == "int";
|
||||||
|
"QList<${t}>${le.x4 0}${le.x4 (length xs)}${concatMapStrings le.x4 xs}";
|
||||||
|
|
||||||
|
XDG_CONFIG_HOME = pkgs.write "flameshot-config" {
|
||||||
|
"/Dharkael/flameshot.ini".text = ''
|
||||||
|
[General]
|
||||||
|
buttons=@Variant(\0\0\0\x7f\0\0\0\v${toQList "int" cfg.buttons})
|
||||||
|
disabledTrayIcon=${toJSON cfg.disabledTrayIcon}
|
||||||
|
drawThickness=${toJSON cfg.drawThickness}
|
||||||
|
filenamePattern=${toJSON cfg.filenamePattern}
|
||||||
|
savePath=${toJSON cfg.savePath}
|
||||||
|
showDesktopNotification=${toJSON cfg.showDesktopNotification}
|
||||||
|
showHelp=${toJSON cfg.showHelp}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
pkgs.writeDash "flameshot.profile" ''
|
||||||
|
export FLAMESHOT_CAPTURE_PATH=${cfg.savePath}
|
||||||
|
export XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
|
||||||
|
''
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/NixOS/nixpkgs-channels",
|
"url": "https://github.com/NixOS/nixpkgs-channels",
|
||||||
"rev": "97e0d53d669cd07f0750a42fd535524b3cdd46d1",
|
"rev": "8abca4bc7b8b313c6e3073d074d623d1095c0dba",
|
||||||
"date": "2019-01-15T00:11:44+01:00",
|
"date": "2019-03-07T09:54:51+01:00",
|
||||||
"sha256": "111xa7qn9142dar29cil4br2mvn8f1rbiy310lkhwl73126fq8dw",
|
"sha256": "1qhhlqkwzxwhq8ga4n7p4zg4nrhl79m6x4qd0pgaic6n4z5m82gr",
|
||||||
"fetchSubmodules": false
|
"fetchSubmodules": false
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ in {
|
|||||||
alias ${config.krebs.tinc.retiolum.hostsArchive};
|
alias ${config.krebs.tinc.retiolum.hostsArchive};
|
||||||
'';
|
'';
|
||||||
locations."= /retiolum.hosts".extraConfig = ''
|
locations."= /retiolum.hosts".extraConfig = ''
|
||||||
alias ${pkgs.retiolum-hosts};
|
alias ${pkgs.krebs-hosts-retiolum};
|
||||||
'';
|
'';
|
||||||
locations."= /wireguard-key".extraConfig = ''
|
locations."= /wireguard-key".extraConfig = ''
|
||||||
alias ${pkgs.writeText "prism.wg" config.krebs.hosts.prism.nets.wiregrill.wireguard.pubkey};
|
alias ${pkgs.writeText "prism.wg" config.krebs.hosts.prism.nets.wiregrill.wireguard.pubkey};
|
||||||
|
@ -9,6 +9,7 @@ let
|
|||||||
krops = import ../submodules/krops/lib;
|
krops = import ../submodules/krops/lib;
|
||||||
shell = import ./shell.nix { inherit lib; };
|
shell = import ./shell.nix { inherit lib; };
|
||||||
types = nixpkgs-lib.types // import ./types.nix { inherit lib; };
|
types = nixpkgs-lib.types // import ./types.nix { inherit lib; };
|
||||||
|
xml = import ./xml.nix { inherit lib; };
|
||||||
|
|
||||||
eq = x: y: x == y;
|
eq = x: y: x == y;
|
||||||
ne = x: y: x != y;
|
ne = x: y: x != y;
|
||||||
@ -145,6 +146,11 @@ let
|
|||||||
in
|
in
|
||||||
filter (x: x != []) ([acc.chunk] ++ acc.chunks);
|
filter (x: x != []) ([acc.chunk] ++ acc.chunks);
|
||||||
|
|
||||||
|
warnOldVersion = oldName: newName:
|
||||||
|
if compareVersions oldName newName != -1 then
|
||||||
|
trace "Upstream `${oldName}' gets overridden by `${newName}'." newName
|
||||||
|
else
|
||||||
|
newName;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -539,7 +539,7 @@ rec {
|
|||||||
# POSIX.1‐2013, 3.278 Portable Filename Character Set
|
# POSIX.1‐2013, 3.278 Portable Filename Character Set
|
||||||
filename = mkOptionType {
|
filename = mkOptionType {
|
||||||
name = "POSIX filename";
|
name = "POSIX filename";
|
||||||
check = test "([0-9A-Za-z._])[0-9A-Za-z._-]*";
|
check = test "[0-9A-Za-z._][0-9A-Za-z._-]*";
|
||||||
merge = mergeOneOption;
|
merge = mergeOneOption;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
88
lib/xml.nix
Normal file
88
lib/xml.nix
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
{ lib }:
|
||||||
|
with lib;
|
||||||
|
with builtins;
|
||||||
|
rec {
|
||||||
|
|
||||||
|
# Use `term` to construct XML.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# (term "bool" null null)
|
||||||
|
# (term "cool" null [])
|
||||||
|
# (term "fool" { hurr = "durr"; } null)
|
||||||
|
# (term "hool" null [
|
||||||
|
# (term "tool" null null)
|
||||||
|
# ])
|
||||||
|
#
|
||||||
|
# See `render` for how these get transformed into actuall XML documents.
|
||||||
|
#
|
||||||
|
term = name: attrs: content: {
|
||||||
|
inherit name attrs content;
|
||||||
|
};
|
||||||
|
|
||||||
|
empty = term null null null;
|
||||||
|
|
||||||
|
# Ref http://www.w3.org/TR/xml/#syntax
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# (quote "<cheez!>") #===> <cheez!>
|
||||||
|
#
|
||||||
|
quote = let
|
||||||
|
sub = {
|
||||||
|
"&" = "&";
|
||||||
|
"<" = "<";
|
||||||
|
">" = ">";
|
||||||
|
"'" = "'";
|
||||||
|
"\"" = """;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stringAsChars (c: sub.${c} or c);
|
||||||
|
|
||||||
|
# Turn an XML element to an XML document string.
|
||||||
|
doc = t:
|
||||||
|
"<?xml version='1.0' encoding='UTF-8'?>${render t}";
|
||||||
|
|
||||||
|
# Render an XML element to a string.
|
||||||
|
#
|
||||||
|
# Rendering `empty` yields the empty string.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# (term "bool" null null) #===> <bool/>
|
||||||
|
# (term "cool" null []) #===> <cool></cool>
|
||||||
|
# (term "fool" { hurr = "durr"; } null) #===> <fool hurr="durr"/>
|
||||||
|
# (term "hool" null [
|
||||||
|
# (term "tool" null null)
|
||||||
|
# ]) #===> <hool><tool/></hool>
|
||||||
|
#
|
||||||
|
render = let
|
||||||
|
render-attrs = attrs:
|
||||||
|
getAttr (typeOf attrs) {
|
||||||
|
null = "";
|
||||||
|
set = concatStrings (mapAttrsToList (n: v: " ${n}=\"${v}\"") attrs);
|
||||||
|
};
|
||||||
|
|
||||||
|
render-content = content:
|
||||||
|
getAttr (typeOf content) {
|
||||||
|
bool = toJSON content;
|
||||||
|
int = toJSON content;
|
||||||
|
list = concatMapStrings render content;
|
||||||
|
string = quote content;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{ name, attrs, content }:
|
||||||
|
# XXX we're currently encoding too much information with `null`..
|
||||||
|
if name == null
|
||||||
|
then
|
||||||
|
if content == null
|
||||||
|
then ""
|
||||||
|
else content
|
||||||
|
else let
|
||||||
|
attrs' = render-attrs attrs;
|
||||||
|
content' = render-content content;
|
||||||
|
in
|
||||||
|
if content == null
|
||||||
|
then "<${name}${attrs'}/>"
|
||||||
|
else "<${name}${attrs'}>${content'}</${name}>";
|
||||||
|
}
|
0
makefu/0tests/data/secrets/id_nixBuild
Normal file
0
makefu/0tests/data/secrets/id_nixBuild
Normal file
@ -1,9 +1,16 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
{
|
let
|
||||||
|
primaryInterface = "eth0";
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
<stockholm/makefu>
|
<stockholm/makefu>
|
||||||
./hardware-config.nix
|
./hardware-config.nix
|
||||||
<stockholm/makefu/2configs/tools/core.nix>
|
# <stockholm/makefu/2configs/tools/core.nix>
|
||||||
|
{ environment.systemPackages = with pkgs;[ rsync screen curl git ];}
|
||||||
|
<stockholm/makefu/2configs/binary-cache/nixos.nix>
|
||||||
|
#<stockholm/makefu/2configs/support-nixos.nix>
|
||||||
|
<stockholm/makefu/2configs/homeautomation/default.nix>
|
||||||
|
<stockholm/makefu/2configs/homeautomation/google-muell.nix>
|
||||||
# configure your hw:
|
# configure your hw:
|
||||||
# <stockholm/makefu/2configs/save-diskspace.nix>
|
# <stockholm/makefu/2configs/save-diskspace.nix>
|
||||||
];
|
];
|
||||||
@ -12,7 +19,7 @@
|
|||||||
tinc.retiolum.enable = true;
|
tinc.retiolum.enable = true;
|
||||||
build.host = config.krebs.hosts.cake;
|
build.host = config.krebs.hosts.cake;
|
||||||
};
|
};
|
||||||
|
networking.firewall.trustedInterfaces = [ primaryInterface ];
|
||||||
documentation.info.enable = false;
|
documentation.info.enable = false;
|
||||||
documentation.man.enable = false;
|
documentation.man.enable = false;
|
||||||
services.nixosManual.enable = false;
|
services.nixosManual.enable = false;
|
||||||
|
@ -1,46 +1,15 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
{
|
{
|
||||||
# :l <nixpkgs>
|
|
||||||
# builtins.readDir (pkgs.fetchFromGitHub { owner = "nixos"; repo = "nixpkgs-channels"; rev = "6c064e6b"; sha256 = "1rqzh475xn43phagrr30lb0fd292c1s8as53irihsnd5wcksnbyd"; })
|
|
||||||
imports = [
|
imports = [
|
||||||
<stockholm/makefu>
|
<stockholm/makefu>
|
||||||
|
./hardware-config.nix
|
||||||
<stockholm/makefu/2configs>
|
<stockholm/makefu/2configs>
|
||||||
<stockholm/makefu/2configs/tinc/retiolum.nix>
|
<stockholm/makefu/2configs/tinc/retiolum.nix>
|
||||||
<stockholm/makefu/2configs/save-diskspace.nix>
|
<stockholm/makefu/2configs/save-diskspace.nix>
|
||||||
|
|
||||||
];
|
];
|
||||||
krebs.build.host = config.krebs.hosts.crapi;
|
krebs.build.host = config.krebs.hosts.crapi;
|
||||||
# NixOS wants to enable GRUB by default
|
|
||||||
boot.loader.grub.enable = false;
|
|
||||||
|
|
||||||
# Enables the generation of /boot/extlinux/extlinux.conf
|
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_rpi;
|
|
||||||
|
|
||||||
nix.binaryCaches = [ "http://nixos-arm.dezgeg.me/channel" ];
|
|
||||||
nix.binaryCachePublicKeys = [ "nixos-arm.dezgeg.me-1:xBaUKS3n17BZPKeyxL4JfbTqECsT+ysbDJz29kLFRW0=%" ];
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"/boot" = {
|
|
||||||
device = "/dev/disk/by-label/NIXOS_BOOT";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
"/" = {
|
|
||||||
device = "/dev/disk/by-label/NIXOS_SD";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.activationScripts.create-swap = ''
|
|
||||||
if [ ! -e /swapfile ]; then
|
|
||||||
fallocate -l 2G /swapfile
|
|
||||||
mkswap /swapfile
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
swapDevices = [ { device = "/swapfile"; size = 2048; } ];
|
|
||||||
|
|
||||||
nix.package = lib.mkForce pkgs.nixStable;
|
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
39
makefu/1systems/crapi/hardware-config.nix
Normal file
39
makefu/1systems/crapi/hardware-config.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
#raspi1
|
||||||
|
boot.kernelParams = ["cma=32M" "console=ttyS0,115200n8" "console=tty0" "console=ttyS1,115200n8" ];
|
||||||
|
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
boot.loader.raspberryPi.enable = true;
|
||||||
|
boot.loader.raspberryPi.version = 1;
|
||||||
|
boot.loader.raspberryPi.uboot.enable = true;
|
||||||
|
boot.loader.raspberryPi.uboot.configurationLimit = 1;
|
||||||
|
boot.loader.generationsDir.enable = lib.mkDefault false;
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
boot.cleanTmpDir = true;
|
||||||
|
environment.systemPackages = [ pkgs.raspberrypi-tools ];
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_rpi;
|
||||||
|
|
||||||
|
nix.binaryCaches = [ "http://nixos-arm.dezgeg.me/channel" ];
|
||||||
|
nix.binaryCachePublicKeys = [ "nixos-arm.dezgeg.me-1:xBaUKS3n17BZPKeyxL4JfbTqECsT+ysbDJz29kLFRW0=%" ];
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"/boot" = {
|
||||||
|
device = "/dev/disk/by-label/NIXOS_BOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
"/" = {
|
||||||
|
device = "/dev/disk/by-label/NIXOS_SD";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.activationScripts.create-swap = ''
|
||||||
|
if [ ! -e /swapfile ]; then
|
||||||
|
fallocate -l 2G /swapfile
|
||||||
|
mkswap /swapfile
|
||||||
|
chmod 600 /swapfile
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
swapDevices = [ { device = "/swapfile"; size = 4096; } ];
|
||||||
|
}
|
@ -84,6 +84,7 @@ in {
|
|||||||
<stockholm/makefu/2configs/shack/events-publisher>
|
<stockholm/makefu/2configs/shack/events-publisher>
|
||||||
<stockholm/makefu/2configs/shack/gitlab-runner>
|
<stockholm/makefu/2configs/shack/gitlab-runner>
|
||||||
<stockholm/makefu/2configs/remote-build/slave.nix>
|
<stockholm/makefu/2configs/remote-build/slave.nix>
|
||||||
|
<stockholm/makefu/2configs/remote-build/aarch64-community.nix>
|
||||||
<stockholm/makefu/2configs/taskd.nix>
|
<stockholm/makefu/2configs/taskd.nix>
|
||||||
|
|
||||||
# services
|
# services
|
||||||
|
@ -41,36 +41,36 @@ in {
|
|||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.version = 2;
|
boot.loader.grub.version = 2;
|
||||||
boot.loader.grub.devices = [ main-disk ];
|
boot.loader.grub.devices = [ main-disk ];
|
||||||
boot.initrd.kernelModules = [ "dm-raid" ];
|
boot.initrd.kernelModules = [ "dm-raid" "dm_cache" ];
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [
|
||||||
"ata_piix" "vmw_pvscsi" "virtio_pci" "sd_mod" "ahci"
|
"ata_piix" "vmw_pvscsi" "virtio_pci" "sd_mod" "ahci"
|
||||||
"xhci_pci" "ehci_pci" "ahci" "sd_mod"
|
"xhci_pci" "ehci_pci" "ahci" "sd_mod"
|
||||||
];
|
];
|
||||||
boot.kernelModules = [ "dm-thin-pool" "kvm-intel" ];
|
boot.kernelModules = [ "dm-raid" "dm_cache" "dm-thin-pool" "kvm-intel" ];
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/mapper/nixos-root";
|
device = "/dev/nixos/root";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
fileSystems."/var/lib" = {
|
fileSystems."/var/lib" = {
|
||||||
device = "/dev/mapper/nixos-lib";
|
device = "/dev/nixos/lib";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
fileSystems."/var/log" = {
|
fileSystems."/var/log" = {
|
||||||
device = "/dev/mapper/nixos-log";
|
device = "/dev/nixos/log";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
fileSystems."/var/download" = {
|
fileSystems."/var/download" = {
|
||||||
device = "/dev/mapper/nixos-download";
|
device = "/dev/nixos/download";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
fileSystems."/var/www/binaergewitter" = {
|
fileSystems."/var/www/binaergewitter" = {
|
||||||
device = "/dev/mapper/nixos-binaergewitter";
|
device = "/dev/nixos/binaergewitter";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
options = [ "nofail" ];
|
options = [ "nofail" "x-systemd.automount" "x-systemd.device-timeout=5s" "x-systemd.mount-timeout=5s" ];
|
||||||
};
|
};
|
||||||
fileSystems."/var/lib/borgbackup" = {
|
fileSystems."/var/lib/borgbackup" = {
|
||||||
device = "/dev/mapper/nixos-backup";
|
device = "/dev/nixos/backup";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
|
@ -9,6 +9,7 @@ in {
|
|||||||
imports =
|
imports =
|
||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
<stockholm/makefu>
|
<stockholm/makefu>
|
||||||
|
<stockholm/makefu/2configs/support-nixos.nix>
|
||||||
<stockholm/makefu/2configs/zsh-user.nix>
|
<stockholm/makefu/2configs/zsh-user.nix>
|
||||||
<stockholm/makefu/2configs/tools/core.nix>
|
<stockholm/makefu/2configs/tools/core.nix>
|
||||||
# <stockholm/makefu/2configs/disable_v6.nix>
|
# <stockholm/makefu/2configs/disable_v6.nix>
|
||||||
@ -39,7 +40,6 @@ in {
|
|||||||
<stockholm/makefu/2configs/stats/telegraf/europastats.nix>
|
<stockholm/makefu/2configs/stats/telegraf/europastats.nix>
|
||||||
<stockholm/makefu/2configs/stats/external/aralast.nix>
|
<stockholm/makefu/2configs/stats/external/aralast.nix>
|
||||||
<stockholm/makefu/2configs/stats/arafetch.nix>
|
<stockholm/makefu/2configs/stats/arafetch.nix>
|
||||||
<stockholm/makefu/2configs/deployment/led-fader.nix>
|
|
||||||
<stockholm/makefu/2configs/hw/mceusb.nix>
|
<stockholm/makefu/2configs/hw/mceusb.nix>
|
||||||
# <stockholm/makefu/2configs/stats/telegraf/bamstats.nix>
|
# <stockholm/makefu/2configs/stats/telegraf/bamstats.nix>
|
||||||
{ environment.systemPackages = [ pkgs.vlc ]; }
|
{ environment.systemPackages = [ pkgs.vlc ]; }
|
||||||
@ -51,6 +51,7 @@ in {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
<stockholm/makefu/2configs/bureautomation>
|
<stockholm/makefu/2configs/bureautomation>
|
||||||
|
<stockholm/makefu/2configs/bureautomation/led-fader.nix>
|
||||||
<stockholm/makefu/2configs/bureautomation/mpd.nix>
|
<stockholm/makefu/2configs/bureautomation/mpd.nix>
|
||||||
<stockholm/makefu/2configs/bureautomation/hass.nix>
|
<stockholm/makefu/2configs/bureautomation/hass.nix>
|
||||||
(let
|
(let
|
||||||
|
@ -15,6 +15,13 @@
|
|||||||
<stockholm/makefu/2configs/extra-fonts.nix>
|
<stockholm/makefu/2configs/extra-fonts.nix>
|
||||||
<stockholm/makefu/2configs/tools/all.nix>
|
<stockholm/makefu/2configs/tools/all.nix>
|
||||||
<stockholm/makefu/2configs/dict.nix>
|
<stockholm/makefu/2configs/dict.nix>
|
||||||
|
#<stockholm/makefu/3modules/netboot_server.nix>
|
||||||
|
#{
|
||||||
|
# netboot_server = {
|
||||||
|
# network.wan = "wlp3s0";
|
||||||
|
# network.lan = "enp0s25";
|
||||||
|
# };
|
||||||
|
#}
|
||||||
|
|
||||||
<stockholm/makefu/2configs/backup/state.nix>
|
<stockholm/makefu/2configs/backup/state.nix>
|
||||||
# <stockholm/makefu/2configs/dnscrypt/client.nix>
|
# <stockholm/makefu/2configs/dnscrypt/client.nix>
|
||||||
@ -53,20 +60,22 @@
|
|||||||
<stockholm/makefu/2configs/virtualisation/libvirt.nix>
|
<stockholm/makefu/2configs/virtualisation/libvirt.nix>
|
||||||
<stockholm/makefu/2configs/virtualisation/docker.nix>
|
<stockholm/makefu/2configs/virtualisation/docker.nix>
|
||||||
<stockholm/makefu/2configs/virtualisation/virtualbox.nix>
|
<stockholm/makefu/2configs/virtualisation/virtualbox.nix>
|
||||||
{
|
#{
|
||||||
networking.firewall.allowedTCPPorts = [ 8080 ];
|
# networking.firewall.allowedTCPPorts = [ 8080 ];
|
||||||
networking.nat = {
|
# networking.nat = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
externalInterface = "wlp3s0";
|
# externalInterface = "wlp3s0";
|
||||||
internalInterfaces = [ "vboxnet0" ];
|
# internalInterfaces = [ "vboxnet0" ];
|
||||||
};
|
# };
|
||||||
}
|
#}
|
||||||
# Services
|
# Services
|
||||||
<stockholm/makefu/2configs/git/brain-retiolum.nix>
|
<stockholm/makefu/2configs/git/brain-retiolum.nix>
|
||||||
<stockholm/makefu/2configs/tor.nix>
|
<stockholm/makefu/2configs/tor.nix>
|
||||||
<stockholm/makefu/2configs/vpn/vpngate.nix>
|
<stockholm/makefu/2configs/vpn/vpngate.nix>
|
||||||
# <stockholm/makefu/2configs/buildbot-standalone.nix>
|
# <stockholm/makefu/2configs/buildbot-standalone.nix>
|
||||||
<stockholm/makefu/2configs/remote-build/aarch64-community.nix>
|
<stockholm/makefu/2configs/remote-build/aarch64-community.nix>
|
||||||
|
<stockholm/makefu/2configs/remote-build/gum.nix>
|
||||||
|
{ nixpkgs.overlays = [ (self: super: super.prefer-remote-fetch self super) ]; }
|
||||||
|
|
||||||
# Hardware
|
# Hardware
|
||||||
<stockholm/makefu/2configs/hw/tp-x230.nix>
|
<stockholm/makefu/2configs/hw/tp-x230.nix>
|
||||||
@ -162,7 +171,6 @@
|
|||||||
"/home/makefu/docs"
|
"/home/makefu/docs"
|
||||||
"/home/makefu/.password-store"
|
"/home/makefu/.password-store"
|
||||||
"/home/makefu/.secrets-pass"
|
"/home/makefu/.secrets-pass"
|
||||||
"/home/makefu/autosync/Database.kdb"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.syncthing.user = lib.mkForce "makefu";
|
services.syncthing.user = lib.mkForce "makefu";
|
||||||
|
147
makefu/2configs/bureautomation/automation/10h_timer.nix
Normal file
147
makefu/2configs/bureautomation/automation/10h_timer.nix
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
[
|
||||||
|
{ alias = "start Felix 10h";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.redbutton";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
condition = {
|
||||||
|
condition = "and";
|
||||||
|
conditions = [
|
||||||
|
{
|
||||||
|
condition = "state";
|
||||||
|
entity_id = "timer.felix_10h";
|
||||||
|
state = "idle";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "time";
|
||||||
|
after = "06:00:00";
|
||||||
|
before = "12:00:00";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{ service = "timer.start";
|
||||||
|
entity_id = [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ] ;
|
||||||
|
}
|
||||||
|
{ service = "homeassistant.turn_on";
|
||||||
|
entity_id = [
|
||||||
|
"script.buzz_red_led_fast"
|
||||||
|
"script.blitz_10s"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ service = "light.turn_on";
|
||||||
|
data = {
|
||||||
|
effect = "2";
|
||||||
|
entity_id = [ "light.status_felix" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{ alias = "Disable Felix timer at button press";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.redbutton";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
condition = {
|
||||||
|
condition = "and";
|
||||||
|
conditions = [
|
||||||
|
{
|
||||||
|
condition = "state";
|
||||||
|
entity_id = "timer.felix_10h";
|
||||||
|
state = "active";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "time";
|
||||||
|
after = "12:00:00";
|
||||||
|
before = "22:00:00";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
service = "timer.cancel";
|
||||||
|
entity_id = [ "timer.felix_10h" "timer.felix_8_30h" "timer.felix_7h" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service = "homeassistant.turn_on";
|
||||||
|
entity_id = [ "script.buzz_red_led_fast" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service = "homeassistant.turn_off";
|
||||||
|
entity_id = [ "light.status_felix" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
alias = "Genug gearbeitet Felix";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "event";
|
||||||
|
event_type = "timer.finished";
|
||||||
|
event_data.entity_id = "timer.felix_7h";
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
[
|
||||||
|
{ service = "light.turn_on";
|
||||||
|
data = {
|
||||||
|
rgb_color= [0 255 0];
|
||||||
|
# effect = "0";
|
||||||
|
entity_id = [ "light.status_felix" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
alias = "nun aber nach hause";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "event";
|
||||||
|
event_type = "timer.finished";
|
||||||
|
event_data.entity_id = "timer.felix_8_30h";
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
[
|
||||||
|
{ service = "light.turn_on";
|
||||||
|
data = {
|
||||||
|
rgb_color= [255 255 0];
|
||||||
|
# effect = "0";
|
||||||
|
entity_id = [ "light.status_felix" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
alias = "Zu lange Felix!";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "event";
|
||||||
|
event_type = "timer.finished";
|
||||||
|
event_data.entity_id = "timer.felix_10h";
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
[
|
||||||
|
# TODO: Pushbullet
|
||||||
|
{
|
||||||
|
service = "homeassistant.turn_on";
|
||||||
|
entity_id = [
|
||||||
|
"script.buzz_red_led"
|
||||||
|
"script.blitz_10s"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ service = "light.turn_on";
|
||||||
|
data = {
|
||||||
|
rgb_color= [255 0 0];
|
||||||
|
effect = "0";
|
||||||
|
entity_id = [ "light.status_felix" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,55 @@
|
|||||||
|
[
|
||||||
|
{ alias = "Turn on Fernseher on movement";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.motion";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
action = {
|
||||||
|
service = "homeassistant.turn_on";
|
||||||
|
entity_id = [
|
||||||
|
"switch.fernseher"
|
||||||
|
"switch.feuer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{ alias = "Turn off Fernseher 10 minutes after last movement";
|
||||||
|
trigger = [
|
||||||
|
{ # trigger when movement was detected at the time
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.motion";
|
||||||
|
to = "off";
|
||||||
|
for.minutes = 10;
|
||||||
|
}
|
||||||
|
{ # trigger at 20:00 no matter what
|
||||||
|
# to avoid 'everybody left before 18:00:00'
|
||||||
|
platform = "time";
|
||||||
|
at = "18:00:00";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
action = {
|
||||||
|
service = "homeassistant.turn_off";
|
||||||
|
entity_id = [
|
||||||
|
"switch.fernseher"
|
||||||
|
"switch.feuer"
|
||||||
|
"light.status_felix"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
condition =
|
||||||
|
{ condition = "and";
|
||||||
|
conditions = [
|
||||||
|
{
|
||||||
|
condition = "time";
|
||||||
|
before = "06:30:00"; #only turn off between 6:30 and 18:00
|
||||||
|
after = "18:00:00";
|
||||||
|
# weekday = [ "mon" "tue" "wed" "thu" "fri" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "state";
|
||||||
|
entity_id = "binary_sensor.motion";
|
||||||
|
state = "off";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
]
|
43
makefu/2configs/bureautomation/automation/nachtlicht.nix
Normal file
43
makefu/2configs/bureautomation/automation/nachtlicht.nix
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
alias = "Turn off Nachtlicht on sunrise";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "sun";
|
||||||
|
event = "sunrise";
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
{
|
||||||
|
service = "homeassistant.turn_off";
|
||||||
|
entity_id = [ "switch.nachtlicht" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
alias = "Turn on Nachtlicht on motion and dusk";
|
||||||
|
trigger =
|
||||||
|
{
|
||||||
|
platform = "state";
|
||||||
|
entity_id = "binary_sensor.motion";
|
||||||
|
to = "on";
|
||||||
|
};
|
||||||
|
condition = # 'when dark'
|
||||||
|
{
|
||||||
|
condition = "or";
|
||||||
|
conditions = [
|
||||||
|
{ condition = "sun";
|
||||||
|
after = "sunset";
|
||||||
|
after_offset = "-00:45:00"; # on dusk
|
||||||
|
}
|
||||||
|
{ condition = "sun";
|
||||||
|
before = "sunrise";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
action =
|
||||||
|
{
|
||||||
|
service = "homeassistant.turn_on";
|
||||||
|
entity_id = [ "switch.nachtlicht" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
]
|
17
makefu/2configs/bureautomation/binary_sensor/buttons.nix
Normal file
17
makefu/2configs/bureautomation/binary_sensor/buttons.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
let
|
||||||
|
tasmota_button = name: topic:
|
||||||
|
# detects a pushbutton press from tasmota
|
||||||
|
{ platform = "mqtt";
|
||||||
|
inherit name;
|
||||||
|
state_topic = "/bam/${topic}/cmnd/POWER";
|
||||||
|
availability_topic = "/bam/${topic}/tele/LWT";
|
||||||
|
payload_on = "ON";
|
||||||
|
payload_off = "OFF";
|
||||||
|
payload_available= "Online";
|
||||||
|
payload_not_available= "Offline";
|
||||||
|
# expire_after = "5"; #expire after 5 seconds
|
||||||
|
qos = 1;
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
(tasmota_button "RedButton" "redbutton")
|
||||||
|
]
|
12
makefu/2configs/bureautomation/binary_sensor/motion.nix
Normal file
12
makefu/2configs/bureautomation/binary_sensor/motion.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[
|
||||||
|
{ platform = "mqtt";
|
||||||
|
device_class = "motion";
|
||||||
|
name = "Motion";
|
||||||
|
state_topic = "/bam/easy2/movement/Switch";
|
||||||
|
payload_on = "1";
|
||||||
|
payload_off = "0";
|
||||||
|
availability_topic = "/bam/easy2/tele/LWT";
|
||||||
|
payload_available = "Online";
|
||||||
|
payload_not_available = "Offline";
|
||||||
|
}
|
||||||
|
]
|
14
makefu/2configs/bureautomation/camera/verkehrskamera.nix
Normal file
14
makefu/2configs/bureautomation/camera/verkehrskamera.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[
|
||||||
|
{ name = "Baumarkt";
|
||||||
|
platform = "generic";
|
||||||
|
still_image_url = http://t4915209254324-p80-c0-h6jv2afnujcoftrcstsafb45kdrqv4buy.webdirect.mdex.de/oneshotimage ;# baumarkt
|
||||||
|
}
|
||||||
|
{ name = "Autobahn Heilbronn";
|
||||||
|
platform = "generic";
|
||||||
|
still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K10 ;
|
||||||
|
}
|
||||||
|
{ name = "Autobahn Singen";
|
||||||
|
platform = "generic";
|
||||||
|
still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K11 ;
|
||||||
|
}
|
||||||
|
]
|
@ -1,76 +1,5 @@
|
|||||||
{ pkgs, lib, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
tasmota_rgb = name: topic:
|
|
||||||
# LED WS2812b
|
|
||||||
# effect_state_topic: "stat/led/Scheme"
|
|
||||||
# effect_command_topic: "cmnd/led/Scheme"
|
|
||||||
# effect_value_template: "{{ value_json.Scheme }}"
|
|
||||||
{ platform = "mqtt";
|
|
||||||
inherit name;
|
|
||||||
retain = false;
|
|
||||||
qos = 1;
|
|
||||||
optimistic = false;
|
|
||||||
# state
|
|
||||||
# TODO: currently broken, will not use the custom state topic
|
|
||||||
state_topic = "/bam/${topic}/stat/POWER";
|
|
||||||
command_topic = "/bam/${topic}/cmnd/POWER";
|
|
||||||
availability_topic = "/bam/${topic}/tele/LWT";
|
|
||||||
payload_on= "ON";
|
|
||||||
payload_off= "OFF";
|
|
||||||
payload_available= "Online";
|
|
||||||
payload_not_available= "Offline";
|
|
||||||
# brightness
|
|
||||||
brightness_state_topic = "/bam/${topic}/stat/Dimmer";
|
|
||||||
brightness_command_topic = "/bam/${topic}/cmnd/Dimmer";
|
|
||||||
brightness_value_template = "{{ value_json.Dimmer }}";
|
|
||||||
brightness_scale = 100;
|
|
||||||
# color
|
|
||||||
rgb_state_topic = "/bam/${topic}/stat/Color";
|
|
||||||
rgb_command_topic = "/bam/${topic}/cmnd/Color2";
|
|
||||||
rgb_command_mode = "hex";
|
|
||||||
rgb_command_template = "{{ '%02x%02x%02x' | format(red, green, blue)}}";
|
|
||||||
# effects
|
|
||||||
effect_state_topic = "/bam/${topic}/stat/Scheme";
|
|
||||||
effect_command_topic = "/bam/${topic}/cmnd/Scheme";
|
|
||||||
effect_value_template = "{{ value_json.Scheme }}";
|
|
||||||
effect_list = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 ];
|
|
||||||
};
|
|
||||||
tasmota_plug = name: topic:
|
|
||||||
{ platform = "mqtt";
|
|
||||||
inherit name;
|
|
||||||
state_topic = "/bam/${topic}/stat/POWER";
|
|
||||||
command_topic = "/bam/${topic}/cmnd/POWER";
|
|
||||||
availability_topic = "/bam/${topic}/tele/LWT";
|
|
||||||
payload_on= "ON";
|
|
||||||
payload_off= "OFF";
|
|
||||||
payload_available= "Online";
|
|
||||||
payload_not_available= "Offline";
|
|
||||||
};
|
|
||||||
espeasy_dht22 = name: [
|
|
||||||
{ platform = "mqtt";
|
|
||||||
name = "${name} DHT22 Temperature";
|
|
||||||
device_class = "temperature";
|
|
||||||
state_topic = "/bam/${name}/dht22/Temperature";
|
|
||||||
availability_topic = "/bam/${name}/tele/LWT";
|
|
||||||
payload_available = "Online";
|
|
||||||
payload_not_available = "Offline";
|
|
||||||
}
|
|
||||||
{ platform = "mqtt";
|
|
||||||
device_class = "humidity";
|
|
||||||
name = "${name} DHT22 Humidity";
|
|
||||||
state_topic = "/bam/${name}/dht22/Humidity";
|
|
||||||
availability_topic = "/bam/${name}/tele/LWT";
|
|
||||||
payload_available = "Online";
|
|
||||||
payload_not_available = "Offline";
|
|
||||||
}];
|
|
||||||
espeasy_ds18 = name:
|
|
||||||
{ platform = "mqtt";
|
|
||||||
name = "${name} DS18 Temperature";
|
|
||||||
state_topic = "/bam/${name}/ds18/Temperature";
|
|
||||||
availability_topic = "/bam/${name}/tele/LWT";
|
|
||||||
payload_available = "Online";
|
|
||||||
payload_not_available = "Offline";
|
|
||||||
};
|
|
||||||
in {
|
in {
|
||||||
networking.firewall.allowedTCPPorts = [ 8123 ];
|
networking.firewall.allowedTCPPorts = [ 8123 ];
|
||||||
|
|
||||||
@ -104,90 +33,43 @@ in {
|
|||||||
retain = true;
|
retain = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
switch = [
|
switch = (import ./switch/tasmota_switch.nix);
|
||||||
(tasmota_plug "Bauarbeiterlampe" "plug")
|
light = (import ./light/statuslight.nix) ++
|
||||||
(tasmota_plug "Blitzdings" "plug2")
|
(import ./light/buzzer.nix);
|
||||||
(tasmota_plug "Fernseher" "plug3")
|
timer = {
|
||||||
(tasmota_plug "Feuer" "plug4")
|
felix_10h = {
|
||||||
(tasmota_plug "Nachtlicht" "plug5")
|
name = "Felix 10h Timer";
|
||||||
];
|
duration = "10:00:00";
|
||||||
light = [
|
};
|
||||||
(tasmota_rgb "Status Felix" "status1")
|
felix_8_30h = {
|
||||||
];
|
name = "Felix 8_30h Timer";
|
||||||
binary_sensor = [
|
duration = "08:30:00";
|
||||||
{ platform = "mqtt";
|
};
|
||||||
device_class = "motion";
|
felix_7h = {
|
||||||
name = "Motion";
|
name = "Felix 7h Timer";
|
||||||
state_topic = "/bam/easy2/movement/Switch";
|
duration = "07:00:00";
|
||||||
payload_on = "1";
|
};
|
||||||
payload_off = "0";
|
};
|
||||||
availability_topic = "/bam/easy2/tele/LWT";
|
notify = [
|
||||||
payload_available = "Online";
|
{
|
||||||
payload_not_available = "Offline";
|
platform = "kodi";
|
||||||
|
name = "wbob";
|
||||||
|
host = "192.168.8.11";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
sensor =
|
script = (import ./script/multi_blink.nix) {inherit lib;};
|
||||||
(espeasy_dht22 "easy1") ++
|
binary_sensor =
|
||||||
(espeasy_dht22 "easy2") ++
|
(import ./binary_sensor/buttons.nix) ++
|
||||||
[ (espeasy_ds18 "easy3" )
|
(import ./binary_sensor/motion.nix);
|
||||||
{ platform = "luftdaten";
|
|
||||||
name = "Ditzingen";
|
sensor =
|
||||||
sensorid = "5341";
|
(import ./sensor/espeasy.nix) ++
|
||||||
monitored_conditions = [ "P1" "P2" ];
|
((import ./sensor/outside.nix) {inherit lib;}) ++
|
||||||
}
|
(import ./sensor/influxdb.nix);
|
||||||
|
|
||||||
|
camera =
|
||||||
|
(import ./camera/verkehrskamera.nix);
|
||||||
|
|
||||||
{ platform = "darksky";
|
|
||||||
api_key = lib.removeSuffix "\n"
|
|
||||||
(builtins.readFile <secrets/hass/darksky.apikey>);
|
|
||||||
language = "de";
|
|
||||||
monitored_conditions = [ "summary" "icon"
|
|
||||||
"nearest_storm_distance" "precip_probability"
|
|
||||||
"precip_intensity"
|
|
||||||
"temperature" # "temperature_high" "temperature_low"
|
|
||||||
"apparent_temperature"
|
|
||||||
"hourly_summary" # next 24 hours text
|
|
||||||
"humidity"
|
|
||||||
"pressure"
|
|
||||||
"uv_index" ];
|
|
||||||
units = "si" ;
|
|
||||||
update_interval = {
|
|
||||||
days = 0;
|
|
||||||
hours = 0;
|
|
||||||
minutes = 30;
|
|
||||||
seconds = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#{ platform = "influxdb";
|
|
||||||
# queries = [
|
|
||||||
# { name = "mean value of feinstaub P1";
|
|
||||||
# where = '' "node" = 'esp8266-1355142' '';
|
|
||||||
# measurement = "feinstaub";
|
|
||||||
# database = "telegraf";
|
|
||||||
# field = "P1";
|
|
||||||
# }
|
|
||||||
# { name = "mean value of feinstaub P2";
|
|
||||||
# where = '' "node" = 'esp8266-1355142' '';
|
|
||||||
# measurement = "feinstaub";
|
|
||||||
# database = "telegraf";
|
|
||||||
# field = "P2";
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
#}
|
|
||||||
];
|
|
||||||
camera = [
|
|
||||||
{ name = "Baumarkt";
|
|
||||||
platform = "generic";
|
|
||||||
still_image_url = http://t4915209254324-p80-c0-h6jv2afnujcoftrcstsafb45kdrqv4buy.webdirect.mdex.de/oneshotimage ;# baumarkt
|
|
||||||
}
|
|
||||||
{ name = "Autobahn Heilbronn";
|
|
||||||
platform = "generic";
|
|
||||||
still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K10 ;
|
|
||||||
}
|
|
||||||
{ name = "Autobahn Singen";
|
|
||||||
platform = "generic";
|
|
||||||
still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K11 ;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
frontend = { };
|
frontend = { };
|
||||||
http = { };
|
http = { };
|
||||||
conversation = {};
|
conversation = {};
|
||||||
@ -203,13 +85,14 @@ in {
|
|||||||
"group.outside"
|
"group.outside"
|
||||||
"group.switches"
|
"group.switches"
|
||||||
"group.automation"
|
"group.automation"
|
||||||
"group.camera"
|
# "group.camera"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
automation = [
|
automation = [
|
||||||
"automation.turn_off_fernseher_10_minutes_after_last_movement"
|
"timer.felix_10h"
|
||||||
"automation.turn_off_nachtlicht_on_sunrise"
|
"script.blitz_10s"
|
||||||
"automation.turn_on_nachtlicht_on_motion_and_dusk"
|
"script.buzz_red_led_fast"
|
||||||
|
"camera.Baumarkt"
|
||||||
];
|
];
|
||||||
switches = [
|
switches = [
|
||||||
"switch.bauarbeiterlampe"
|
"switch.bauarbeiterlampe"
|
||||||
@ -218,125 +101,37 @@ in {
|
|||||||
"switch.feuer"
|
"switch.feuer"
|
||||||
"switch.nachtlicht"
|
"switch.nachtlicht"
|
||||||
"light.status_felix"
|
"light.status_felix"
|
||||||
|
"light.status_daniel"
|
||||||
|
"light.buslicht"
|
||||||
|
"light.redbutton_buzzer"
|
||||||
];
|
];
|
||||||
camera = [
|
|
||||||
"camera.Baumarkt"
|
camera = [ ];
|
||||||
"camera.Autobahn_Heilbronn"
|
|
||||||
"camera.Autobahn_Singen"
|
|
||||||
];
|
|
||||||
sensors = [
|
sensors = [
|
||||||
"binary_sensor.motion"
|
"binary_sensor.motion"
|
||||||
|
"binary_sensor.redbutton"
|
||||||
"sensor.easy2_dht22_humidity"
|
"sensor.easy2_dht22_humidity"
|
||||||
"sensor.easy2_dht22_temperature"
|
"sensor.easy2_dht22_temperature"
|
||||||
];
|
];
|
||||||
outside = [
|
outside = [
|
||||||
"sensor.ditzingen_pm10"
|
# "sensor.ditzingen_pm10"
|
||||||
"sensor.ditzingen_pm25"
|
# "sensor.ditzingen_pm25"
|
||||||
"sensor.dark_sky_temperature"
|
"sensor.dark_sky_temperature"
|
||||||
"sensor.dark_sky_humidity"
|
"sensor.dark_sky_humidity"
|
||||||
"sensor.dark_sky_pressure"
|
# "sensor.dark_sky_pressure"
|
||||||
"sensor.dark_sky_hourly_summary"
|
"sensor.dark_sky_hourly_summary"
|
||||||
"sensor.dark_sky_minutely_summary"
|
"camera.Autobahn_Heilbronn"
|
||||||
|
"camera.Autobahn_Singen"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# only for automation
|
# only for automation
|
||||||
# feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ];
|
# feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ];
|
||||||
automation = [
|
# we don't use imports because the expressions do not merge in
|
||||||
{ alias = "Turn on Fernseher on movement";
|
# home-assistant
|
||||||
trigger = {
|
automation = (import ./automation/bureau-shutdown.nix) ++
|
||||||
platform = "state";
|
(import ./automation/nachtlicht.nix) ++
|
||||||
entity_id = "binary_sensor.motion";
|
(import ./automation/10h_timer.nix);
|
||||||
to = "on";
|
|
||||||
};
|
|
||||||
action = {
|
|
||||||
service = "homeassistant.turn_on";
|
|
||||||
entity_id = [
|
|
||||||
"switch.fernseher"
|
|
||||||
"switch.feuer"
|
|
||||||
"light.status_felix"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "Turn off Nachtlicht on sunrise";
|
|
||||||
trigger =
|
|
||||||
{
|
|
||||||
platform = "sun";
|
|
||||||
event = "sunrise";
|
|
||||||
};
|
|
||||||
action =
|
|
||||||
{
|
|
||||||
service = "homeassistant.turn_off";
|
|
||||||
entity_id = [ "switch.nachtlicht" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
alias = "Turn on Nachtlicht on motion and dusk";
|
|
||||||
trigger =
|
|
||||||
{
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "binary_sensor.motion";
|
|
||||||
to = "on";
|
|
||||||
};
|
|
||||||
condition = # 'when dark'
|
|
||||||
{
|
|
||||||
condition = "or";
|
|
||||||
conditions = [
|
|
||||||
{ condition = "sun";
|
|
||||||
after = "sunset";
|
|
||||||
after_offset = "-00:45:00"; # on dusk
|
|
||||||
}
|
|
||||||
{ condition = "sun";
|
|
||||||
before = "sunrise";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
action =
|
|
||||||
{
|
|
||||||
service = "homeassistant.turn_on";
|
|
||||||
entity_id = [ "switch.nachtlicht" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{ alias = "Turn off Fernseher 10 minutes after last movement";
|
|
||||||
trigger = [
|
|
||||||
{ # trigger when movement was detected at the time
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "binary_sensor.motion";
|
|
||||||
to = "off";
|
|
||||||
for.minutes = 10;
|
|
||||||
}
|
|
||||||
{ # trigger at 20:00 no matter what
|
|
||||||
# to avoid 'everybody left before 18:00:00'
|
|
||||||
platform = "time";
|
|
||||||
at = "18:00:00";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
action = {
|
|
||||||
service = "homeassistant.turn_off";
|
|
||||||
entity_id = [
|
|
||||||
"switch.fernseher"
|
|
||||||
"switch.feuer"
|
|
||||||
"light.status_felix"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
condition =
|
|
||||||
{ condition = "and";
|
|
||||||
conditions = [
|
|
||||||
{
|
|
||||||
condition = "time";
|
|
||||||
before = "06:30:00"; #only turn off between 6:30 and 18:00
|
|
||||||
after = "18:00:00";
|
|
||||||
# weekday = [ "mon" "tue" "wed" "thu" "fri" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
condition = "state";
|
|
||||||
entity_id = "binary_sensor.motion";
|
|
||||||
state = "off";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ in {
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
# User = "nobody"; # need a user with permissions to run nix-shell
|
# User = "nobody"; # need a user with permissions to run nix-shell
|
||||||
ExecStartPre = pkgs.writeDash "sleep.sh" "sleep 2";
|
ExecStartPre = pkgs.writeDash "sleep.sh" "sleep 2";
|
||||||
ExecStart = "${pkg}/bin/ampel 4";
|
ExecStart = "${pkg}/bin/ampel";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = 10;
|
RestartSec = 10;
|
||||||
PrivateTmp = true;
|
PrivateTmp = true;
|
28
makefu/2configs/bureautomation/light/buzzer.nix
Normal file
28
makefu/2configs/bureautomation/light/buzzer.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
let
|
||||||
|
tasmota_pwm = name: topic: pwmid: max:
|
||||||
|
let
|
||||||
|
id = "PWM${toString pwmid}";
|
||||||
|
in { platform = "mqtt";
|
||||||
|
inherit name;
|
||||||
|
state_topic = "/bam/${topic}/stat/RESULT";
|
||||||
|
state_value_template = ''{%- if value_json["PWM"]["${id}"]| int > 0 -%} ${toString max} {%- else -%} 0 {%- endif -%}'';
|
||||||
|
|
||||||
|
command_topic = "/bam/${topic}/cmnd/${id}";
|
||||||
|
on_command_type = "brightness";
|
||||||
|
brightness_command_topic = "/bam/${topic}/cmnd/${id}";
|
||||||
|
brightness_value_template = ''{{value_json["PWM"]["${id}"]}}'';
|
||||||
|
brightness_scale = max;
|
||||||
|
payload_on = "${toString max}";
|
||||||
|
payload_off = "0";
|
||||||
|
availability_topic = "/bam/${topic}/tele/LWT";
|
||||||
|
payload_available= "Online";
|
||||||
|
payload_not_available= "Offline";
|
||||||
|
retain = true;
|
||||||
|
optimistic = false;
|
||||||
|
qos = 0;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
[
|
||||||
|
# (tasmota_pwm "RedButton LED" "redbutton" 1 1023) #LED PWM1
|
||||||
|
(tasmota_pwm "RedButton Buzzer" "redbutton" 2 512) #buzzer PWM2
|
||||||
|
]
|
56
makefu/2configs/bureautomation/light/statuslight.nix
Normal file
56
makefu/2configs/bureautomation/light/statuslight.nix
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
let
|
||||||
|
tasmota_rgb = name: topic:
|
||||||
|
# LED WS2812b
|
||||||
|
# effect_state_topic: "stat/led/Scheme"
|
||||||
|
# effect_command_topic: "cmnd/led/Scheme"
|
||||||
|
# effect_value_template: "{{ value_json.Scheme }}"
|
||||||
|
{ platform = "mqtt";
|
||||||
|
inherit name;
|
||||||
|
retain = false;
|
||||||
|
qos = 1;
|
||||||
|
optimistic = false;
|
||||||
|
# state
|
||||||
|
# TODO: currently broken, will not use the custom state topic
|
||||||
|
state_topic = "/bam/${topic}/stat/POWER";
|
||||||
|
command_topic = "/bam/${topic}/cmnd/POWER";
|
||||||
|
availability_topic = "/bam/${topic}/tele/LWT";
|
||||||
|
payload_on= "ON";
|
||||||
|
payload_off= "OFF";
|
||||||
|
payload_available= "Online";
|
||||||
|
payload_not_available= "Offline";
|
||||||
|
# brightness
|
||||||
|
brightness_state_topic = "/bam/${topic}/stat/Dimmer";
|
||||||
|
brightness_command_topic = "/bam/${topic}/cmnd/Dimmer";
|
||||||
|
brightness_value_template = "{{ value_json.Dimmer }}";
|
||||||
|
brightness_scale = 100;
|
||||||
|
# color
|
||||||
|
rgb_state_topic = "/bam/${topic}/stat/Color";
|
||||||
|
rgb_command_topic = "/bam/${topic}/cmnd/Color2";
|
||||||
|
rgb_command_mode = "hex";
|
||||||
|
rgb_command_template = "{{ '%02x%02x%02x' | format(red, green, blue)}}";
|
||||||
|
# effects
|
||||||
|
effect_state_topic = "/bam/${topic}/stat/Scheme";
|
||||||
|
effect_command_topic = "/bam/${topic}/cmnd/Scheme";
|
||||||
|
effect_value_template = "{{ value_json.Scheme }}";
|
||||||
|
effect_list = [
|
||||||
|
0 # single color for LED light
|
||||||
|
1 # start wake up sequence (same as Wakeup)
|
||||||
|
2 # cycle up through colors using Speed option
|
||||||
|
3 # cycle down through colors using Speed option
|
||||||
|
4 # random cycle through colors using Speed and Fade
|
||||||
|
5 # clock mode (example)
|
||||||
|
6 # candlelight pattern
|
||||||
|
7 # RGB pattern
|
||||||
|
8 # Christmas pattern
|
||||||
|
9 # Hannukah pattern
|
||||||
|
10 # Kwanzaa pattern
|
||||||
|
11 # rainbow pattern
|
||||||
|
12 # fire pattern
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
[
|
||||||
|
(tasmota_rgb "Status Felix" "status1")
|
||||||
|
(tasmota_rgb "Status Daniel" "status2")
|
||||||
|
(tasmota_rgb "Buslicht" "buslicht")
|
||||||
|
]
|
37
makefu/2configs/bureautomation/script/multi_blink.nix
Normal file
37
makefu/2configs/bureautomation/script/multi_blink.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{lib, ... }:
|
||||||
|
let
|
||||||
|
# let an entity blink for X times with a delay of Y milliseconds
|
||||||
|
flash_entity = { entity, delay ? 500, count ? 4, alias ? "${entity}_blink_${toString count}_${toString delay}" }:
|
||||||
|
{
|
||||||
|
inherit alias;
|
||||||
|
sequence = lib.flatten (builtins.genList (i: [
|
||||||
|
{ service = "homeassistant.turn_on";
|
||||||
|
data.entity_id = entity;
|
||||||
|
}
|
||||||
|
{ delay.milliseconds = delay; }
|
||||||
|
{ service = "homeassistant.turn_off";
|
||||||
|
data.entity_id = entity;
|
||||||
|
}
|
||||||
|
{ delay.milliseconds = delay; }
|
||||||
|
]
|
||||||
|
) count);
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
buzz_red_led = (flash_entity {
|
||||||
|
entity = "light.redbutton_buzzer";
|
||||||
|
alias = "Red Button Buzz";
|
||||||
|
count = 4;
|
||||||
|
});
|
||||||
|
buzz_red_led_fast = (flash_entity {
|
||||||
|
entity = "light.redbutton_buzzer";
|
||||||
|
delay = 250;
|
||||||
|
count = 2;
|
||||||
|
alias = "Red Button Buzz fast";
|
||||||
|
});
|
||||||
|
blitz_10s = (flash_entity {
|
||||||
|
entity = "switch.blitzdings";
|
||||||
|
delay = 10000;
|
||||||
|
count = 1;
|
||||||
|
alias = "blitz for 10 seconds";
|
||||||
|
});
|
||||||
|
}
|
31
makefu/2configs/bureautomation/sensor/espeasy.nix
Normal file
31
makefu/2configs/bureautomation/sensor/espeasy.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
let
|
||||||
|
espeasy_dht22 = name: [
|
||||||
|
{ platform = "mqtt";
|
||||||
|
name = "${name} DHT22 Temperature";
|
||||||
|
device_class = "temperature";
|
||||||
|
state_topic = "/bam/${name}/dht22/Temperature";
|
||||||
|
availability_topic = "/bam/${name}/tele/LWT";
|
||||||
|
payload_available = "Online";
|
||||||
|
payload_not_available = "Offline";
|
||||||
|
}
|
||||||
|
{ platform = "mqtt";
|
||||||
|
device_class = "humidity";
|
||||||
|
name = "${name} DHT22 Humidity";
|
||||||
|
state_topic = "/bam/${name}/dht22/Humidity";
|
||||||
|
availability_topic = "/bam/${name}/tele/LWT";
|
||||||
|
payload_available = "Online";
|
||||||
|
payload_not_available = "Offline";
|
||||||
|
}];
|
||||||
|
espeasy_ds18 = name:
|
||||||
|
{ platform = "mqtt";
|
||||||
|
name = "${name} DS18 Temperature";
|
||||||
|
state_topic = "/bam/${name}/ds18/Temperature";
|
||||||
|
availability_topic = "/bam/${name}/tele/LWT";
|
||||||
|
payload_available = "Online";
|
||||||
|
payload_not_available = "Offline";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
(espeasy_dht22 "easy1") ++
|
||||||
|
(espeasy_dht22 "easy2") ++ [
|
||||||
|
(espeasy_ds18 "easy3" )
|
||||||
|
]
|
18
makefu/2configs/bureautomation/sensor/influxdb.nix
Normal file
18
makefu/2configs/bureautomation/sensor/influxdb.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[
|
||||||
|
#{ platform = "influxdb";
|
||||||
|
# queries = [
|
||||||
|
# { name = "mean value of feinstaub P1";
|
||||||
|
# where = '' "node" = 'esp8266-1355142' '';
|
||||||
|
# measurement = "feinstaub";
|
||||||
|
# database = "telegraf";
|
||||||
|
# field = "P1";
|
||||||
|
# }
|
||||||
|
# { name = "mean value of feinstaub P2";
|
||||||
|
# where = '' "node" = 'esp8266-1355142' '';
|
||||||
|
# measurement = "feinstaub";
|
||||||
|
# database = "telegraf";
|
||||||
|
# field = "P2";
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
#}
|
||||||
|
]
|
25
makefu/2configs/bureautomation/sensor/outside.nix
Normal file
25
makefu/2configs/bureautomation/sensor/outside.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{lib,...}: [
|
||||||
|
{ platform = "darksky";
|
||||||
|
api_key = lib.removeSuffix "\n"
|
||||||
|
(builtins.readFile <secrets/hass/darksky.apikey>);
|
||||||
|
language = "de";
|
||||||
|
monitored_conditions = [
|
||||||
|
"summary" "icon"
|
||||||
|
"nearest_storm_distance" "precip_probability"
|
||||||
|
"precip_intensity"
|
||||||
|
"temperature" # "temperature_high" "temperature_low"
|
||||||
|
"apparent_temperature"
|
||||||
|
"hourly_summary" # next 24 hours text
|
||||||
|
"humidity"
|
||||||
|
"pressure"
|
||||||
|
"uv_index"
|
||||||
|
];
|
||||||
|
units = "si" ;
|
||||||
|
update_interval = { days = 0; hours = 0; minutes = 30; seconds = 0; };
|
||||||
|
}
|
||||||
|
{ platform = "luftdaten";
|
||||||
|
name = "Ditzingen";
|
||||||
|
sensorid = "5341";
|
||||||
|
monitored_conditions = [ "P1" "P2" ];
|
||||||
|
}
|
||||||
|
]
|
19
makefu/2configs/bureautomation/switch/tasmota_switch.nix
Normal file
19
makefu/2configs/bureautomation/switch/tasmota_switch.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
let
|
||||||
|
tasmota_plug = name: topic:
|
||||||
|
{ platform = "mqtt";
|
||||||
|
inherit name;
|
||||||
|
state_topic = "/bam/${topic}/stat/POWER";
|
||||||
|
command_topic = "/bam/${topic}/cmnd/POWER";
|
||||||
|
availability_topic = "/bam/${topic}/tele/LWT";
|
||||||
|
payload_on= "ON";
|
||||||
|
payload_off= "OFF";
|
||||||
|
payload_available= "Online";
|
||||||
|
payload_not_available= "Offline";
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
(tasmota_plug "Bauarbeiterlampe" "plug")
|
||||||
|
(tasmota_plug "Blitzdings" "plug2")
|
||||||
|
(tasmota_plug "Fernseher" "plug3")
|
||||||
|
(tasmota_plug "Feuer" "plug4")
|
||||||
|
(tasmota_plug "Nachtlicht" "plug5")
|
||||||
|
]
|
@ -1,5 +1,6 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
environment.shellAliases.dict = "dict -h 127.0.0.1";
|
||||||
services.dictd.enable = true;
|
services.dictd.enable = true;
|
||||||
services.dictd.DBs = with pkgs.dictdDBs; [ wiktionary wordnet deu2eng eng2deu ];
|
services.dictd.DBs = with pkgs.dictdDBs; [ wiktionary wordnet deu2eng eng2deu ];
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,15 @@ let
|
|||||||
make-krebs-repo = with git; name: { cgit ? {}, ... }: {
|
make-krebs-repo = with git; name: { cgit ? {}, ... }: {
|
||||||
inherit cgit name;
|
inherit cgit name;
|
||||||
public = true;
|
public = true;
|
||||||
|
hooks = {
|
||||||
|
post-receive = pkgs.git-hooks.irc-announce {
|
||||||
|
nick = config.networking.hostName;
|
||||||
|
verbose = config.krebs.build.host.name == "gum";
|
||||||
|
channel = "#xxx";
|
||||||
|
# TODO remove the hardcoded hostname
|
||||||
|
server = "irc.r";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,6 +11,15 @@
|
|||||||
services.network-manager-applet.enable = true;
|
services.network-manager-applet.enable = true;
|
||||||
services.blueman-applet.enable = true;
|
services.blueman-applet.enable = true;
|
||||||
services.pasystray.enable = true;
|
services.pasystray.enable = true;
|
||||||
|
services.flameshot.enable = true;
|
||||||
|
home.file.".config/Dharkael/flameshot.ini".text = ''
|
||||||
|
[General]
|
||||||
|
disabledTrayIcon=false
|
||||||
|
drawColor=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
|
||||||
|
drawThickness=0
|
||||||
|
filenamePattern=%F_%T_shot
|
||||||
|
'';
|
||||||
|
|
||||||
systemd.user.services.pasystray.Service.Environment = "PATH=" + (lib.makeBinPath (with pkgs;[ pavucontrol paprefs /* pavumeter */ /* paman */ ]) );
|
systemd.user.services.pasystray.Service.Environment = "PATH=" + (lib.makeBinPath (with pkgs;[ pavucontrol paprefs /* pavumeter */ /* paman */ ]) );
|
||||||
programs.chromium = {
|
programs.chromium = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -86,7 +86,8 @@
|
|||||||
share = true;
|
share = true;
|
||||||
};
|
};
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
TERM = "rxvt-unicode-256color";
|
# TERM = "rxvt-unicode-256color";
|
||||||
|
TERM = "xterm";
|
||||||
LANG = "en_US.UTF8";
|
LANG = "en_US.UTF8";
|
||||||
LS_COLORS = ":di=1;31:";
|
LS_COLORS = ":di=1;31:";
|
||||||
EDITOR = "vim";
|
EDITOR = "vim";
|
||||||
|
@ -55,7 +55,8 @@ let
|
|||||||
payload_not_available = "Offline";
|
payload_not_available = "Offline";
|
||||||
};
|
};
|
||||||
|
|
||||||
firetv = "192.168.1.238";
|
firetv = "192.168.1.183";
|
||||||
|
hassdir = "/var/lib/hass";
|
||||||
tasmota_plug = name: topic:
|
tasmota_plug = name: topic:
|
||||||
{ platform = "mqtt";
|
{ platform = "mqtt";
|
||||||
inherit name;
|
inherit name;
|
||||||
@ -105,13 +106,7 @@ in {
|
|||||||
imports = [
|
imports = [
|
||||||
./mqtt.nix
|
./mqtt.nix
|
||||||
];
|
];
|
||||||
#systemd.services.firetv = {
|
|
||||||
# wantedBy = [ "multi-user.target" ];
|
|
||||||
# serviceConfig = {
|
|
||||||
# User = "nobody";
|
|
||||||
# ExecStart = "${pkgs.python-firetv}/bin/firetv-server -d ${firetv}:5555";
|
|
||||||
# };
|
|
||||||
#};
|
|
||||||
services.home-assistant = {
|
services.home-assistant = {
|
||||||
config = {
|
config = {
|
||||||
homeassistant = {
|
homeassistant = {
|
||||||
@ -133,9 +128,11 @@ in {
|
|||||||
{ platform = "kodi";
|
{ platform = "kodi";
|
||||||
host = firetv;
|
host = firetv;
|
||||||
}
|
}
|
||||||
#{ platform = "firetv";
|
{ platform = "firetv";
|
||||||
# # assumes python-firetv running
|
name = "FireTV Stick";
|
||||||
#}
|
host = firetv;
|
||||||
|
adbkey = <secrets/hass/adbkey>;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
mqtt = {
|
mqtt = {
|
||||||
broker = "localhost";
|
broker = "localhost";
|
||||||
@ -211,9 +208,12 @@ in {
|
|||||||
flur = [
|
flur = [
|
||||||
"light.flurlicht"
|
"light.flurlicht"
|
||||||
"binary_sensor.flur_bewegung"
|
"binary_sensor.flur_bewegung"
|
||||||
|
"automation.dunkel_bei_sonnenuntergang"
|
||||||
|
"automation.hell_bei_sonnenaufgang"
|
||||||
];
|
];
|
||||||
wohnzimmer = [
|
wohnzimmer = [
|
||||||
"media_player.kodi"
|
"media_player.kodi"
|
||||||
|
"media_player.firetv_stick"
|
||||||
];
|
];
|
||||||
draussen = [
|
draussen = [
|
||||||
"sensor.dark_sky_temperature"
|
"sensor.dark_sky_temperature"
|
||||||
@ -240,6 +240,47 @@ in {
|
|||||||
];
|
];
|
||||||
light = [ (tasmota_rgb "Flurlicht" "flurlicht" ) ];
|
light = [ (tasmota_rgb "Flurlicht" "flurlicht" ) ];
|
||||||
automation = [
|
automation = [
|
||||||
|
{ alias = "Dunkel bei Sonnenuntergang";
|
||||||
|
trigger = {
|
||||||
|
platform = "sun";
|
||||||
|
event = "sunset";
|
||||||
|
# offset: "-00:45:00"
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{
|
||||||
|
service= "light.turn_on";
|
||||||
|
data = {
|
||||||
|
entity_id= "light.flurlicht";
|
||||||
|
# rgb_color = [ 0,0,0 ]; <-- TODO default color
|
||||||
|
brightness_pct = 15;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service= "light.turn_off";
|
||||||
|
entity_id= "light.flurlicht";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ alias = "Hell bei Sonnenaufgang";
|
||||||
|
trigger = {
|
||||||
|
platform = "sun";
|
||||||
|
event = "sunrise";
|
||||||
|
# offset: "-00:00:00"
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{
|
||||||
|
service= "light.turn_on";
|
||||||
|
data = {
|
||||||
|
entity_id= "light.flurlicht";
|
||||||
|
brightness_pct = 85;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
service= "light.turn_off";
|
||||||
|
entity_id= "light.flurlicht";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
{ alias = "Staubsauger Strom aus nach 6h";
|
{ alias = "Staubsauger Strom aus nach 6h";
|
||||||
trigger = {
|
trigger = {
|
||||||
platform = "state";
|
platform = "state";
|
||||||
@ -255,6 +296,10 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
enable = true;
|
enable = true;
|
||||||
#configDir = "/var/lib/hass";
|
configDir = hassdir;
|
||||||
};
|
};
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
"homeassistant-0.77.2"
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,21 @@ with import <stockholm/lib>;
|
|||||||
let
|
let
|
||||||
pkg = pkgs.ampel;
|
pkg = pkgs.ampel;
|
||||||
home = "/var/lib/ampel";
|
home = "/var/lib/ampel";
|
||||||
sec = "${toString <secrets>}/google-muell.json";
|
sec = "${toString <secrets>}/ampel/google-muell.json";
|
||||||
ampelsec = "${home}/google-muell.json";
|
ampelsec = "${home}/google-muell.json";
|
||||||
cred = "${toString <secrets>}/google-muell-creds.json";
|
cred = "${toString <secrets>}/ampel/google-muell-creds.json";
|
||||||
# TODO: generate this credential file locally
|
# TODO: generate this credential file locally
|
||||||
ampelcred = "${home}/google-muell-creds.json";
|
ampelcred = "${home}/google-muell-creds.json";
|
||||||
esp = "192.168.8.204";
|
|
||||||
sleepval = "1800";
|
sleepval = "1800";
|
||||||
|
# default-color = "18,63,40";
|
||||||
|
default-color = "255,127,0";
|
||||||
|
config_json = toFile "config.json" (toJSON {
|
||||||
|
mq_hostname = "localhost";
|
||||||
|
mq_port = 1883;
|
||||||
|
mq_username = "sensor";
|
||||||
|
mq_topic = "/ham/flurlicht/cmnd/MEM1";
|
||||||
|
mq_password = replaceChars ["\n"] [""] (readFile "${toString <secrets>}/mqtt/sensor");
|
||||||
|
});
|
||||||
in {
|
in {
|
||||||
users.users.ampel = {
|
users.users.ampel = {
|
||||||
uid = genid "ampel";
|
uid = genid "ampel";
|
||||||
@ -27,7 +35,7 @@ in {
|
|||||||
install -m600 -o ampel ${sec} ${ampelsec}
|
install -m600 -o ampel ${sec} ${ampelsec}
|
||||||
install -m600 -o ampel ${cred} ${ampelcred}
|
install -m600 -o ampel ${cred} ${ampelcred}
|
||||||
'';
|
'';
|
||||||
ExecStart = "${pkg}/bin/google-muell --esp=${esp} --client-secrets=${ampelsec} --credential-path=${ampelcred} --sleepval=${sleepval}";
|
ExecStart = "${pkg}/bin/google-muell --config ${config_json} --default-color=${default-color} --client-secrets=${ampelsec} --credential-path=${ampelcred} --sleepval=${sleepval}";
|
||||||
PermissionsStartOnly = true;
|
PermissionsStartOnly = true;
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
RestartSec = 10;
|
RestartSec = 10;
|
||||||
|
15
makefu/2configs/remote-build/gum.nix
Normal file
15
makefu/2configs/remote-build/gum.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
nix = {
|
||||||
|
distributedBuilds = true;
|
||||||
|
buildMachines = [
|
||||||
|
{
|
||||||
|
hostName = "gum.krebsco.de";
|
||||||
|
maxJobs = 8;
|
||||||
|
sshKey = toString <secrets/id_nixBuild>;
|
||||||
|
sshUser = "nixBuild";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
supportedFeatures = [ ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -5,6 +5,7 @@
|
|||||||
useDefaultShell = true;
|
useDefaultShell = true;
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
config.krebs.users.buildbotSlave.pubkey
|
config.krebs.users.buildbotSlave.pubkey
|
||||||
|
config.krebs.users.makefu-remote-builder.pubkey
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ _:
|
|||||||
environment.noXlibs = true;
|
environment.noXlibs = true;
|
||||||
nix.gc.automatic = true;
|
nix.gc.automatic = true;
|
||||||
nix.gc.dates = "03:10";
|
nix.gc.dates = "03:10";
|
||||||
programs.info.enable = false;
|
documentation.info.enable = false;
|
||||||
programs.man.enable = false;
|
documentation.man.enable = false;
|
||||||
services.journald.extraConfig = "SystemMaxUse=50M";
|
services.journald.extraConfig = "SystemMaxUse=50M";
|
||||||
services.nixosManual.enable = false;
|
services.nixosManual.enable = false;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
users.users.makefu.packages = with pkgs; [
|
users.users.makefu.packages = with pkgs; [
|
||||||
|
at_spi2_core
|
||||||
chromium
|
chromium
|
||||||
feh
|
feh
|
||||||
clipit
|
clipit
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
( pkgs.writeScriptBin "unknow" ''#!/bin/sh
|
( pkgs.writeScriptBin "unknow" ''#!/bin/sh
|
||||||
${gnused}/bin/sed -i "''${1}d" ~/.ssh/known_hosts
|
${gnused}/bin/sed -i "''${1}d" ~/.ssh/known_hosts
|
||||||
'')
|
'')
|
||||||
at_spi2_core
|
|
||||||
acpi
|
acpi
|
||||||
bc
|
bc
|
||||||
rsync
|
rsync
|
||||||
@ -17,6 +16,7 @@ ${gnused}/bin/sed -i "''${1}d" ~/.ssh/known_hosts
|
|||||||
lsof
|
lsof
|
||||||
which
|
which
|
||||||
binutils
|
binutils
|
||||||
|
screen
|
||||||
|
|
||||||
# fs
|
# fs
|
||||||
cifs-utils
|
cifs-utils
|
||||||
|
@ -26,5 +26,6 @@
|
|||||||
nix-review
|
nix-review
|
||||||
# git-related
|
# git-related
|
||||||
tig
|
tig
|
||||||
|
init-host
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./steam.nix
|
# ./steam.nix
|
||||||
];
|
];
|
||||||
users.users.makefu.packages = with pkgs; [
|
users.users.makefu.packages = with pkgs; [
|
||||||
games-user-env
|
games-user-env
|
||||||
|
42
makefu/5pkgs/Fluffy/default.nix
Normal file
42
makefu/5pkgs/Fluffy/default.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{ lib, pkgs, python3Packages, ... }:
|
||||||
|
|
||||||
|
with python3Packages; buildPythonApplication rec {
|
||||||
|
name = "Fluffy-${version}";
|
||||||
|
format = "other";
|
||||||
|
version = "2.7";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "fourminute";
|
||||||
|
repo = "Fluffy";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1l346bklidcl40q91cfdszrfskdwlmfjbmsc3mgs0i8wi1yhvq99";
|
||||||
|
};
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
sed -e "s|/tmp|$HOME/.config/fluffy|" -i linux/fluffy.desktop
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
env
|
||||||
|
install -Dm 644 linux/80-fluffy-switch.rules "$out/etc/udev/rules.d/80-fluffy-switch.rules"
|
||||||
|
install -Dm 644 linux/fluffy.desktop "$out/usr/share/applications/fluffy.desktop"
|
||||||
|
install -Dm 644 icons/16x16/fluffy.png "$out/share/icons/hicolor/16x16/apps/fluffy.png"
|
||||||
|
install -Dm 644 icons/24x24/fluffy.png "$out/share/icons/hicolor/24x24/apps/fluffy.png"
|
||||||
|
install -Dm 644 icons/32x32/fluffy.png "$out/share/icons/hicolor/32x32/apps/fluffy.png"
|
||||||
|
install -Dm 644 icons/48x48/fluffy.png "$out/share/icons/hicolor/48x48/apps/fluffy.png"
|
||||||
|
install -Dm 644 icons/64x64/fluffy.png "$out/share/icons/hicolor/64x64/apps/fluffy.png"
|
||||||
|
install -Dm 644 icons/128x128/fluffy.png "$out/share/icons/hicolor/128x128/apps/fluffy.png"
|
||||||
|
install -Dm 755 fluffy.pyw "$out/bin/fluffy"
|
||||||
|
wrapProgram "$out/bin/fluffy" --set PYTHONPATH "$PYTHONPATH"
|
||||||
|
'';
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
pyqt5 pyusb libusb1 configparser tkinter
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = https://github.com/fourminute/Fluffy;
|
||||||
|
description = "A feature-rich tool for installing NSPs";
|
||||||
|
license = lib.licenses.gpl3;
|
||||||
|
};
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
with pkgs.python3Packages;buildPythonPackage rec {
|
with pkgs.python3Packages;buildPythonPackage rec {
|
||||||
name = "ampel-${version}";
|
name = "ampel-${version}";
|
||||||
version = "0.2.1";
|
version = "0.2.5";
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
docopt
|
docopt
|
||||||
@ -16,8 +16,8 @@ with pkgs.python3Packages;buildPythonPackage rec {
|
|||||||
|
|
||||||
src = pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
url = "http://cgit.euer.krebsco.de/ampel";
|
url = "http://cgit.euer.krebsco.de/ampel";
|
||||||
rev = "92321d7";
|
rev = "ce239876820699f02054e71b4fd0950509833379";
|
||||||
sha256 = "0mvpbpf1rx8sc589qjb73gl8z6fir2zs3gl3br1pbhg5jgn0ij4n";
|
sha256 = "1ja32lr04lwq4shi49kppa1zzjw0zlqaqy71pr5sbajgp4zj7kh8";
|
||||||
};
|
};
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://cgit.euer.krebsco.de/ampel;
|
homepage = http://cgit.euer.krebsco.de/ampel;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
, networkmanagerapplet
|
, networkmanagerapplet
|
||||||
, blueman
|
, blueman
|
||||||
, clipit
|
, clipit
|
||||||
|
, flameshot
|
||||||
, modkey ? "Mod4"
|
, modkey ? "Mod4"
|
||||||
, locker? "${pkgs.xlock}/bin/xlock -mode blank"
|
, locker? "${pkgs.xlock}/bin/xlock -mode blank"
|
||||||
, ... }:
|
, ... }:
|
||||||
@ -13,7 +14,7 @@
|
|||||||
# replace: @alsaUtils@ @xlockmore@ @xbacklight@ @modkey@
|
# replace: @alsaUtils@ @xlockmore@ @xbacklight@ @modkey@
|
||||||
full = lib.makeOverridable pkgs.substituteAll {
|
full = lib.makeOverridable pkgs.substituteAll {
|
||||||
name = "awesome_full_config";
|
name = "awesome_full_config";
|
||||||
inherit alsaUtils locker xbacklight modkey networkmanagerapplet blueman clipit;
|
inherit alsaUtils locker xbacklight modkey networkmanagerapplet blueman clipit flameshot ;
|
||||||
isExecutable = false;
|
isExecutable = false;
|
||||||
src = ./full.cfg;
|
src = ./full.cfg;
|
||||||
};
|
};
|
||||||
|
@ -410,6 +410,7 @@ clientkeys = awful.util.table.join(
|
|||||||
-- minimized, since minimized clients can't have the focus.
|
-- minimized, since minimized clients can't have the focus.
|
||||||
c.minimized = true
|
c.minimized = true
|
||||||
end),
|
end),
|
||||||
|
awful.key({ }, "Print", function () awful.util.spawn("@flameshot@/bin/flameshot gui") end),
|
||||||
awful.key({ modkey, }, "m",
|
awful.key({ modkey, }, "m",
|
||||||
function (c)
|
function (c)
|
||||||
c.maximized = not c.maximized
|
c.maximized = not c.maximized
|
||||||
|
47
makefu/5pkgs/init-host/default.nix
Normal file
47
makefu/5pkgs/init-host/default.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
pkgs.writeDashBin "generate-secrets" ''
|
||||||
|
set -euf
|
||||||
|
HOSTNAME="''${1?must provide hostname}"
|
||||||
|
TMPDIR=$(${pkgs.coreutils}/bin/mktemp -d)
|
||||||
|
PASSWORD=$(${pkgs.pwgen}/bin/pwgen 25 1)
|
||||||
|
HASHED_PASSWORD=$(echo $PASSWORD | ${pkgs.hashPassword}/bin/hashPassword -s) > /dev/null
|
||||||
|
|
||||||
|
${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f $TMPDIR/ssh.id_ed25519 -P "" -C "" >/dev/null
|
||||||
|
${pkgs.openssl}/bin/openssl genrsa -out $TMPDIR/retiolum.rsa_key.priv 4096 2>/dev/null > /dev/null
|
||||||
|
${pkgs.openssl}/bin/openssl rsa -in $TMPDIR/retiolum.rsa_key.priv -pubout -out $TMPDIR/retiolum.rsa_key.pub 2>/dev/null > /dev/null
|
||||||
|
cat <<EOF > $TMPDIR/hashedPasswords.nix
|
||||||
|
{
|
||||||
|
root = "$HASHED_PASSWORD";
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cd $TMPDIR
|
||||||
|
for x in *; do
|
||||||
|
${pkgs.coreutils}/bin/cat $x | secrets insert -m $HOSTNAME/$x > /dev/null
|
||||||
|
done
|
||||||
|
echo $PASSWORD | secrets insert -m $HOSTNAME/root > /dev/null
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
$HOSTNAME = {
|
||||||
|
cores = 1;
|
||||||
|
owner = config.krebs.users.makefu;
|
||||||
|
nets = {
|
||||||
|
retiolum = {
|
||||||
|
ip4.addr = "10.243.0.changeme";
|
||||||
|
ip6.addr = "42:0:0:0:0:0:0:changeme";
|
||||||
|
aliases = [
|
||||||
|
"$HOSTNAME.r"
|
||||||
|
];
|
||||||
|
tinc.pubkey = ${"''"}
|
||||||
|
$(cat $TMPDIR/retiolum.rsa_key.pub)
|
||||||
|
${"''"};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
||||||
|
ssh.pubkey = "$(cat $TMPDIR/ssh.id_ed25519.pub)";
|
||||||
|
};
|
||||||
|
EOF
|
||||||
|
|
||||||
|
rm -rf $TMPDIR
|
||||||
|
''
|
||||||
|
|
@ -23,6 +23,7 @@
|
|||||||
# nixos-18.09 @ 2018-09-18
|
# nixos-18.09 @ 2018-09-18
|
||||||
# + uhub/sqlite: 5dd7610401747
|
# + uhub/sqlite: 5dd7610401747
|
||||||
# + hovercraft: 7134801b17d72
|
# + hovercraft: 7134801b17d72
|
||||||
|
# + PR#53934: eac6797380af1
|
||||||
nixpkgs = if host-src.arm6 then {
|
nixpkgs = if host-src.arm6 then {
|
||||||
# TODO: we want to track the unstable channel
|
# TODO: we want to track the unstable channel
|
||||||
symlink = "/nix/var/nix/profiles/per-user/root/channels/nixos/";
|
symlink = "/nix/var/nix/profiles/per-user/root/channels/nixos/";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/makefu/nixpkgs",
|
"url": "https://github.com/makefu/nixpkgs",
|
||||||
"rev": "125873064a6eabd2896833d00aede7778a453fdf",
|
"rev": "cba65c1ab2aec20f0eaa77d6747f16798688e1bb",
|
||||||
"date": "2019-01-11T14:24:21+01:00",
|
"date": "2019-02-25T00:04:17+01:00",
|
||||||
"sha256": "1ki50426m9simqvxdzckfgycibz5rdhwl6hzi31i72dqiafl8j6s",
|
"sha256": "1h6d9kghs7n7nql7fw5v9fpmpgdq6xq62npc7cfvyam8g4ma9iwn",
|
||||||
"fetchSubmodules": false
|
"fetchSubmodules": false
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ with import <stockholm/lib>;
|
|||||||
HISTCONTROL='erasedups:ignorespace'
|
HISTCONTROL='erasedups:ignorespace'
|
||||||
HISTSIZE=65536
|
HISTSIZE=65536
|
||||||
HISTFILESIZE=$HISTSIZE
|
HISTFILESIZE=$HISTSIZE
|
||||||
|
HISTTIMEFORMAT=
|
||||||
|
|
||||||
shopt -s checkhash
|
shopt -s checkhash
|
||||||
shopt -s histappend histreedit histverify
|
shopt -s histappend histreedit histverify
|
||||||
@ -27,6 +28,8 @@ with import <stockholm/lib>;
|
|||||||
export NIX_PATH="stockholm=$HOME/stockholm:$NIX_PATH"
|
export NIX_PATH="stockholm=$HOME/stockholm:$NIX_PATH"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
${pkgs.bash-fzf-history.bind}
|
||||||
'';
|
'';
|
||||||
promptInit = /* sh */ ''
|
promptInit = /* sh */ ''
|
||||||
case $UID in
|
case $UID in
|
||||||
|
@ -80,13 +80,6 @@ with import <stockholm/lib>;
|
|||||||
ls = "ls -h --color=auto --group-directories-first";
|
ls = "ls -h --color=auto --group-directories-first";
|
||||||
dmesg = "dmesg -L --reltime";
|
dmesg = "dmesg -L --reltime";
|
||||||
view = "vim -R";
|
view = "vim -R";
|
||||||
|
|
||||||
deploy = pkgs.writeDash "deploy" ''
|
|
||||||
set -eu
|
|
||||||
cd ~/stockholm
|
|
||||||
export SYSTEM="$1"
|
|
||||||
exec nix-shell -I stockholm="$PWD" --run 'deploy --system="$SYSTEM"'
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
|
@ -47,6 +47,9 @@ let {
|
|||||||
disko = {
|
disko = {
|
||||||
cgit.desc = "declarative partitioning and formatting tool";
|
cgit.desc = "declarative partitioning and formatting tool";
|
||||||
};
|
};
|
||||||
|
flameshot-once = {
|
||||||
|
cgit.desc = "flameshot runner that automatically starts/stops the daemon";
|
||||||
|
};
|
||||||
fswm = {
|
fswm = {
|
||||||
cgit.desc = "simple full screen window manager";
|
cgit.desc = "simple full screen window manager";
|
||||||
};
|
};
|
||||||
|
@ -129,15 +129,66 @@ let {
|
|||||||
command! -n=0 -bar ShowSyntax :call ShowSyntax()
|
command! -n=0 -bar ShowSyntax :call ShowSyntax()
|
||||||
'';
|
'';
|
||||||
})))
|
})))
|
||||||
|
((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-tv" {
|
||||||
|
#
|
||||||
|
# Haskell
|
||||||
|
#
|
||||||
|
"/ftplugin/haskell.vim".text = ''
|
||||||
|
if exists("g:vim_tv_ftplugin_haskell_loaded")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:vim_tv_ftplugin_haskell_loaded = 1
|
||||||
|
|
||||||
|
setlocal iskeyword+='
|
||||||
|
'';
|
||||||
|
#
|
||||||
|
# TODO
|
||||||
|
#
|
||||||
|
"/ftdetect/todo.vim".text = ''
|
||||||
|
au BufRead,BufNewFile TODO set ft=todo
|
||||||
|
'';
|
||||||
|
"/ftplugin/todo.vim".text = ''
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
'';
|
||||||
|
"/syntax/todo.vim".text = ''
|
||||||
|
syn match todoComment /#.*/
|
||||||
|
|
||||||
|
syn match todoDate /^[1-9]\S*/
|
||||||
|
\ nextgroup=todoSummary
|
||||||
|
|
||||||
|
syn region todoSummary
|
||||||
|
\ contained
|
||||||
|
\ contains=todoTag
|
||||||
|
\ start="." end="$\n"
|
||||||
|
\ nextgroup=todoBlock
|
||||||
|
|
||||||
|
syn match todoTag /\[[A-Za-z]\+\]/hs=s+1,he=e-1
|
||||||
|
\ contained
|
||||||
|
|
||||||
|
syn region todoBlock
|
||||||
|
\ contained
|
||||||
|
\ contains=Comment
|
||||||
|
\ fold
|
||||||
|
\ start="^[^1-9]" end="^[1-9]"re=s-1,he=s-1,me=s-1
|
||||||
|
|
||||||
|
syn sync minlines=1000
|
||||||
|
|
||||||
|
hi link todoComment Comment
|
||||||
|
hi todoDate ctermfg=255
|
||||||
|
hi todoSummary ctermfg=229
|
||||||
|
hi todoBlock ctermfg=248
|
||||||
|
hi todoTag ctermfg=217
|
||||||
|
'';
|
||||||
|
}))
|
||||||
((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-syntax-nix-nested" {
|
((rtp: rtp // { inherit rtp; }) (pkgs.write "vim-syntax-nix-nested" {
|
||||||
"/syntax/haskell.vim".text = /* vim */ ''
|
"/syntax/haskell.vim".text = ''
|
||||||
syn region String start=+\[[[:alnum:]]*|+ end=+|]+
|
syn region String start=+\[[[:alnum:]]*|+ end=+|]+
|
||||||
|
|
||||||
hi link ConId Identifier
|
hi link ConId Identifier
|
||||||
hi link VarId Identifier
|
hi link VarId Identifier
|
||||||
hi link hsDelimiter Delimiter
|
hi link hsDelimiter Delimiter
|
||||||
'';
|
'';
|
||||||
"/syntax/nix.vim".text = /* vim */ ''
|
"/syntax/nix.vim".text = ''
|
||||||
"" Quit when a (custom) syntax file was already loaded
|
"" Quit when a (custom) syntax file was already loaded
|
||||||
"if exists("b:current_syntax")
|
"if exists("b:current_syntax")
|
||||||
" finish
|
" finish
|
||||||
@ -250,6 +301,9 @@ let {
|
|||||||
def = k: ''${k}[ \t\r\n]*='';
|
def = k: ''${k}[ \t\r\n]*='';
|
||||||
writer = k: ''write${k}[^ \t\r\n]*[ \t\r\n]*\("[^"]*"\|[a-z]\+\)'';
|
writer = k: ''write${k}[^ \t\r\n]*[ \t\r\n]*\("[^"]*"\|[a-z]\+\)'';
|
||||||
|
|
||||||
|
writerExt = k: writerName ''[^"]*\.${k}'';
|
||||||
|
writerName = k: ''write[^ \t\r\n]*[ \t\r\n]*"${k}"'';
|
||||||
|
|
||||||
in {
|
in {
|
||||||
c = {};
|
c = {};
|
||||||
cabal = {};
|
cabal = {};
|
||||||
@ -257,7 +311,7 @@ let {
|
|||||||
haskell = {};
|
haskell = {};
|
||||||
jq.extraStart = alts [
|
jq.extraStart = alts [
|
||||||
(writer "Jq")
|
(writer "Jq")
|
||||||
''write[^ \t\r\n]*[ \t\r\n]*"[^"]*\.jq"''
|
(writerExt "jq")
|
||||||
];
|
];
|
||||||
javascript.extraStart = ''/\* js \*/'';
|
javascript.extraStart = ''/\* js \*/'';
|
||||||
lua = {};
|
lua = {};
|
||||||
@ -287,9 +341,13 @@ let {
|
|||||||
(writer (alts (map capitalize shells)))
|
(writer (alts (map capitalize shells)))
|
||||||
];
|
];
|
||||||
yaml = {};
|
yaml = {};
|
||||||
vim.extraStart =
|
vim.extraStart = alts [
|
||||||
''write[^ \t\r\n]*[ \t\r\n]*"\(\([^"]*\.\)\?vimrc\|[^"]*\.vim\)"'';
|
(def ''"[^"]*\.vim"\.text'')
|
||||||
|
(writerExt "vim")
|
||||||
|
(writerName ''\([^"]*\.\)\?vimrc'')
|
||||||
|
];
|
||||||
xdefaults = {};
|
xdefaults = {};
|
||||||
|
xmodmap = {};
|
||||||
}))}
|
}))}
|
||||||
|
|
||||||
" Clear syntax that interferes with nixINSIDE_DOLLAR_CURLY.
|
" Clear syntax that interferes with nixINSIDE_DOLLAR_CURLY.
|
||||||
@ -329,12 +387,15 @@ let {
|
|||||||
|
|
||||||
set isk=@,48-57,_,192-255,-,'
|
set isk=@,48-57,_,192-255,-,'
|
||||||
'';
|
'';
|
||||||
"/syntax/sed.vim".text = /* vim */ ''
|
"/syntax/sed.vim".text = ''
|
||||||
syn region sedBranch
|
syn region sedBranch
|
||||||
\ matchgroup=sedFunction start="T"
|
\ matchgroup=sedFunction start="T"
|
||||||
\ matchgroup=sedSemicolon end=";\|$"
|
\ matchgroup=sedSemicolon end=";\|$"
|
||||||
\ contains=sedWhitespace
|
\ contains=sedWhitespace
|
||||||
'';
|
'';
|
||||||
|
"/syntax/xmodmap.vim".text = ''
|
||||||
|
syn match xmodmapComment /^\s*!.*/
|
||||||
|
'';
|
||||||
}))
|
}))
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -429,6 +490,8 @@ let {
|
|||||||
inoremap <f1> <esc>:tabp<cr>
|
inoremap <f1> <esc>:tabp<cr>
|
||||||
inoremap <f2> <esc>:tabn<cr>
|
inoremap <f2> <esc>:tabn<cr>
|
||||||
|
|
||||||
|
noremap <f3> :ShowSyntax<cr>
|
||||||
|
|
||||||
" <C-{Up,Down,Right,Left>
|
" <C-{Up,Down,Right,Left>
|
||||||
noremap <esc>Oa <nop> | noremap! <esc>Oa <nop>
|
noremap <esc>Oa <nop> | noremap! <esc>Oa <nop>
|
||||||
noremap <esc>Ob <nop> | noremap! <esc>Ob <nop>
|
noremap <esc>Ob <nop> | noremap! <esc>Ob <nop>
|
||||||
|
@ -48,10 +48,24 @@ in {
|
|||||||
|
|
||||||
systemd.services.xmonad = let
|
systemd.services.xmonad = let
|
||||||
xmonad = "${pkgs.haskellPackages.xmonad-tv}/bin/xmonad";
|
xmonad = "${pkgs.haskellPackages.xmonad-tv}/bin/xmonad";
|
||||||
xmonad-prepare = pkgs.writeDash "xmonad-prepare" ''
|
xmonad-start = pkgs.writeDash "xmonad-start" ''
|
||||||
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CACHE_DIR"
|
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CACHE_DIR"
|
||||||
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CONFIG_DIR"
|
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_CONFIG_DIR"
|
||||||
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_DATA_DIR"
|
${pkgs.coreutils}/bin/mkdir -p "$XMONAD_DATA_DIR"
|
||||||
|
|
||||||
|
f=$HOME/.dbus/session-bus/$(${pkgs.coreutils}/bin/cat /etc/machine-id)-${
|
||||||
|
toString config.services.xserver.display
|
||||||
|
}
|
||||||
|
if test -e "$f" &&
|
||||||
|
. "$f" &&
|
||||||
|
${pkgs.coreutils}/bin/kill -0 "$DBUS_SESSION_BUS_PID"
|
||||||
|
then
|
||||||
|
export DBUS_SESSION_BUS_ADDRESS
|
||||||
|
else
|
||||||
|
eval "$(${pkgs.dbus.lib}/bin/dbus-launch --sh-syntax)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec ${xmonad}
|
||||||
'';
|
'';
|
||||||
xmonad-ready = pkgs.writeDash "xmonad-ready" ''
|
xmonad-ready = pkgs.writeDash "xmonad-ready" ''
|
||||||
{
|
{
|
||||||
@ -97,8 +111,7 @@ in {
|
|||||||
"/run/wrappers" # for su
|
"/run/wrappers" # for su
|
||||||
];
|
];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStartPre = "@${xmonad-prepare} xmonad-prepare";
|
ExecStart = "@${xmonad-start} xmonad-${currentSystem}";
|
||||||
ExecStart = "@${xmonad} xmonad-${currentSystem}";
|
|
||||||
ExecStop = "@${xmonad} xmonad-${currentSystem} --shutdown";
|
ExecStop = "@${xmonad} xmonad-${currentSystem} --shutdown";
|
||||||
SyslogIdentifier = "xmonad";
|
SyslogIdentifier = "xmonad";
|
||||||
User = cfg.user.name;
|
User = cfg.user.name;
|
||||||
|
@ -9,6 +9,37 @@ let {
|
|||||||
config = lib.mkIf cfg.enable imp;
|
config = lib.mkIf cfg.enable imp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraTypes = {
|
||||||
|
rules = types.submodule {
|
||||||
|
options = {
|
||||||
|
nat.OUTPUT = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
nat.PREROUTING = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
nat.POSTROUTING = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
filter.FORWARD = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
filter.INPUT = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
filter.Retiolum = mkOption {
|
||||||
|
type = with types; listOf str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
api = {
|
api = {
|
||||||
enable = mkEnableOption "tv.iptables";
|
enable = mkEnableOption "tv.iptables";
|
||||||
|
|
||||||
@ -37,19 +68,19 @@ let {
|
|||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
extra = {
|
extra = mkOption {
|
||||||
nat.POSTROUTING = mkOption {
|
default = {};
|
||||||
type = with types; listOf str;
|
type = extraTypes.rules;
|
||||||
default = [];
|
};
|
||||||
};
|
|
||||||
filter.FORWARD = mkOption {
|
extra4 = mkOption {
|
||||||
type = with types; listOf str;
|
default = {};
|
||||||
default = [];
|
type = extraTypes.rules;
|
||||||
};
|
};
|
||||||
filter.INPUT = mkOption {
|
|
||||||
type = with types; listOf str;
|
extra6 = mkOption {
|
||||||
default = [];
|
default = {};
|
||||||
};
|
type = extraTypes.rules;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -112,6 +143,7 @@ let {
|
|||||||
"-o lo -p tcp -m tcp --dport 11423 -j REDIRECT --to-ports 22"
|
"-o lo -p tcp -m tcp --dport 11423 -j REDIRECT --to-ports 22"
|
||||||
]}
|
]}
|
||||||
${formatTable cfg.extra.nat}
|
${formatTable cfg.extra.nat}
|
||||||
|
${formatTable cfg."extra${toString iptables-version}".nat}
|
||||||
COMMIT
|
COMMIT
|
||||||
*filter
|
*filter
|
||||||
:INPUT DROP [0:0]
|
:INPUT DROP [0:0]
|
||||||
@ -129,6 +161,7 @@ let {
|
|||||||
++ ["-i retiolum -j Retiolum"]
|
++ ["-i retiolum -j Retiolum"]
|
||||||
)}
|
)}
|
||||||
${formatTable cfg.extra.filter}
|
${formatTable cfg.extra.filter}
|
||||||
|
${formatTable cfg."extra${toString iptables-version}".filter}
|
||||||
${concatMapStringsSep "\n" (rule: "-A Retiolum ${rule}") ([]
|
${concatMapStringsSep "\n" (rule: "-A Retiolum ${rule}") ([]
|
||||||
++ optional (cfg.accept-echo-request == "retiolum") accept-echo-request
|
++ optional (cfg.accept-echo-request == "retiolum") accept-echo-request
|
||||||
++ map accept-tcp (unique (map toString cfg.input-retiolum-accept-tcp))
|
++ map accept-tcp (unique (map toString cfg.input-retiolum-accept-tcp))
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
{-# LANGUAGE DeriveDataTypeable #-} -- for XS
|
|
||||||
{-# LANGUAGE FlexibleContexts #-} -- for xmonad'
|
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# LANGUAGE LambdaCase #-}
|
||||||
{-# LANGUAGE ScopedTypeVariables #-}
|
|
||||||
|
|
||||||
|
|
||||||
module Main (main) where
|
module Main (main) where
|
||||||
|
|
||||||
@ -51,7 +47,7 @@ mainNoArgs = do
|
|||||||
let width = 1366
|
let width = 1366
|
||||||
workspaces0 <- getWorkspaces0
|
workspaces0 <- getWorkspaces0
|
||||||
handleShutdownEvent <- newShutdownEventHandler
|
handleShutdownEvent <- newShutdownEventHandler
|
||||||
xmonad
|
launch
|
||||||
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
|
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
|
||||||
$ def
|
$ def
|
||||||
{ terminal = Paths.urxvtc
|
{ terminal = Paths.urxvtc
|
||||||
|
6
tv/5pkgs/override/default.nix
Normal file
6
tv/5pkgs/override/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
with import <stockholm/lib>;
|
||||||
|
self: super: {
|
||||||
|
rxvt_unicode = self.callPackage ./rxvt_unicode.nix {
|
||||||
|
rxvt_unicode = super.rxvt_unicode;
|
||||||
|
};
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user