diff options
Diffstat (limited to 'modules/postfwd.nix')
-rw-r--r-- | modules/postfwd.nix | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/modules/postfwd.nix b/modules/postfwd.nix index 3edff44d..93729978 100644 --- a/modules/postfwd.nix +++ b/modules/postfwd.nix | |||
@@ -9,6 +9,10 @@ in { | |||
9 | services.postfwd = with types; { | 9 | services.postfwd = with types; { |
10 | enable = mkEnableOption "postfwd3 - postfix firewall daemon"; | 10 | enable = mkEnableOption "postfwd3 - postfix firewall daemon"; |
11 | 11 | ||
12 | cache = mkEnableOption "postfwd3 cache" // { | ||
13 | default = true; | ||
14 | }; | ||
15 | |||
12 | rules = mkOption { | 16 | rules = mkOption { |
13 | type = lines; | 17 | type = lines; |
14 | default = ""; | 18 | default = ""; |
@@ -26,7 +30,7 @@ in { | |||
26 | serviceConfig = { | 30 | serviceConfig = { |
27 | Type = "forking"; | 31 | Type = "forking"; |
28 | 32 | ||
29 | ExecStart = "${pkgs.postfwd}/bin/postfwd3 ${escapeShellArgs [ | 33 | ExecStart = "${pkgs.postfwd}/bin/postfwd3 ${escapeShellArgs ([ |
30 | "-vv" | 34 | "-vv" |
31 | "--daemon" "--user" "postfwd" "--group" "postfwd" | 35 | "--daemon" "--user" "postfwd" "--group" "postfwd" |
32 | "--pidfile" "/run/postfwd3/postfwd3.pid" | 36 | "--pidfile" "/run/postfwd3/postfwd3.pid" |
@@ -35,11 +39,14 @@ in { | |||
35 | "--save_rates" "/var/lib/postfwd/rates" | 39 | "--save_rates" "/var/lib/postfwd/rates" |
36 | "--save_groups" "/var/lib/postfwd/groups" | 40 | "--save_groups" "/var/lib/postfwd/groups" |
37 | "--summary" "3600" | 41 | "--summary" "3600" |
42 | "--file" (pkgs.writeText "postfwd3-rules" cfg.rules) | ||
43 | ] ++ lib.optionals cfg.cache [ | ||
38 | "--cache" "600" | 44 | "--cache" "600" |
39 | "--cache_proto" "unix" | 45 | "--cache_proto" "unix" |
40 | "--cache_port" "/run/postfwd3/cache.sock" | 46 | "--cache_port" "/run/postfwd3/cache.sock" |
41 | "--file" (pkgs.writeText "postfwd3-rules" cfg.rules) | 47 | ] ++ lib.optionals (!cfg.cache) [ |
42 | ]}"; | 48 | "--cache" "0" |
49 | ])}"; | ||
43 | PIDFile = "/run/postfwd3/postfwd3.pid"; | 50 | PIDFile = "/run/postfwd3/postfwd3.pid"; |
44 | 51 | ||
45 | Restart = "always"; | 52 | Restart = "always"; |
@@ -79,5 +86,19 @@ in { | |||
79 | IPAddressDeny = "any"; | 86 | IPAddressDeny = "any"; |
80 | }; | 87 | }; |
81 | }; | 88 | }; |
89 | |||
90 | environment.systemPackages = [ | ||
91 | (pkgs.postfwd.overrideAttrs (oldAttrs: { | ||
92 | nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [ pkgs.makeWrapper pkgs.coreutils ]; | ||
93 | |||
94 | postInstall = '' | ||
95 | ${oldAttrs.postInstall or ""} | ||
96 | |||
97 | wrapProgram $out/bin/postfwd3 \ | ||
98 | --add-flags "--proto unix --port /run/postfwd3/postfwd3.sock" | ||
99 | ln -s postfwd3 $out/bin/postfwd | ||
100 | ''; | ||
101 | })) | ||
102 | ]; | ||
82 | }; | 103 | }; |
83 | } | 104 | } |