blob: b8fe2690737e9bf58746538e537caa12d5545918 (
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
|
_: 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 = name: pkgs.${name}.overrideAttrs (old: old // rec {
name = "${name}-${version}";
version = pkgs.sources.${name}.version or pkgs.sources.${name}.rev;
src = pkgs.sources.${name};
});
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"
servant-auth = buildCabal self "servant-auth" "servant-auth";
wai-middleware-metrics = dontCheck super.wai-middleware-metrics;
};
});
ghcjs = pkgs.haskell.packages.ghcjs.override (old: {
overrides = with pkgs.haskell.lib; self: super:
overridePinnedDeps (simpleCabalBuilder self) // {
Glob = dontCheck super.Glob;
QuickCheck = dontCheck super.QuickCheck;
base-compat-batteries = dontCheck super.http-types;
clay = dontCheck super.clay;
comonad = dontCheck super.comonad;
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;
time-compat = dontCheck super.time-compat;
};
});
};
};
}
|