diff --git a/manifest.dhall b/manifest.dhall
index ae10826315d780e0226f88f3b30971614a473d22..0942b873c172fe0f2d949fe163084b8727bdecae 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -132,6 +132,7 @@ in  [ callHackage "HTF" "0.15.0.0"
         "https://github.com/input-output-hk/cardano-prelude"
         (Some "b6053a23f53acd5c519cc559c3861dda3ebf8b35")
         (Some "cardano-prelude-test")
+    , callHackage "composition-prelude" "3.0.0.2"
     , callHackage "contra-tracer" "0.2.0.0"
     , callHackage "data-ordlist" "0.4.7.0"
     , callCabal2nix
diff --git a/overlay.nix b/overlay.nix
index b43bab649c272e192be84c3e0148c6c33efbc13d..f40976c0d0a5d0126fd0a8ec1f873fbc87edf28d 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -85,6 +85,8 @@ final: prev: with pkgs.haskell.lib; {
 
   cardano-strict-containers = prev.callPackage (./pkgs/cardano-strict-containers.nix) { };
 
+  composition-prelude = prev.callPackage (./pkgs/composition-prelude.nix) { };
+
   contra-tracer = prev.callPackage (./pkgs/contra-tracer.nix) { };
 
   data-ordlist = prev.callPackage (./pkgs/data-ordlist.nix) { };
diff --git a/pkgs/composition-prelude.nix b/pkgs/composition-prelude.nix
new file mode 100644
index 0000000000000000000000000000000000000000..d9cf1f2166307ec46b4fa2801c3a9089a1f18f22
--- /dev/null
+++ b/pkgs/composition-prelude.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "composition-prelude";
+  version = "3.0.0.2";
+  sha256 = "050cfc9738a0dc727570aff513c34accf78da0d4941aa695bd26d54126b53194";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Higher-order function combinators";
+  license = lib.licenses.bsd3;
+  broken = false;
+}