diff --git a/build01/configuration.nix b/build01/configuration.nix
index 7814668..bee86a5 100644
--- a/build01/configuration.nix
+++ b/build01/configuration.nix
@@ -12,9 +12,7 @@
 {
   imports = [
     ../roles/common.nix
-    ../roles/hetzner/amd.nix
-    ../roles/hetzner/network.nix
-    ../roles/raid.nix
+    ../roles/zfs-raid.nix
     ../roles/builder
     ../roles/remote-builder/aarch64-nixos-community.nix
   ];
@@ -30,7 +28,7 @@
   # Emulate armv7 until we have proper builders
   boot.binfmt.emulatedSystems = [ "armv7l-linux" ];
 
-  networking.nix-community.ipv6.address = "2a01:4f8:13b:2ceb::1";
+  systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f8:13b:2ceb::1/64";
 
   system.stateVersion = "20.03";
 }
diff --git a/build02/configuration.nix b/build02/configuration.nix
index b626553..b2d242b 100644
--- a/build02/configuration.nix
+++ b/build02/configuration.nix
@@ -3,9 +3,7 @@
 {
   imports = [
     ../roles/common.nix
-    ../roles/hetzner/amd.nix
-    ../roles/hetzner/network.nix
-    ../roles/raid.nix
+    ../roles/zfs-raid.nix
     ../roles/remote-builder/aarch64-build04.nix
   ];
 
@@ -19,10 +17,9 @@
 
   networking.hostName = "build02";
   networking.hostId = "af9ccc71";
-  networking.useDHCP = false;
   networking.nameservers = [ "1.1.1.1" "1.0.0.1" ];
 
-  networking.nix-community.ipv6.address = "2a01:4f9:4a:2b02::1";
+  systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f9:4a:2b02::1/64";
 
   system.stateVersion = "20.09";
 }
diff --git a/build03/configuration.nix b/build03/configuration.nix
index 504d7db..b18bf18 100644
--- a/build03/configuration.nix
+++ b/build03/configuration.nix
@@ -11,10 +11,8 @@
   # $ nixos-enter
   imports = [
     ../roles/common.nix
-    ../roles/hetzner/amd.nix
-    ../roles/hetzner/network.nix
     ../roles/hercules-ci
-    ../roles/raid.nix
+    ../roles/zfs-raid.nix
     ../roles/remote-builder/aarch64-build04.nix
 
     ../services/hound
@@ -27,7 +25,7 @@
   boot.loader.grub.enable = true;
   boot.loader.grub.version = 2;
 
-  networking.nix-community.ipv6.address = "2a01:4f9:3a:3b16::1";
+  systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f9:3a:3b16::1/64";
 
   networking.hostName = "build03";
   networking.hostId = "8daf74c0";
diff --git a/flake.lock b/flake.lock
index fafc3b7..3fc144b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -255,11 +255,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1672348966,
-        "narHash": "sha256-72Ejzcyx47eMrzGYW9deVbirB8JpPRU0UpoBpFW03PA=",
+        "lastModified": 1672603492,
+        "narHash": "sha256-2ihfON0EhEeL8yO8IbnD38QUAC+NmpLKQw2y6Y4+47E=",
         "owner": "numtide",
         "repo": "srvos",
-        "rev": "0b3a8aa5d6d54684161bc1752933fc1dc2445aef",
+        "rev": "791e64c72c6c1b878654ff36bc95d64ae6b4b41e",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 1fab8a6..d11f497 100644
--- a/flake.nix
+++ b/flake.nix
@@ -64,7 +64,7 @@
               inputs.sops-nix.nixosModules.sops
               inputs.srvos.nixosModules.server
 
-              inputs.srvos.nixosModules.telegraf
+              inputs.srvos.nixosModules.mixins-telegraf
               { networking.firewall.allowedTCPPorts = [ 9273 ]; }
             ];
           in
@@ -75,6 +75,7 @@
                 common
                 ++ [
                   ./build01/configuration.nix
+                  inputs.srvos.nixosModules.hardware-hetzner-online-amd
                 ];
             };
 
