summaryrefslogtreecommitdiffstats
path: root/pkgs/development/rocq-modules/stalmarck/default.nix
blob: 3f9a243f8eec117eb420326c5852cc461127f9d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
  lib,
  mkRocqDerivation,
  dune,
  coq,
  stdlib,
  version ? null,
}:

let
  repo = "stalmarck";
  defaultVersion =
    let
      case = case: out: { inherit case out; };
    in
    with lib.versions;
    lib.switch coq.coq-version [
      (case (isEq "8.20") "8.20.0")
    ] null;
  release = {
    "8.20.0".hash = "sha256-jITxQT1jLyZvWCGPnmK8i3IrwsZwMPOV0aBe9r22TIQ=";
  };
  releaseRev = v: "v${v}";

  packages = [
    "stalmarck"
    "stalmarck-tactic"
  ];

  stalmarck_ =
    package:
    let
      pname = package;
      istac = package == "stalmarck-tactic";
      propagatedBuildInputs = if istac then [ (stalmarck_ "stalmarck") ] else [ stdlib ];
      description =
        if istac then
          "Coq tactic and verified tool for proving tautologies using Stålmarck's algorithm"
        else
          "A two-level approach to prove tautologies using Stålmarck's algorithm in Coq.";
      duneOverride = lib.optionalAttrs (version == "8.20.0" || defaultVersion == "8.20.0") {
        dune = dune.override { version = "3.21.1"; };
      };
    in
    mkRocqDerivation.override duneOverride {
      useCoq = true;
      namePrefix = [ "coq" ];
      inherit
        version
        pname
        defaultVersion
        release
        releaseRev
        repo
        propagatedBuildInputs
        ;

      mlPlugin = istac;
      useDune = istac;

      meta = {
        inherit description;
        license = lib.licenses.lgpl21Plus;
      };

      passthru = lib.genAttrs packages stalmarck_;
    };
in
stalmarck_ "stalmarck-tactic"