blob: 39bbdd0eb74144c4c203bddeb2abbf49ff6dc75b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
{ lib, pkgs, config, ... }:
let
ssl = {
cert = "/var/lib/acme/${config.networking.domain}/fullchain.pem";
key = "/var/lib/acme/${config.networking.domain}/key.pem";
};
ports = import ./Ports.nix;
mkPlugin = path: settings: {
plugin = "${pkgs.uhub}/plugins/${path}";
inherit settings;
};
motdFile = pkgs.writeText "motd" ''
Meshheads write code.
'';
rulesFile = pkgs.writeText "rules" ''
1. x
2. (λx.M)
3. (M N)
4. Profit.
'';
in {
networking.firewall.allowedUDPPorts = [ ports.meshhub ];
networking.firewall.allowedTCPPorts = [ ports.meshhub ];
services.uhub = {
"meshhub" = {
enable = true;
enableTLS = false;
settings = {
hub_name = "meshhub";
hub_description = "vaporware is dead. long live vaporware";
server_port = toString ports.meshhub;
server_bind_addr = "any";
max_users = 14; # we only have 14 users in meshheads chat
tls_private_key = ssl.key;
tls_certificate = ssl.cert;
tls_enable = "no";
tls_require = "no";
};
plugins = lib.attrsets.mapAttrsToList mkPlugin {
#"mod_logging.so" = {
# file = "/var/log/uhub/meshhub.log";
#};
"mod_welcome.so" = {
motd = "${motdFile}";
rules = "${rulesFile}";
};
"mod_chat_history.so" = {
history_max = "200";
history_default = "10";
history_connect = "5";
};
};
};
};
}
|