diff --git a/manifest.dhall b/manifest.dhall
index a258efa9fc62c14aefbe5a4732121756ffcee08e..813723dfe0ef6f6101ea8e10eecaed87ba16d16e 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -457,6 +457,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "math-functions" "0.3.4.2"
     , callHackage "megaparsec" "9.2.2"
     , callHackage "memory" "0.18.0"
+    , callHackage "mersenne-random" "1.0.0.1"
     , callHackage "microlens-aeson" "2.5.0"
     , callHackage "microlens-mtl" "0.2.0.2"
     , callHackage "microlens-th" "0.4.3.10"
diff --git a/overlay.nix b/overlay.nix
index ba3126736d2306c26b86b8f59fcf55523b126e1e..24a7f707cf270bd91c5f4bb32bc86ce7ea7bbfee 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -661,6 +661,8 @@ self: with pkgs.haskell.lib; {
 
   memory = self.callPackage (./pkgs/memory.nix) { };
 
+  mersenne-random = self.callPackage (./pkgs/mersenne-random.nix) { };
+
   microlens = self.callPackage (./pkgs/microlens.nix) { };
 
   microlens-aeson = self.callPackage (./pkgs/microlens-aeson.nix) { };
diff --git a/pkgs/mersenne-random.nix b/pkgs/mersenne-random.nix
new file mode 100644
index 0000000000000000000000000000000000000000..07b9cbe5de5fac4e6deb357470f1cbe66544d568
--- /dev/null
+++ b/pkgs/mersenne-random.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib, old-time }:
+mkDerivation {
+  pname = "mersenne-random";
+  version = "1.0.0.1";
+  sha256 = "bcee8af246b6967b0c4326f3eec57611818dacc729b7c6bd42e1d363f9f878a4";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base old-time ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://code.haskell.org/~dons/code/mersenne-random";
+  description = "Generate high quality pseudorandom numbers using a SIMD Fast Mersenne Twister";
+  license = lib.licenses.bsd3;
+  broken = false;
+}