{ lib, mkCoqDerivation, coq, version ? null }:

(mkCoqDerivation {
  pname = "tlc";
  owner = "charguer";
  inherit version;
  displayVersion = { tlc = false; };
  defaultVersion = with lib.versions; lib.switch coq.coq-version [
    { case = range "8.13" "8.16"; out = "20211215"; }
    { case = range "8.12" "8.13"; out = "20210316"; }
    { case = range "8.10" "8.12"; out = "20200328"; }
    { case = range "8.6"  "8.12"; out = "20181116"; }
  ] null;
  release."20211215".sha256 = "sha256:0m4d4jhdcyq8p2gpz9j3nd6jqzmz2bjmbpc0q06b38b8i550mamp";
  release."20210316".sha256 = "1hlavnx20lxpf2iydbbxqmim9p8wdwv4phzp9ypij93yivih0g4a";
  release."20200328".sha256 = "16vzild9gni8zhgb3qhmka47f8zagdh03k6nssif7drpim8233lx";
  release."20181116".sha256 = "032lrbkxqm9d3fhf6nv1kq2z0mqd3czv3ijlbsjwnfh12xck4vpl";

  meta = with lib; {
    homepage = "http://www.chargueraud.org/softs/tlc/";
    description = "Non-constructive library for Coq";
    license = licenses.free;
    maintainers = [ maintainers.vbgl ];
  };
}).overrideAttrs (x:
  lib.optionalAttrs (lib.versionOlder x.version "20210316" && x.version != "dev") {
    installFlags = [ "CONTRIB=$(out)/lib/coq/${coq.coq-version}/user-contrib" ];
  }
)
