sig
  module Requirement :
    sig
      type t =
          [ `Custom of string
          | `Internet_access
          | `Memory of [ `Big | `GB of float | `Small ]
          | `Processors of int
          | `Quick_run
          | `Self_identification of string list
          | `Spark of string list ]
      val to_yojson :
        Biokepi_run_environment.Machine.Make_fun.Requirement.t ->
        Yojson.Safe.json
      val of_yojson :
        Yojson.Safe.json ->
        [ `Error of string
        | `Ok of Biokepi_run_environment.Machine.Make_fun.Requirement.t ]
      val pp :
        Format.formatter ->
        Biokepi_run_environment.Machine.Make_fun.Requirement.t ->
        Ppx_deriving_runtime.unit
      val show :
        Biokepi_run_environment.Machine.Make_fun.Requirement.t ->
        Ppx_deriving_runtime.string
    end
  type t =
      ?name:string ->
      ?requirements:Biokepi_run_environment.Machine.Make_fun.Requirement.t
                    list ->
      Common.KEDSL.Program.t -> Common.KEDSL.Build_process.t
  val stream_processor :
    ([> `Memory of [> `Small ] | `Processors of int ] as 'a) list -> 'a list
  val quick : ([> `Quick_run ] as 'a) list -> 'a list
  val downloading :
    ([> `Internet_access | `Memory of [> `Small ] | `Processors of int ]
     as 'a)
    list -> 'a list
  val with_self_ids :
    ?self_ids:'-> ([> `Self_identification of 'a ] as 'b) list -> 'b list
  val with_requirements :
    Biokepi_run_environment.Machine.Make_fun.t ->
    Biokepi_run_environment.Machine.Make_fun.Requirement.t list ->
    Biokepi_run_environment.Machine.Make_fun.t
end