anchor.diff:          passthru.compatibleCoqVersions = flip elem [ "8.9" "8.10" "8.11" ];
         };
   
  -      mathcomp-analysis = version: {
  +      mathcomp-analysis = {version, coqPackages}: {
           propagatedBuildInputs = with coqPackages;
             [ mathcomp.field mathcomp-finmap mathcomp-bigenough ];
           meta = {
  
positive.code:     mathcomp-real-closed  = current-mathcomp-extra "mathcomp-real-closed";
      coqeal                = current-mathcomp-extra "coqeal";
  
      mathcomp-extra-fast    = map (pkg: current-mathcomp-extra pkg)
        (attrNames (filterAttrs (pkg: config: !(config?slow && config.slow)) for-this));
      mathcomp-extra-all    = map (pkg: current-mathcomp-extra pkg) (attrNames for-this);
    }
  
negative.code:   rec-mathcomp-extra-override = generic: old: let
      version = getVersion generic;
      package = old.meta.package or "math-comp-nix";
      cfg = pkgUp ((mathcomp-extra-config.initial.${package} or (_: {}))
        { inherit version coqPackages; }) old
            // { inherit version; };
      fix = attrs: fix-attrs (pkgUp cfg attrs);
    in
      if isFunction generic then fix (generic cfg)
      else  if generic == null || generic == "" then fix {}
      else  if isDerivation generic then generic.drvAttrs
      else  if isAttrs generic then fix generic
      else  if generic == "broken" then fix { meta.broken = true; passthru.compatibleCoqVersions = _: false; }
      else  let fixedcfg = fix cfg; in fixedcfg // (
  