diff --git a/manifest.dhall b/manifest.dhall
index 1c71cf4e0feb4496919ab4476051fceac965914a..fdf8d38621a4638d7bdceb99e998e60301de922c 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -126,6 +126,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "byteorder" "1.0.4"
     , callHackage "bytestring-builder" "0.10.8.2.0"
     , callHackage "bytes" "0.17.2"
+    , callHackage "c2hs" "0.28.8"
     , callHackage "cabal-doctest" "1.0.9"
     , callHackage "cabal-install" "3.8.1.0"
     , callHackage "cabal-install-solver" "3.8.1.0"
diff --git a/overlay.nix b/overlay.nix
index 80d2c0a48c4b30b1e1bb720e5059bbdd541f87de..3a168af09e678ee74f9503c511095ad62f333aeb 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -145,6 +145,8 @@ self: with pkgs.haskell.lib; {
 
   bytestring-builder = self.callPackage (./pkgs/bytestring-builder.nix) { };
 
+  c2hs = self.callPackage (./pkgs/c2hs.nix) { };
+
   cabal-doctest = self.callPackage (./pkgs/cabal-doctest.nix) { };
 
   cabal-install = self.callPackage (./pkgs/cabal-install.nix) { };
diff --git a/pkgs/c2hs.nix b/pkgs/c2hs.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8884b20d05712891f86a59e9c6be0e895b067cda
--- /dev/null
+++ b/pkgs/c2hs.nix
@@ -0,0 +1,63 @@
+{ mkDerivation
+, array
+, base
+, bytestring
+, containers
+, directory
+, dlist
+, filepath
+, HUnit
+, language-c
+, lib
+, pretty
+, process
+, shelly
+, test-framework
+, test-framework-hunit
+, text
+, transformers
+}:
+mkDerivation {
+  pname = "c2hs";
+  version = "0.28.8";
+  sha256 = "390632cffc561c32483af474aac50168a68f0fa382096552e37749923617884c";
+  revision = "1";
+  editedCabalFile = "0hbv1j9b04gm617c5xqndr4iqidabwdpcn2dcrnaacc04ylchvl2";
+  isLibrary = false;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  executableHaskellDepends = [
+    array
+    base
+    bytestring
+    containers
+    directory
+    dlist
+    filepath
+    language-c
+    pretty
+    process
+  ];
+  testHaskellDepends = [
+    base
+    filepath
+    HUnit
+    shelly
+    test-framework
+    test-framework-hunit
+    text
+    transformers
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/haskell/c2hs";
+  description = "C->Haskell FFI tool that gives some cross-language type safety";
+  license = lib.licenses.gpl2Only;
+  mainProgram = "c2hs";
+  broken = false;
+}