diff --git a/manifest.dhall b/manifest.dhall
index 051106575a66c6bfd54ae58662352cfdfdaafb78..2f82402f113f0b1f41c701f1b72a1236e44c745d 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -535,6 +535,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (None Text)
         (Some "core")
     , callHackage "tasty-discover" "5.0.0"
+    , callHackage "tasty-expected-failure" "0.12.3"
     , callCabal2nix
         "tasty-hedgehog"
         "https://github.com/locallycompact/tasty-hedgehog"
diff --git a/overlay.nix b/overlay.nix
index 29a7c769f3a7a53dc6bc7b0116eb64066424c9c0..7177222b72cb2397f6a3d7dbb4d620da5a9a9440 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -717,6 +717,8 @@ final: prev: with pkgs.haskell.lib; {
 
   tasty-discover = prev.callPackage (./pkgs/tasty-discover.nix) { };
 
+  tasty-expected-failure = prev.callPackage (./pkgs/tasty-expected-failure.nix) { };
+
   tasty-golden = prev.callPackage (./pkgs/tasty-golden.nix) { };
 
   tasty-hedgehog = prev.callPackage (./pkgs/tasty-hedgehog.nix) { };
diff --git a/pkgs/tasty-expected-failure.nix b/pkgs/tasty-expected-failure.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5aa0beb351f7e1fad563604cde1aef9714f98f9a
--- /dev/null
+++ b/pkgs/tasty-expected-failure.nix
@@ -0,0 +1,39 @@
+{ mkDerivation
+, base
+, hedgehog
+, lib
+, tagged
+, tasty
+, tasty-golden
+, tasty-hedgehog
+, tasty-hunit
+, unbounded-delays
+}:
+mkDerivation {
+  pname = "tasty-expected-failure";
+  version = "0.12.3";
+  sha256 = "cb07cc5ca62a6fd673ef54ae70b4bc5f9c12662fe835bea1f38b944684ee8f7e";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base tagged tasty unbounded-delays ];
+  testHaskellDepends = [
+    base
+    hedgehog
+    tasty
+    tasty-golden
+    tasty-hedgehog
+    tasty-hunit
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/nomeata/tasty-expected-failure";
+  description = "Mark tasty tests as failure expected";
+  license = lib.licenses.mit;
+  broken = false;
+}