diff --git a/manifest.dhall b/manifest.dhall
index 1d3b7fb80c3422b67d29d228ffaa69c6f3a2811e..7466c8b46731f56cdf5c8359bf70effa24ca26de 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -642,6 +642,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "tasty-quickcheck" "0.10.2"
     , callHackage "tasty-wai" "0.1.2.0"
     , callHackage "temporary" "1.3"
+    , callHackage "terminal-size" "0.3.3"
     , callHackage "test-framework" "0.8.2.0"
     , callHackage "test-framework-hunit" "0.3.0.2"
     , callHackage "test-framework-quickcheck2" "0.3.0.5"
diff --git a/overlay.nix b/overlay.nix
index b6615b7538e68e2a701c4de0b7089eb0aa1ad6e6..367075965b42ca44c8cb30b26484338ad35363cc 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -923,6 +923,8 @@ self: with pkgs.haskell.lib; {
 
   temporary = self.callPackage (./pkgs/temporary.nix) { };
 
+  terminal-size = self.callPackage (./pkgs/terminal-size.nix) { };
+
   test-framework = self.callPackage (./pkgs/test-framework.nix) { };
 
   test-framework-hunit = self.callPackage (./pkgs/test-framework-hunit.nix) { };
diff --git a/pkgs/terminal-size.nix b/pkgs/terminal-size.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8c76e714e4c06e72fa877436ab710e99ce20b6a7
--- /dev/null
+++ b/pkgs/terminal-size.nix
@@ -0,0 +1,20 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "terminal-size";
+  version = "0.3.3";
+  sha256 = "8c174c8fa7200be2caffd6d25f789fd3c73f4b7b02989f332a42d7901fca60c3";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  description = "Get terminal window height and width";
+  license = lib.licenses.bsd3;
+  broken = false;
+}