diff --git a/manifest.dhall b/manifest.dhall
index d1207b75b552743cf94711bf8a9c29288fcf13fc..164b0937d92c975d65d63850f338654ec4e13218 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -492,6 +492,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "pandoc-types" "1.22.2.1"
     , callHackage "pandoc" "2.19.2"
     , callHackage "parallel" "3.2.2.0"
+    , callHackage "parsec" "3.1.15.1"
     , callHackage "parsers" "0.12.11"
     , callHackage "parser-combinators" "1.3.0"
     , callHackage "password-types" "1.0.0.0"
diff --git a/overlay.nix b/overlay.nix
index ef1ef08edcf02919877790791f9f4fb7f3282a24..04f022cc9587c9fa039260c2eb94491e9b9655b5 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -725,6 +725,8 @@ self: with pkgs.haskell.lib; {
 
   parallel = self.callPackage (./pkgs/parallel.nix) { };
 
+  parsec = self.callPackage (./pkgs/parsec.nix) { };
+
   parser-combinators = self.callPackage (./pkgs/parser-combinators.nix) { };
 
   parsers = self.callPackage (./pkgs/parsers.nix) { };
diff --git a/pkgs/parsec.nix b/pkgs/parsec.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1612a7fc11549f581832eee0e47234bfb70d8dec
--- /dev/null
+++ b/pkgs/parsec.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, bytestring
+, lib
+, mtl
+, tasty
+, tasty-hunit
+, text
+}:
+mkDerivation {
+  pname = "parsec";
+  version = "3.1.15.1";
+  sha256 = "abe4901531185505d4360e633e8d79ccc90325a0bac7f666eecad30f7f7f98dd";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base bytestring mtl text ];
+  testHaskellDepends = [ base mtl tasty tasty-hunit ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/parsec";
+  description = "Monadic parser combinators";
+  license = lib.licenses.bsd2;
+  broken = false;
+}