diff --git a/flake.nix b/flake.nix
index e215e71a7d6d36bb29aa990199d030b6aa702819..a9bcc39ad82f9e2b0e143bb40643c077714b544b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -31,11 +31,16 @@
 
         horizon-platform-prev = get-flake horizon-platform;
 
-        horizon-gen-nix = writeBashBin "horizon-gen-nix" ''
-          ${horizon-platform-prev.legacyPackages.${system}.horizon-gen-nix}/bin/horizon-gen-nix;
-          ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt pkgs/*
-          ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt initial-packages.nix
-        '';
+        horizon-gen-nix = pkgs.writeShellApplication {
+          name = "horizon-gen-nix";
+          runtimeInputs = with pkgs; [ ghc cabal-install ];
+          text = ''
+            cabal update
+            ${horizon-platform-prev.legacyPackages.${system}.horizon-gen-nix}/bin/horizon-gen-nix;
+            ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt pkgs/*
+            ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt initial-packages.nix
+          '';
+        };
 
         haskellLib = pkgs.haskell.lib.compose;