Use TOML for `.env` Files?

This page summarizes the projects mentioned and recommended in the original post on

Our great sponsors
  • ONLYOFFICE ONLYOFFICE Docs — document collaboration in your environment
  • CodiumAI - TestGPT | Generating meaningful tests for busy devs
  • InfluxDB - Access the most powerful time series database as a service
  • SonarLint - Clean code begins in your IDE with SonarLint
  • deon

    DeObject Notation Format

    When reading the file, the environment variables will be obtained from the URL and populate the environment.

    This is what I had in mind when designing the import functionality for deon [1].

    Being able to import also makes it easy to have a .base, a .production, a .local setup, and combine them accordingly.


  • goapilib

    Collection of packages to simplify writing REST APIs


    ONLYOFFICE Docs — document collaboration in your environment. Powerful document editing and collaboration in your app or environment. Ultimate security, API and 30+ ready connectors, SaaS or on-premises

  • viper

    Go configuration with fangs

  • json_env

    Loads environment variables from JSON files.

    My major pain point was that I had big JSON files inside my .env files. We use Cloud Foundry at work and it uses plenty of these for configuration.

    I wrote a small Rust tool called ‘json_env’[0] to read JSON files and supply them as ENV vars to a program. I’m working on it in my free time and eventually want to also replace direnv with it. TOML and YAML support is also planned.


  • gura

    Gura configuration language

    I really like the Gura format ( Seems to combine the best of yaml, json, and toml for the use case of human created configuration files.

  • dhall-lang

    Maintainable configuration files

    I've also seen the Dhall configuration language ( mentioned.

  • theory-exploration-benchmarks

    Mirror of

    > "CLI args are usually passed around explicitly" -- I think this is a pro, not a con.

    Sure; I never said it's a con. They have different characteristics, and are both useful in certain situations :)

    > I think the correct term for "things the caller knows better than the implementor" are parameters.

    True; that's also the name Racket gives to dynamically-scoped variables

    In fact, Racket uses a parameter (dynamically-scoped variable) to store the environment. This is actually slightly annoying, since the parameter is one big hashmap of all the env vars; but I usually want to override them individually. One of my Racket projects actually defines a helper function to override individual env vars makes a copies all the other environment ( made a are contained in a parameter

  • CodiumAI

    TestGPT | Generating meaningful tests for busy devs. Get non-trivial tests (and trivial, too!) suggested right inside your IDE, so you can code smart, create more value, and stay confident when you push.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts