diff --git a/manifest.dhall b/manifest.dhall
index d0f52df83c1339c6ea876253b39297d790bc8d90..6255b0edbdf15cb95d3f36f4293a64242d7dbbfa 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -251,6 +251,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "fail" "4.9.0.0"
     , callHackage "fcf-containers" "0.7.1"
     , callHackage "file-embed" "0.0.15.0"
+    , callHackage "filemanip" "0.3.6.3"
     , callHackage "filepattern" "0.1.3"
     , callHackage "finite-field" "0.10.0"
     , callHackage "first-class-families" "0.8.0.1"
diff --git a/overlay.nix b/overlay.nix
index 6532bf7da7a8e7d0d9803fd4b6fa189fff560644..cebfef480066acdae739791ffc67288b1148ad46 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -315,6 +315,8 @@ self: with pkgs.haskell.lib; {
 
   file-embed = self.callPackage (./pkgs/file-embed.nix) { };
 
+  filemanip = self.callPackage (./pkgs/filemanip.nix) { };
+
   filepattern = self.callPackage (./pkgs/filepattern.nix) { };
 
   fin = self.callPackage (./pkgs/fin.nix) { };
diff --git a/pkgs/filemanip.nix b/pkgs/filemanip.nix
new file mode 100644
index 0000000000000000000000000000000000000000..7221c9a64ffab296fbdb880e750cbd82ab3131a2
--- /dev/null
+++ b/pkgs/filemanip.nix
@@ -0,0 +1,36 @@
+{ mkDerivation
+, base
+, bytestring
+, directory
+, filepath
+, lib
+, mtl
+, unix-compat
+}:
+mkDerivation {
+  pname = "filemanip";
+  version = "0.3.6.3";
+  sha256 = "8836da17baaaf02ca080c9990ece4e0b0c8d6a128f458f8b64fd07b225ca9846";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    directory
+    filepath
+    mtl
+    unix-compat
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/bos/filemanip";
+  description = "Expressive file and directory manipulation for Haskell";
+  license = lib.licenses.bsd3;
+  broken = false;
+}