2015-01-07 20:31:32 +01:00
|
|
|
{ pkgs, stdenv, ghc
|
2015-09-16 09:19:56 +02:00
|
|
|
, compilerConfig ? (self: super: {})
|
2015-01-07 20:31:32 +01:00
|
|
|
, packageSetConfig ? (self: super: {})
|
|
|
|
, overrides ? (self: super: {})
|
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
|
2015-11-24 12:48:03 +01:00
|
|
|
fix = stdenv.lib.fix';
|
2015-01-07 20:31:32 +01:00
|
|
|
|
2015-11-24 12:48:03 +01:00
|
|
|
extend = stdenv.lib.flip stdenv.lib.extends;
|
2015-01-07 20:31:32 +01:00
|
|
|
|
|
|
|
haskellPackages = self:
|
|
|
|
let
|
|
|
|
|
|
|
|
mkDerivation = pkgs.callPackage ./generic-builder.nix {
|
2015-01-10 12:50:43 +01:00
|
|
|
inherit stdenv;
|
2015-01-07 20:31:32 +01:00
|
|
|
inherit (pkgs) fetchurl pkgconfig glibcLocales coreutils gnugrep gnused;
|
2015-01-10 12:50:43 +01:00
|
|
|
inherit (self) ghc jailbreak-cabal;
|
2015-01-07 20:31:32 +01:00
|
|
|
hscolour = overrideCabal self.hscolour (drv: {
|
|
|
|
isLibrary = false;
|
2015-01-18 11:04:38 +01:00
|
|
|
doHaddock = false;
|
2015-01-07 20:31:32 +01:00
|
|
|
hyperlinkSource = false; # Avoid depending on hscolour for this build.
|
|
|
|
postFixup = "rm -rf $out/lib $out/share $out/nix-support";
|
|
|
|
});
|
2015-01-13 22:15:29 +01:00
|
|
|
cpphs = overrideCabal (self.cpphs.overrideScope (self: super: {
|
|
|
|
mkDerivation = drv: super.mkDerivation (drv // {
|
|
|
|
enableSharedExecutables = false;
|
|
|
|
enableSharedLibraries = false;
|
2015-01-18 11:04:38 +01:00
|
|
|
doHaddock = false;
|
2015-01-13 22:15:29 +01:00
|
|
|
useCpphs = false;
|
|
|
|
});
|
|
|
|
})) (drv: {
|
|
|
|
isLibrary = false;
|
|
|
|
postFixup = "rm -rf $out/lib $out/share $out/nix-support";
|
|
|
|
});
|
2015-01-07 20:31:32 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
overrideCabal = drv: f: drv.override (args: args // {
|
|
|
|
mkDerivation = drv: args.mkDerivation (drv // f drv);
|
|
|
|
});
|
|
|
|
|
2015-01-08 18:29:37 +01:00
|
|
|
callPackageWithScope = scope: drv: args: (stdenv.lib.callPackageWith scope drv args) // {
|
2015-02-08 13:22:13 +01:00
|
|
|
overrideScope = f: callPackageWithScope (mkScope (fix (extend scope.__unfix__ f))) drv args;
|
2015-01-08 18:29:37 +01:00
|
|
|
};
|
|
|
|
|
2015-09-15 11:26:18 +02:00
|
|
|
mkScope = scope: pkgs // pkgs.xorg // pkgs.gnome // scope;
|
2015-05-18 10:55:29 +02:00
|
|
|
defaultScope = mkScope self;
|
|
|
|
callPackage = drv: args: callPackageWithScope defaultScope drv args;
|
2015-01-07 20:31:32 +01:00
|
|
|
|
2015-08-17 21:45:13 +02:00
|
|
|
withPackages = packages: callPackage ./with-packages-wrapper.nix {
|
|
|
|
inherit (self) llvmPackages;
|
|
|
|
haskellPackages = self;
|
|
|
|
inherit packages;
|
|
|
|
};
|
|
|
|
|
2015-01-07 20:31:32 +01:00
|
|
|
in
|
|
|
|
import ./hackage-packages.nix { inherit pkgs stdenv callPackage; } self // {
|
|
|
|
|
2015-01-10 12:50:43 +01:00
|
|
|
inherit mkDerivation callPackage;
|
2015-01-07 20:31:32 +01:00
|
|
|
|
2015-08-17 21:45:13 +02:00
|
|
|
ghcWithPackages = selectFrom: withPackages (selectFrom self);
|
2015-01-07 20:31:32 +01:00
|
|
|
|
2015-08-17 21:45:13 +02:00
|
|
|
ghcWithHoogle = selectFrom:
|
|
|
|
let
|
|
|
|
packages = selectFrom self;
|
|
|
|
hoogle = callPackage ./hoogle.nix { inherit packages; };
|
|
|
|
in withPackages (packages ++ [ hoogle ]);
|
|
|
|
|
|
|
|
ghc = ghc // {
|
|
|
|
withPackages = self.ghcWithPackages;
|
|
|
|
withHoogle = self.ghcWithHoogle;
|
|
|
|
};
|
2015-01-10 12:50:43 +01:00
|
|
|
|
2015-01-07 20:31:32 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
commonConfiguration = import ./configuration-common.nix { inherit pkgs; };
|
|
|
|
|
|
|
|
in
|
|
|
|
|
2015-09-16 09:19:56 +02:00
|
|
|
fix (extend (extend (extend (extend haskellPackages commonConfiguration) compilerConfig) packageSetConfig) overrides)
|