diff --git a/manifest.dhall b/manifest.dhall
index 3a9125787e14c464834f03fbd7952df52b7ab95e..94215bd7f135e4d06c93c651617931a9a80c4497 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -167,6 +167,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "connection" "0.3.1"
     , callHackage "constraints" "0.13.4"
     , callHackage "contravariant" "1.5.5"
+    , callHackage "cpphs" "1.20.9.1"
     , callHackage "criterion-measurement" "0.2.0.0"
     , callHackage "criterion" "1.5.13.0"
     , callHackage "cursor-brick" "0.1.0.1"
diff --git a/overlay.nix b/overlay.nix
index eb0fea80fa79d2853b7b7c000737f34c8abb8e91..d1edc4b3c7d30f55e260e515e99a731efa341d64 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -211,6 +211,8 @@ self: with pkgs.haskell.lib; {
 
   contravariant = self.callPackage (./pkgs/contravariant.nix) { };
 
+  cpphs = self.callPackage (./pkgs/cpphs.nix) { };
+
   criterion = self.callPackage (./pkgs/criterion.nix) { };
 
   criterion-measurement = self.callPackage (./pkgs/criterion-measurement.nix) { };
diff --git a/pkgs/cpphs.nix b/pkgs/cpphs.nix
new file mode 100644
index 0000000000000000000000000000000000000000..841c5c34e5ae899d9d324e1eb6bffdc2bf658684
--- /dev/null
+++ b/pkgs/cpphs.nix
@@ -0,0 +1,25 @@
+{ mkDerivation, base, directory, lib, polyparse, time }:
+mkDerivation {
+  pname = "cpphs";
+  version = "1.20.9.1";
+  sha256 = "7f59b10bc3374004cee3c04fa4ee4a1b90d0dca84a3d0e436d5861a1aa3b919f";
+  revision = "1";
+  editedCabalFile = "1f8jzs8zdh4wwbcq8fy6qqxkv75ypnvsm4yzw49wpr3b9vpnzlha";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base directory polyparse time ];
+  executableHaskellDepends = [ base directory polyparse time ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://projects.haskell.org/cpphs/";
+  description = "A liberalised re-implementation of cpp, the C pre-processor";
+  license = "LGPL";
+  mainProgram = "cpphs";
+  broken = false;
+}