diff --git a/manifest.dhall b/manifest.dhall
index 839c16a437e1b8840a523a2495ad801ebb9a3149..adfca00c57ba061f7a07c3099255e807aa75e869 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -663,6 +663,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "spoon" "0.3.1"
     , callHackage "sqlite-simple" "0.4.18.2"
     , callHackage "statistics" "0.16.1.0"
+    , callHackage "stm-chans" "3.0.0.6"
     , callHackage "streaming-commons" "0.2.2.4"
     , callHackage "strict" "0.4.0.1"
     , callHackage "string-interpolate" "0.3.1.2"
diff --git a/overlay.nix b/overlay.nix
index 0a26ab2915e8d58d90d6ce77d3fa5281abf02736..d031d802335c4f94286ff053476a9cf251f06d88 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1001,6 +1001,8 @@ self: with pkgs.haskell.lib; {
 
   statistics = self.callPackage (./pkgs/statistics.nix) { };
 
+  stm-chans = self.callPackage (./pkgs/stm-chans.nix) { };
+
   streaming-commons = self.callPackage (./pkgs/streaming-commons.nix) { };
 
   strict = self.callPackage (./pkgs/strict.nix) { };
diff --git a/pkgs/stm-chans.nix b/pkgs/stm-chans.nix
new file mode 100644
index 0000000000000000000000000000000000000000..5502af0421651953b267641ab8cebb1a48553b71
--- /dev/null
+++ b/pkgs/stm-chans.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib, stm }:
+mkDerivation {
+  pname = "stm-chans";
+  version = "3.0.0.6";
+  sha256 = "ea6e3e83b67380ada44a566014e2611ef9f98142a8bbb91583fb598425760a12";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base stm ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://wrengr.org/software/hackage.html";
+  description = "Additional types of channels for STM";
+  license = lib.licenses.bsd3;
+  broken = false;
+}