Files
Hamish Mackenzie 674f5b0a3d Better support for source-repository-packages, only include planned components and pick latest packages (#1166)
This change updates to the latest `nix-tools` to get the following fixes (there are 3 PRs in nix-tools, but just the one in haskell.nix to avoid having to update the materialized files multiple times):

## Better support for source repository packages

* https://github.com/input-output-hk/nix-tools/pull/107

Currently these are replaced by the `cabalProject` functions with regular `packages:` before running cabal configure.  Cabal does not treat these the same (the setting of `tests:` and `benchmarks:` in the `cabal.project` file):

* The plan found by `cabalProject` may not match the one used when running `cabal`.
* The performance of the solver may not be consistent with running `cabal`.

This change replaces `source-repository-package` with another `source-repository-package` pointing at a minimal git repo.

## Only include planned components

* https://github.com/input-output-hk/nix-tools/pull/108

Only the components in the `plan.json` are now included in the haskell.nix cabal projects.  This avoids missing dependencies attempting to build components that were not in the plan.  Should fix #993.

## Pick latest packages

* https://github.com/input-output-hk/nix-tools/pull/109

When the same package occurs more than once in a `plan.json` file (perhaps because it is needed both by the project itself and by one of the `setup` dependencies or `build-tool-dependencies` of the project) the latest version will now be the one picked by haskell.nix. This is a work around for a common issue with `cabal-doctest` when cross compiling to windows (an old version of Win32 is used even if a newer one was required by the projects `constraints`).
2021-07-23 14:27:56 +12:00

43 lines
1.6 KiB
Nix

{
pkgs = hackage:
{
packages = {
"ghc-prim".revision = (((hackage."ghc-prim")."0.5.3").revisions).default;
"array".revision = (((hackage."array")."0.5.3.0").revisions).default;
"integer-gmp".revision = (((hackage."integer-gmp")."1.0.2.0").revisions).default;
"base".revision = (((hackage."base")."4.12.0.0").revisions).default;
"rts".revision = (((hackage."rts")."1.0").revisions).default;
"stm".revision = (((hackage."stm")."2.5.0.0").revisions).default;
};
compiler = {
version = "8.6.5";
nix-name = "ghc865";
packages = {
"ghc-prim" = "0.5.3";
"array" = "0.5.3.0";
"integer-gmp" = "1.0.2.0";
"base" = "4.12.0.0";
"rts" = "1.0";
"stm" = "2.5.0.0";
};
};
};
extras = hackage:
{ packages = { test-haddock = ./.plan.nix/test-haddock.nix; }; };
modules = [
({ lib, ... }:
{ packages = { "test-haddock" = { flags = {}; }; }; })
({ lib, ... }:
{
packages = {
"ghc-prim".components.library.planned = lib.mkOverride 900 true;
"stm".components.library.planned = lib.mkOverride 900 true;
"test-haddock".components.library.planned = lib.mkOverride 900 true;
"integer-gmp".components.library.planned = lib.mkOverride 900 true;
"array".components.library.planned = lib.mkOverride 900 true;
"base".components.library.planned = lib.mkOverride 900 true;
"rts".components.library.planned = lib.mkOverride 900 true;
};
})
];
}