diff --git a/flake.lock b/flake.lock
index a785f6050d8965212e127a6dd0a3f4eeea144a0d..212d55907b28e05e5a27e1fbd0f1bda1990c0681 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,23 +1,5 @@
 {
   "nodes": {
-    "flake-utils": {
-      "inputs": {
-        "systems": "systems"
-      },
-      "locked": {
-        "lastModified": 1731533236,
-        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1739580444,
@@ -36,24 +18,8 @@
     },
     "root": {
       "inputs": {
-        "flake-utils": "flake-utils",
         "nixpkgs": "nixpkgs"
       }
-    },
-    "systems": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
     }
   },
   "root": "root",
diff --git a/flake.nix b/flake.nix
index 5fc38a0bf1ab61cec670f352e9eebd2450b41a6f..024e20d05eb46266492f5bf82bedfce656561948 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,100 +1,88 @@
 {
   inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-  inputs.flake-utils.url = "github:numtide/flake-utils";
 
-  outputs =
-    {
-      self,
-      nixpkgs,
-      flake-utils,
-    }:
-    flake-utils.lib.eachSystem
-      [
-        "x86_64-linux"
-        "aarch64-darwin"
-        "aarch64-linux"
-        "x86_64-darwin"
-      ]
-      (
-        system:
-        let
-          pkgs = import nixpkgs {
-            inherit system;
-            config = {
-              permittedInsecurePackages = [ "openssl-1.1.1w" ];
-            };
-          };
-          all =
-            flavour:
-            pkgs.symlinkJoin {
-              name = "ghc-wasm";
-              paths =
-                [
-                  pkgs.haskellPackages.alex
-                  pkgs.haskellPackages.happy
-                  (pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { inherit flavour; })
-                  wasi-sdk
-                  pkgs.cacert
-                  nodejs
-                  binaryen
-                  wasmtime
-                  cabal
-                  (pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { inherit flavour; })
-                ];
-            };
-          wasm32-wasi-ghc-gmp = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "gmp"; };
-          wasm32-wasi-ghc-native = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "native"; };
-          wasm32-wasi-ghc-unreg = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "unreg"; };
-          wasm32-wasi-ghc-9_6 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "9.6"; };
-          wasm32-wasi-ghc-9_8 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "9.8"; };
-          wasm32-wasi-ghc-9_10 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "9.10"; };
-          wasm32-wasi-ghc-9_12 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix { flavour = "9.12"; };
-          wasm32-wasi-cabal-gmp = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "gmp"; };
-          wasm32-wasi-cabal-native = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "native"; };
-          wasm32-wasi-cabal-unreg = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "unreg"; };
-          wasm32-wasi-cabal-9_6 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "9.6"; };
-          wasm32-wasi-cabal-9_8 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "9.8"; };
-          wasm32-wasi-cabal-9_10 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "9.10"; };
-          wasm32-wasi-cabal-9_12 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix { flavour = "9.12"; };
-          wasi-sdk = pkgs.callPackage ./pkgs/wasi-sdk.nix { };
-          nodejs = pkgs.callPackage ./pkgs/nodejs.nix { };
-          binaryen = pkgs.callPackage ./pkgs/binaryen.nix { };
-          wasmtime = pkgs.callPackage ./pkgs/wasmtime.nix { };
-          cabal = pkgs.callPackage ./pkgs/cabal.nix { };
-        in
-        {
-          packages = {
-            inherit
-              all
-              wasm32-wasi-ghc-gmp
-              wasm32-wasi-ghc-native
-              wasm32-wasi-ghc-unreg
-              wasm32-wasi-ghc-9_6
-              wasm32-wasi-ghc-9_8
-              wasm32-wasi-ghc-9_10
-              wasm32-wasi-ghc-9_12
-              wasm32-wasi-cabal-gmp
-              wasm32-wasi-cabal-native
-              wasm32-wasi-cabal-unreg
-              wasm32-wasi-cabal-9_6
-              wasm32-wasi-cabal-9_8
-              wasm32-wasi-cabal-9_10
-              wasm32-wasi-cabal-9_12
-              wasi-sdk
-              nodejs
-              binaryen
-              wasmtime
-              cabal
-              ;
-            default = all "gmp";
-            all_gmp = all "gmp";
-            all_native = all "native";
-            all_unreg = all "unreg";
-            all_9_6 = all "9.6";
-            all_9_8 = all "9.8";
-            all_9_10 = all "9.10";
-            all_9_12 = all "9.12";
-          };
-        }
-      );
+  outputs = {
+    self,
+    nixpkgs,
+  }: let
+    systems = [
+      "x86_64-linux"
+      "aarch64-darwin"
+      "aarch64-linux"
+      "x86_64-darwin"
+    ];
+
+    forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
+  in {
+    legacyPackages = forAllSystems (system: let
+      pkgs = import nixpkgs {
+        inherit system;
+        config = {
+          permittedInsecurePackages = ["openssl-1.1.1w"];
+        };
+      };
+      wasm32-wasi-ghc-gmp = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "gmp";};
+      wasm32-wasi-ghc-native = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "native";};
+      wasm32-wasi-ghc-unreg = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "unreg";};
+      wasm32-wasi-ghc-9_6 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "9.6";};
+      wasm32-wasi-ghc-9_8 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "9.8";};
+      wasm32-wasi-ghc-9_10 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "9.10";};
+      wasm32-wasi-ghc-9_12 = pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {flavour = "9.12";};
+      wasm32-wasi-cabal-gmp = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "gmp";};
+      wasm32-wasi-cabal-native = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "native";};
+      wasm32-wasi-cabal-unreg = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "unreg";};
+      wasm32-wasi-cabal-9_6 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "9.6";};
+      wasm32-wasi-cabal-9_8 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "9.8";};
+      wasm32-wasi-cabal-9_10 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "9.10";};
+      wasm32-wasi-cabal-9_12 = pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {flavour = "9.12";};
+      wasi-sdk = pkgs.callPackage ./pkgs/wasi-sdk.nix {};
+      nodejs = pkgs.callPackage ./pkgs/nodejs.nix {};
+      binaryen = pkgs.callPackage ./pkgs/binaryen.nix {};
+      wasmtime = pkgs.callPackage ./pkgs/wasmtime.nix {};
+      cabal = pkgs.callPackage ./pkgs/cabal.nix {};
+      all = flavour:
+        pkgs.symlinkJoin {
+          name = "ghc-wasm";
+          paths = [
+            pkgs.haskellPackages.alex
+            pkgs.haskellPackages.happy
+            (pkgs.callPackage ./pkgs/wasm32-wasi-ghc.nix {inherit flavour;})
+            wasi-sdk
+            pkgs.cacert
+            nodejs
+            binaryen
+            wasmtime
+            cabal
+            (pkgs.callPackage ./pkgs/wasm32-wasi-cabal.nix {inherit flavour;})
+          ];
+        };
+    in {
+      inherit
+        wasm32-wasi-ghc-gmp
+        wasm32-wasi-ghc-native
+        wasm32-wasi-ghc-unreg
+        wasm32-wasi-ghc-9_6
+        wasm32-wasi-ghc-9_8
+        wasm32-wasi-ghc-9_10
+        wasm32-wasi-ghc-9_12
+        wasm32-wasi-cabal-gmp
+        wasm32-wasi-cabal-native
+        wasm32-wasi-cabal-unreg
+        wasm32-wasi-cabal-9_6
+        wasm32-wasi-cabal-9_8
+        wasm32-wasi-cabal-9_10
+        wasm32-wasi-cabal-9_12
+        ;
+
+      default = all "gmp";
+      all_gmp = all "gmp";
+      all_native = all "native";
+      all_unreg = all "unreg";
+      all_9_6 = all "9.6";
+      all_9_8 = all "9.8";
+      all_9_10 = all "9.10";
+      all_9_12 = all "9.12";
+    });
+    packages = forAllSystems (system: nixpkgs.lib.filterAttrs (_: v: nixpkgs.lib.isDerivation v) self.legacyPackages.${system});
+  };
 }