1{ pkgs, stdenv, lib, haskellLib, ghc, all-cabal-hashes
2, buildHaskellPackages
3, compilerConfig ? (self: super: {})
4, packageSetConfig ? (self: super: {})
5, overrides ? (self: super: {})
6, initialPackages ? import ./initial-packages.nix
7, nonHackagePackages ? import ./non-hackage-packages.nix
8, configurationCommon ? import ./configuration-common.nix
9, configurationNix ? import ./configuration-nix.nix
10, configurationArm ? import ./configuration-arm.nix
11, configurationDarwin ? import ./configuration-darwin.nix
12}:
13
14let
15
16 inherit (lib) extends makeExtensible;
17 inherit (haskellLib) makePackageSet;
18
19 haskellPackages = pkgs.callPackage makePackageSet {
20 package-set = initialPackages;
21 inherit stdenv haskellLib ghc buildHaskellPackages extensible-self all-cabal-hashes;
22 };
23
24 platformConfigurations = lib.optionals stdenv.hostPlatform.isAarch [
25 (configurationArm { inherit pkgs haskellLib; })
26 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
27 (configurationDarwin { inherit pkgs haskellLib; })
28 ];
29
30 extensions = lib.composeManyExtensions ([
31 nonHackagePackages
32 (configurationNix { inherit pkgs haskellLib; })
33 (configurationCommon { inherit pkgs haskellLib; })
34 ] ++ platformConfigurations ++ [
35 compilerConfig
36 packageSetConfig
37 overrides
38 ]);
39
40 extensible-self = makeExtensible (extends extensions haskellPackages);
41
42in
43
44 extensible-self