From 1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 30 Nov 2021 23:30:54 +0100 Subject: [PATCH] nixos/charybdis: implement reload functionality IRC daemons are highly stateful daemons, so allow config changes without kicking all server and client connections. Basically a port of 60c62214f5a3c7db6aa30d8a8e02c863b6abcf0a. --- nixos/modules/services/networking/charybdis.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/charybdis.nix b/nixos/modules/services/networking/charybdis.nix index 43829d36e417..ff09c0160cb6 100644 --- a/nixos/modules/services/networking/charybdis.nix +++ b/nixos/modules/services/networking/charybdis.nix @@ -85,14 +85,21 @@ in "d ${cfg.statedir} - ${cfg.user} ${cfg.group} - -" ]; + environment.etc."charybdis/ircd.conf".source = configFile; + systemd.services.charybdis = { description = "Charybdis IRC daemon"; wantedBy = [ "multi-user.target" ]; + reloadIfChanged = true; + restartTriggers = [ + configFile + ]; environment = { BANDB_DBPATH = "${cfg.statedir}/ban.db"; }; serviceConfig = { - ExecStart = "${charybdis}/bin/charybdis -foreground -logfile /dev/stdout -configfile ${configFile}"; + ExecStart = "${charybdis}/bin/charybdis -foreground -logfile /dev/stdout -configfile /etc/charybdis/ircd.conf"; + ExecReload = "${coreutils}/bin/kill -HUP $MAINPID"; Group = cfg.group; User = cfg.user; };