diff --git a/manifest.dhall b/manifest.dhall
index 349619ce91a4575bd595afb799af68785ce4faa8..2a1f74cfadf76bd7d9776a81807bee86d79b8f15 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -342,6 +342,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "hashable" "1.4.1.0"
     , callHackage "hashing" "0.1.0.1"
     , callHackage "hashtables" "1.3"
+    , callHackage "haskell-lexer" "1.1"
     , callHackage "haskell-src-exts" "1.23.1"
     , callHackage "haskell-src-meta" "0.8.11"
     , callHackage "heaps" "0.4"
diff --git a/overlay.nix b/overlay.nix
index 2a91f858da181f4a18edd7de629ead70c88adfad..3d049f9573dd114c656162c2baca10ddae193971 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -489,6 +489,8 @@ self: with pkgs.haskell.lib; {
 
   hashtables = self.callPackage (./pkgs/hashtables.nix) { };
 
+  haskell-lexer = self.callPackage (./pkgs/haskell-lexer.nix) { };
+
   haskell-src-exts = self.callPackage (./pkgs/haskell-src-exts.nix) { };
 
   haskell-src-meta = self.callPackage (./pkgs/haskell-src-meta.nix) { };
diff --git a/pkgs/haskell-lexer.nix b/pkgs/haskell-lexer.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d9c2dac5746498c7a45ab9b2dc3c426e2c2ae977
--- /dev/null
+++ b/pkgs/haskell-lexer.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "haskell-lexer";
+  version = "1.1";
+  sha256 = "313a15cc643322c8badd148867ce25ca1ffc191df9e7eeec5b10bc08c4b563d5";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/yav/haskell-lexer";
+  description = "A fully compliant Haskell 98 lexer";
+  license = lib.licenses.bsd3;
+  broken = false;
+}