forked from haskell-beam/beam
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease.nix
71 lines (66 loc) · 2.1 KB
/
release.nix
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
64
65
66
67
68
69
70
71
{ nixpkgs ? import ./nixpkgs/pinned.nix {} }: with nixpkgs;
let
beamPackages = [
"beam-core"
"beam-migrate"
"beam-migrate-cli"
"beam-postgres"
"beam-sqlite"
];
ghcVersions = {
ghc865 = haskell.packages.ghc865;
ghc883 = haskell.packages.ghc883.extend (composeExtensionList [
(pinHackageVersions {
haskell-src-exts = "1.23.0";
})
]);
};
baseHackageVersions = {
hashable = "1.3.0.0";
network = "2.6.3.1";
postgresql-libpq = "0.9.4.2";
tmp-postgres = "1.34.1.0";
vector-sized = "1.4.0.0";
};
baseHackageDirectVersions = {
generic-monoid = {
version = "0.1.0.1";
sha256 = "0n4ry5ag9m5hzvhph7zqrl2scqgy0x58mm88j6q4aqck9rzd8f3j";
};
sqlite-simple = {
version = "0.4.18.0";
sha256 = "1crp86argxqv5ryfiyj5v17a3wb8ngnb1zbhhx6d99i83skm5i86";
};
};
composeExtensionList = lib.foldr lib.composeExtensions (_: _: {});
mergeMaps = lib.foldr (a: b: a // b) {};
applyToPackages = f: packages: _: super: lib.genAttrs packages
(name: f super."${name}");
pinHackageVersions = versions: self: _:
lib.mapAttrs (n: v: self.callHackage n v {}) versions;
pinHackageDirectVersions = versions: self: _:
lib.mapAttrs (n: v: self.callHackageDirect {
pkg = n;
ver = v.version;
sha256 = v.sha256;
} {}) versions;
mkPackageSet = ghc: ghc.extend (composeExtensionList [
(pinHackageVersions baseHackageVersions)
(pinHackageDirectVersions baseHackageDirectVersions)
(self: _: lib.genAttrs beamPackages (name:
self.callCabal2nix name (./. + "/${name}") {}
))
(applyToPackages haskell.lib.dontCheck [
"aeson"
"network"
"tmp-postgres"
])
(_: super: {
# Add postgresql binaries for tests:
beam-postgres = haskell.lib.addBuildTool super.beam-postgres postgresql;
})
]);
mkPrefixedPackages = ghc: lib.mapAttrs'
(name: value: lib.nameValuePair "${ghc.name}_${name}" value)
(lib.genAttrs beamPackages (name: (mkPackageSet ghc.value)."${name}"));
in mergeMaps (map mkPrefixedPackages (lib.mapAttrsToList lib.nameValuePair ghcVersions))