diff --git a/manifest.dhall b/manifest.dhall
index 800939329c2897a1d5de9699025c92418c5e6d3e..e37614d41d3d41a51e29a62b5a7b576d2367704d 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -182,6 +182,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "fuzzy-time" "0.2.0.3"
     , callHackage "generic-lens-core" "2.2.1.0"
     , callHackage "generic-lens-lite" "0.1"
+    , callHackage "generic-monoid" "0.1.0.1"
     , callHackage "generic-optics-lite" "0.1"
     , callHackage "generic-optics" "2.2.1.0"
     , callHackage "generics-sop" "0.5.1.2"
diff --git a/overlay.nix b/overlay.nix
index 6df84c42ece180b6005db67810a9905c6a8808e4..660238876a1cd406b756968e271dca9c90c48b8e 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -167,6 +167,8 @@ final: prev: with pkgs.haskell.lib; {
 
     generic-lens-lite = prev.callPackage (./pkgs/generic-lens-lite.nix) { };
 
+    generic-monoid = prev.callPackage (./pkgs/generic-monoid.nix) { };
+
     generic-optics = prev.callPackage (./pkgs/generic-optics.nix) { };
 
     generic-optics-lite = prev.callPackage (./pkgs/generic-optics-lite.nix) { };
diff --git a/pkgs/generic-monoid.nix b/pkgs/generic-monoid.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e0d5d45cc222c9fbeff1c122ec4ac85a99b86aa4
--- /dev/null
+++ b/pkgs/generic-monoid.nix
@@ -0,0 +1,15 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "generic-monoid";
+  version = "0.1.0.1";
+  sha256 = "cfd072ad70af41c1b94ac24e42e2635f37ed2a54e8f4be871be78b18b66b2adf";
+  revision = "1";
+  editedCabalFile = "17dfarnbv6si8rgajb3jqsbc4k1nxmvga2h1lhmpnq43n2fdkqkq";
+  libraryHaskellDepends = [ base ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  description = "Derive monoid instances for product types";
+  license = lib.licenses.bsd3;
+}
\ No newline at end of file