Files
haskell.nix/modules/stack-project.nix
T
Hamish Mackenzie f279cdef5f Update the project modules and fix missing args param (#1144)
There are now 4 project modules used to check the arguments passed to the various project functions:

* `project-common.nix` - Arguments used by all the project functions
* `stack-project.nix` - Used by the `stackProject` and `stackProject'` functions
* `cabal-project.nix` - Used by the `cabalProject` and `cabalProject'` functions
* `project.nix` - Just the `projectFileName` argument that is used by `project` and `project'` functions to determine whether to call `stackProject` or `cabalProject` function.

This also includes the `rawProject.args` that was mistakenly left out of #1141 causing #1142 and improvements for the docs for the use of the `shell` argument in `flake.nix` files.
2021-06-20 18:00:22 +12:00

106 lines
2.9 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";
};
caller = mkOption {
type = str;
default = "callCabalProjectToNix";
description = "Name of the calling function for better warning messages";
};
nix-tools = mkOption {
type = nullOr package;
default = pkgs.evalPackages.haskell-nix.internal-nix-tools;
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"; };
'';
};
lookupSha256 = mkOption {
type = nullOr unspecified;
default = if config.sha256map != null
then { location, tag, ...}: config.sha256map.${location}.${tag}
else _: null;
};
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`";
};
};
}