diff --git a/manifest.dhall b/manifest.dhall
index 9f04d9bc12797f5e25ee6212fb1bfabc3b8ce7f1..72a3cd7e49e5fcb83fbf279c97c6508967b07f69 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -518,6 +518,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "password-types" "1.0.0.0"
     , callHackage "password" "3.0.2.0"
     , callHackage "path-dhall-instance" "0.2.1.0"
+    , callHackage "path-pieces" "0.2.1"
     , callHackage "path-io" "1.7.0"
     , callHackage "path" "0.9.2"
     , callHackage "pcg-random" "0.1.3.7"
diff --git a/overlay.nix b/overlay.nix
index e802c252f2c31750ab36300fcb25518cd77539fe..f85a971c1a367c7d313a003f11f22bd634a0cd1e 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -781,6 +781,8 @@ self: with pkgs.haskell.lib; {
 
   path-io = self.callPackage (./pkgs/path-io.nix) { };
 
+  path-pieces = self.callPackage (./pkgs/path-pieces.nix) { };
+
   pcg-random = self.callPackage (./pkgs/pcg-random.nix) { };
 
   pcre-light = self.callPackage (./pkgs/pcre-light.nix) { };
diff --git a/pkgs/path-pieces.nix b/pkgs/path-pieces.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ae5cc95a1ffb54cdb67a2824b8452105f3ef3c64
--- /dev/null
+++ b/pkgs/path-pieces.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, base, hspec, HUnit, lib, QuickCheck, text, time }:
+mkDerivation {
+  pname = "path-pieces";
+  version = "0.2.1";
+  sha256 = "080bd49f53e20597ca3e5962e0c279a3422345f5b088840a30a751cd76d4a36f";
+  revision = "1";
+  editedCabalFile = "0p7wsphh513s8l5d62lzgbhk2l1h6kj5y7bc27qqjsry9g8ah4y7";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base text time ];
+  testHaskellDepends = [ base hspec HUnit QuickCheck text ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Components of paths";
+  license = lib.licenses.bsd3;
+  broken = false;
+}