1{
2 pkgs,
3 stdenv,
4 lib,
5 haskellLib,
6 ghc,
7 all-cabal-hashes,
8 buildHaskellPackages,
9 compilerConfig ? (self: super: { }),
10 packageSetConfig ? (self: super: { }),
11 overrides ? (self: super: { }),
12 initialPackages ? import ./initial-packages.nix,
13 nonHackagePackages ? import ./non-hackage-packages.nix,
14 configurationCommon ? import ./configuration-common.nix,
15 configurationNix ? import ./configuration-nix.nix,
16 configurationArm ? import ./configuration-arm.nix,
17 configurationDarwin ? import ./configuration-darwin.nix,
18 configurationJS ? import ./configuration-ghcjs-9.x.nix,
19}:
20
21let
22
23 inherit (lib) extends makeExtensible;
24 inherit (haskellLib) makePackageSet;
25
26 haskellPackages = pkgs.callPackage makePackageSet {
27 package-set = initialPackages;
28 inherit
29 stdenv
30 haskellLib
31 ghc
32 extensible-self
33 all-cabal-hashes
34 ;
35
36 # Prevent `pkgs/top-level/release-attrpaths-superset.nix` from recursing here.
37 buildHaskellPackages = buildHaskellPackages // {
38 __attrsFailEvaluation = true;
39 };
40 };
41
42 platformConfigurations =
43 lib.optionals stdenv.hostPlatform.isAarch [
44 (configurationArm { inherit pkgs haskellLib; })
45 ]
46 ++ lib.optionals stdenv.hostPlatform.isDarwin [
47 (configurationDarwin { inherit pkgs haskellLib; })
48 ]
49 ++ lib.optionals stdenv.hostPlatform.isGhcjs [
50 (configurationJS { inherit pkgs haskellLib; })
51 ];
52
53 extensions = lib.composeManyExtensions (
54 [
55 (nonHackagePackages { inherit pkgs haskellLib; })
56 (configurationNix { inherit pkgs haskellLib; })
57 (configurationCommon { inherit pkgs haskellLib; })
58 ]
59 ++ platformConfigurations
60 ++ [
61 compilerConfig
62 packageSetConfig
63 overrides
64 ]
65 );
66
67 extensible-self = makeExtensible (extends extensions haskellPackages);
68
69in
70
71extensible-self