summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2021-05-31 03:21:51 +0200
committerMartin Weinelt <hexa@darmstadt.ccc.de>2021-06-16 02:09:04 +0200
commit6ee61426da640dfb9813c3791cd245dc0bc4b6de (patch)
tree7a672bf99d8da765be8620dcc5a1fec34bf421b7
parentsolanum: remove obsolete BANDB settings/patches (diff)
downloadnixpkgs-6ee61426da640dfb9813c3791cd245dc0bc4b6de.tar.gz
nixos/solanum: implement reload and allow config changes
Reload only works with a static configuration path as there is no way to pass the dynamically generated config path to a running solanum instance, therefore we symlink the configuration to /etc/solanum/ircd.conf. But that will prevent reloads of the ircd, because the systemd unit wouldn't change when the configuration changes. That is why we add the actual location of the config file to restartTriggers and enable reloadIfChanged, so changes will not restart, but reload on changes. (cherry picked from commit 60c62214f5a3c7db6aa30d8a8e02c863b6abcf0a)
-rw-r--r--nixos/modules/services/networking/solanum.nix12
1 files changed, 10 insertions, 2 deletions
diff --git a/nixos/modules/services/networking/solanum.nix b/nixos/modules/services/networking/solanum.nix
index b6496fb8b35a..dc066a245494 100644
--- a/nixos/modules/services/networking/solanum.nix
+++ b/nixos/modules/services/networking/solanum.nix
@@ -2,7 +2,7 @@
let
inherit (lib) mkEnableOption mkIf mkOption types;
- inherit (pkgs) solanum;
+ inherit (pkgs) solanum util-linux;
cfg = config.services.solanum;
configFile = pkgs.writeText "solanum.conf" cfg.config;
@@ -78,12 +78,20 @@ in
config = mkIf cfg.enable (lib.mkMerge [
{
+
+ environment.etc."solanum/ircd.conf".source = configFile;
+
systemd.services.solanum = {
description = "Solanum IRC daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
+ reloadIfChanged = true;
+ restartTriggers = [
+ configFile
+ ];
serviceConfig = {
- ExecStart = "${solanum}/bin/solanum -foreground -logfile /dev/stdout -configfile ${configFile} -pidfile /run/solanum/ircd.pid";
+ ExecStart = "${solanum}/bin/solanum -foreground -logfile /dev/stdout -configfile /etc/solanum/ircd.conf -pidfile /run/solanum/ircd.pid";
+ ExecReload = "${util-linux}/bin/kill -HUP $MAINPID";
DynamicUser = true;
User = "solanum";
StateDirectory = "solanum";