diff --git a/.forgejo/workflows/check.yml b/.forgejo/workflows/check.yml
index 3479450..0a62d11 100644
--- a/.forgejo/workflows/check.yml
+++ b/.forgejo/workflows/check.yml
@@ -18,20 +18,7 @@ jobs:
           # Prevent cache garbage collection by creating GC roots
           mkdir -p /var/lib/gitea-runner/tankstelle/.local/state/nix/results
 
-          for target in $(nix flake show --json --all-systems | jq --raw-output '
-            .["nixosConfigurations"] |
-            to_entries[] |
-            .key'
-          ); do
-            nix --print-build-logs --verbose --accept-flake-config --access-tokens '' \
-              build --out-link /var/lib/gitea-runner/tankstelle/.local/state/nix/results/"$target" ".#nixosConfigurations.${target}.config.system.build.toplevel"
-          done
-
-          for check in $(nix flake show --json --all-systems | jq --raw-output '
-            .checks."x86_64-linux" |
-            to_entries[] |
-            .key'
-          ); do
-            nix --print-build-logs --verbose --accept-flake-config --access-tokens '' \
-              build --out-link /var/lib/gitea-runner/tankstelle/.local/state/nix/results/"$check" ".#checks.x86_64-linux.${check}"
-          done
+          sed -i 's/virtualisation.cores .*/virtualisation.cores = 16;/' tests/keycloak.nix
+          sed -i 's/virtualisation.memorySize .*/virtualisation.memorySize = 16384;/' tests/keycloak.nix
+          # 1 eval-worker needs about 13GB of memory
+          nix --accept-flake-config --access-tokens '' develop --command nix-fast-build --no-nom --skip-cached --systems "x86_64-linux" --max-jobs 10 --eval-workers 2 --out-link /var/lib/gitea-runner/tankstelle/.local/state/nix/results/nix-fast-build
diff --git a/flake.lock b/flake.lock
index 07aae0c..988b74d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -236,16 +236,16 @@
     },
     "fork": {
       "locked": {
-        "lastModified": 1729963002,
-        "narHash": "sha256-2zrYfd/qdfExU5zVwvH80uJnKc/dMeK6zp3O1UtW2Mo=",
+        "lastModified": 1738846146,
+        "narHash": "sha256-cIPiBEspPXQxju2AUZK9kjh6oqea+HkPFqmGv7yUztM=",
         "owner": "teutat3s",
         "repo": "nixpkgs",
-        "rev": "005faaacbeede0296dec5c844f508027ab8a3ff6",
+        "rev": "e370f40b129e47b08562524ab4f053a172a94273",
         "type": "github"
       },
       "original": {
         "owner": "teutat3s",
-        "ref": "init-matrix-authentication-service-module",
+        "ref": "init-matrix-authentication-service-module-0.13.0",
         "repo": "nixpkgs",
         "type": "github"
       }
diff --git a/flake.nix b/flake.nix
index c7f18a6..495eafa 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,7 +3,7 @@
     # Track channels with commits tested and built by hydra
     nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
     unstable.url = "github:nixos/nixpkgs/nixos-unstable";
-    fork.url = "github:teutat3s/nixpkgs/init-matrix-authentication-service-module";
+    fork.url = "github:teutat3s/nixpkgs/init-matrix-authentication-service-module-0.13.0";
 
     nix-darwin.url = "github:lnl7/nix-darwin/master";
     nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
@@ -78,6 +78,24 @@
 
           checks =
             let
+              machinesPerSystem = {
+                aarch64-linux = [
+                  "metronom"
+                ];
+                x86_64-linux = [
+                  "blue-shell"
+                  "delite"
+                  "nachtigall"
+                  "tankstelle"
+                  "trinkgenossin"
+                  "underground"
+                ];
+              };
+              nixosMachines = inputs.nixpkgs.lib.mapAttrs' (n: inputs.nixpkgs.lib.nameValuePair "nixos-${n}") (
+                inputs.nixpkgs.lib.genAttrs (machinesPerSystem.${system} or [ ]) (
+                  name: self.nixosConfigurations.${name}.config.system.build.toplevel
+                )
+              );
               nixos-lib = import (inputs.nixpkgs + "/nixos/lib") { };
               testDir = builtins.attrNames (builtins.readDir ./tests);
               testFiles = builtins.filter (n: builtins.match "^.*.nix$" n != null) testDir;
@@ -94,12 +112,13 @@
                   }
                 );
               }) testFiles
-            );
+            )
+            // nixosMachines;
 
           devShells.default = pkgs.mkShell {
             buildInputs = with pkgs; [
               deploy-rs
-              nixpkgs-fmt
+              nix-fast-build
               agenix
               age-plugin-yubikey
               cachix
diff --git a/overlays/default.nix b/overlays/default.nix
index af9faa9..02185db 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -10,8 +10,10 @@
               final: prev:
               let
                 unstable = import inputs.unstable { system = prev.system; };
+                fork = import inputs.fork { system = prev.system; };
               in
               {
+                matrix-authentication-service = fork.matrix-authentication-service;
                 element-themes = prev.callPackage ./pkgs/element-themes { inherit (inputs) element-themes; };
                 element-stickerpicker = prev.callPackage ./pkgs/element-stickerpicker {
                   inherit (inputs) element-stickers maunium-stickerpicker;
diff --git a/tests/keycloak.nix b/tests/keycloak.nix
index 9f5241b..0d4a825 100644
--- a/tests/keycloak.nix
+++ b/tests/keycloak.nix
@@ -46,6 +46,7 @@ in
 
       systemd.tmpfiles.rules = [ "f /tmp/dbf 1777 root root 10d password" ];
 
+      virtualisation.cores = 1;
       virtualisation.memorySize = 4096;
 
       pub-solar-os.auth = {
diff --git a/tests/website.nix b/tests/website.nix
index 6d4f46d..db3a0aa 100644
--- a/tests/website.nix
+++ b/tests/website.nix
@@ -31,6 +31,7 @@
         ./support/global.nix
       ];
 
+      virtualisation.cores = 1;
       virtualisation.memorySize = 4096;
 
       networking.interfaces.eth0.ipv4.addresses = [