git.iko.soy/typeable/nixpkgs-stackage
on master help sign in
49 lines 1.6 kB history raw
1{ supportedSystems ? [ "x86_64-linux" "i686-linux" ]
2, supportedReleases ? null
3, inHydra ? true
4, pkgs ? import <nixpkgs> {}
5}:
7let
8 inherit (pkgs) lib;
10 release = import (pkgs.path + "/pkgs/top-level/release-lib.nix") {
11 inherit supportedSystems;
12 nixpkgsArgs = { overlays = [ (import ./default.nix) ]; };
13 };
15 # supportedStackageReleases :: [StackageVersion]
16 supportedStackageReleases =
17 if supportedReleases == null
18 then
19 lib.unique
20 (map (builtins.replaceStrings ["."] [""])
21 (builtins.filter (x: x != "")
22 (lib.splitString "\n"
23 (builtins.readFile ./supported-stackage-releases.txt))))
24 else
25 supportedReleases;
27 # hasSupportedSystem :: System -> Derivation -> Bool
28 hasSupportedSystem = system: pkg:
29 # Test `isAttrs pkg` to ensure that pkg is a derivation
30 lib.isAttrs pkg && lib.elem system pkg.meta.platforms;
32 # genJobSetFiltered :: System -> StackageVersion -> AttrSet
33 genJobSetFiltered = system: stackage:
34 lib.filterAttrs
35 (_: pkg: hasSupportedSystem system pkg)
36 (release.pkgsFor system).haskell.packages.stackage."${stackage}";
38 # genJobSetFull :: System -> StackageVersion -> AttrSet
39 genJobSetFull = system: stackage:
40 (release.pkgsFor system).haskell.packages.stackage."${stackage}";
42 # genJobSet :: StackageRelease -> System -> AttrSet
43 genJobSet = if inHydra then genJobSetFull else genJobSetFiltered;
45in
46 lib.genAttrs supportedSystems (system:
47 lib.genAttrs supportedStackageReleases (stackage:
48 genJobSet system stackage
49 ))