diff --git a/hosts/build01/default.nix b/hosts/build01/default.nix
index 96969c4..b183fb0 100644
--- a/hosts/build01/default.nix
+++ b/hosts/build01/default.nix
@@ -6,6 +6,8 @@
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
   ];
 
+  nixpkgs.hostPlatform.gcc.arch = "znver2";
+
   # Emulate riscv64 until we have proper builders
   boot.binfmt.emulatedSystems = [ "riscv64-linux" ];
   boot.binfmt.preferStaticEmulators = true;
diff --git a/hosts/build02/default.nix b/hosts/build02/default.nix
index acc652f..1324a14 100644
--- a/hosts/build02/default.nix
+++ b/hosts/build02/default.nix
@@ -9,6 +9,8 @@
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
   ];
 
+  nixpkgs.hostPlatform.gcc.arch = "znver2";
+
   # set in srvos, remove when reinstalling
   networking.hostId = "deadbeef";
 
diff --git a/hosts/build03/default.nix b/hosts/build03/default.nix
index 5f92d6b..606cba0 100644
--- a/hosts/build03/default.nix
+++ b/hosts/build03/default.nix
@@ -16,6 +16,8 @@
     inputs.srvos.nixosModules.hardware-hetzner-online-amd
   ];
 
+  nixpkgs.hostPlatform.gcc.arch = "znver4";
+
   systemd.network.networks."10-uplink".networkConfig.Address = "2a01:4f8:2190:2698::2";
 
   system.stateVersion = "23.11";
diff --git a/hosts/build04/default.nix b/hosts/build04/default.nix
index fd3c7ce..f8cabc4 100644
--- a/hosts/build04/default.nix
+++ b/hosts/build04/default.nix
@@ -9,6 +9,8 @@
     inputs.srvos.nixosModules.hardware-hetzner-online-arm
   ];
 
+  nixpkgs.hostPlatform.gcc.arch = "armv8-a";
+
   # error: failed to start SSH connection
   # https://github.com/nix-community/infra/issues/1416
   services.openssh.settings.MaxStartups = 100;
diff --git a/modules/nixos/cgroups.nix b/modules/nixos/cgroups.nix
index dc289a7..465cc40 100644
--- a/modules/nixos/cgroups.nix
+++ b/modules/nixos/cgroups.nix
@@ -24,6 +24,8 @@
         "cgroups"
       ];
 
+      system-features = [ "uid-range" ];
+
       auto-allocate-uids = true;
       use-cgroups = true;
     };
diff --git a/modules/nixos/common/builder.nix b/modules/nixos/common/builder.nix
index 56ddd5e..bb785ae 100644
--- a/modules/nixos/common/builder.nix
+++ b/modules/nixos/common/builder.nix
@@ -19,6 +19,30 @@
       script = builtins.readFile "${inputs.self}/modules/shared/free-space.bash";
     };
 
+    nixpkgs.hostPlatform = {
+      inherit (pkgs.hostPlatform) system;
+    };
+
+    nix.settings.extra-platforms = lib.mkIf (config.nixpkgs.hostPlatform.system == "x86_64-linux") [
+      (lib.mkIf (config.boot.binfmt.emulatedSystems == [ ]) "i686-linux")
+      "x86_64-v1-linux"
+      "x86_64-v2-linux"
+      "x86_64-v3-linux"
+      (lib.mkIf (builtins.elem "gccarch-x86-64-v4" config.nix.settings.system-features) "x86_64-v4-linux")
+    ];
+
+    nix.settings.system-features =
+      [
+        "benchmark"
+        "big-parallel"
+        "kvm"
+        "nixos-test"
+        "gccarch-${config.nixpkgs.hostPlatform.gcc.arch}"
+      ]
+      ++ map (x: "gccarch-${x}") (
+        lib.systems.architectures.inferiors.${config.nixpkgs.hostPlatform.gcc.arch} or [ ]
+      );
+
     # Bump the open files limit so that non-root users can run NixOS VM tests
     security.pam.loginLimits = [
       {