hermitcollective-nix-server/services/irc.nix

151 lines
3.3 KiB
Nix

{
services = {
ergochat = {
enable = true;
settings = {
oper-classes = {
chat-moderator = {
title = "Moderator";
capabilities = [
"kill"
"ban"
"nofakelag"
"relaymsg"
"vhosts"
"sajoin"
"samode"
"snomasks"
"roleplay"
];
};
server-admin = {
title = "Server Admin";
extends = "chat-moderator";
capabilities = [
"rehash"
"accreg"
"chanreg"
"history"
"defcon"
"massmessage"
"metadata"
];
};
};
opers = {
admin = {
class = "server-admin";
hidden = true;
whois-line = "Server admin";
password = "$2a$04$UYqtziFKyT2S/ujHETvOFebxKH8TVeKuRpH8FgFZhcbF4UuogOcz2";
};
};
accounts = {
authentication-enabled = true;
multiclient = {
allowed-by-default = true;
always-on = "opt-out";
auto-away = "opt-out";
enabled = true;
};
registration = {
allow-before-connect = true;
bcrypt-cost = 4;
email-verification = {
enabled = false;
};
enabled = true;
throttling = {
duration = "10m";
enabled = true;
max-attempts = 30;
};
};
};
channels = {
default-modes = "+ntC";
registration = {
enabled = true;
};
};
datastore = {
autoupgrade = true;
path = "/var/lib/ergo/ircd.db";
};
history = {
autoreplay-on-join = 0;
autoresize-window = "3d";
channel-length = 2048;
chathistory-maxmessages = 100;
client-length = 256;
enabled = true;
restrictions = {
expire-time = "1w";
grace-period = "1h";
query-cutoff = "none";
};
retention = {
allow-individual-delete = false;
enable-account-indexing = false;
};
tagmsg-storage = {
default = false;
whitelist = [
"+draft/react"
"+react"
];
};
znc-maxmessages = 2048;
};
limits = {
awaylen = 390;
channellen = 64;
identlen = 20;
kicklen = 390;
nicklen = 32;
topiclen = 390;
};
network = {
name = "HermitCollective";
};
server = {
casemapping = "permissive";
check-ident = false;
enforce-utf = true;
forward-confirm-hostnames = false;
ip-cloaking = {
enabled = true;
enabled-for-always-on = true;
netname = "irc";
cidr-len-ipv4 = 32;
cidr-len-ipv6 = 64;
num-bits = 64;
};
ip-limits = {
count = false;
throttle = false;
};
listeners = {
":6667" = { };
};
lookup-hostnames = false;
max-sendq = "1M";
name = "irc.hermitcollective.net";
relaymsg = {
enabled = false;
};
};
};
};
nginx.virtualHosts."irc.hermitcollective.net" = {
forceSSL = true;
enableACME = true;
locations."/" = {
recommendedProxySettings = true;
proxyPass = "http://localhost:6667";
proxyWebsockets = true; # needed if you need to use WebSocket
};
};
};
}