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 isArm = with stdenv.hostPlatform; isAarch64 || isAarch32;
25 platformConfigurations = lib.optionals isArm [
26 (configurationArm { inherit pkgs haskellLib; })
27 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
28 (configurationDarwin { inherit pkgs haskellLib; })
29 ];
30
31 extensions = lib.composeManyExtensions ([
32 nonHackagePackages
33 (configurationNix { inherit pkgs haskellLib; })
34 (configurationCommon { inherit pkgs haskellLib; })
35 ] ++ platformConfigurations ++ [
36 compilerConfig
37 packageSetConfig
38 overrides
39 ]);
40
41 extensible-self = makeExtensible (extends extensions haskellPackages);
42
43in
44
45 extensible-self