{ lib, pkgs, config, ... }: let cfg = config.myServices.irc; in { options.myServices = { ircCerts = lib.mkOption { description = "Default ircconfigurations for certificates as accepted by acme"; }; irc.enable = lib.mkOption { type = lib.types.bool; default = false; description = '' Whether to enable irc stuff. ''; }; }; config = lib.mkIf cfg.enable { services.duplyBackup.profiles.irc = { rootDir = "/var/lib/bitlbee"; }; security.acme.certs."irc" = config.myServices.ircCerts // { domain = "irc.immae.eu"; postRun = '' systemctl restart stunnel.service ''; }; networking.firewall.allowedTCPPorts = [ 6697 ]; services.bitlbee = with pkgs; { enable = true; authMode = "Registered"; libpurple_plugins = [ purple-hangouts purple-matrix ]; plugins = [ bitlbee-mastodon bitlbee-facebook bitlbee-discord bitlbee-steam ]; }; services.stunnel = { enable = true; servers = { bitlbee = { accept = 6697; connect = 6667; cert = "${config.security.acme.certs.irc.directory}/full.pem"; }; }; }; }; }