about summary refs log tree commit diff
path: root/shell.nix
blob: d1c2b7ad911aa95d537819849fb730bf899b56bc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ nixpkgs ? import ./nixpkgs.nix {}, compiler ? "ghc865", withHoogle ? true }:
let
  inherit (nixpkgs) pkgs;

  pkg = import ./pkg.nix { inherit nixpkgs; };

  packageSet = (
    if compiler == "default"
    then pkgs.haskellPackages
    else pkgs.haskell.packages.${compiler}
  ).override {
    overrides = import ./haskell-overlay.nix { inherit nixpkgs; };
  };

  haskellPackages = (
    if withHoogle
    then packageSet.override {
      overrides = (self: super: {
        ghc = super.ghc // { withPackages = super.ghc.withHoogle; };
        ghcWithPackages = self.ghc.withPackages;
        # eww https://github.com/NixOS/nixpkgs/issues/16394
        generic-arbitrary = pkgs.haskell.lib.appendPatch
          super.generic-arbitrary
          [ ./generic-arbitrary-export-garbitrary.patch ];
      });
    }
    else packageSet
  );

  drv = haskellPackages.callPackage pkg {};

  inherit (pkgs.haskell.lib) addBuildTools;
in
(addBuildTools drv (with haskellPackages; [ cabal-install ])).env