diff --git a/manifest.dhall b/manifest.dhall
index 67c88286f9afcdd51a53d90da9f207ed132de410..d9c131e80f06ecf86b1ffe3e77702e7af00fb2ac 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -247,6 +247,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "pandoc" "2.19.2"
     , callHackage "parallel" "3.2.2.0"
     , callHackage "pcg-random" "0.1.3.7"
+    , callHackage "persistent" "2.14.3.0"
     , callHackage "polysemy" "1.7.1.0"
     , callHackage "polysemy-extra" "0.2.1.0"
     , callHackage "polysemy-kvstore" "0.1.3.0"
diff --git a/overlay.nix b/overlay.nix
index 2e1d28b6e2a8859fd2905ef053b1fde360b1c9a4..d34b24b8958b47d0e293dd6f6596cf90b2541231 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -305,6 +305,8 @@ final: prev: with pkgs.haskell.lib; {
 
     pcg-random = prev.callPackage (./pkgs/pcg-random.nix) { };
 
+    persistent = prev.callPackage (./pkgs/persistent.nix) { };
+
     polysemy = prev.callPackage (./pkgs/polysemy.nix) { };
 
     polysemy-extra = prev.callPackage (./pkgs/polysemy-extra.nix) { };
diff --git a/pkgs/persistent.nix b/pkgs/persistent.nix
new file mode 100644
index 0000000000000000000000000000000000000000..da7a2b98dbf2da56c113ba4a60de9040ab598efe
--- /dev/null
+++ b/pkgs/persistent.nix
@@ -0,0 +1,38 @@
+{ mkDerivation, aeson, attoparsec, base, base64-bytestring
+, blaze-html, bytestring, conduit, containers, criterion, deepseq
+, fast-logger, file-embed, hspec, http-api-data, lib, lift-type
+, monad-logger, mtl, path-pieces, QuickCheck, quickcheck-instances
+, resource-pool, resourcet, scientific, shakespeare, silently
+, template-haskell, text, th-lift-instances, time, transformers
+, unliftio, unliftio-core, unordered-containers, vault, vector
+}:
+mkDerivation {
+  pname = "persistent";
+  version = "2.14.3.0";
+  sha256 = "1288244f62d334dbe65cae6157098de38419b8445d5cc227281e688310189a19";
+  libraryHaskellDepends = [
+    aeson attoparsec base base64-bytestring blaze-html bytestring
+    conduit containers fast-logger http-api-data lift-type monad-logger
+    mtl path-pieces resource-pool resourcet scientific silently
+    template-haskell text th-lift-instances time transformers unliftio
+    unliftio-core unordered-containers vault vector
+  ];
+  testHaskellDepends = [
+    aeson attoparsec base base64-bytestring blaze-html bytestring
+    conduit containers fast-logger hspec http-api-data monad-logger mtl
+    path-pieces QuickCheck quickcheck-instances resource-pool resourcet
+    scientific shakespeare silently template-haskell text
+    th-lift-instances time transformers unliftio unliftio-core
+    unordered-containers vector
+  ];
+  benchmarkHaskellDepends = [
+    base criterion deepseq file-embed template-haskell text
+  ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "http://www.yesodweb.com/book/persistent";
+  description = "Type-safe, multi-backend data serialization";
+  license = lib.licenses.mit;
+}
\ No newline at end of file