diff --git a/manifest.dhall b/manifest.dhall
index 94215bd7f135e4d06c93c651617931a9a80c4497..b51ca9d9a7eb60a731f6918fb6ebe8f13498d045 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -503,6 +503,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (Some "45730b124c7c21f1dcfd85667fda1c19b8ec9723")
         (None Text)
     , callHackage "pointed" "5.0.4"
+    , callHackage "polyparse" "1.13"
     , callHackage "polysemy-extra" "0.2.1.0"
     , callHackage "polysemy-kvstore" "0.1.3.0"
     , callHackage "polysemy-methodology" "0.2.1.0"
diff --git a/overlay.nix b/overlay.nix
index d1edc4b3c7d30f55e260e515e99a731efa341d64..e5048d004d4089ffbcb778e0aeab853ff4d59051 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -739,6 +739,8 @@ self: with pkgs.haskell.lib; {
 
   pointed = self.callPackage (./pkgs/pointed.nix) { };
 
+  polyparse = self.callPackage (./pkgs/polyparse.nix) { };
+
   polysemy = self.callPackage (./pkgs/polysemy.nix) { };
 
   polysemy-extra = self.callPackage (./pkgs/polysemy-extra.nix) { };
diff --git a/pkgs/polyparse.nix b/pkgs/polyparse.nix
new file mode 100644
index 0000000000000000000000000000000000000000..f5b65f293c40d3262a081792a1f7a4e995587ee5
--- /dev/null
+++ b/pkgs/polyparse.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, base, bytestring, lib, text }:
+mkDerivation {
+  pname = "polyparse";
+  version = "1.13";
+  sha256 = "1c4c72980e1e5a4f07fea65ca08b2399581d2a6aa21eb1078f7ad286c279707b";
+  revision = "5";
+  editedCabalFile = "05qrn5pfdy45x1nkx7dvhnxs9j6d6cssws4kwn2sl3n9qmagr8mc";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring text ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://code.haskell.org/~malcolm/polyparse/";
+  description = "A variety of alternative parser combinator libraries";
+  license = "LGPL";
+  broken = false;
+}