* Basic XDG config 

     We follow losely 
     -spec/basedir-spec-latest.html

    We follow losely
    -spec/basedir-spec-latest.html *)

val name_of_project : string ref

val get_home : unit -> string

val interpolate_home : ?f:(string -> string option) -> string -> string
(** Replace [$HOME] by the home directory in this string.
    @param f used to interpolate other keys
    @raise Failure if another key is met
*)

val config_dir : unit -> string
(** Where to search for configuration *)

val data_dir : unit -> string
(** Where to store permanent data *)

val cache_dir : unit -> string
(** Where to store disposable data that is only useful for improving perf
    but can be erased at any point *)

val runtime_dir : unit -> string
(** Where to store runtime files such as unix sockets *)

* Replace [$HOME] by the home directory in this string.
    @param f used to interpolate other keys
    @raise Failure if another key is met

* Where to search for configuration 
* Where to store permanent data 
* Where to store disposable data that is only useful for improving perf
    but can be erased at any point 
* Where to store runtime files such as unix sockets 
* Basic XDG config 

     We follow losely 
     -spec/basedir-spec-latest.html

    We follow losely
    -spec/basedir-spec-latest.html *)

val name_of_project : string ref

val get_home : unit -> string

val interpolate_home : ?f:(string -> string option) -> string -> string

val config_dir : unit -> string

val data_dir : unit -> string

val cache_dir : unit -> string

val runtime_dir : unit -> string
