summary refs log tree commit diff
path: root/modules/common.nix
diff options
context:
space:
mode:
authorMel <mel@rnrd.eu>2026-05-01 22:58:51 +0200
committerMel <mel@rnrd.eu>2026-05-01 23:24:10 +0200
commita205d5b3900fd0024fc94a1fa751ec96cc3f6ed8 (patch)
treef6f698cd3f0c859cf4409a7f8387fbeb029a8115 /modules/common.nix
parent5020b67d56c21f6fc58bc7b0d73d75fc07c64acf (diff)
downloadnetwork-a205d5b3900fd0024fc94a1fa751ec96cc3f6ed8.tar.zst
network-a205d5b3900fd0024fc94a1fa751ec96cc3f6ed8.zip
Add Docker 29 for nftables, clean-up daemon options
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'modules/common.nix')
-rw-r--r--modules/common.nix28
1 files changed, 25 insertions, 3 deletions
diff --git a/modules/common.nix b/modules/common.nix
index 9ad59aa..5766037 100644
--- a/modules/common.nix
+++ b/modules/common.nix
@@ -13,7 +13,7 @@
   ];
 
   boot.kernelPackages = pkgs.linuxPackages_latest;
-  
+
   # fish enables this by default,
   # it makes every nixos rebuild very slow.
   documentation.man.generateCaches = false;
@@ -49,22 +49,44 @@
   };
 
   boot.kernel.sysctl = {
+    # turn all of the ip forwarding on
     "net.ipv4.ip_forward" = lib.mkDefault 1;
+    "net.ipv6.conf.all.forwarding" = lib.mkDefault 1;
+    "net.ipv6.conf.default.forwarding" = lib.mkDefault 1;
   };
 
   services.envfs.enable = true;
 
   virtualisation = {
+    oci-containers.backend = "docker";
+    # we need these settings to allow our networks to be ipv6-enabled and
+    # to make docker support nftables directly without any compat layers.
+    # we also ignore the default bridge, because it's setup
+    # is a lot more complicated...
     docker = {
       enable = true;
       autoPrune.enable = true;
 
+      # required to support nftables natively.
+      # see: https://docs.docker.com/engine/network/firewall-nftables
+      package = pkgs.docker_29;
+      extraPackages = [ pkgs.nftables ];
+
       daemon.settings = {
-        metrics-addr = "${me.tailscale.ip}:9323";
+        "metrics-addr" = "${me.tailscale.ip}:9323";
+
+        # ipv6 support
+        "ipv6" = true;
+        "ip6tables" = true;
+
+        # nftables options
+        "experimental" = true;
+        "ip-forward" = true;
+        "firewall-backend" = "nftables";
       };
     };
-    oci-containers.backend = "docker";
   };
+  systemd.services.docker.path = [ pkgs.nftables ]; # add nft tool into docker
 
   services = {
     openssh = {