diff --git a/manifest.dhall b/manifest.dhall
index f1a688e9c36f85e64122d8afc7fa714b2a1e48fd..e0743dc84091c5db1d4b34291d50f0dd462f4115 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -208,6 +208,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "effectful" "2.1.0.0"
     , callHackage "extra" "1.7.12"
     , callHackage "fcf-containers" "0.7.1"
+    , callHackage "filepattern" "0.1.3"
     , callHackage "finite-field" "0.10.0"
     , callHackage "first-class-families" "0.8.0.1"
     , callHackage "fin" "0.2.1"
diff --git a/overlay.nix b/overlay.nix
index be09298215938cc5c96e78e71081d84087331dc1..576a133b7b17543375982a69bb0ba738c52b7f44 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -219,6 +219,8 @@ final: prev: with pkgs.haskell.lib; {
 
   fcf-containers = prev.callPackage (./pkgs/fcf-containers.nix) { };
 
+  filepattern = prev.callPackage (./pkgs/filepattern.nix) { };
+
   fin = prev.callPackage (./pkgs/fin.nix) { };
 
   finite-field = prev.callPackage (./pkgs/finite-field.nix) { };
diff --git a/pkgs/filepattern.nix b/pkgs/filepattern.nix
new file mode 100644
index 0000000000000000000000000000000000000000..bed547de95160640fd4d836fa26699e9b3518007
--- /dev/null
+++ b/pkgs/filepattern.nix
@@ -0,0 +1,29 @@
+{ mkDerivation
+, base
+, directory
+, extra
+, filepath
+, lib
+, QuickCheck
+}:
+mkDerivation {
+  pname = "filepattern";
+  version = "0.1.3";
+  sha256 = "cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base directory extra filepath ];
+  testHaskellDepends = [ base directory extra filepath QuickCheck ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/ndmitchell/filepattern#readme";
+  description = "File path glob-like matching";
+  license = lib.licenses.bsd3;
+  broken = false;
+}