nix-buffer: nix-shell in Emacs
Shea Levy has a wonderful package out for users of Nix and Emacs. It’s
called nix-buffer and it greatly improves working on Nix stuff in
Emacs. To try it just get it from MELPA by running M-x
package-install<RET>nix-buffer.
To use it in a project you need to create a new file in your project
directory called dir-locals.nix. It works a lot like
.dir-locals.el but it allows you to evaluate Nix expressions.
To setup, just create dir-locals.nix that looks like this:
let pkgs = import <nixpkgs> {}; in with pkgs; nixBufferBuilders.withPackages [ … ]
You can put anything from Nixpkgs inside of withPackages. That path
is added to your exec-path in Emacs. Using this you can wrap your
project in a container and avoid conflicts between project configurations!
There’s lot of future extensions for this. Ideally we could skip and
the dir-locals.nix configuration and automatically detect what
dependencies you need based on your default.nix file.