diff --git a/manifest.dhall b/manifest.dhall
index ffc5e56a4cd8e225de047dadb4cd48febe47035e..b867a66ef1c0212e984f7106c724d5bd09d03431 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -615,6 +615,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "special-values" "0.1.0.0"
     , callHackage "splitmix" "0.1.0.4"
     , callHackage "split" "0.2.3.3"
+    , callHackage "spoon" "0.3.1"
     , callHackage "sqlite-simple" "0.4.18.2"
     , callHackage "statistics" "0.16.1.0"
     , callHackage "streaming-commons" "0.2.2.4"
diff --git a/overlay.nix b/overlay.nix
index e66a42898ef29d787b914346b40eaef5f91f852d..23e676613551226344169c04a8f545160261b7f9 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -905,6 +905,8 @@ self: with pkgs.haskell.lib; {
 
   splitmix = self.callPackage (./pkgs/splitmix.nix) { };
 
+  spoon = self.callPackage (./pkgs/spoon.nix) { };
+
   sqlite-simple = self.callPackage (./pkgs/sqlite-simple.nix) { };
 
   statistics = self.callPackage (./pkgs/statistics.nix) { };
diff --git a/pkgs/spoon.nix b/pkgs/spoon.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ea34925661d75ff6737f5d782963d6b3bd857aa9
--- /dev/null
+++ b/pkgs/spoon.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, deepseq, lib }:
+mkDerivation {
+  pname = "spoon";
+  version = "0.3.1";
+  sha256 = "b9b350b6730e34c246bbf7e228a86b3d4925b52c95542f7676d719ef2a9881d4";
+  revision = "1";
+  editedCabalFile = "09s5jjcsg4g4qxchq9g2l4i9d5zh3rixpkbiysqcgl69kj8mwv74";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base deepseq ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Catch errors thrown from pure computations";
+  license = lib.licenses.bsd3;
+  broken = false;
+}