diff --git a/manifest.dhall b/manifest.dhall
index 6541bce513ffac139f6c336783e9ff0619f2c5ee..afa96a6db18d69365f32d6c3160faced7acfc67b 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -185,6 +185,7 @@ in  [ callHackage "HTF" "0.15.0.0"
         (Some "20e4c6ee880e7d62b18b995750063dd7349a3f8e")
         (None Text)
     , callHackage "mtl-prelude" "2.0.3.1"
+    , callHackage "multiset" "0.3.4.3"
     , callHackage "list-t" "1.0.5.3"
     , callCardanoLedger "non-integral" "libs/non-integral"
     , callCabal2nix
diff --git a/overlay.nix b/overlay.nix
index 41e8e7171fd81d49fabc30d03209a27acacf422c..c816e31fa793f8b938bb3d97572a196325c58082 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -121,6 +121,8 @@ final: prev: with pkgs.haskell.lib; {
 
   mtl-prelude = prev.callPackage (./pkgs/mtl-prelude.nix) { };
 
+  multiset = prev.callPackage (./pkgs/multiset.nix) { };
+
   non-integral = prev.callPackage (./pkgs/non-integral.nix) { };
 
   nothunks = prev.callPackage (./pkgs/nothunks.nix) { };
diff --git a/pkgs/multiset.nix b/pkgs/multiset.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2a07ba28a4bc7720dc205aae5ea3a22332dee881
--- /dev/null
+++ b/pkgs/multiset.nix
@@ -0,0 +1,38 @@
+{ mkDerivation
+, base
+, checkers
+, containers
+, deepseq
+, doctest
+, lib
+, QuickCheck
+, tasty
+, tasty-quickcheck
+}:
+mkDerivation {
+  pname = "multiset";
+  version = "0.3.4.3";
+  sha256 = "79fcae15a5d3ce28f0b973ad90290f7451396e81cc92007456ce2bb49b9415c4";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base containers deepseq ];
+  testHaskellDepends = [
+    base
+    checkers
+    doctest
+    QuickCheck
+    tasty
+    tasty-quickcheck
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "The Data.MultiSet container type";
+  license = lib.licenses.bsd3;
+  broken = false;
+}