diff --git a/manifest.dhall b/manifest.dhall
index 10836bea0cda1d6849dfc01ab1c000268a22520b..b4981981ef215070b3ec77c2da1f1311609f4fd0 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -542,6 +542,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "quickcheck-classes" "0.6.5.0"
     , callHackage "quickcheck-dynamic" "2.0.0"
     , callHackage "quickcheck-instances" "0.3.28"
+    , callHackage "quickcheck-io" "0.2.0"
     , callHackage "quickcheck-unicode" "1.0.1.0"
     , callHackage "random-bytestring" "0.1.4"
     , callHackage "random-shuffle" "0.0.4"
diff --git a/overlay.nix b/overlay.nix
index 3d395b6bb79b0b40478cb70c9e65027181e10ce4..987225a152bc8e2d2879305637e6090544ca8d84 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -809,6 +809,8 @@ self: with pkgs.haskell.lib; {
 
   quickcheck-instances = self.callPackage (./pkgs/quickcheck-instances.nix) { };
 
+  quickcheck-io = self.callPackage (./pkgs/quickcheck-io.nix) { };
+
   quickcheck-unicode = self.callPackage (./pkgs/quickcheck-unicode.nix) { };
 
   random = self.callPackage (./pkgs/random.nix) { };
diff --git a/pkgs/quickcheck-io.nix b/pkgs/quickcheck-io.nix
new file mode 100644
index 0000000000000000000000000000000000000000..37c6dae56d1a3d5af8521aa9740137a11587555f
--- /dev/null
+++ b/pkgs/quickcheck-io.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, HUnit, lib, QuickCheck }:
+mkDerivation {
+  pname = "quickcheck-io";
+  version = "0.2.0";
+  sha256 = "fb779119d79fe08ff4d502fb6869a70c9a8d5fd8ae0959f605c3c937efd96422";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base HUnit QuickCheck ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/hspec/quickcheck-io#readme";
+  description = "Use HUnit assertions as QuickCheck properties";
+  license = lib.licenses.mit;
+  broken = false;
+}