diff --git a/manifest.dhall b/manifest.dhall
index 0fcf8df33c2a69aae864a94656037b2ab724d164..f5bae53c2cf91cea99bfcdc63b043134a28bb198 100644
--- a/manifest.dhall
+++ b/manifest.dhall
@@ -78,6 +78,7 @@ in  [ callHackage "Cabal" "3.8.1.0"
     , callHackage "aeson" "2.1.0.0"
     , callHackage "aeson-pretty" "0.8.9"
     , callHackage "aeson-yaml" "1.1.0.1"
+    , callHackage "alex" "3.2.7.1"
     , callHackage "ansi-terminal" "0.11.3"
     , callHackage "ansi-wl-pprint" "0.6.9"
     , callHackage "apecs" "0.9.4"
diff --git a/overlay.nix b/overlay.nix
index 3b76a99b988f937c629a54fcb552d0ae6a3507a3..0c31ca04556339cac15cdfe68b1fd4ac1102c6a0 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -49,6 +49,8 @@ self: with pkgs.haskell.lib; {
 
   aeson-yaml = self.callPackage (./pkgs/aeson-yaml.nix) { };
 
+  alex = self.callPackage (./pkgs/alex.nix) { };
+
   ansi-terminal = self.callPackage (./pkgs/ansi-terminal.nix) { };
 
   ansi-wl-pprint = self.callPackage (./pkgs/ansi-wl-pprint.nix) { };
diff --git a/pkgs/alex.nix b/pkgs/alex.nix
new file mode 100644
index 0000000000000000000000000000000000000000..225ece93f78ca6962e658876dfa5f17e0aef0a5d
--- /dev/null
+++ b/pkgs/alex.nix
@@ -0,0 +1,32 @@
+{ mkDerivation
+, array
+, base
+, containers
+, directory
+, happy
+, lib
+, process
+}:
+mkDerivation {
+  pname = "alex";
+  version = "3.2.7.1";
+  sha256 = "9bd2f1a27e8f1b2ffdb5b2fbd3ed82b6f0e85191459a1b24ffcbef4e68a81bec";
+  isLibrary = false;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  executableHaskellDepends = [ array base containers directory ];
+  executableToolDepends = [ happy ];
+  testHaskellDepends = [ base process ];
+  enableLibraryProfiling = false;
+  enableExecutableProfiling = false;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://www.haskell.org/alex/";
+  description = "Alex is a tool for generating lexical analysers in Haskell";
+  license = lib.licenses.bsd3;
+  mainProgram = "alex";
+  broken = false;
+}