envrc VS emacs-direnv

Compare envrc vs emacs-direnv and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
envrc emacs-direnv
18 11
328 320
- -
7.9 2.9
12 days ago about 1 month ago
Emacs Lisp Emacs Lisp
- BSD 3-clause "New" or "Revised" License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

envrc

Posts with mentions or reviews of envrc. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-09.
  • Emacs Advent Calendar 9: devdocs, code-cells, dREPL, etc.
    17 projects | /r/emacs | 9 Dec 2023
    buffer-env: A pure-Elisp version of the direnv utility. Useful to make Emacs aware of Python virtualenvs (which, judging by the questions posted here, is unfortunately still a complication for a lot of people). Similar to (and inspired by) envrc, but doesn't require the direnv program.
  • Nix Survival Mode: macOS upgrades won't break Nix anymore
    12 projects | news.ycombinator.com | 25 Oct 2023
    Yes, most Nix users employ https://direnv.net or the equivalent for your IDE of choice. Emacs for instance has https://github.com/purcell/envrc which set per-buffer variables.
  • Beginner question: how do I set up virtual environments in my Python buffer?
    3 projects | /r/emacs | 22 Apr 2023
    Also take a look at the envrc package. I think it handles multiple projects better.
  • How do YOU use your PKMS?
    5 projects | /r/PKMS | 21 Apr 2023
    I further make my software projects so that when I click a link I go into an environment pre-loaded with their dependencies so dropping in/out of projects is always frictionless. I do this with the reproducibility guarantees of nix, along with glue like nix-direnv and envrc-mode to direnv.
  • Minimal approach for python devel environment with flake
    4 projects | /r/NixOS | 4 Feb 2023
    In conjunction with installing direnv on your favorite text editor, it's a very hassle free experience. Everything happens automatically. If you use Emacs, i higly recommend envrc.el
  • Nix and envrc
    3 projects | /r/emacs | 3 Feb 2023
    Direnv is installed using the nix-direnv installation instructions under "Via configuration.nix in NixOS". I read some recommendations that envrc.el is a better alternative then direnv.el, and after some testing I have to agree. (envrc-global-mode) is enabled in my config. This works perfectly with a normal emacs instance.
  • Emacs + emacs-direnv + Nix + vterm does not just work
    1 project | /r/emacs | 27 Dec 2022
    I don't use flake.nix, only shell.nix, though check if the envrc package works any better for you. https://github.com/purcell/envrc
  • Wrapping gcc with libraries
    2 projects | /r/NixOS | 4 Dec 2022
    As an alternative to emacs-direnv, I’d recommend the “envrc” package.
  • Eglot appreciation post
    3 projects | /r/emacs | 8 Jun 2022
    btw, my main issue regarding tramp was the fact that I didn't have my environment generated by direnv, via the https://github.com/purcell/envrc package. I use direnv almost exclusively to activate my nix-shell, so I can access the exact software dependencies required by that directory of a project.
  • Is it possible to let overlay Emacs use locally configured Agda libraries inside nix-shell?
    1 project | /r/NixOS | 19 May 2022
    I'm not familiar with these tools too but I highly recommend to look at https://github.com/purcell/envrc. If you are not familiar with direnv I suggest to try it with nix-shell/flakes before.

emacs-direnv

