Most of my effort in ex_cldr and friends was to remove reliance on global configuration for this very reason. Most of the package is about data manipulation and it relies heavily on compile time code and data generation - that is hosted in user-define modules (following the Ecto.Repo model).
A more recent example is the new version of ex_cldr_date_times where the generalised functions all take config as a parameter. But you can also materialise one or more Cldr.Calendar modules that bakes in the configuration at compile time.






















