direnv
—as the name implies—lets you set up an environment for a directory (and its subdirectories).
Handy if you don’t want to install binaries globally, but just for a certain project.
Links
- Homepage
- direnv.net
- Source
- https://github.com/direnv/direnv
- Docs
- Installation
- Setup
Setting up a direnv
Make an “.envrc
” file in the directory.
I tend to use a simple file with the following:
PATH_add myenv/bin
where “myenv
” is made with Nix, using a “default.nix
” that looks something like:
# TODO: I should just learn how to make a shell.nix
{ pkgs ? import <nixpkgs> {}
, ... }:
with pkgs;
{
r-env = let
my-R-packages = with rPackages; [
R
tidyverse
devtools
jsonlite
data_table
rstan
ggplot2
rsvg
RSQLite
RPostgreSQL
];
newR = rWrapper.override {
packages = my-R-packages;
};
in
symlinkJoin {
name = "R-stdenv-wrapper";
paths = [ newR ];
buildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/R --prefix PATH : ${lib.makeBinPath [ gcc gnumake ]}
wrapProgram $out/bin/Rscript --prefix PATH : ${lib.makeBinPath [ gcc gnumake ]}
'';
};
r-env2 = let
my-R-packages = with rPackages; [
R
rsvg
];
newR = rWrapper.override {
packages = my-R-packages;
};
in
newR;
}
Commands
Just a cheatsheet of commands I forget.
Command | Description |
---|---|
|
Set up direnv in a Bash or Zsh shell. |
|
Mark current .envrc as trusted.
|