diff options
Diffstat (limited to 'krebs/3modules/ergo.nix')
| -rw-r--r-- | krebs/3modules/ergo.nix | 53 | 
1 files changed, 49 insertions, 4 deletions
| diff --git a/krebs/3modules/ergo.nix b/krebs/3modules/ergo.nix index 0ce0345d8..3153e4cfc 100644 --- a/krebs/3modules/ergo.nix +++ b/krebs/3modules/ergo.nix @@ -6,6 +6,7 @@          type = (pkgs.formats.json {}).type;          description = ''            Ergo IRC daemon configuration file. +          https://raw.githubusercontent.com/ergochat/ergo/master/default.yaml          '';          default = {            network = { @@ -34,19 +35,34 @@              };            };            datastore = { +            autoupgrade = true;              path = "/var/lib/ergo/ircd.db";            };            accounts = {              authentication-enabled = true;              registration = {                enabled = true; -              email-verification = { -                enabled = false; +              allow-before-connect = true; +              throttling = { +                enabled = true; +                duration = "10m"; +                max-attempts = 30;                }; +              bcrypt-cost = 4; +              email-verification.enabled = false; +            }; +            multiclient = { +              enabled = true; +              allowed-by-default = true; +              always-on = "opt-in"; +              auto-away = "opt-in";              };            };            channels = { -            default-modes = "+nt"; +            default-modes = "+ntC"; +            registration = { +              enabled = true; +            };            };            limits = {              nicklen = 32; @@ -56,6 +72,31 @@              kicklen = 390;              topiclen = 390;            }; +          history = { +            enabled = true; +            channel-length = 2048; +            client-length = 256; +            autoresize-window = "3d"; +            autoreplay-on-join = 0; +            chathistory-maxmessages = 100; +            znc-maxmessages = 2048; +            restrictions = { +              expire-time = "1w"; +              query-cutoff = "none"; +              grace-period = "1h"; +            }; +            retention = { +              allow-individual-delete = false; +              enable-account-indexing = false; +            }; +            tagmsg-storage = { +              default = false; +              whitelist = [ +                "+draft/react" +                "+react" +              ]; +            }; +          };          };        };      }; @@ -64,13 +105,17 @@      cfg = config.krebs.ergo;      configFile = pkgs.writeJSON "ergo.conf" cfg.config;    in lib.mkIf cfg.enable ({ +    environment.etc."ergo.yaml".source = configFile;      krebs.ergo.config =        lib.mapAttrsRecursive (_: lib.mkDefault) options.krebs.ergo.config.default;      systemd.services.ergo = {        description = "Ergo IRC daemon";        wantedBy = [ "multi-user.target" ]; +      reloadIfChanged = true; +      restartTriggers = [ configFile ];        serviceConfig = { -        ExecStart = "${pkgs.ergo}/bin/ergo run --conf ${configFile}"; +        ExecStart = "${pkgs.ergo}/bin/ergo run --conf /etc/ergo.yaml"; +        ExecReload = "${pkgs.util-linux}/bin/kill -HUP $MAINPID";          DynamicUser = true;          StateDirectory = "ergo";        }; | 
