sig
  val default_opam_url : string
  val default_biopam_url : string
  type tool_type = [ `Application | `Library of string ]
  type install_target = private {
    definition : Biokepi_run_environment.Machine.Tool.Definition.t;
    tool_type : Biokepi_environment_setup.??.tool_type;
    package : string;
    witness : string;
    test :
      (host:Biokepi_run_environment.Common.KEDSL.Host.t ->
       string -> Biokepi_run_environment.Common.KEDSL.Command.t)
      option;
    edges : Biokepi_run_environment.Common.KEDSL.workflow_edge list;
    init_environment :
      install_path:string -> Biokepi_run_environment.Common.KEDSL.Program.t;
    requires_conda : bool;
    repository : [ `Biopam | `Custom of string | `Opam ];
    compiler : string option;
  }
  val install_target :
    ?tool_type:Biokepi_environment_setup.??.tool_type ->
    ?test:(host:Biokepi_run_environment.Common.KEDSL.Host.t ->
           string -> Biokepi_run_environment.Common.KEDSL.Command.t) ->
    ?edges:Biokepi_run_environment.Common.KEDSL.workflow_edge list ->
    ?init_environment:(install_path:string ->
                       Biokepi_run_environment.Common.KEDSL.Program.t) ->
    ?requires_conda:bool ->
    witness:string ->
    ?package:string ->
    ?repository:[ `Biopam | `Custom of string | `Opam ] ->
    ?compiler:string ->
    Biokepi_run_environment.Machine.Tool.Definition.t ->
    Biokepi_environment_setup.??.install_target
  val provide :
    run_program:Biokepi_run_environment.Machine.Make_fun.t ->
    host:Biokepi_run_environment.Common.KEDSL.Host.t ->
    install_path:string ->
    Biokepi_environment_setup.??.install_target ->
    Biokepi_run_environment.Machine.Tool.t
  val default :
    run_program:Biokepi_run_environment.Machine.Make_fun.t ->
    host:Biokepi_run_environment.Common.KEDSL.Host.t ->
    install_path:string -> unit -> Biokepi_run_environment.Machine.Tool.Kit.t
end