diff --git a/manifest.dhall b/manifest.dhall
index 3208c62cb3388ceb009af1ccfad261332b35e7e7..6bb7212389f8c9090410b92bc4515008a752fd89 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -385,6 +385,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "singletons" "3.0.2"
     , callHackage "some" "1.0.4"
     , callHackage "sop-core" "0.5.0.1"
+    , callHackage "souffle-haskell" "3.5.0"
     , callHackage "split" "0.2.3.3"
     , callHackage "streaming-commons" "0.2.2.4"
     , callHackage "string-interpolate" "0.3.1.2"
diff --git a/overlay.nix b/overlay.nix
index 757766c6bd4dfe673cbb521a61ca1f4c1fd745a6..d4f39e72c142978ab697828f2bf7d1b87d9109f0 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -467,6 +467,8 @@ final: prev: with pkgs.haskell.lib; {
 
     sop-core = prev.callPackage (./pkgs/sop-core.nix) { };
 
+    souffle-haskell = prev.callPackage (./pkgs/souffle-haskell.nix) { };
+
     split = prev.callPackage (./pkgs/split.nix) { };
 
     streaming-commons = prev.callPackage (./pkgs/streaming-commons.nix) { };
diff --git a/pkgs/souffle-haskell.nix b/pkgs/souffle-haskell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4414c221ae080caca83bad0349006b4bda8731f7
--- /dev/null
+++ b/pkgs/souffle-haskell.nix
@@ -0,0 +1,26 @@
+{ mkDerivation, array, base, bytestring, criterion, deepseq
+, directory, filepath, hedgehog, hspec, hspec-hedgehog, lib, mtl
+, process, profunctors, temporary, text, text-short
+, type-errors-pretty, vector
+}:
+mkDerivation {
+  pname = "souffle-haskell";
+  version = "3.5.0";
+  sha256 = "79c9fc06da1265be3668e9ff1d23d9814d4d47a067cdb3c4f1949bea384ac3e8";
+  libraryHaskellDepends = [
+    array base bytestring deepseq directory filepath mtl process
+    profunctors temporary text text-short type-errors-pretty vector
+  ];
+  testHaskellDepends = [
+    array base directory hedgehog hspec hspec-hedgehog profunctors
+    temporary text text-short vector
+  ];
+  benchmarkHaskellDepends = [ base criterion deepseq text vector ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/luc-tielen/souffle-haskell#README.md";
+  description = "Souffle Datalog bindings for Haskell";
+  license = lib.licenses.mit;
+}
\ No newline at end of file