Files
haskell.nix/modules/stack-project.nix
Hamish Mackenzie b90fbaa272 Add shell.allDeps as a fix for #1793 (#1794)
* Add `shell.allDeps` as a fix for #1793

#1769 added all the tool dependencies of the hsPkgs in a project to the shell.  This is great for cabal projects where the set of packages will be limited to those in the plan.  It allows these packages to be rebuilt by cabal.

For stack projects however this set is much larger (all of stackage), likely to include unwanted tools and tools that may be broken.

This change adds `shell.allDeps` and defaults it to `false` for stack projects.

Fixes #1793

* Added comments
2022-12-02 10:50:05 +13:00

100 lines
2.8 KiB
Nix

{ lib, config, pkgs, haskellLib, ... }:
with lib;
with types;
{
_file = "haskell.nix/modules/stack-project.nix";
options = {
# Used by callStackToNix
stackYaml = mkOption {
type = str;
default = "stack.yaml";
};
ignorePackageYaml = mkOption {
type = bool;
default = false;
};
cache = mkOption {
type = nullOr unspecified;
default = null;
};
stack-sha256 = mkOption {
type = nullOr str;
default = null;
};
resolverSha256 = mkOption {
type = nullOr str;
default = null;
};
materialized = mkOption {
type = nullOr (either path package);
default = null;
description = "Location of a materialized copy of the nix files";
};
checkMaterialization = mkOption {
type = nullOr bool;
default = null;
description = "If true the nix files will be generated used to check plan-sha256 and material";
};
nix-tools = mkOption {
type = package;
default = config.evalPackages.haskell-nix.internal-nix-tools; # When building stack projects we use the internal nix-tools (compiled with a fixed GHC version)
description = "nix-tools to use when converting the `plan.json` to nix";
};
# Used by mkStackPkgSet
pkg-def-extras = mkOption {
type = nullOr (listOf unspecified);
default = [];
};
modules = mkOption {
type = nullOr (listOf unspecified);
default = [];
};
extra-hackages = mkOption {
type = nullOr (listOf unspecified);
default = [];
};
# Used in stack-cache-generator.nix
sha256map = mkOption {
type = nullOr unspecified;
default = null;
description = ''
An alternative to adding `# nix-sha256:` comments into the
stack.yaml file:
sha256map =
{ "https://github.com/jgm/pandoc-citeproc"."0.17"
= "0dxx8cp2xndpw3jwiawch2dkrkp15mil7pyx7dvd810pwc22pm2q"; };
'';
};
branchMap = mkOption {
type = nullOr unspecified;
default = null;
description = "A way to specify in which branch a git commit can be found";
};
lookupBranch = mkOption {
type = nullOr unspecified;
default = if config.branchMap != null
then { location, tag, ...}: config.branchMap.${location}.${tag} or null
else _: null;
};
# Used by stackProject itself
compiler-nix-name = mkOption {
type = nullOr str;
description = "The name of the ghc compiler to use eg. \"ghc884\"";
default = null;
};
ghc = mkOption {
type = nullOr package;
default = null;
description = "Deprecated in favour of `compiler-nix-name`";
};
};
config = {
# For stack projects we normally do not want to include the tool dependencies
# of all the hsPkgs (all of stackage).
shell.allToolDeps = mkDefault false;
};
}