summaryrefslogtreecommitdiff
path: root/config/networking/services/firewall/default.nix
diff options
context:
space:
mode:
authorquentin@aristote.fr <quentin@aristote.fr>2023-05-18 13:39:06 +0200
committerquentin@aristote.fr <quentin@aristote.fr>2023-05-20 20:13:45 +0200
commit925fc182e5ea9b87c3a62e80f5a20be4e827cd3b (patch)
treedc3772ee2a298fd6f39b8ab355aaecd8d5da593e /config/networking/services/firewall/default.nix
parent001f53d081b78c5145cd7449f08f783bb56f35e3 (diff)
config: networking: hostapd: disable low-level bridging
Diffstat (limited to 'config/networking/services/firewall/default.nix')
-rw-r--r--config/networking/services/firewall/default.nix31
1 files changed, 31 insertions, 0 deletions
diff --git a/config/networking/services/firewall/default.nix b/config/networking/services/firewall/default.nix
new file mode 100644
index 0000000..878e7cc
--- /dev/null
+++ b/config/networking/services/firewall/default.nix
@@ -0,0 +1,31 @@
+{ config, lib, ... }:
+
+let
+ # { any } -> (string -> any -> [ string ]) -> string
+ mapAttrsStrings = attrs: f: lib.concatStrings (lib.mapAttrsToList f attrs);
+ bracket = title: content:
+ ''
+ ${title} {
+ '' + content + ''
+ }
+ '';
+in {
+ boot.kernel.sysctl = { "net.ipv4.conf.all.forwarding" = true; };
+
+ networking = {
+ nftables = {
+ enable = true;
+ ruleset = mapAttrsStrings
+ (import ./ruleset.nix config.personal.networking.networks)
+ (family: tables:
+ mapAttrsStrings tables (tableName: chains:
+ bracket "table ${family} ${tableName}" (mapAttrsStrings chains
+ (chainName: chain:
+ bracket "chain ${chainName}" (lib.optionalString (chain ? base)
+ (with chain.base; ''
+ type ${type} hook ${hook} priority ${priority}; policy ${policy};
+ '') + chain.rules)))));
+ };
+ firewall.enable = lib.mkForce false;
+ };
+}