diff --git a/manifest.dhall b/manifest.dhall
index 59af2a429146747a5c6fc1c14b00aa1a075c6b00..6728e8a61e8b1bd305de6d7285f7be45aad0a7e0 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -510,6 +510,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "pretty-simple" "4.1.1.0"
     , callHackage "prettyprinter-ansi-terminal" "1.1.3"
     , callHackage "prettyprinter" "1.7.1"
+    , callHackage "primes" "0.2.1.0"
     , callHackage "primitive" "0.7.4.0"
     , callHackage "primitive-addr" "0.1.0.2"
     , callHackage "profunctors" "5.6.2"
diff --git a/overlay.nix b/overlay.nix
index c1582c5914c75eb22726e14c791f9d5374a08681..b535f38f726f379c6e2e4f3f21751abfaff1085e 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -745,6 +745,8 @@ self: with pkgs.haskell.lib; {
 
   prettyprinter-ansi-terminal = self.callPackage (./pkgs/prettyprinter-ansi-terminal.nix) { };
 
+  primes = self.callPackage (./pkgs/primes.nix) { };
+
   primitive = self.callPackage (./pkgs/primitive.nix) { };
 
   primitive-addr = self.callPackage (./pkgs/primitive-addr.nix) { };
diff --git a/pkgs/primes.nix b/pkgs/primes.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b27178e5e79819db9f97f61dc1252e9c5e34c230
--- /dev/null
+++ b/pkgs/primes.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "primes";
+  version = "0.2.1.0";
+  sha256 = "74d66558fb638ea4d31eae2fe1a294cb5a9d64491314305d74a11d93f277c65b";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://github.com/sebfisch/primes";
+  description = "Efficient, purely functional generation of prime numbers";
+  license = lib.licenses.bsd3;
+  broken = false;
+}