mod: firewall changes

This commit is contained in:
2026-10-16 19:15:55 -04:00
parent 3fa4fb8ef7
commit 9056f6dcdb
2 changed files with 25 additions and 1 deletions
+4 -1
View File
@@ -151,7 +151,10 @@ in {
# Core networking module (see ../../networking/core.nix) # Core networking module (see ../../networking/core.nix)
network = { network = {
firewall.enable = true; firewall = {
enable = true;
firewalld.enable = true;
};
networkManager.enable = true; networkManager.enable = true;
}; };
+21
View File
@@ -8,6 +8,12 @@ in {
options.network = { options.network = {
firewall = { firewall = {
enable = lib.mkEnableOption "system firewall"; enable = lib.mkEnableOption "system firewall";
firewalld.enable = lib.mkEnableOption "firewalld with its nftables backend";
nftables.extraConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = "Rules inside a separate inet nftables table alongside firewalld";
};
tcpPorts = { tcpPorts = {
ssh.enable = lib.mkEnableOption "SSH service port (22)"; ssh.enable = lib.mkEnableOption "SSH service port (22)";
web.enable = lib.mkEnableOption "common web service ports (80, 443)"; web.enable = lib.mkEnableOption "common web service ports (80, 443)";
@@ -42,6 +48,21 @@ in {
}; };
}; };
config = { config = {
assertions = [
{
assertion = cfg.firewall.nftables.extraConfig == "" || cfg.firewall.firewalld.enable;
message = "network.firewall.nftables.extraConfig requires network.firewall.firewalld.enable";
}
];
services.firewalld.enable = cfg.firewall.firewalld.enable;
networking.nftables = lib.mkIf cfg.firewall.firewalld.enable {
enable = true;
flushRuleset = false;
tables."local-extra" = lib.mkIf (cfg.firewall.nftables.extraConfig != "") {
family = "inet";
content = cfg.firewall.nftables.extraConfig;
};
};
networking.firewall = { networking.firewall = {
enable = cfg.firewall.enable; enable = cfg.firewall.enable;
allowedTCPPorts = lib.flatten [ allowedTCPPorts = lib.flatten [