diff --git a/manifest.dhall b/manifest.dhall
index 7fe4feb614482be7418a8cfa295ac55183046bfc..3a9125787e14c464834f03fbd7952df52b7ab95e 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -347,6 +347,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
         "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
         (Some "918df757ce5c9244232c1e3a1e05e9d9e3ab4f09")
         (None Text)
+    , callHackage "hscolour" "1.24.4"
     , callHackage "hslua-aeson" "2.2.1"
     , callHackage "hslua-core" "2.2.1"
     , callHackage "hslua-classes" "2.2.0"
diff --git a/overlay.nix b/overlay.nix
index 0d4a5b60bb4436ab67ab41ecd26fd4d8b1d9d83b..eb0fea80fa79d2853b7b7c000737f34c8abb8e91 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -483,6 +483,8 @@ self: with pkgs.haskell.lib; {
 
   hpack-dhall = self.callPackage (./pkgs/hpack-dhall.nix) { };
 
+  hscolour = self.callPackage (./pkgs/hscolour.nix) { };
+
   hslua = self.callPackage (./pkgs/hslua.nix) { };
 
   hslua-aeson = self.callPackage (./pkgs/hslua-aeson.nix) { };
diff --git a/pkgs/hscolour.nix b/pkgs/hscolour.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c4105aac550809dd7450f423fbba9020768570ab
--- /dev/null
+++ b/pkgs/hscolour.nix
@@ -0,0 +1,23 @@
+{ mkDerivation, base, containers, lib }:
+mkDerivation {
+  pname = "hscolour";
+  version = "1.24.4";
+  sha256 = "243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [ base containers ];
+  executableHaskellDepends = [ base containers ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://code.haskell.org/~malcolm/hscolour/";
+  description = "Colourise Haskell code";
+  license = "LGPL";
+  mainProgram = "HsColour";
+  broken = false;
+}