]> Git — Sourcephile - haskell/symantic-parser.git/blob - flake.nix
build: move all Nix config to `flake.nix`
[haskell/symantic-parser.git] / flake.nix
1 {
2 inputs.nixpkgs.url = "flake:nixpkgs";
3 inputs.symantic-base.url = "git+https://git.code.sourcephile.fr/~julm/symantic-base?ref=main";
4 inputs.symantic-base.inputs.nixpkgs.follows = "nixpkgs";
5 outputs = inputs: let
6 pkg = "symantic-parser";
7 lib = inputs.nixpkgs.lib;
8 forAllSystems = f: lib.genAttrs lib.systems.supported.hydra (system: f rec {
9 inherit system;
10 pkgs = inputs.nixpkgs.legacyPackages.${system};
11 haskellPackages = pkgs.haskell.packages."ghc901".extend (with pkgs.haskell.lib; hfinal: hsuper: {
12 ${pkg} = doBenchmark (buildFromSdist (hfinal.callCabal2nix pkg ./. {}));
13 eventlog2html = doJailbreak (unmarkBroken hsuper.eventlog2html);
14 hs-speedscope = doJailbreak (unmarkBroken hsuper.hs-speedscope);
15 ormolu = doJailbreak (unmarkBroken hsuper.ormolu);
16 symantic-base = buildFromSdist (hfinal.callCabal2nix "symantic-base" inputs.symantic-base {});
17 text-short = dontCheck hsuper.text-short;
18 trie-simple = doJailbreak (unmarkBroken hsuper.trie-simple);
19 });
20 });
21 in {
22 # nix -L build
23 defaultPackage = forAllSystems ({haskellPackages, ...}: haskellPackages.${pkg});
24 # nix -L develop
25 devShell = forAllSystems ({pkgs, haskellPackages, ...}:
26 haskellPackages.shellFor {
27 packages = ps: [ ps.${pkg} ];
28 nativeBuildInputs = [
29 haskellPackages.cabal-install
30 haskellPackages.eventlog2html
31 haskellPackages.ghc-events
32 haskellPackages.ghcid
33 haskellPackages.haskell-language-server
34 haskellPackages.hlint
35 haskellPackages.hs-speedscope
36 haskellPackages.ormolu
37 haskellPackages.profiteur
38 pkgs.git-chglog
39 pkgs.reuse
40 ];
41 withHoogle = false;
42 doBenchmark = true;
43 # FIXME: remove when Nixpkgs' haskellPackages.ormolu is no longer broken
44 CABAL_TEST_FLAGS = "-fdisable-ormolu-check";
45 });
46 };
47 }