diff --git a/manifest.dhall b/manifest.dhall
index 62f018332a2bf6a100f21c9c6ea5eee25fdfa756..013ab3fa0cf7c6a62e3088c3c5c7aacd0422c883 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -183,6 +183,11 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "genvalidity-case-insensitive" "0.0.0.1"
     , callHackage "genvalidity-containers" "1.0.0.1"
     , callHackage "genvalidity-criterion" "1.1.0.0"
+    , callCabal2nix
+        "genvalidity-dirforest"
+        "https://github.com/NorfairKing/dirforest"
+        (Some "69e8ae036b047fae105c1fe990e175a7572a3eba")
+        (Some "genvalidity-dirforest")
     , callHackage "genvalidity-hspec" "1.0.0.2"
     , callHackage "genvalidity-path" "1.0.0.1"
     , callHackage "genvalidity-persistent" "1.0.0.1"
diff --git a/overlay.nix b/overlay.nix
index 11943f73e24b8670038f2b56a2558d45a3b5a86a..d29d8e2045361b2f6134850743f8310d46d31e43 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -177,6 +177,8 @@ final: prev: with pkgs.haskell.lib; {
 
     genvalidity-criterion = prev.callPackage (./pkgs/genvalidity-criterion.nix) { };
 
+    genvalidity-dirforest = prev.callPackage (./pkgs/genvalidity-dirforest.nix) { };
+
     genvalidity-hspec = prev.callPackage (./pkgs/genvalidity-hspec.nix) { };
 
     genvalidity-path = prev.callPackage (./pkgs/genvalidity-path.nix) { };
diff --git a/pkgs/genvalidity-dirforest.nix b/pkgs/genvalidity-dirforest.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8c8ca4809009a788e40c785a7d0504fdbfa38162
--- /dev/null
+++ b/pkgs/genvalidity-dirforest.nix
@@ -0,0 +1,36 @@
+{ mkDerivation, base, bytestring, containers, criterion, dirforest
+, fetchgit, filepath, genvalidity, genvalidity-bytestring
+, genvalidity-containers, genvalidity-criterion, genvalidity-hspec
+, genvalidity-hspec-aeson, genvalidity-path, genvalidity-text
+, hspec, lib, path, path-io, pretty-show, QuickCheck
+}:
+mkDerivation {
+  pname = "genvalidity-dirforest";
+  version = "0.1.0.0";
+  src = fetchgit {
+    url = "https://github.com/NorfairKing/dirforest";
+    sha256 = "0d5gf7y46nrrrysmpmhfq7iij9xcpbiqp4bnzz09730zqfs40rm4";
+    rev = "69e8ae036b047fae105c1fe990e175a7572a3eba";
+    fetchSubmodules = true;
+  };
+  postUnpack = "sourceRoot+=/genvalidity-dirforest/; echo source root reset to $sourceRoot";
+  libraryHaskellDepends = [
+    base containers dirforest filepath genvalidity
+    genvalidity-containers genvalidity-path path QuickCheck
+  ];
+  testHaskellDepends = [
+    base bytestring containers dirforest filepath
+    genvalidity-bytestring genvalidity-hspec genvalidity-hspec-aeson
+    hspec path path-io pretty-show QuickCheck
+  ];
+  benchmarkHaskellDepends = [
+    base criterion dirforest genvalidity genvalidity-criterion
+    genvalidity-text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/NorfairKing/dirforest#readme";
+  license = "unknown";
+}
\ No newline at end of file