Merge remote-tracking branch 'lass/master'
This commit is contained in:
commit
8be55929d1
13
krebs/2configs/ergo.nix
Normal file
13
krebs/2configs/ergo.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
6667
|
||||
];
|
||||
|
||||
krebs.ergo = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ let
|
||||
|
||||
in
|
||||
{
|
||||
krebs.gollum = {
|
||||
services.gollum = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
Gollum::Hook.register(:post_commit, :hook_id) do |committer, sha1|
|
||||
@ -36,6 +36,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.gollum.environment.LC_ALL = "en_US.UTF-8";
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
|
@ -20,6 +20,7 @@ let
|
||||
./ci.nix
|
||||
./current.nix
|
||||
./dns.nix
|
||||
./ergo.nix
|
||||
./exim.nix
|
||||
./exim-retiolum.nix
|
||||
./exim-smarthost.nix
|
||||
@ -28,7 +29,6 @@ let
|
||||
./github-known-hosts.nix
|
||||
./git.nix
|
||||
./go.nix
|
||||
./gollum.nix
|
||||
./hidden-ssh.nix
|
||||
./hosts.nix
|
||||
./htgen.nix
|
||||
|
136
krebs/3modules/ergo.nix
Normal file
136
krebs/3modules/ergo.nix
Normal file
@ -0,0 +1,136 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkEnableOption mkIf mkOption types;
|
||||
inherit (pkgs) coreutils ergo;
|
||||
cfg = config.krebs.ergo;
|
||||
|
||||
configFile = pkgs.writeText "ergo.conf" (builtins.toJSON cfg.config);
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
krebs.ergo = {
|
||||
|
||||
enable = mkEnableOption "Ergo IRC daemon";
|
||||
|
||||
config = mkOption {
|
||||
type = (pkgs.formats.json {}).type;
|
||||
description = ''
|
||||
Ergo IRC daemon configuration file.
|
||||
'';
|
||||
default = {
|
||||
network = {
|
||||
name = "krebstest";
|
||||
};
|
||||
server = {
|
||||
name = "${config.networking.hostName}.r";
|
||||
listeners = {
|
||||
":6667" = {};
|
||||
};
|
||||
casemapping = "permissive";
|
||||
enforce-utf = true;
|
||||
lookup-hostnames = false;
|
||||
ip-cloaking = {
|
||||
enabled = false;
|
||||
};
|
||||
forward-confirm-hostnames = false;
|
||||
check-ident = false;
|
||||
relaymsg = {
|
||||
enabled = false;
|
||||
};
|
||||
max-sendq = "1M";
|
||||
ip-limits = {
|
||||
count = false;
|
||||
throttle = false;
|
||||
};
|
||||
};
|
||||
datastore = {
|
||||
path = "${cfg.statedir}/ircd.db";
|
||||
};
|
||||
accounts = {
|
||||
authentication-enabled = true;
|
||||
registration = {
|
||||
enabled = true;
|
||||
email-verification = {
|
||||
enabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
channels = {
|
||||
default-modes = "+nt";
|
||||
};
|
||||
limits = {
|
||||
nicklen = 32;
|
||||
identlen = 20;
|
||||
channellen = 64;
|
||||
awaylen = 390;
|
||||
kicklen = 390;
|
||||
topiclen = 390;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
statedir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/ergo";
|
||||
description = ''
|
||||
Location of the state directory of ergo.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "ergo";
|
||||
description = ''
|
||||
Ergo IRC daemon user.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "ergo";
|
||||
description = ''
|
||||
Ergo IRC daemon group.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable ({
|
||||
users.users.${cfg.user} = {
|
||||
description = "Ergo IRC daemon user";
|
||||
uid = config.ids.uids.ircd;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
users.groups.${cfg.group} = {
|
||||
gid = config.ids.gids.ircd;
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${cfg.statedir} - ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
systemd.services.ergo = {
|
||||
description = "Ergo IRC daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStartPre = "${ergo}/bin/ergo initdb --conf ${configFile}";
|
||||
ExecStart = "${ergo}/bin/ergo run --conf ${configFile}";
|
||||
Group = cfg.group;
|
||||
User = cfg.user;
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
}
|
1
krebs/3modules/external/default.nix
vendored
1
krebs/3modules/external/default.nix
vendored
@ -701,6 +701,7 @@ in {
|
||||
1T6DILDF71H92PNylujKSPA0CKI160xJ61Xy/T6MYl5u0+RblAgYr77o5HJwmXCe
|
||||
jFrCu3SKUIlJWYHWE8yNoR+VVYeXakbDFYE3KpVyBDG+ljUbia+Oel8CAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = 3IKIoZqg0jm9+pOOka2FEtihx0y8qAdJqKTuRfJtMpK
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
93
krebs/3modules/external/mic92.nix
vendored
93
krebs/3modules/external/mic92.nix
vendored
@ -39,6 +39,7 @@ in {
|
||||
DKhcgvE6xHCwZnVyJN8MMy1CVyDmnHVYoaTEZ2cCvNi/hXIXgO9KWjSpAv5tP764
|
||||
UkOE4dlDpEW6G1pNf84BERfRYGDj29A/Jk9LJC/6D09QJXNu18HR0sUCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = 6VktF9Fg9E0hCW5g+rwGnrPACPSx/8vkl+hPNaFYeND
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -72,6 +73,7 @@ in {
|
||||
UU8cQZ3yBLIhTtC+38pRlsdBQHt526q0j0rrnd30JXVAUdWBunP2UJ5QGtA8/mWn
|
||||
cWSlvRf5sfbyrISz6+mLPM2qGHnCkKwORNxmv/1DY07O3Rn6hX0OY4ECAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = qnJmS6W7QSKG3mjW1kPnHGeVmKzhGkyP9xBLGwH5XvD
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -148,6 +150,7 @@ in {
|
||||
IzbYu49VO/B1rktYzZ2l2ENQy6OILXWbvFjC8Pt8f1ZZQ4A21PyNA1AdyJ/rbVj7
|
||||
awm3OnnvKSvMCXWnwHPFHjksb3qMx96Aep1cw3ZBx0sQQ41UWBoOsi8CAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = ikUmx5IC1dvfaHFhpZM9xotwF2LH6EkvpcPTRm6TjeD
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -240,10 +243,10 @@ in {
|
||||
61Oahtwy/szBj9mWIAymMfnvFGpeiIcww3ZGzYNyKBCjp1TkkgFRV3Y6eoq1sJ13
|
||||
Pxol8FwH5+Q72bLtvg5Zva8D0Vx2U1jYSHEkRDDzaS5Z6Fus+zeZVMsCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
|
||||
Ed25519PublicKey = 7J1JgVyiy540akMdd/kONta0fMHSl5+FQJ1QhN84TzP
|
||||
'';
|
||||
tinc.subnets = [
|
||||
# ohorn lan
|
||||
"fd42:4492:6a6d:500:8526:2adf:7451:8bbb"
|
||||
# docker network
|
||||
"42:0000:002b:1605:3::/80"
|
||||
];
|
||||
@ -269,21 +272,26 @@ in {
|
||||
'';
|
||||
};
|
||||
};
|
||||
anindya = {
|
||||
aendernix = {
|
||||
owner = config.krebs.users.mic92;
|
||||
nets.retiolum = {
|
||||
ip4.addr = "10.243.29.191";
|
||||
ip4.addr = "10.243.29.172";
|
||||
aliases = [
|
||||
"anindya.r"
|
||||
"aendernix.r"
|
||||
];
|
||||
tinc.pubkey = ''
|
||||
-----BEGIN RSA PUBLIC KEY-----
|
||||
MIIBCgKCAQEA8yWr01WlmM4RYuJdxvzvfdN3C5T3DOknWvK7U3y92HYgtQfYtZwu
|
||||
+J8r1fpTsdIS8wKdSEqz7Mjhb1JabJBB1fv/2mkAF4V/gkMbP0jqZ6QQL29kgkNP
|
||||
aI/+zG1yh4kEDgSn843J6XnTsJ/4Na2zmbVP1iIIQYMXyh+meWsBVR6DKV5ighjz
|
||||
4h3wKbuMmDrS50aTk8ahgWoiqcE2DTUMeprw4SIL+RTepmsCINQtAJui5Ys6AAbK
|
||||
ab6gxMzRH2txLBcTfSrbqTX3qHZHLlB9Ai5FEItWqMBxquD6OCxn8DNU+5LgGpt1
|
||||
Z37SI1U0c4uu1oo7kOSx6wYP2ZVOatys6QIDAQAB
|
||||
MIICCgKCAgEAt/dCDTvJU5jugP+5pk2CNM8X6cOnFonJv2eS253nsmKI97T9FSUa
|
||||
QDt417MoqAJNEeZw7o4ve1fmdZmtfKgmXYdDJi2HSJCJoKY6FUgVOKevtzGg4akl
|
||||
4mKTy2z59CxyIbA41MHyLq18W3NLabQ41NpWGBRt9jvHQpZfd+wI8t5IIzdvFrKo
|
||||
JSOFRbzEBL5//Hc3N/443cUg4IMyDBTemS7/jaZ2/Mn+PVZAdoIPLEZjFeWewmTF
|
||||
Jd8Bsc2thzAREYHYnawhq3PLJSebMJd91pCdkD0NB0i59VKORcQTFady3fzE9+w4
|
||||
RSTqAdBTUDuxzU/B8g1dp89/qW+fVPiFuB5Pf7D9t2DgxTDAeSXMiId/4Hwa0B1G
|
||||
QCnCedz0Qk2UdId16BTS8DSq8Pd9fawU6qCmPY6ahSiw5ZQ6odMvDISb480cKj41
|
||||
pslLjhIItTk3WEs8MwnQCzweNABuCK7GzT7CNaYm3f9pznBlOB+KfoZ6mrlzKkEK
|
||||
u+gFJXTFym0ZF0wheXO7FCJ1jp4LFHqKGS3zWQyT7isjLsbcQzpOe8/FdiFlQvlG
|
||||
vltL+5JjcahAMHc/ba+pRa5rSy8ebqf68fg4jlkT94Za13bCIHdK5w7eAXR3s/9z
|
||||
H2wZmhvajUIZAxQSgFUy+7kKWOIkWqFkGPIdmbdwTaHC88OWshvRv8ECAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
'';
|
||||
};
|
||||
@ -356,6 +364,7 @@ in {
|
||||
4frtEIGbfdKqQ6nNTvTpCrAo+WAm3NE3khTYqGe4LqX/JMoGtWXp/Ex9IdG+sflM
|
||||
mESMjuHp9vPY4aZGPtYPP93Cxv3q7gm+EfIGebajISpaG28J+XjiNNsCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = emKq1mfkW4/aCoCwmeFU3DtppKs+KsTvd9YGoFkFgdC
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -381,8 +390,6 @@ in {
|
||||
/vW066YCTe7wi+YrvrMDgkdbyfn/ecMTn2iXsTb4k9/fuO0+hsqL+isCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
'';
|
||||
# ohorn lan
|
||||
tinc.subnets = [ "fd42:4492:6a6d:500::/64" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -410,6 +417,7 @@ in {
|
||||
74oJVJgBT5M1rTH2+u+MU+kC+x2UD+jjXEjS55owFWsEM1jI4rGra+dpsDuzdGdG
|
||||
67wl9JlpDBy4Tkf2Bl3CQWZHsWDsR6jCqwIDAQAB
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = Z5+fArxMfP8oLqlHpXadkGc9ROOPHBqugAMD2czmNlJ
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -417,6 +425,11 @@ in {
|
||||
bill = {
|
||||
owner = config.krebs.users.mic92;
|
||||
nets = rec {
|
||||
internet = {
|
||||
ip4.addr = "131.159.38.191";
|
||||
ip6.addr = "2a09:80c0:38::191";
|
||||
aliases = [ "bill.i" ];
|
||||
};
|
||||
retiolum = {
|
||||
addrs = [
|
||||
config.krebs.hosts.bill.nets.retiolum.ip4.addr
|
||||
@ -426,13 +439,19 @@ in {
|
||||
aliases = [ "bill.r" ];
|
||||
tinc.pubkey = ''
|
||||
-----BEGIN RSA PUBLIC KEY-----
|
||||
MIIBCgKCAQEAzg0wJuDvsbflRKSJ7+ug9y7Gn+BH3CR44fuCPZpWmIcGIUbA6rXj
|
||||
CD8pF5heOvXNCFlEip2wqTkaCJPnUs3x8BRtORmD6OxDdmqt0xH54u7CixKzrPp9
|
||||
GIQydv+ZsGA2z3aDbmBydRPDIvYGhW68FJn10qlGRjCZ5zCl1eVEZ/wMddFXc0B8
|
||||
KDbxh7qOkjXon6EOGACVbnrnUR3F1GsIvCxX0cCDrO0P8XHwwsZiAfUwXYkiqw7t
|
||||
zPcty6Bbr34mSJbb9cFb/qQlfPWT0HVgo+Q65HVkr/64o/9tTyREZcj1dk5PpEPE
|
||||
bt7PGlOF1oPZpVFQh8S+NviHTtqrvkuISQIDAQAB
|
||||
MIICCgKCAgEAvzM5dWPpmzzmogjuZC5boNvz+MJcIO0WnE9IINBY+CLSw5ZpNDVB
|
||||
b97EG0Irs92OLJ5eesdPdF5LIyfFcFHOpPN+NdVEfLDWpFZVgOYh4BRy5+JdEk6O
|
||||
ybcxLFIdgBHxahd3W27FxXC1ALu/AInAA2b4rwYoNBi23idj8+wtL4MJldkr5QaQ
|
||||
sx8VQxIMy1xY4AbKcHdOt/nMrPoU6GnE9ObdcLys5cGUl/7Vc0NAMK6RrFQo+jfn
|
||||
2N0uWA1hZPAfZEEKP91xiOiRSx15WG3q9R/rqPmBh6l+rdPyWdRKcPVndCzVDrgw
|
||||
WWPcR9A9Yzr0ZrpEIHOfrDOqb2Ur1HlrXHZRpt55IYOKwC7ZimZzKkMj7zl1t2Rq
|
||||
nC07IJS7OI38amgLI0PSFI/Mx+mAPdYjd0fDcp8q7reOL63QT7cbrOw+cyOzNzGb
|
||||
I7U7QaHaA2unOa1EYj5Ocd6jI1IyHqQe9FkUqgTaDVU44U3WEo/KY6FZfhqSPPHs
|
||||
PsFzMj9nOWUGUr0cAn7DloIfNL49voO1C4HaiEvvhbSFIT/8suq3JznFxmP/q+Ph
|
||||
qYbXI/LXzU2Ln1Abiu9m1OfxTmEOlH9C54zyUvkAfhjcD2/aZWc76g06Oj2L6kZ6
|
||||
EC9Ku7Hk37rVOgZjtXUjuf3eUAvImknQ/JMRM3YDQgmu4iU0tJ1UnqkCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = bN+knMGCqK+HkdOucynEXxeqGFOS2u8oWLRDV/gNIZI
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -440,6 +459,11 @@ in {
|
||||
nardole = {
|
||||
owner = config.krebs.users.mic92;
|
||||
nets = rec {
|
||||
internet = {
|
||||
ip4.addr = "131.159.102.2";
|
||||
ip6.addr = "2a09:80c0:102::2";
|
||||
aliases = [ "nardole.i" ];
|
||||
};
|
||||
retiolum = {
|
||||
addrs = [
|
||||
config.krebs.hosts.nardole.nets.retiolum.ip4.addr
|
||||
@ -449,13 +473,19 @@ in {
|
||||
aliases = [ "nardole.r" ];
|
||||
tinc.pubkey = ''
|
||||
-----BEGIN RSA PUBLIC KEY-----
|
||||
MIIBCgKCAQEA05JzZLPH4+t2X8TI1nYsv4WCQ/OUmuMy9YbKUIRITE2EVA+x47Cf
|
||||
qdYPucWUpF7ap1rykxHBcPnmORO/NjAymlt25FDyyYQ2uWm17VE7P7jefAUnX7xj
|
||||
80Rt7aWCXfldQuRAbza35G+Kl50Y6ydkZYkKCbyQ8fMhuzNp6Wn/pAJD3yr+zdka
|
||||
AsIoir9Ut9/9CKayRqGF+zaIf2Lj7nl5GL8bCAVJydU98GjlnXt7iuaWCt0H7NiK
|
||||
FWOjkGhAUlQI9I6l+5ELWClpyk5X+isfbUbYaCCspZJvos+vDE8hJuH5PrH8NuJj
|
||||
fJv8HrHkcGphn/Nn1TotpHBkyMyE5h6akwIDAQAB
|
||||
MIICCgKCAgEAyYIN9FYtTmJTXUlBO4QYp9J7SZbglMEq0QCMpF9xQvCqJHl+C1vm
|
||||
NzAswlhbaK5J1spi6+zUXtYJEVQyP1xesDlVm9G+hntS7woEWtuLO7VUL9whWINb
|
||||
mO0OmYIEaWTMPIOKPTgc3tYsUhk7dw962/6I81JQczCHg1z2ItsRho/Kwi/Jo2Gj
|
||||
jnPJQoRek45+xIzlf9Jx38ntioTQIaLuSw7/lplT1cHNcefLje8FQmVEojY79Ijc
|
||||
6Ij4b9tPln8eQErw2sANS6kSUOVRnVkfeRW+3a4iRtd8SzXJ+aX5TCsq910Z1+/H
|
||||
ClK91GctU0V11s/m8LCp/Wz+o+4Z89JLxnil/ZS/6NHsaHysQPFPbx0Uh5nASF64
|
||||
RoWhzp2CSJTC9/UJKdPIpIokMIEGgKjy8Up3nY4yjoUnf6SZfzr4jmXfRmYmVaMp
|
||||
cCjbMbxBo+MjfXlGRxJAFGkS9zO9/21SEDiWqfOVThg5jbBR/q9ysRGcXndS0ea7
|
||||
NzsCbU1/0StxxmZLpBRz2MxGSHqlZbwInm9RjsXbCGa32tTiUz8VxjR3LTUMU8AP
|
||||
xpPLaIo7TIPdkDvCFL+DtXB9lE2PDpnSHbxyXKVKqxmCW1i/+msrBs/gnQ9VjzyA
|
||||
L1Ip2MBQd+CFUtaj+VdhjfulvpVcpr5e3nZe7cl38qucUp46tbVsJ3UCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = BA8uWkeHofZb5s9bNy6PjefKNZwemETWAA+Q6okKn1M
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -467,7 +497,6 @@ in {
|
||||
ip4.addr = "10.243.29.171";
|
||||
aliases = [
|
||||
"rock.r"
|
||||
"loki.r"
|
||||
];
|
||||
tinc.pubkey = ''
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
@ -518,6 +547,7 @@ in {
|
||||
W3jpl1y5zShr5Hz90QoYcUTsxg9uk/+yqKpwUySZ6Gh4q0bo5k7nkM9i8mCMfNGZ
|
||||
0UU94QmwS9RoV4Mt4pSLYRcCs0mVeEjLuIfTFHkXc6LCjBWMn8ICfeMCAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = 0O1LrgXAFOuei1NfU0vow+qUfim3htBOyCJvPrQFwHE
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -544,9 +574,8 @@ in {
|
||||
W5SCP9wx2ONhvZUkRbeihBiTN5/h3DepjOeNWd1DvE6K0Ag8SXMyBGtyKfer4ykW
|
||||
OR0iCiRQQ5QBmNuJrBLRUyfoPqFUXBATT1SrRj8vzXO1TjTmANEMFD0CAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = bXEnZa/jn2ntL0R4sMsRd7NIoHgzrzUnJ3ReJUQ8iFG
|
||||
'';
|
||||
# ohorn lan
|
||||
tinc.subnets = [ "fd42:4492:6a6d:500:f610:15d1:27a3:674b" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -621,8 +650,8 @@ in {
|
||||
nets = rec {
|
||||
internet = {
|
||||
# eva.thalheim.io
|
||||
ip4.addr = "52.59.172.193";
|
||||
ip6.addr = "2a05:d014:301:a601:ef0e:5434:d814:b8ed";
|
||||
ip4.addr = "157.90.232.92";
|
||||
ip6.addr = "2a01:4f8:1c1c:9a9::1";
|
||||
aliases = [ "eva.i" ];
|
||||
};
|
||||
retiolum = {
|
||||
@ -630,6 +659,7 @@ in {
|
||||
ip4.addr = "10.243.29.185";
|
||||
aliases = [
|
||||
"eva.r"
|
||||
"loki.r"
|
||||
"prometheus.r"
|
||||
"alertmanager.r"
|
||||
];
|
||||
@ -648,6 +678,7 @@ in {
|
||||
6uuTTsn7s0PYBJDNdccOf1Qt8fqPPgzqUKqeUciHojYDDPTC5KQh5m2PBv4I4iIR
|
||||
LnKOqNUX7UCqbdaE/tfFRG0CAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
Ed25519PublicKey = 7rbs+10zzfwOPj5RoS1i/01QXuw7uIHGOHIgsjB2fHK
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -671,6 +702,7 @@ in {
|
||||
EMp7y5QJySmKwJ/XsS6yiHeYXLFwWvfReja/IRFL4RiDSW+6ES4PTEXxoLVDpqgv
|
||||
KF44qim4UBabCMTPVtZcU3Rr+ufBALKJCwIDAQAB
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = PmZ8i6lB0Ij/d8qjA0y3QI2rMAlrTZn1ES/hUSNNWMP
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -699,6 +731,7 @@ in {
|
||||
fuXAsh5UbnE5kt6vKL5aducScatyd5FRkNumKG5ji26eZR4lZmXn380JLDInV4n7
|
||||
SODZL2fQFBnSD1wTWcq9Q/luPh4FitzJUZzHexvNxR/KBZycZJtdVw8CAwEAAQ==
|
||||
-----END RSA PUBLIC KEY-----
|
||||
Ed25519PublicKey = pjCpkZToBUBbjUNVMWfYJePZ6g7m7Ccr9WedfKEFsXD
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
@ -1,112 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.krebs.gollum;
|
||||
in
|
||||
|
||||
{
|
||||
options.krebs.gollum = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable the Gollum service.";
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
description = "IP address on which the web server will listen.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 4567;
|
||||
description = "Port on which the web server will run.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = "Content of the configuration file";
|
||||
};
|
||||
|
||||
mathjax = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable support for math rendering using MathJax";
|
||||
};
|
||||
|
||||
allowUploads = mkOption {
|
||||
type = types.nullOr (types.enum [ "dir" "page" ]);
|
||||
default = null;
|
||||
description = "Enable uploads of external files";
|
||||
};
|
||||
|
||||
emoji = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Parse and interpret emoji tags";
|
||||
};
|
||||
|
||||
branch = mkOption {
|
||||
type = types.str;
|
||||
default = "master";
|
||||
example = "develop";
|
||||
description = "Git branch to serve";
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/gollum";
|
||||
description = "Specifies the path of the repository directory. If it does not exist, Gollum will create it on startup.";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
users.users.gollum = {
|
||||
group = config.users.users.gollum.name;
|
||||
description = "Gollum user";
|
||||
home = cfg.stateDir;
|
||||
createHome = false;
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.gollum = { };
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.stateDir}' - ${config.users.users.gollum.name} ${config.users.groups.gollum.name} - -"
|
||||
];
|
||||
|
||||
systemd.services.gollum = {
|
||||
description = "Gollum wiki";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.git ];
|
||||
|
||||
preStart = ''
|
||||
# This is safe to be run on an existing repo
|
||||
git init ${cfg.stateDir}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
User = config.users.users.gollum.name;
|
||||
Group = config.users.groups.gollum.name;
|
||||
ExecStart = ''
|
||||
${pkgs.gollum}/bin/gollum \
|
||||
--port ${toString cfg.port} \
|
||||
--host ${cfg.address} \
|
||||
--config ${pkgs.writeText "gollum-config.rb" cfg.extraConfig} \
|
||||
--ref ${cfg.branch} \
|
||||
${optionalString cfg.mathjax "--mathjax"} \
|
||||
${optionalString cfg.emoji "--emoji"} \
|
||||
${optionalString (cfg.allowUploads != null) "--allow-uploads ${cfg.allowUploads}"} \
|
||||
${cfg.stateDir}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -49,6 +49,7 @@ in {
|
||||
};
|
||||
};
|
||||
enklave = {
|
||||
ci = false;
|
||||
nets = rec {
|
||||
internet = {
|
||||
ip4.addr = "88.198.164.182";
|
||||
|
@ -1,14 +1,13 @@
|
||||
{ mkDerivation, async, base, blessings, bytestring, dbus, fetchgit
|
||||
, iso8601-time, process, random, stdenv, text, time, unagi-chan
|
||||
, unix
|
||||
, iso8601-time, lib, process, random, text, time, unagi-chan, unix
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "flameshot-once";
|
||||
version = "1.3.0";
|
||||
version = "1.4.0";
|
||||
src = fetchgit {
|
||||
url = "https://cgit.krebsco.de/flameshot-once";
|
||||
sha256 = "1jy73379srnkq79i7k3al406r0kb3pxwgg6f64i89jhzxjn7zmzl";
|
||||
rev = "81ce6b9bb68c2739ec5bda067fcfaeab931d55dd";
|
||||
sha256 = "13szgsiwn29aixm5xvs1m7128y5km5xss0ry5ii5y068rc2vysw8";
|
||||
rev = "4475893c2081b3d9db4b7a54d0ce38d0914a17bf";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
isLibrary = false;
|
||||
@ -17,5 +16,5 @@ mkDerivation {
|
||||
async base blessings bytestring dbus iso8601-time process random
|
||||
text time unagi-chan unix
|
||||
];
|
||||
license = stdenv.lib.licenses.mit;
|
||||
license = lib.licenses.mit;
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ let
|
||||
"QList<${t}>${le.x4 0}${le.x4 (length xs)}${concatMapStrings le.x4 xs}";
|
||||
|
||||
XDG_CONFIG_HOME = pkgs.write "flameshot-config" {
|
||||
"/Dharkael/flameshot.ini".text = ''
|
||||
"/flameshot/flameshot.ini".text = ''
|
||||
[General]
|
||||
buttons=@Variant(\0\0\0\x7f\0\0\0\v${toQList "int" cfg.buttons})
|
||||
disabledTrayIcon=${toJSON cfg.disabledTrayIcon}
|
||||
@ -166,6 +166,8 @@ let
|
||||
savePath=${toJSON cfg.savePath}
|
||||
showDesktopNotification=${toJSON cfg.showDesktopNotification}
|
||||
showHelp=${toJSON cfg.showHelp}
|
||||
[Shortcuts]
|
||||
TYPE_COPY=Return
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -9,8 +9,7 @@ pkgs.writers.writeDashBin "generate-wallpaper" ''
|
||||
gnused
|
||||
file
|
||||
findutils
|
||||
grib2json
|
||||
imagemagick
|
||||
imagemagick6
|
||||
inkscape
|
||||
jq
|
||||
nomads-cloud
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"url": "https://github.com/NixOS/nixpkgs",
|
||||
"rev": "7a1fbc38a4b538450ac0d42aec8a3e513b4d723e",
|
||||
"date": "2021-05-16T12:16:31+02:00",
|
||||
"path": "/nix/store/iq2sy65gmwad2prm8lcdh6k5f7ywxci5-nixpkgs",
|
||||
"sha256": "0jg8dilsw0gr4jfshkk3wd50gddd11hvd836fxkw43m6m47885p7",
|
||||
"rev": "fbfb79400a08bf754e32b4d4fc3f7d8f8055cf94",
|
||||
"date": "2021-06-06T04:54:09-03:00",
|
||||
"path": "/nix/store/51dsmanfc179xy70kn2rl0qvg45cn6qr-nixpkgs",
|
||||
"sha256": "0pgyx1l1gj33g5i9kwjar7dc3sal2g14mhfljcajj8bqzzrbc3za",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"url": "https://github.com/NixOS/nixpkgs",
|
||||
"rev": "aa576357673d609e618d87db43210e49d4bb1789",
|
||||
"date": "2021-06-04T17:36:38+02:00",
|
||||
"path": "/nix/store/qqz5xq0dg8zm8blba5cg7704kbrhqhki-nixpkgs",
|
||||
"sha256": "1868s3mp0lwg1jpxsgmgijzddr90bjkncf6k6zhdjqihf0i1n2np",
|
||||
"rev": "5de44c15758465f8ddf84d541ba300b48e56eda4",
|
||||
"date": "2021-06-05T20:40:48+01:00",
|
||||
"path": "/nix/store/p5mhp3syp0aqkcrwmf8zi3ik7mgxrlgx-nixpkgs",
|
||||
"sha256": "05darjv3zc5lfqx9ck7by6p90xgbgs1ni6193pw5zvi7xp2qlg4x",
|
||||
"fetchSubmodules": false,
|
||||
"deepClone": false,
|
||||
"leaveDotGit": false
|
||||
|
@ -4,7 +4,6 @@ with import <stockholm/lib>;
|
||||
|
||||
let
|
||||
name = "radio";
|
||||
mainUser = config.users.extraUsers.mainUser;
|
||||
|
||||
music_dir = "/home/radio/music";
|
||||
|
||||
@ -84,6 +83,17 @@ let
|
||||
}'
|
||||
'';
|
||||
|
||||
set_irc_topic = pkgs.writeDash "set_irc_topic" ''
|
||||
${pkgs.curl}/bin/curl -fsSv --unix-socket /home/radio/reaktor.sock http://z/ \
|
||||
-H content-type:application/json \
|
||||
-d "$(${pkgs.jq}/bin/jq -n \
|
||||
--arg text "$1" '{
|
||||
command:"TOPIC",
|
||||
params:["#the_playlist",$text]
|
||||
}'
|
||||
)"
|
||||
'';
|
||||
|
||||
write_to_irc = pkgs.writeDash "write_to_irc" ''
|
||||
${pkgs.curl}/bin/curl -fsSv --unix-socket /home/radio/reaktor.sock http://z/ \
|
||||
-H content-type:application/json \
|
||||
@ -128,11 +138,25 @@ in {
|
||||
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
group = "radio";
|
||||
user = "radio";
|
||||
musicDirectory = "${music_dir}";
|
||||
dataDir = "/home/radio/state"; # TODO create this somwhere
|
||||
extraConfig = ''
|
||||
log_level "default"
|
||||
auto_update "yes"
|
||||
volume_normalization "yes"
|
||||
|
||||
audio_output {
|
||||
type "httpd"
|
||||
name "lassulus radio mp3"
|
||||
encoder "lame" # optional
|
||||
port "8002"
|
||||
quality "5.0" # do not define if bitrate is defined
|
||||
# bitrate "128" # do not define if quality is defined
|
||||
format "44100:16:2"
|
||||
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
|
||||
tags "yes" # httpd supports sending tags to listening streams.
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "httpd"
|
||||
@ -152,6 +176,7 @@ in {
|
||||
tables = {
|
||||
filter.INPUT.rules = [
|
||||
{ predicate = "-p tcp --dport 8000"; target = "ACCEPT"; }
|
||||
{ predicate = "-p tcp --dport 8002"; target = "ACCEPT"; }
|
||||
{ predicate = "-i retiolum -p tcp --dport 8001"; target = "ACCEPT"; }
|
||||
];
|
||||
};
|
||||
@ -200,10 +225,10 @@ in {
|
||||
${pkgs.mpc_cli}/bin/mpc idle player > /dev/null
|
||||
${pkgs.mpc_cli}/bin/mpc current -f %file%
|
||||
done | while read track; do
|
||||
listeners=$(${pkgs.iproute}/bin/ss -Hno state established 'sport = :8000' | wc -l)
|
||||
listeners=$(${pkgs.iproute}/bin/ss -Hno state established 'sport = :8000' | grep '^mptcp' | wc -l)
|
||||
echo "$(date -Is)" "$track" | tee -a "$HISTORY_FILE"
|
||||
echo "$(tail -$LIMIT "$HISTORY_FILE")" > "$HISTORY_FILE"
|
||||
${write_to_irc} "playing: $track listeners: $listeners"
|
||||
${set_irc_topic} "playing: $track listeners: $listeners"
|
||||
done
|
||||
'';
|
||||
in {
|
||||
@ -349,7 +374,7 @@ in {
|
||||
};
|
||||
services.syncthing.declarative.folders."the_playlist" = {
|
||||
path = "/home/radio/music/the_playlist";
|
||||
devices = [ "mors" "phone" "prism" "xerxes" ];
|
||||
devices = [ "mors" "phone" "prism" ];
|
||||
};
|
||||
krebs.permown."/home/radio/music/the_playlist" = {
|
||||
owner = "radio";
|
||||
|
Loading…
Reference in New Issue
Block a user