diff --git a/manifest.dhall b/manifest.dhall
index 803a19891628e9ba27b936cda1d4ccd98fc5c5b4..7d21b994bc2e046004cb731ad1d29428e019201b 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -277,6 +277,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "file-embed" "0.0.15.0"
     , callHackage "filemanip" "0.3.6.3"
     , callHackage "filepattern" "0.1.3"
+    , callHackage "filtrable" "0.1.6.0"
     , callHackage "fingertree-psqueue" "0.3"
     , callHackage "fingertree" "0.1.5.0"
     , callHackage "finite-field" "0.10.0"
diff --git a/overlay.nix b/overlay.nix
index 95edc40b30241a717fb354af3f0f339c30e9eab3..104b6bb9e3d8836503f47c143ea88e057507ceb2 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -367,6 +367,8 @@ self: with pkgs.haskell.lib; {
 
   filepattern = self.callPackage (./pkgs/filepattern.nix) { };
 
+  filtrable = self.callPackage (./pkgs/filtrable.nix) { };
+
   fin = self.callPackage (./pkgs/fin.nix) { };
 
   fingertree = self.callPackage (./pkgs/fingertree.nix) { };
diff --git a/pkgs/filtrable.nix b/pkgs/filtrable.nix
new file mode 100644
index 0000000000000000000000000000000000000000..957f526cc9a0381f0aa67fe3ec87f78a96e559d6
--- /dev/null
+++ b/pkgs/filtrable.nix
@@ -0,0 +1,30 @@
+{ mkDerivation
+, base
+, containers
+, lib
+, smallcheck
+, tasty
+, tasty-smallcheck
+, transformers
+}:
+mkDerivation {
+  pname = "filtrable";
+  version = "0.1.6.0";
+  sha256 = "be40b79abd9b6563a0146069b22313a4a7b8fb8cf7e3c4bc62fb7725f9a11215";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base containers transformers ];
+  testHaskellDepends = [ base smallcheck tasty tasty-smallcheck ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/strake/filtrable.hs";
+  description = "Class of filtrable containers";
+  license = lib.licenses.bsd3;
+  broken = false;
+}