summaryrefslogtreecommitdiffstats
path: root/pkgs/development/haskell-modules/default.nix
blob: 08ee6219edff8548bbd26087fe737dc3b16b6ab0 (plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
  pkgs,
  stdenv,
  lib,
  haskellLib,
  ghc,
  all-cabal-hashes,
  buildHaskellPackages,
  compilerConfig ? (self: super: { }),
  packageSetConfig ? (self: super: { }),
  overrides ? (self: super: { }),
  initialPackages ? import ./initial-packages.nix,
  nonHackagePackages ? import ./non-hackage-packages.nix,
  configurationCommon ? import ./configuration-common.nix,
  configurationNix ? import ./configuration-nix.nix,
  configurationArm ? import ./configuration-arm.nix,
  configurationDarwin ? import ./configuration-darwin.nix,
  configurationWindows ? import ./configuration-windows.nix,
  configurationJS ? import ./configuration-ghcjs-9.x.nix,
}:

let

  inherit (lib) extends makeExtensible;
  inherit (haskellLib) makePackageSet;

  haskellPackages = pkgs.callPackage makePackageSet {
    package-set = initialPackages;
    inherit
      stdenv
      haskellLib
      ghc
      extensible-self
      all-cabal-hashes
      buildHaskellPackages
      ;
  };

  platformConfigurations =
    lib.optionals stdenv.hostPlatform.isAarch [
      (configurationArm { inherit pkgs haskellLib; })
    ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [
      (configurationDarwin { inherit pkgs haskellLib; })
    ]
    ++ lib.optionals stdenv.hostPlatform.isWindows [
      (configurationWindows { inherit pkgs haskellLib; })
    ]
    ++ lib.optionals stdenv.hostPlatform.isGhcjs [
      (configurationJS { inherit pkgs haskellLib; })
    ];

  extensions = lib.composeManyExtensions (
    [
      (nonHackagePackages { inherit pkgs haskellLib; })
      (configurationNix { inherit pkgs haskellLib; })
      (configurationCommon { inherit pkgs haskellLib; })
    ]
    ++ platformConfigurations
    ++ [
      compilerConfig
      packageSetConfig
      overrides
    ]
  );

  extensible-self = makeExtensible (extends extensions haskellPackages);

in

extensible-self