diff --git a/manifest.dhall b/manifest.dhall
index 88b2c989af4cfbffabbfeb370b6d4cf469f0f603..516059c10094bbb829773c28fa5c6ce4436413bf 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -373,6 +373,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "invariant" "0.6"
     , callHackage "ipynb" "0.2"
     , callHackage "iproute" "1.7.12"
+    , callHackage "js-chart" "2.9.4.1"
     , callHackage "kan-extensions" "5.2.5"
     , callHackage "keys" "3.12.3"
     , callCabal2nix
diff --git a/overlay.nix b/overlay.nix
index 995c4b28cf927ab5f583e28a385f9438db83c777..64a8935239fdbeac1346d88338857480952f91c2 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -523,6 +523,8 @@ self: with pkgs.haskell.lib; {
 
   ipynb = self.callPackage (./pkgs/ipynb.nix) { };
 
+  js-chart = self.callPackage (./pkgs/js-chart.nix) { };
+
   kan-extensions = self.callPackage (./pkgs/kan-extensions.nix) { };
 
   keys = self.callPackage (./pkgs/keys.nix) { };
diff --git a/pkgs/js-chart.nix b/pkgs/js-chart.nix
new file mode 100644
index 0000000000000000000000000000000000000000..23ebecf972015e03af4e0a7af561fdb96857e692
--- /dev/null
+++ b/pkgs/js-chart.nix
@@ -0,0 +1,22 @@
+{ mkDerivation, base, lib }:
+mkDerivation {
+  pname = "js-chart";
+  version = "2.9.4.1";
+  sha256 = "0a08efdd35bd1b8f293f9163f59305f31835304b74c3e3a1a840fc94bbc9bd0e";
+  isLibrary = true;
+  isExecutable = false;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [ base ];
+  testHaskellDepends = [ base ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "https://github.com/jonascarpay/js-chart#readme";
+  description = "Obtain minified chart.js code";
+  license = lib.licenses.mit;
+  broken = false;
+}