Module Config.Std

An EDSL to build configs

module Blang = Blang
module Dune = Dune
module Dune_project = Dune_project
module Dune_workspace = Dune_workspace
module Dunolint0 = Dunolint0
include module type of struct include Blang.O end
include Blang.Constructors
val base : 'a -> 'a Blang.t
val true_ : _ Blang.t
val false_ : _ Blang.t
val constant : bool -> _ Blang.t

function true -> true_ | false -> false_

val not_ : 'a Blang.t -> 'a Blang.t
val and_ : 'a Blang.t list -> 'a Blang.t

n-ary And

val or_ : 'a Blang.t list -> 'a Blang.t

n-ary Or

val if_ : 'a Blang.t -> 'a Blang.t -> 'a Blang.t -> 'a Blang.t

if_ if then else

val (&&) : 'a Blang.t -> 'a Blang.t -> 'a Blang.t
val (||) : 'a Blang.t -> 'a Blang.t -> 'a Blang.t
val (==>) : 'a Blang.t -> 'a Blang.t -> 'a Blang.t

a ==> b is "a implies b". This is not => to avoid making it look like a comparison operator.

val not : 'a Blang.t -> 'a Blang.t
val backend : 'a -> [> `backend of 'a ] Blang.t
val cond : ('condition * 'action) list -> [> `cond of ('condition * 'action) list ]
val dune : 'a -> [> `dune of 'a ] Blang.t
val dune_lang_version : 'a -> [> `dune_lang_version of 'a ] Blang.t
val dune_project : 'a -> [> `dune_project of 'a ] Blang.t
val dune_workspace : 'a -> [> `dune_workspace of 'a ] Blang.t
val dunolint : 'a -> [> `dunolint of 'a ] Blang.t
val dunolint_lang_version : 'a -> [> `dunolint_lang_version of 'a ] Blang.t
val enforce : 'a -> [> `enforce of 'a ]
val eq : 'a -> [> `eq of 'a ] Blang.t
val equals : 'a -> [> `equals of 'a ] Blang.t
val executable : 'a -> [> `executable of 'a ] Blang.t
val generate_opam_files : 'a -> [> `generate_opam_files of 'a ] Blang.t
val glob : string -> [> `glob of Glob.t ] Blang.t
val gt : 'a -> [> `gt of 'a ] Blang.t
val gte : 'a -> [> `gte of 'a ] Blang.t
val has_field : 'a -> [> `has_field of 'a ] Blang.t
val has_mode : 'a -> [> `has_mode of 'a ] Blang.t
val has_modes : 'a -> [> `has_modes of 'a ] Blang.t
val if_present : 'a -> [> `if_present of 'a ] Blang.t
val implicit_transitive_deps : 'a -> [> `implicit_transitive_deps of 'a ] Blang.t
val include_subdirs : 'a -> [> `include_subdirs of 'a ] Blang.t
val instrumentation : 'a -> [> `instrumentation of 'a ] Blang.t
val is_prefix : string -> [> `is_prefix of string ] Blang.t
val is_present : [> `is_present ] Blang.t
val is_suffix : string -> [> `is_suffix of string ] Blang.t
val library : 'a -> [> `library of 'a ] Blang.t
val lint : 'a -> [> `lint of 'a ] Blang.t
val lt : 'a -> [> `lt of 'a ] Blang.t
val lte : 'a -> [> `lte of 'a ] Blang.t
val modes : 'a -> [> `modes of 'a ] Blang.t
val name : 'a -> [> `name of 'a ] Blang.t
val neq : 'a -> [> `neq of 'a ] Blang.t
val no_preprocessing : [> `no_preprocessing ] Blang.t
val package : 'a -> [> `package of 'a ] Blang.t
val path : 'a -> [> `path of 'a ] Blang.t
val pp : Dune.Pp.Name.t -> [> `pp of Dune.Pp.Name.t ] Blang.t
val pps : 'a -> [> `pps of 'a ] Blang.t
val preprocess : 'a -> [> `preprocess of 'a ] Blang.t
val public_name : 'a -> [> `public_name of 'a ] Blang.t
val return : [> `return ]
val stanza : 'a -> [> `stanza of 'a ] Blang.t

Deprecated aliases

val greater_than_or_equal_to : 'a -> [> `greater_than_or_equal_to of 'a ] Blang.t
  • deprecated [since 2025-12] Use [gte]. Hint: Run [ocamlmig migrate]
val less_than_or_equal_to : 'a -> [> `less_than_or_equal_to of 'a ] Blang.t
  • deprecated [since 2025-12] Use [lte]. Hint: Run [ocamlmig migrate]