|
3 | 3 | # - https://github.com/NixOS/nixpkgs/pull/68398
|
4 | 4 |
|
5 | 5 | let
|
| 6 | + inherit (import ./dimension.nix) dimension; |
6 | 7 | nixpkgsVersions = {
|
7 | 8 | # "release-18.09" = builtins.fetchTarball "https://github.com/input-output-hk/nixpkgs/archive/7e4dcacbf066a8e2d12693a9de1fb30c77081c5d.tar.gz";
|
8 | 9 | "release-19.03" = builtins.fetchTarball "https://github.com/input-output-hk/nixpkgs/archive/a8f81dc037a5977414a356dd068f2621b3c89b60.tar.gz";
|
9 | 10 | # "release-19.09" = builtins.fetchTarball "https://github.com/input-output-hk/nixpkgs/archive/3d623a406cec9052ae0a16a79ce3ce9de11236bb.tar.gz";
|
10 | 11 | };
|
| 12 | + systems = { |
| 13 | + "x86_64-linux" = {}; |
| 14 | + }; |
| 15 | + crossSystems = { |
| 16 | + "x86_64-pc-mingw32" = {}; |
| 17 | + }; |
11 | 18 | haskellNixArgs = import ./.;
|
12 |
| - defaultNixpkgs = import (nixpkgsVersions."release-19.03") {}; |
13 |
| - recRecurseIntoAttrs = with defaultNixpkgs; pred: x: if pred x then recurseIntoAttrs (lib.mapAttrs (n: v: if n == "buildPackages" then v else recRecurseIntoAttrs pred v) x) else x; |
14 | 19 | in
|
15 |
| - recRecurseIntoAttrs (x: with defaultNixpkgs; lib.isAttrs x && !lib.isDerivation x) ( |
16 |
| - builtins.mapAttrs (nixpkgsName: nixpkgsSrc: with (import nixpkgsSrc {}); { |
17 |
| - x86_64-linux = { |
18 |
| - hello = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; })); |
19 |
| - (haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
20 |
| - x86_64-pc-mingw32-hello = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; crossSystem.config = "x86_64-pc-mingw32"; })); |
21 |
| - (haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
22 |
| - |
23 |
| - iserv-proxy = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; })); |
24 |
| - (ghc-extra-packages.ghc865.iserv-proxy.components.exes).iserv-proxy; |
25 |
| - |
26 |
| - x86_64-pc-mingw32-iserv-proxy = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; crossSystem.config = "x86_64-pc-mingw32"; })); |
27 |
| - (buildPackages.ghc-extra-packages.ghc865.iserv-proxy.components.exes).iserv-proxy; |
28 |
| - |
29 |
| - x86_64-pc-mingw32-remote-iserv = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; crossSystem.config = "x86_64-pc-mingw32"; })); |
30 |
| - (ghc-extra-packages.ghc865.remote-iserv.components.exes).remote-iserv; |
31 |
| - |
32 |
| - }; |
33 |
| - x86_64-darwin = { |
34 |
| - hello = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; })); |
35 |
| - (haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
36 |
| - x86_64-pc-mingw32-hello = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; crossSystem.config = "x86_64-pc-mingw32"; })); |
37 |
| - (haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
38 |
| - |
39 |
| - iserv-proxy = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; })); |
40 |
| - (ghc-extra-packages.ghc865.iserv-proxy.components.exes).iserv-proxy; |
41 |
| - |
42 |
| - x86_64-pc-mingw32-iserv-proxy = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; crossSystem.config = "x86_64-pc-mingw32"; })); |
43 |
| - (buildPackages.ghc-extra-packages.ghc865.iserv-proxy.components.exes).iserv-proxy; |
44 |
| - |
45 |
| - x86_64-pc-mingw32-remote-iserv = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; crossSystem.config = "x86_64-pc-mingw32"; })); |
46 |
| - (ghc-extra-packages.ghc865.remote-iserv.components.exes).remote-iserv; |
47 |
| - |
48 |
| - }; |
49 |
| - haskell-nix.compiler = { |
50 |
| - x86_64-linux = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; })); |
51 |
| - haskell-nix.compiler; |
52 |
| - x86_64-darwin = with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin";})); |
53 |
| - haskell-nix.compiler; |
54 |
| - }; |
55 |
| - tests = { |
56 |
| - x86_64-linux = (import ./test { nixpkgs = nixpkgsSrc; nixpkgsArgs = { system = "x86_64-linux"; }; }); |
57 |
| - # x86_64-darwin = (import ./test { nixpkgs = nixpkgsSrc; nixpkgsArgs = { system = "x86_64-darwin"; }; }); |
58 |
| - }; |
59 |
| - |
60 |
| -# Don't build (all of) stackage on linux for now. |
61 |
| -# stackage = { |
62 |
| -# x86_64-linux = (with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-linux"; })); |
63 |
| -# haskell-nix.snapshots."lts-13.29"); |
64 |
| -# # x86_64-darwin = (with (import nixpkgsSrc (haskellNixArgs // { system = "x86_64-darwin"; })); |
65 |
| -# # haskell-nix.snapshots."lts-13.29"); |
66 |
| -# }; |
67 |
| - |
68 |
| -}) nixpkgsVersions) |
| 20 | +dimension "Nixpkgs version" nixpkgsVersions (nixpkgsName: nixpkgsSrc: |
| 21 | + dimension "System" systems (system: _: |
| 22 | + # Native builds |
| 23 | + # TODO: can we merge this into the general case by picking an appropriate "cross system" to mean native? |
| 24 | + let pkgs = import nixpkgsSrc (haskellNixArgs // { inherit system; }); |
| 25 | + in pkgs.recurseIntoAttrs { |
| 26 | + hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
| 27 | + iserv-proxy = pkgs.ghc-extra-packages.ghc865.iserv-proxy.components.exes.iserv-proxy; |
| 28 | + ghc = pkgs.recurseIntoAttrs pkgs.haskell-nix.compiler; |
| 29 | + tests = pkgs.lib.optionalAttrs (system == "x86_64-linux") (import ./test { inherit pkgs; }); |
| 30 | + } |
| 31 | + // |
| 32 | + dimension "Cross system" crossSystems (crossSystem: _: |
| 33 | + # Cross builds |
| 34 | + let pkgs = import nixpkgsSrc (haskellNixArgs // { inherit system; crossSystem.config = crossSystem; }); |
| 35 | + in pkgs.recurseIntoAttrs { |
| 36 | + hello = (pkgs.haskell-nix.hackage-package { name = "hello"; version = "1.0.0.2";}).components.exes.hello; |
| 37 | + |
| 38 | + iserv-proxy = pkgs.ghc-extra-packages.ghc865.iserv-proxy.components.exes.iserv-proxy; |
| 39 | + |
| 40 | + remote-iserv = pkgs.ghc-extra-packages.ghc865.remote-iserv.components.exes.remote-iserv; |
| 41 | + } |
| 42 | + ) |
| 43 | + ) |
| 44 | +) |
0 commit comments