diff --git a/manifest.dhall b/manifest.dhall
index 23e3d98d55cb3c1450a796c0eec4b53e8ea76ccc..35f3755ba11cdb826be9f0bff77ae160fe065b50 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -66,6 +66,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (Some "Cabal-tree-diff")
     , callHackage "ChasingBottoms" "1.3.1.12"
     , callHackage "HTTP" "4000.4.1"
+    , callHackage "HUnit" "1.6.2.0"
     , callHackage "JuicyPixels" "3.3.8"
     , callHackage "MonadRandom" "0.5.3"
     , callHackage "OneTuple" "0.3.1"
diff --git a/overlay.nix b/overlay.nix
index c04991e11c64b1d5bdb376e56d418452e45bd4da..603da056ce8e71e9832dcfe2d71984a461cb7849 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -15,6 +15,8 @@ self: with pkgs.haskell.lib; {
 
   HTTP = self.callPackage (./pkgs/HTTP.nix) { };
 
+  HUnit = self.callPackage (./pkgs/HUnit.nix) { };
+
   JuicyPixels = self.callPackage (./pkgs/JuicyPixels.nix) { };
 
   MonadRandom = self.callPackage (./pkgs/MonadRandom.nix) { };
diff --git a/pkgs/HUnit.nix b/pkgs/HUnit.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ef94404f6adad29b6c59d0e2952547a2c026e552
--- /dev/null
+++ b/pkgs/HUnit.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, call-stack, deepseq, filepath, lib }:
+mkDerivation {
+  pname = "HUnit";
+  version = "1.6.2.0";
+  sha256 = "b0b7538871ffc058486fc00740886d2f3172f8fa6869936bfe83a5e10bd744ab";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base call-stack deepseq ];
+  testHaskellDepends = [ base call-stack deepseq filepath ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/hspec/HUnit#readme";
+  description = "A unit testing framework for Haskell";
+  license = lib.licenses.bsd3;
+  broken = false;
+}