diff --git a/manifest.dhall b/manifest.dhall
index b062778e9f93e52cb872d0db38280c378d0f5474..8f2f5dc3ac2f8f8e9d5c4970706abcf788b52dd6 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -628,6 +628,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "strict" "0.4.0.1"
     , callHackage "string-interpolate" "0.3.1.2"
     , callHackage "string-qq" "0.0.4"
+    , callHackage "stringbuilder" "0.5.1"
     , callHackage "swagger2" "2.8.5"
     , callHackage "syb" "0.7.2.1"
     , callHackage "sydtest" "0.13.0.0"
diff --git a/overlay.nix b/overlay.nix
index 0cc5aac2e89ce6338a9a43e3c342ee1f2f1d4638..10bc37a77f8fe7859b27eb0fd6b19d0b77fa0cae 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -931,6 +931,8 @@ self: with pkgs.haskell.lib; {
 
   string-qq = self.callPackage (./pkgs/string-qq.nix) { };
 
+  stringbuilder = self.callPackage (./pkgs/stringbuilder.nix) { };
+
   swagger2 = self.callPackage (./pkgs/swagger2.nix) { };
 
   syb = self.callPackage (./pkgs/syb.nix) { };
diff --git a/pkgs/stringbuilder.nix b/pkgs/stringbuilder.nix
new file mode 100644
index 0000000000000000000000000000000000000000..632c51dbfe0d8fa2a4b262a32c8c8b9082600d9e
--- /dev/null
+++ b/pkgs/stringbuilder.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, hspec, lib, QuickCheck }:
+mkDerivation {
+  pname = "stringbuilder";
+  version = "0.5.1";
+  sha256 = "d878bdc4da806dbce5ab684ef13d2634c17c15b991d0ed3bb25a331eba6603ba";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base hspec QuickCheck ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "A writer monad for multi-line string literals";
+  license = lib.licenses.mit;
+  broken = false;
+}