diff --git a/manifest.dhall b/manifest.dhall
index f95755d9bae4848dd323e0d5f0c47fe9f961979c..4b9bff18c24a63c28247f164961ce9a60ad650e4 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -317,6 +317,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "ipynb" "0.2"
     , callHackage "iproute" "1.7.12"
     , callHackage "kan-extensions" "5.2.5"
+    , callHackage "keys" "3.12.3"
     , callCabal2nix
         "kvstore-effectful"
         "https://github.com/haskell-effectful/kvstore-effectful"
diff --git a/overlay.nix b/overlay.nix
index 7c6568ad02c646ac2462e22e2bb190100b4429c1..bdc385936b2cd8d21e2b295a91561e4790210bf7 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -403,6 +403,8 @@ final: prev: with pkgs.haskell.lib; {
 
   kan-extensions = prev.callPackage (./pkgs/kan-extensions.nix) { };
 
+  keys = prev.callPackage (./pkgs/keys.nix) { };
+
   kvstore-effectful = prev.callPackage (./pkgs/kvstore-effectful.nix) { };
 
   kvstore-effectful-cache = prev.callPackage (./pkgs/kvstore-effectful-cache.nix) { };
diff --git a/pkgs/keys.nix b/pkgs/keys.nix
new file mode 100644
index 0000000000000000000000000000000000000000..1cb8c4f89402f9846e3ce72e44a6ce041d3b5370
--- /dev/null
+++ b/pkgs/keys.nix
@@ -0,0 +1,50 @@
+{ mkDerivation
+, array
+, base
+, comonad
+, containers
+, free
+, hashable
+, lib
+, semigroupoids
+, semigroups
+, tagged
+, transformers
+, transformers-compat
+, unordered-containers
+}:
+mkDerivation {
+  pname = "keys";
+  version = "3.12.3";
+  sha256 = "d51e4288a3cc89c5be3327a499212a651549a58af78d0dfeb2cd80e19ce66646";
+  revision = "2";
+  editedCabalFile = "1sb7ii9mhx77rhviqbmdc5r6wlimkmadxi1pyk7k3imdqcdzgjlp";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    array
+    base
+    comonad
+    containers
+    free
+    hashable
+    semigroupoids
+    semigroups
+    tagged
+    transformers
+    transformers-compat
+    unordered-containers
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/ekmett/keys/";
+  description = "Keyed functors and containers";
+  license = lib.licenses.bsd3;
+  broken = false;
+}