diff --git a/manifest.dhall b/manifest.dhall
index 6ee513ea53e87ea5f6837973d133897def8c3ebd..51d009fc6d646e9049c0216d43a087d4861de817 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -216,6 +216,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "effectful-core" "2.1.0.0"
     , callHackage "effectful-th" "1.0.0.0"
     , callHackage "effectful" "2.1.0.0"
+    , callHackage "enclosed-exceptions" "1.0.3"
     , callHackage "extra" "1.7.12"
     , callHackage "fcf-containers" "0.7.1"
     , callHackage "filepattern" "0.1.3"
diff --git a/overlay.nix b/overlay.nix
index d3c057d978fff4a1cde265337fdb022e92f293e8..e772ff5d36a39c83c5bc9668ae7aa6fefba324c2 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -235,6 +235,8 @@ final: prev: with pkgs.haskell.lib; {
 
   email-validate = prev.callPackage (./pkgs/email-validate.nix) { };
 
+  enclosed-exceptions = prev.callPackage (./pkgs/enclosed-exceptions.nix) { };
+
   extra = prev.callPackage (./pkgs/extra.nix) { };
 
   fcf-containers = prev.callPackage (./pkgs/fcf-containers.nix) { };
diff --git a/pkgs/enclosed-exceptions.nix b/pkgs/enclosed-exceptions.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8c49cc46e413004a00632d7283370c09027b669a
--- /dev/null
+++ b/pkgs/enclosed-exceptions.nix
@@ -0,0 +1,52 @@
+{ mkDerivation
+, async
+, base
+, deepseq
+, hspec
+, lib
+, lifted-base
+, monad-control
+, QuickCheck
+, stm
+, transformers
+, transformers-base
+}:
+mkDerivation {
+  pname = "enclosed-exceptions";
+  version = "1.0.3";
+  sha256 = "af6d93f113ac92b89a32af1fed52f445f492afcc0be93980cbadc5698f94f0b9";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    deepseq
+    lifted-base
+    monad-control
+    transformers
+    transformers-base
+  ];
+  testHaskellDepends = [
+    async
+    base
+    deepseq
+    hspec
+    lifted-base
+    monad-control
+    QuickCheck
+    stm
+    transformers
+    transformers-base
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jcristovao/enclosed-exceptions";
+  description = "Catching all exceptions from within an enclosed computation";
+  license = lib.licenses.mit;
+  broken = false;
+}