diff --git a/horizon.dhall b/horizon.dhall
index e69242035366253cdf25166ccdf6e420ad15bb96..3495b8143fbdab86c2486bdeecc4b43eb0a2c504 100644
--- a/horizon.dhall
+++ b/horizon.dhall
@@ -44,7 +44,8 @@ let callGitServant
           (Some subdir)
 
 let packages =
-      { Cabal = H.callHackage "Cabal" "3.8.1.0"
+      { BNFC = H.callHackage "BNFC" "2.9.4.1"
+      , Cabal = H.callHackage "Cabal" "3.8.1.0"
       , Cabal-QuickCheck = callGitCabal "Cabal-QuickCheck"
       , Cabal-described = callGitCabal "Cabal-described"
       , Cabal-syntax = callGitCabal "Cabal-syntax"
diff --git a/initial-packages.nix b/initial-packages.nix
index 700d400fa3d0a857ed11900090616e2e9eb078ae..fdb0b776599be40c164239af8d0947976d67efda 100644
--- a/initial-packages.nix
+++ b/initial-packages.nix
@@ -1,6 +1,8 @@
 { pkgs, lib, callPackage, ... }:
 
 self: with pkgs.haskell.lib; {
+  BNFC = self.callPackage (./pkgs/BNFC.nix) { };
+
   Cabal = self.callPackage (./pkgs/Cabal.nix) { };
 
   Cabal-QuickCheck = self.callPackage (./pkgs/Cabal-QuickCheck.nix) { };
diff --git a/pkgs/BNFC.nix b/pkgs/BNFC.nix
new file mode 100644
index 0000000000000000000000000000000000000000..4fac7769810cffa63a1b17898ed0c62ad1864ba3
--- /dev/null
+++ b/pkgs/BNFC.nix
@@ -0,0 +1,75 @@
+{ mkDerivation
+, HUnit
+, QuickCheck
+, alex
+, array
+, base
+, containers
+, deepseq
+, directory
+, filepath
+, happy
+, hspec
+, hspec-discover
+, lib
+, mtl
+, pretty
+, process
+, string-qq
+, temporary
+, time
+, transformers
+}:
+mkDerivation {
+  pname = "BNFC";
+  version = "2.9.4.1";
+  sha256 = "5e93609c1633e4b6636d0ac2b52c1d35228c13bd704a7849cb4e92b00ce27250";
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = false;
+  libraryHaskellDepends = [
+    array
+    base
+    containers
+    deepseq
+    directory
+    filepath
+    mtl
+    pretty
+    process
+    string-qq
+    time
+    transformers
+  ];
+  libraryToolDepends = [ alex happy ];
+  executableHaskellDepends = [ base ];
+  testHaskellDepends = [
+    array
+    base
+    containers
+    deepseq
+    directory
+    filepath
+    hspec
+    HUnit
+    mtl
+    pretty
+    process
+    QuickCheck
+    string-qq
+    temporary
+    time
+  ];
+  testToolDepends = [ alex happy hspec-discover ];
+  enableLibraryProfiling = true;
+  enableExecutableProfiling = true;
+  doHaddock = false;
+  jailbreak = true;
+  doCheck = false;
+  doBenchmark = false;
+  hyperlinkSource = false;
+  homepage = "http://bnfc.digitalgrammars.com/";
+  description = "A compiler front-end generator";
+  license = lib.licenses.bsd3;
+  broken = false;
+}