diff --git a/manifest.dhall b/manifest.dhall
index 97ff084daf3d5e104f3f9bdc5472849dc2d2c7c2..ccad977786a31c6aa00ea5f3f046e4ab60778d2d 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -253,6 +253,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "ghc-typelits-knownnat" "0.7.7"
     , callHackage "ghc-typelits-natnormalise" "0.7.7"
     , callHackage "ghcid" "0.8.8"
+    , callHackage "gitrev" "1.3.1"
     , callHackage "hackage-security" "0.6.2.2"
     , callHackage "haddock-library" "1.11.0"
     , callHackage "hashable" "1.4.1.0"
diff --git a/overlay.nix b/overlay.nix
index 91960c32dbd0678b8dc6654f4592a0adf2375880..3442cf114ef089b64d01b7d778bc651a849fb7d9 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -301,6 +301,8 @@ final: prev: with pkgs.haskell.lib; {
 
   ghcid = prev.callPackage (./pkgs/ghcid.nix) { };
 
+  gitrev = prev.callPackage (./pkgs/gitrev.nix) { };
+
   hackage-security = prev.callPackage (./pkgs/hackage-security.nix) { };
 
   haddock-library = prev.callPackage (./pkgs/haddock-library.nix) { };
diff --git a/pkgs/gitrev.nix b/pkgs/gitrev.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fcb33605e10ce49d72a6d3241daefd6e87fc856c
--- /dev/null
+++ b/pkgs/gitrev.nix
@@ -0,0 +1,36 @@
+{ mkDerivation
+, base
+, base-compat
+, directory
+, filepath
+, lib
+, process
+, template-haskell
+}:
+mkDerivation {
+  pname = "gitrev";
+  version = "1.3.1";
+  sha256 = "a89964db24f56727b0e7b10c98fe7c116d721d8c46f52d6e77088669aaa38332";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    base
+    base-compat
+    directory
+    filepath
+    process
+    template-haskell
+  ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/acfoltzer/gitrev";
+  description = "Compile git revision info into Haskell projects";
+  license = lib.licenses.bsd3;
+  broken = false;
+}