diff --git a/manifest.dhall b/manifest.dhall
index a9c1f3991c114efe953ad2848cc0bea832ee00b9..1637d7f79098d92d6c577095be43a0a286fbb352 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -119,6 +119,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         (None Text)
         (Some "cabal2nix")
     , callHackage "cache" "0.1.3.0"
+    , callHackage "call-stack" "0.4.0"
     , callHackage "case-insensitive" "1.2.1.0"
     , callHackage "cassava" "0.5.3.0"
     , callHackage "cassava-megaparsec" "2.0.4"
diff --git a/overlay.nix b/overlay.nix
index 0cd6c5ccd0a3cf569e064ffe1b01018e196c7dfd..ee8b14de73bf9e86d4b4d5edcd1fc880fc916272 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -113,6 +113,8 @@ self: with pkgs.haskell.lib; {
 
   cache = self.callPackage (./pkgs/cache.nix) { };
 
+  call-stack = self.callPackage (./pkgs/call-stack.nix) { };
+
   case-insensitive = self.callPackage (./pkgs/case-insensitive.nix) { };
 
   cassava = self.callPackage (./pkgs/cassava.nix) { };
diff --git a/pkgs/call-stack.nix b/pkgs/call-stack.nix
new file mode 100644
index 0000000000000000000000000000000000000000..b9bf334b1bd7d963b8af80c743999a01bf84cc47
--- /dev/null
+++ b/pkgs/call-stack.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, filepath, lib, nanospec }:
+mkDerivation {
+  pname = "call-stack";
+  version = "0.4.0";
+  sha256 = "430bcf8a3404f7e55319573c0b807b1356946f0c8f289bb3d9afb279c636b87b";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base filepath nanospec ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/sol/call-stack#readme";
+  description = "Use GHC call-stacks in a backward compatible way";
+  license = lib.licenses.mit;
+  broken = false;
+}