Support lorri

From what I currently understand, lorri is a tool (sponsored by Target) that
uses nix and direnv to build and switch between environments quickly and
easily.

When you run `lorri init` inside of a directory, lorri creates a shell.nix and
an .envrc file. The .envrc file calls `eval "$(lorri direnv)"` and the shell.nix
calls `<nixpkgs>.mkShell`, which creates a shell environment exposing
dependencies on $PATH and environment variables. lorri uses direnv to ensure
that $PATH and the environment variables are available depending on your CWD.

lorri becomes especially powerful because of Emacs's `direnv-mode`, which
ensures that Emacs buffers can access anything exposed by direnv as well.

I still need to learn more about how lorri works and how it will affect my
workflow, but I'm enjoying what I've seen thus far, and I'm optimistic about the
road ahead.
This commit is contained in:
William Carroll 2020-02-06 21:39:23 +00:00
parent a91d00fd94
commit b47ca8b876
4 changed files with 29 additions and 7 deletions

14
shell.nix Normal file
View file

@ -0,0 +1,14 @@
{ pkgs ? import <nixpkgs> {}, ... }:
pkgs.mkShell rec {
buildInputs = [];
# TODO(wpcarro): How does pkgs.mkShell handle exported and non-exported
# variable definitions?
BRIEFCASE = builtins.toPath ~/briefcase;
DEPOT = builtins.toPath ~/depot;
NIXPKGS = builtins.toPath ~/nixpkgs;
NIX_PATH="nixpkgs=${NIXPKGS}:depot=${DEPOT}:briefcase=${BRIEFCASE}";
DESKTOP = "zeno.lon.corp.google.com";
LAPTOP = "seneca";
CLOUDTOP = "wpcarro.c.googlers.com";
}