summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2018-11-06 18:25:47 +0000
committerGitHub <noreply@github.com>2018-11-06 18:25:47 +0000
commit159a5f31bc85491dda380d778cab2f6b553206ba (patch)
tree18fac8b1da71693a0ec00f550681e53199a148bc
parent15995ea2b29d7253a74f75948ce881f29eeeafa1 (diff)
parentc853b3482455fccd949b5fd0bc16b44f8bc72f23 (diff)
downloadnixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.gz
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.bz2
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.lz
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.xz
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.zst
nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.zip
Merge pull request #49792 from griff/rspamd-multifile-enable
nixos/rspamd: Fix enable for locals and overrides
-rw-r--r--nixos/modules/services/mail/rspamd.nix9
-rw-r--r--nixos/tests/rspamd.nix37
2 files changed, 34 insertions, 12 deletions
diff --git a/nixos/modules/services/mail/rspamd.nix b/nixos/modules/services/mail/rspamd.nix
index d83d6f1f750c..78a2f37b6ded 100644
--- a/nixos/modules/services/mail/rspamd.nix
+++ b/nixos/modules/services/mail/rspamd.nix
@@ -153,9 +153,10 @@ let
       ${cfg.extraConfig}
    '';
 
+  filterFiles = files: filterAttrs (n: v: v.enable) files;
   rspamdDir = pkgs.linkFarm "etc-rspamd-dir" (
-    (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) cfg.locals) ++
-    (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) cfg.overrides) ++
+    (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) (filterFiles cfg.locals)) ++
+    (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) (filterFiles cfg.overrides)) ++
     (optional (cfg.localLuaRules != null) { name = "rspamd.local.lua"; path = cfg.localLuaRules; }) ++
     [ { name = "rspamd.conf"; path = rspamdConfFile; } ]
   );
@@ -207,7 +208,7 @@ in
       };
 
       locals = mkOption {
-        type = with types; loaOf (submodule (configFileModule "locals"));
+        type = with types; attrsOf (submodule (configFileModule "locals"));
         default = {};
         description = ''
           Local configuration files, written into <filename>/etc/rspamd/local.d/{name}</filename>.
@@ -220,7 +221,7 @@ in
       };
 
       overrides = mkOption {
-        type = with types; loaOf (submodule (configFileModule "overrides"));
+        type = with types; attrsOf (submodule (configFileModule "overrides"));
         default = {};
         description = ''
           Overridden configuration files, written into <filename>/etc/rspamd/override.d/{name}</filename>.
diff --git a/nixos/tests/rspamd.nix b/nixos/tests/rspamd.nix
index af765f37b91b..a744760412d5 100644
--- a/nixos/tests/rspamd.nix
+++ b/nixos/tests/rspamd.nix
@@ -110,16 +110,33 @@ in
       '';
       services.rspamd = {
         enable = true;
-        locals."groups.conf".text = ''
-          group "cows" {
-            symbol {
-              NO_MUH = {
-                weight = 1.0;
-                description = "Mails should not muh";
+        locals = {
+          "antivirus.conf" = mkIf false { text = ''
+              clamav {
+                action = "reject";
+                symbol = "CLAM_VIRUS";
+                type = "clamav";
+                log_clean = true;
+                servers = "/run/clamav/clamd.ctl";
+              }
+            '';};
+          "redis.conf" = {
+            enable = false;
+            text = ''
+              servers = "127.0.0.1";
+            '';
+          };
+          "groups.conf".text = ''
+            group "cows" {
+              symbol {
+                NO_MUH = {
+                  weight = 1.0;
+                  description = "Mails should not muh";
+                }
               }
             }
-          }
-        '';
+          '';
+        };
         localLuaRules = pkgs.writeText "rspamd.local.lua" ''
           local rspamd_logger = require "rspamd_logger"
           rspamd_config.NO_MUH = {
@@ -152,6 +169,10 @@ in
       $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
       $machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua"));
       $machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf"));
+      # Verify that redis.conf was not written
+      $machine->fail("cat /etc/rspamd/local.d/redis.conf >&2");
+      # Verify that antivirus.conf was not written
+      $machine->fail("cat /etc/rspamd/local.d/antivirus.conf >&2");
       ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
       $machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping"));
       $machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat"));