{ pkgs ? import <nixpkgs> {}
, 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;
};
}