coqPackages.mkCoqDerivation: add a coqPackages.lib.overrideCoqDerivation function

`overrideCoqDerivation` allows end-users the ability to easily override
arguments to the underlying call to `mkCoqDerivation` for a given Coq
library.

This is similar to `haskell.lib.overrideCabal` for Haskell packages and
`.overridePythonAttrs` for Python packges.
This commit is contained in:
Dennis Gosnell 2022-08-29 14:41:03 +09:00
parent ab0f52080f
commit 06ece659f0
No known key found for this signature in database
GPG Key ID: 462E0C03D11422F4
2 changed files with 38 additions and 1 deletions

View File

@ -142,4 +142,41 @@ with builtins; with lib; recursiveUpdate lib (rec {
if cl?case then compare cl.case var
else all (equal true) (zipListsWith compare cl.cases var); in
switch-if (map (cl: { cond = combine cl var; inherit (cl) out; }) clauses) default;
/* Override arguments to mkCoqDerivation for a Coq library.
This function allows you to easily override arguments to mkCoqDerivation,
even when they are not exposed by the Coq library directly.
Type: overrideCoqDerivation :: AttrSet -> CoqLibraryDerivation -> CoqLibraryDerivation
Example:
```nix
coqPackages.lib.overrideCoqDerivation
{
defaultVersion = "9999";
release."9999".sha256 = "1lq8x86vd3vqqh2yq6hvyagpnhfq5wmk5pg2z0xq7b7dbbbhyfkw";
}
coqPackages.QuickChick;
```
This example overrides the `defaultVersion` and `release` arguments that
are passed to `mkCoqDerivation` in the QuickChick derivation.
Note that there is a difference between using `.override` on a Coq
library vs this `overrideCoqDerivation` function. `.override` allows you
to modify arguments to the derivation itself, for instance by passing
different versions of dependencies:
```nix
coqPackages.QuickCick.override { ssreflect = my-cool-ssreflect; }
```
whereas `overrideCoqDerivation` allows you to override arguments to the
call to `mkCoqDerivation` in the Coq library.
*/
overrideCoqDerivation = f: drv: (drv.override (args: {
mkCoqDerivation = drv_: (args.mkCoqDerivation drv_).override f;
}));
})

View File

@ -11,7 +11,7 @@ let
metaFetch = import ../build-support/coq/meta-fetch/default.nix
{inherit lib stdenv fetchzip; };
mkCoqDerivation = callPackage ../build-support/coq {};
mkCoqDerivation = lib.makeOverridable (callPackage ../build-support/coq {});
contribs = recurseIntoAttrs
(callPackage ../development/coq-modules/contribs {});