@@ -92,7 +93,8 @@
                       ;
                   })
                   ./build02/configuration.nix
-                  inputs.srvos.nixosModules.nginx
+                  inputs.srvos.nixosModules.mixins-nginx
+                  inputs.srvos.nixosModules.hardware-hetzner-online-amd
                 ];
             };
 
@@ -105,7 +107,8 @@
                     inherit (inputs) nur-update;
                   })
                   ./build03/configuration.nix
-                  inputs.srvos.nixosModules.nginx
+                  inputs.srvos.nixosModules.mixins-nginx
+                  inputs.srvos.nixosModules.hardware-hetzner-online-amd
                 ];
             };
 
diff --git a/roles/hetzner/network.nix b/roles/hetzner/network.nix
deleted file mode 100644
index 112c96f..0000000
--- a/roles/hetzner/network.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ config, lib, ... }:
-with lib;
-let
-  cfg = config.networking.nix-community;
-in
-{
-  options = {
-    networking.nix-community.ipv6.address = mkOption {
-      type = types.str;
-    };
-
-    networking.nix-community.ipv6.cidr = mkOption {
-      type = types.str;
-      default = "64";
-    };
-
-    networking.nix-community.ipv6.gateway = mkOption {
-      type = types.str;
-      default = "fe80::1";
-    };
-  };
-
-  config = {
-    networking.usePredictableInterfaceNames = false;
-    networking.dhcpcd.enable = false;
-    # Don't take down the network for too long, this will use `systemctl
-    # restart` rather than stopping it with `systemctl stop` followed by a
-    # delayed `systemctl start`
-    systemd.services.systemd-networkd.stopIfChanged = true;
-
-    systemd.network = {
-      enable = true;
-      networks."ethernet".extraConfig = ''
-        [Match]
-        Type = ether
-        [Network]
-        DHCP = ipv4
-        Address = ${cfg.ipv6.address}/${cfg.ipv6.cidr}
-        Gateway = ${cfg.ipv6.gateway}
-      '';
-    };
-  };
-}
diff --git a/roles/hetzner/amd.nix b/roles/zfs-raid.nix
similarity index 60%
rename from roles/hetzner/amd.nix
rename to roles/zfs-raid.nix
index 5d0cd75..1a45475 100644
--- a/roles/hetzner/amd.nix
+++ b/roles/zfs-raid.nix
@@ -1,21 +1,7 @@
-{ modulesPath, ... }:
-
 {
-  imports = [
-    "${modulesPath}/installer/scan/not-detected.nix"
-  ];
-
-  boot.initrd.availableKernelModules = [
-    "xhci_pci"
-    "ahci"
-    # SATA ssd (only build01)
-    "sd_mod"
-    # NVME
-    "nvme"
-  ];
-  boot.kernelModules = [
-    "kvm-amd"
-  ];
+  # for mdraid 1.1
+  boot.loader.grub.extraConfig = "insmod mdraid1x";
+  services.telegraf.extraConfig.inputs.mdstat = { };
 
   fileSystems."/" = {
     device = "zroot/root/nixos";
diff --git a/treefmt.nix b/treefmt.nix
index 86e66d3..e31f8c4 100644
--- a/treefmt.nix
+++ b/treefmt.nix
@@ -17,13 +17,22 @@
             ''
               # First deadnix
               ${pkgs.lib.getExe pkgs.deadnix} --edit "$@"
+
+              for i in "$@"; do
+                ${pkgs.lib.getExe pkgs.statix} fix "$i"
+              done
+
               # Then nixpkgs-fmt
               ${pkgs.lib.getExe pkgs.nixpkgs-fmt} "$@"
             ''
             "--"
           ];
           includes = [ "*.nix" ];
-          excludes = [ "nix/sources.nix" ];
+          excludes = [
+            "nix/sources.nix"
+            # vendored from external source
+            "build02/packages-with-update-script.nix"
+          ];
         };
 
         python = {