71 lines
1.8 KiB
Nix
71 lines
1.8 KiB
Nix
{
|
|
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,
|
|
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
|
|
;
|
|
|
|
# Prevent `pkgs/top-level/release-attrpaths-superset.nix` from recursing here.
|
|
buildHaskellPackages = buildHaskellPackages // {
|
|
__attrsFailEvaluation = true;
|
|
};
|
|
};
|
|
|
|
platformConfigurations =
|
|
lib.optionals stdenv.hostPlatform.isAarch [
|
|
(configurationArm { inherit pkgs haskellLib; })
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
(configurationDarwin { 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
|