blob: dc52eab4a044a3707517a55f0f5ff3024d2d45da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
_: pkgs:
let
simpleCabalBuilder = self: name:
self.callCabal2nix name pkgs.sources.${name} {};
buildCabal = self: name: subdir:
if isNull subdir then
self.callCabal2nix name pkgs.sources.${name} {}
else
self.callCabal2nix name (pkgs.sources.${name} + "/${subdir}") {};
in rec
{
pinnedDeps = builtins.attrNames
(builtins.removeAttrs pkgs.sources ["__functor"]);
overridePinnedDeps = builder: pkgs.lib.genAttrs pinnedDeps builder;
# Modifies a derivation with our source and version, keeping old build
# rules. This will fail if build steps have changed, or if no build
# rules are available upstream..
overrideSource = depName: pkgs.${depName}.overrideAttrs (old: old // rec {
name = "${depName}-${version}";
version = pkgs.sources.${depName}.version or pkgs.sources.${depName}.rev;
src = pkgs.sources.${depName};
});
haskell = pkgs.haskell // {
packages = pkgs.haskell.packages // {
ghc865 = pkgs.haskell.packages.ghc865.override (old: {
overrides = with pkgs.pkgs.haskell.lib; self: super:
overridePinnedDeps (simpleCabalBuilder self) // {
acid-state = dontCheck super.acid-state; # mac: "too many open files"
ghcjs-base = null; # otherwise ghc tries to build this via overridePinnedDeps
servant-auth = buildCabal self "servant-auth" "servant-auth";
servant-server = doJailbreak super.servant-server;
temporary = dontCheck super.temporary;
wai-middleware-metrics = dontCheck super.wai-middleware-metrics;
};
});
ghcjs86 = pkgs.haskell.packages.ghcjs86.override (old: {
overrides = with pkgs.haskell.lib; self: super:
overridePinnedDeps (simpleCabalBuilder self) // {
Glob = dontCheck super.Glob;
QuickCheck = dontCheck super.QuickCheck;
aeson = dontCheck super.aeson;
base-compat-batteries = dontCheck super.base-compat-batteries;
clay = dontCheck super.clay;
comonad = dontCheck super.comonad;
ghcjs-base = dontCheck (simpleCabalBuilder self "ghcjs-base");
jsaddle-warp = dontCheck (self.callCabal2nix "jsaddle-warp" "${pkgs.sources.jsaddle}/jsaddle-warp" {});
http-types = dontCheck super.http-types;
network-uri= dontCheck super.network-uri;
scientific = dontCheck super.scientific; # takes forever
servant = dontCheck super.servant;
servant-auth = buildCabal self "servant-auth" "servant-auth";
tasty-quickcheck = dontCheck super.tasty-quickcheck;
temporary = dontCheck super.temporary;
time-compat = dontCheck super.time-compat;
vector = dontCheck super.vector;
};
});
};
};
}
|