@@ -1,6 +1,6 @@
1−{ cabalexpr, pkgs, compiler ? "Ghc", os ? "OSX", arch ? "X86_64" }:
1+{ cabalexpr, pkgs, compiler ? "Ghc", version, os ? "Osx", arch ? "X86_64" }:
22assert (builtins.elem compiler ["Ghc" "Ghcjs" "Nhc" "Yhc" "Hugs" "Hbc" "Helium" "Jhc" "Lhc" "Uhc" "Eta"]);
3−assert (builtins.elem os ["Linux" "Windows" "OSX" "FreeBSD" "OpenBSD" "NetBSD" "DragonFly" "Solaris" "AIX" "HPUX" "IRIX" "HaLVM" "Hurd" "IOS" "Android" "Ghcjs"]);
3+assert (builtins.elem os ["Linux" "Windows" "Osx" "FreeBSD" "OpenBSD" "NetBSD" "DragonFly" "Solaris" "AIX" "HPUX" "IRIX" "HaLVM" "Hurd" "IOS" "Android" "Ghcjs"]);
44assert (builtins.elem arch ["I386" "X86_64" "PPC" "PPC64" "Sparc" "Arm" "Aarch64" "Mips" "SH" "IA64" "S390" "Alpha" "Hppa" "Rs6000" "M68k" "Vax" "JavaScript"]);
55
66with rec {
@@ -26,7 +26,16 @@ with rec {
2626 # pkgconfig name -> nix package
2727 pkgconfPkgs = { libpcre = pkgs.pcre; };
2828
29− compiler = cabal.compiler // { "is${compiler}" = true; };
29+ compiler = cabal.compiler // {
30+ "is${compiler}" = true;
31+ version = rec {
32+ eq = v: builtins.compareVersions version v == 0;
33+ lt = v: builtins.compareVersions version v == -1;
34+ gt = v: builtins.compareVersions version v == 1;
35+ le = v: eq v || lt v;
36+ ge = v: eq v || gt v;
37+ };
38+ };
3039 system = cabal.os // { "is${os}" = true; }
3140 // cabal.arch // { "is${arch}" = true; };
3241 }; in e;
@@ -50,10 +59,14 @@ in mkDerivation ({
5059} // pkgs.lib.optionalAttrs (builtins.hasAttr pname expr.components) {
5160 libraryHaskellDepends = expr.components.${pname}.depends;
5261 libraryPkgconfigDepends = expr.components.${pname}.pkgconfig or [];
62+ librarySystemDepends = expr.components.${pname}.libs or [];
63+ libraryToolDepends = expr.components.${pname}.build-tools or [];
5364} // pkgs.lib.optionalAttrs (builtins.hasAttr "exes" expr.components) {
5465 executableHaskellDepends = collectAttr "depends" expr.components.exes;
5566} // pkgs.lib.optionalAttrs (builtins.hasAttr "tests" expr.components) {
5667 testHaskellDepends = collectAttr "depends" expr.components.tests;
5768} // pkgs.lib.optionalAttrs (builtins.hasAttr "benchmarks" expr.components) {
5869 benchmarkHaskellDepends = collectAttr "depends" expr.components.benchmarks;
70+} // pkgs.lib.optionalAttrs (builtins.hasAttr "src" expr) {
71+ inherit (expr) src;
5972})