diff --git a/manifest.dhall b/manifest.dhall
index 1ca2e3bbb7e22fc930526cc90d15f522887d29de..b4da64836fdba68f9ff122005ea520ec0f900385 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -526,6 +526,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (Some "bd7dbbe83d25c00fcd2cf5c77736af904910c596")
         (None Text)
     , callHackage "wai-middleware-static" "0.9.2"
+    , callHackage "wai" "3.2.3"
     , callHackage "warp" "3.3.22"
     , callHackage "warp-tls" "3.3.3"
     , callHackage "witherable" "0.4.2"
diff --git a/overlay.nix b/overlay.nix
index a633848b1061c633b4b87c8de4d442fa0368e551..af1e03ac0998d173809fe62ce592757e15700ce4 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -657,6 +657,8 @@ final: prev: with pkgs.haskell.lib; {
 
   vty = prev.callPackage (./pkgs/vty.nix) { };
 
+  wai = prev.callPackage (./pkgs/wai.nix) { };
+
   wai-middleware-heartbeat = prev.callPackage (./pkgs/wai-middleware-heartbeat.nix) { };
 
   wai-middleware-static = prev.callPackage (./pkgs/wai-middleware-static.nix) { };
diff --git a/pkgs/wai.nix b/pkgs/wai.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7213138371711765a119e92d3c9175acb933b4cc
--- /dev/null
+++ b/pkgs/wai.nix
@@ -0,0 +1,40 @@
+{ mkDerivation
+, base
+, bytestring
+, hspec
+, hspec-discover
+, http-types
+, lib
+, network
+, text
+, vault
+}:
+mkDerivation {
+  pname = "wai";
+  version = "3.2.3";
+  sha256 = "5574d6541000988fe204d3032db87fd0a5404cdbde33ee4fa02e6006768229f8";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    http-types
+    network
+    text
+    vault
+  ];
+  testHaskellDepends = [ base bytestring hspec ];
+  testToolDepends = [ hspec-discover ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/yesodweb/wai";
+  description = "Web Application Interface";
+  license = lib.licenses.mit;
+  broken = false;
+}