Posts with mentions or reviews of emacs-direnv. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-09.
  • Development Environments with Guix, similar to devenv.sh
    4 projects | /r/GUIX | 9 Dec 2023
  • env-commander.el -- Per-directory env setup for shell commands
    3 projects | /r/emacs | 6 Jul 2023
    env-commander-mode is a simple mode which allows any shell commands that Emacs invokes to run one or more commands beforehand to initialize the shell environment. There are many Emacs packages which can configure process environments, for example, direnv, but they lack the ability to go a step further and define shell functions and aliases, which is often required by "virtual environment" tools. For those who prefer interacting with shell commands via shell-command rather than shell, eshell, or term, env-commander-mode is here to assist.
  • How to properly configure dependencies when using LSP + nix
    1 project | /r/emacs | 27 Jun 2023
    I'm using nix to manage python dependencies (see excerpt of flake.nix below) but this means those python dependencies are in a /nix directory, so when lsp tries to figure out project root for them, it thinks they have nothing to do with my own project. Also I'm using emacs-direnv to transparently switch into nix environments (.envrc + use flake), so direnv (correctly) unloads my LSP executable (configured in flake.nix), so even if they should be considered totally separate projects LSP-mode doesn't know how to start up the server.
  • Eglot has landed on master: Emacs now has a built-in LSP client
    10 projects | news.ycombinator.com | 23 Oct 2022
    I've had a good experience with direnv[1] and emacs-direnv[2].

    Direnv can automatically load an environment when you enter a directory, so it automatically "opens" virtualenvs/nix shells/etc. The Emacs direnv mode ensures that each buffer sees the direnv mode for its project directory.

    I've found this to be a great compromise between automatic behavior on the one hand and transparency + control on the other—I get the right environment loaded automatically very consistently and, if something goes wrong, I can open a shell and poke around to see what's going on (is my nix shell messed up? is the right tool not loaded via direnv? etc). The only time I need to do anything manually is if I make a change to the environment and need to update Emacs about it, in which case I just run M-x direnv-update-environment.

    Once I got this set up, I can just rely on executable-find to check for (and find) exactly the right tool on a per-project basis—no more worrying about global or seeing the wrong version of a tool. This also made it easy to do stuff like only run formatting if the corresponding tool is available: I add hooks to various programming language modes that only turn on lsp/formatting/etc if executable-find sees the corresponding executable.

    Compared to the hassle I've had to go through helping my colleagues debug VSCode not seeing the right conda environment, virtualenv or the right version of various tools, Emacs + direnv has been a far nicer and more consistent experience.

    [1]: https://direnv.net/

    [2]: https://github.com/wbolster/emacs-direnv

  • How to handle credentials for Python in Emacs
    1 project | /r/emacs | 13 Aug 2022
    Alternatively from what /u/hantva said, you can try using direnv and its integration with Emacs. This has a benefit of scaling better if you have more than one such project as each set of env vars is separate.
  • NixShell + direnv + Emacs
    4 projects | /r/emacs | 2 May 2022
    I'm using lorri and emacs-direnv together, works perfectly fine for me.
  • Anyone using sage-shell-mode?
    2 projects | /r/emacs | 18 Oct 2021
    Thanks, I'll check this out if I can't get my ideal setup to work. Presume you meant this: https://github.com/wbolster/emacs-direnv ?
  • Is there a way to configure my Python interpreter to be inside a docker container like in Pycharm?
    2 projects | /r/emacs | 13 Jun 2021
    I first install direnv which allows me to have a different environment per directory, or in my case, a project. And there is a project that connects Emacs to this. https://github.com/wbolster/emacs-direnv
  • Doom Emacs + Pyright + LSP + Conda
    2 projects | /r/emacs | 29 Apr 2021
    I use this to source .envrc files into my emacs environment: https://github.com/wbolster/emacs-direnv
  • I created a gist with a full python config with Emacs
    4 projects | /r/emacs | 13 Jan 2021
    almost. to integrate with a shell, you would indeed hook it onto the shell's prompt function. to integrate it with Emacs, you would use https://github.com/wbolster/emacs-direnv , so Emacs sees the project specific process environment too. the isolation is primarily achieved by setting up a custom PATH, PYTHON_PATH and similar vars

What are some alternatives?

When comparing envrc and emacs-direnv you can also consider the following projects:

dotemacs

setup-emacs-windows - A Github Action that installs a specific emacs version

direnv - unclutter your .profile

lsp-bridge - A blazingly fast LSP client for Emacs

container-env - Wrapper commands to run inside docker, simulating the behaviour of tools like rvm, rbenv, virtualenv etc...

buffer-env - Buffer-local process environments for Emacs

lorri - Your project’s nix-env [maintainer=@Profpatsch,@nyarly]

stack - The Haskell Tool Stack

ob-sagemath - org-babel integration with SageMath

Elpy - Emacs Python Development Environment

eslint-flymake - An ESLint backend for Flymake