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 buildHaskellPackages
35 ;
36 };
37
38 platformConfigurations =
39 lib.optionals stdenv.hostPlatform.isAarch [
40 (configurationArm { inherit pkgs haskellLib; })
41 ]
42 ++ lib.optionals stdenv.hostPlatform.isDarwin [
43 (configurationDarwin { inherit pkgs haskellLib; })
44 ]
45 ++ lib.optionals stdenv.hostPlatform.isGhcjs [
46 (configurationJS { inherit pkgs haskellLib; })
47 ];
48
49 extensions = lib.composeManyExtensions (
50 [
51 (nonHackagePackages { inherit pkgs haskellLib; })
52 (configurationNix { inherit pkgs haskellLib; })
53 (configurationCommon { inherit pkgs haskellLib; })
54 ]
55 ++ platformConfigurations
56 ++ [
57 compilerConfig
58 packageSetConfig
59 overrides
60 ]
61 );
62
63 extensible-self = makeExtensible (extends extensions haskellPackages);
64
65in
66
67extensible-self