type t = [       | `Processors of int 
          (** A number of cores on a shared-memory setting. *)
      | `Internet_access 
        (** Able to access public HTTP(S) or FTP URLs. *)
      | `Memory of [           | `GB of float 
              (** Ask for a specific amount of memory. *)
          | `Small 
            (** Tell that the program does not expect HPC-like memory usage (i.e. not more than 2 GB or your usual laptop). *)
          | `Big 
            (** Tell that the program may ask for a lot of memory but you don't know how much precisely. *)
        ]       | `Quick_run 
        (** Programs that run fast, with little resources. Usually, you can interpret this as "OK to run on the login node of my cluster." *)
      | `Spark of string list 
           (** Ask for a Spark (on-YARN) environment with custom parameters (not in use for now, "#WIP"). *)
      | `Custom of string 
          (** Pass arbitrary data (useful for temporary extensions/experiements outside of Biokepi). *)
      | `Self_identification of string list         
        (** Set of names or tags for a workflow-node program to identify itself to the Machine.t. This is useful for quickly bypassing incorrect requirements set in the library (please also report an issue if you need this). *)
    ] [@@deriving yojson, show]