···
cfg = config.services.clamav;
11
-
clamdConfigFile = pkgs.writeText "clamd.conf" ''
12
-
DatabaseDirectory ${stateDir}
13
-
LocalSocket ${runDir}/clamd.ctl
14
-
PidFile ${runDir}/clamd.pid
15
-
TemporaryDirectory /tmp
11
+
toKeyValue = generators.toKeyValue {
12
+
mkKeyValue = generators.mkKeyValueDefault {} " ";
13
+
listsAsDuplicateKeys = true;
19
-
${cfg.daemon.extraConfig}
22
-
freshclamConfigFile = pkgs.writeText "freshclam.conf" ''
23
-
DatabaseDirectory ${stateDir}
25
-
Checks ${toString cfg.updater.frequency}
27
-
${cfg.updater.extraConfig}
29
-
DatabaseMirror database.clamav.net
16
+
clamdConfigFile = pkgs.writeText "clamd.conf" (toKeyValue cfg.daemon.settings);
17
+
freshclamConfigFile = pkgs.writeText "freshclam.conf" (toKeyValue cfg.updater.settings);
34
-
(mkRenamedOptionModule [ "services" "clamav" "updater" "config" ] [ "services" "clamav" "updater" "extraConfig" ])
21
+
(mkRemovedOptionModule [ "services" "clamav" "updater" "config" ] "Use services.clamav.updater.settings instead.")
22
+
(mkRemovedOptionModule [ "services" "clamav" "updater" "extraConfig" ] "Use services.clamav.updater.settings instead.")
23
+
(mkRemovedOptionModule [ "services" "clamav" "daemon" "extraConfig" ] "Use services.clamav.daemon.settings instead.")
···
enable = mkEnableOption "ClamAV clamd daemon";
42
-
extraConfig = mkOption {
31
+
settings = mkOption {
32
+
type = with types; attrsOf (oneOf [ bool int str (listOf str) ]);
46
-
Extra configuration for clamd. Contents will be added verbatim to the
35
+
ClamAV configuration. Refer to <link xlink:href="https://linux.die.net/man/5/clamd.conf"/>,
36
+
for details on supported values.
···
71
-
extraConfig = mkOption {
60
+
settings = mkOption {
61
+
type = with types; attrsOf (oneOf [ bool int str (listOf str) ]);
75
-
Extra configuration for freshclam. Contents will be added verbatim to the
64
+
freshclam configuration. Refer to <link xlink:href="https://linux.die.net/man/5/freshclam.conf"/>,
65
+
for details on supported values.
···
users.groups.${clamavGroup} =
{ gid = config.ids.gids.clamav; };
85
+
services.clamav.daemon.settings = {
86
+
DatabaseDirectory = stateDir;
87
+
LocalSocket = "${runDir}/clamd.ctl";
88
+
PidFile = "${runDir}/clamd.pid";
89
+
TemporaryDirectory = "/tmp";
94
+
services.clamav.updater.settings = {
95
+
DatabaseDirectory = stateDir;
97
+
Checks = cfg.updater.frequency;
98
+
DatabaseMirror = [ "database.clamav.net" ];
environment.etc."clamav/freshclam.conf".source = freshclamConfigFile;
environment.etc."clamav/clamd.conf".source = clamdConfigFile;