sig
  type t
  val start : Dtools.Init.t
  val stop : Dtools.Init.t
  val make :
    ?name:string ->
    ?depends:Dtools.Init.t list ->
    ?triggers:Dtools.Init.t list ->
    ?after:Dtools.Init.t list ->
    ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
  val at_start :
    ?name:string ->
    ?depends:Dtools.Init.t list ->
    ?triggers:Dtools.Init.t list ->
    ?after:Dtools.Init.t list ->
    ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
  val at_stop :
    ?name:string ->
    ?depends:Dtools.Init.t list ->
    ?triggers:Dtools.Init.t list ->
    ?after:Dtools.Init.t list ->
    ?before:Dtools.Init.t list -> (unit -> unit) -> Dtools.Init.t
  val exec : Dtools.Init.t -> unit
  val init : ?prohibit_root:bool -> (unit -> unit) -> unit
  exception StartError of exn
  exception StopError of exn
end