diff --git a/manifest.dhall b/manifest.dhall
index 78db686f89e785286331d35cba016d7aa97170b2..7e7cf20c1bbded644b7bd6d0e5f1b425d097130b 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -738,6 +738,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "transformers-compat" "0.7.2"
     , callHackage "tree-diff" "0.2.2"
     , callHackage "trifecta" "2.1.2"
+    , callHackage "tuple" "0.3.0.2"
     , callHackage "turtle" "1.6.1"
     , callHackage "typed-process" "0.2.10.1"
     , callHackage "type-errors-pretty" "0.0.1.2"
diff --git a/overlay.nix b/overlay.nix
index 1fffd10a3bd6c9a461c9d538a8542b7c3dd5783f..e706449a6384d7bb84d5f8d43ba6a3b1e61f0999 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1119,6 +1119,8 @@ self: with pkgs.haskell.lib; {
 
   trifecta = self.callPackage (./pkgs/trifecta.nix) { };
 
+  tuple = self.callPackage (./pkgs/tuple.nix) { };
+
   turtle = self.callPackage (./pkgs/turtle.nix) { };
 
   type-equality = self.callPackage (./pkgs/type-equality.nix) { };
diff --git a/pkgs/tuple.nix b/pkgs/tuple.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ca6ab7c889a27ff728e32f4a9a0431eb133beb8e
--- /dev/null
+++ b/pkgs/tuple.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib, OneTuple }:
+mkDerivation {
+  pname = "tuple";
+  version = "0.3.0.2";
+  sha256 = "2fcb068ffafbe64170e02094a363f83d1725f44f8af963d9dad943a592e89624";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base OneTuple ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Various functions on tuples";
+  license = lib.licenses.bsd3;
+  broken = false;
+}