summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2021-11-30 23:30:54 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2021-11-30 23:33:34 +0100
commit1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4 (patch)
treed373895b8ab8177aa20b1a3eaa082771d01e4a01
parentab5a3f8226b52b4ee32ea9dcb33d007b39a1e566 (diff)
downloadnixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar.gz
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar.bz2
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar.lz
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar.xz
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.tar.zst
nixpkgs-1f726635ee4f0a5faebc4c9b9787bc0d76d0ace4.zip
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.
-rw-r--r--nixos/modules/services/networking/charybdis.nix9
1 files changed, 8 insertions, 1 deletions
diff --git a/nixos/modules/services/networking/charybdis.nix b/nixos/modules/services/networking/charybdis.nix
index 43829d36e41..ff09c0160cb 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;
         };