diff --git a/manifest.dhall b/manifest.dhall
index 786ab8c4d35b0ab96d47dbdadfff035915e1d896..e37a3da4c1c28207c61a147a70c18ded92de648b 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -650,6 +650,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "sydtest" "0.13.0.0"
     , callHackage "sydtest-discover" "0.0.0.2"
     , callHackage "system-filepath" "0.4.14"
+    , callHackage "tabular" "0.2.2.8"
     , callHackage "tagged" "0.8.6.1"
     , callHackage "tar" "0.5.1.1"
     , callCabal2nix
diff --git a/overlay.nix b/overlay.nix
index 82bc049d996f274a277b5f534ee12f6502a7f336..0d0c028c81755ac6701cc97d7d08285f7d8dd907 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -975,6 +975,8 @@ self: with pkgs.haskell.lib; {
 
   system-filepath = self.callPackage (./pkgs/system-filepath.nix) { };
 
+  tabular = self.callPackage (./pkgs/tabular.nix) { };
+
   tagged = self.callPackage (./pkgs/tagged.nix) { };
 
   tar = self.callPackage (./pkgs/tar.nix) { };
diff --git a/pkgs/tabular.nix b/pkgs/tabular.nix
new file mode 100644
index 0000000000000000000000000000000000000000..fbde6e3e9b0e79844b24f2e7af4129fe0c15e3d0
--- /dev/null
+++ b/pkgs/tabular.nix
@@ -0,0 +1,21 @@
+{ mkDerivation, base, csv, html, lib, mtl }:
+mkDerivation {
+  pname = "tabular";
+  version = "0.2.2.8";
+  sha256 = "cb7d06eaec7945cd77db2380ed4a9b7a048c5f6abcfba766c328228be033237d";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base csv html mtl ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/bgamari/tabular";
+  description = "Two-dimensional data tables with rendering functions";
+  license = lib.licenses.bsd3;
+  broken = false;
+}