Loads environment variables from dotenv files

Version on this page:
LTS Haskell 20.24:
Stackage Nightly 2023-06-04:
Latest on Hackage:

See all snapshots dotenv appears in

MIT licensed by Justin Leitgeb
This version can be pinned in stack with:dotenv-,3594

Module documentation for

In most applications, configuration should be separated from code. While it usually works well to keep configuration in the environment, there are cases where you may want to store configuration in a file outside of version control.

Dotenv files have become popular for storing configuration, especially in development and test environments. In Ruby, Python and Javascript there are libraries to facilitate loading of configuration options from configuration files. This library loads configuration to environment variables for programs written in Haskell.

To use, call loadFile from your application:

import Configuration.Dotenv
loadFile False "/my/dotenvfile"

This package also includes an executable that can be used to inspect the results of applying one or more Dotenv files to the environment, or for invoking your executables with an environment after one or more Dotenv files is applied.

See the Github page for more information on this package.



  • Remove unnecessary package dependencies.


  • Reverted change to Data.Text in favor of String, for maintaining compatibility with common Haskell system libraries. Added separate interface for parsing a file into tuples containing Data.Text values. Thanks to Daisuke Fujimura (Github: fujimura).
  • Fixed parsing of CRLF characters for Windows users.

Dotenv (deprecated)

  • Changed public interfaces to use Data.Text.
  • Added function parseFile to read dotenv file without modifying the environment. Thanks to Daisuke Fujimura (Github: fujimura) for making this contribution.


  • First public release.