diff --git a/manifest.dhall b/manifest.dhall
index 487ca28c6c87662e60feda8520f3dcbe46490df0..4fde350e502dc91f10495a01d094d662628bf531 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -318,6 +318,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (None Text)
         (Some "hunit")
     , callHackage "tasty-wai" "0.1.2.0"
+    , callHackage "text-metrics" "0.3.2"
     , callHackage "text-zipper" "0.12"
     , callHackage "these" "1.1.1.1"
     , callHackage "th-extras" "0.0.0.6"
diff --git a/overlay.nix b/overlay.nix
index b617e89c790bc412ef19baf5c480ce72c6a4ca92..1a2fb02bb99651e6ab4455405278025da2b21640 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -399,6 +399,8 @@ final: prev: with pkgs.haskell.lib; {
 
     tasty-wai = prev.callPackage (./pkgs/tasty-wai.nix) { };
 
+    text-metrics = prev.callPackage (./pkgs/text-metrics.nix) { };
+
     text-zipper = prev.callPackage (./pkgs/text-zipper.nix) { };
 
     th-extras = prev.callPackage (./pkgs/th-extras.nix) { };
diff --git a/pkgs/text-metrics.nix b/pkgs/text-metrics.nix
new file mode 100644
index 0000000000000000000000000000000000000000..19123b21017ceeeb7411647b5f54f15845a36e7a
--- /dev/null
+++ b/pkgs/text-metrics.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, containers, criterion, deepseq, hspec, lib
+, QuickCheck, text, vector, weigh
+}:
+mkDerivation {
+  pname = "text-metrics";
+  version = "0.3.2";
+  sha256 = "bdd730a8f1ebc98a2d56edd73d94ebba6062ee1b49d4d019ffc2c37eaadd836e";
+  revision = "2";
+  editedCabalFile = "0h146i2dvv21nc5z1x9a5a9c2v5ml2kvd10krd5p5aaqpng6i1g4";
+  libraryHaskellDepends = [ base containers text vector ];
+  testHaskellDepends = [ base hspec QuickCheck text ];
+  benchmarkHaskellDepends = [ base criterion deepseq text weigh ];
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/mrkkrp/text-metrics";
+  description = "Calculate various string metrics efficiently";
+  license = lib.licenses.bsd3;
+}
\ No newline at end of file