{ pkgs ? import {} , ghc ? "ghc901" , withHoogle ? false , inputs }: let haskellPackages = if ghc == null then pkgs.haskellPackages else pkgs.haskell.packages.${ghc}; hs = haskellPackages.extend (with pkgs.haskell.lib; hself: hsuper: { #symantic-parser = enableExecutableProfiling (doCheck ( hself.callCabal2nix "symantic-parser" ./. {})); # FIXME: this should not be necessary, but haskellPackages.ormolu is currently broken. ormolu = pkgs.ormolu; text-short = dontCheck hsuper.text-short; hs-speedscope = doJailbreak (unmarkBroken hsuper.hs-speedscope); eventlog2html = doJailbreak (unmarkBroken hsuper.eventlog2html); trie-simple = doJailbreak (unmarkBroken hsuper.trie-simple); symantic-base = buildFromSdist (hself.callCabal2nix "symantic-base" inputs.symantic-base {}); symantic-parser = doBenchmark (buildFromSdist (hself.callCabal2nix "symantic-parser" ./. {})); /* hlint = hsuper.hlint_3_3_1.overrideScope (self: super: { ghc-lib-parser = overrideCabal self.ghc-lib-parser_9_0_1_20210324 { doHaddock = false; }; ghc-lib-parser-ex = self.ghc-lib-parser-ex_9_0_0_4; }); */ } ); in hs.symantic-parser // { shell = hs.shellFor { doBenchmark = true; packages = p: [ p.symantic-parser ]; # FIXME: remove when Nixpkgs' haskellPackages.ormolu is no longer broken CABAL_TEST_FLAGS = "-fdisable-ormolu-check"; nativeBuildInputs = [ hs.cabal-install hs.eventlog2html hs.ghc-events hs.ghcid #hs.hlint hs.hs-speedscope hs.ormolu hs.profiteur #hs.threadscope #hs.ghc-events-analyze #hs.haskell-language-server #hs.hpc ]; buildInputs = [ #hs.ghcid pkgs.cabal2nix #hs.hlint #pkgs.nixpkgs-fmt ]; inherit withHoogle; }; }