Lorri fails to setup FHS user environment
Describe the bug When using buildFHSUserEnv in shell.nix, nix-shell properly sets up an FHS user environment with /usr/lib, /lib/... etc. When using lorri with the shame shell.nix, however, it is not properly setup.
To Reproduce Steps to reproduce the behavior:
- Install bazel
- Use git to checkout https://github.com/dmayle/nixos-bazel-userenv-example
- Change to the lorri subdirectory
- direnv allow
- bazel build proto/...
Expected behavior The go library should build without errors
Metadata lorri did not crash
$ lorri info --shell-file shell.nix
lorri version: 1.2
GC roots exist, shell_gc_root: "/home/douglas/.cache/lorri/gc_roots/081a257f0dbdd5f43a8cd34f7f43a626/gc_root/shell_gc_root"
$ uname -a
Linux nixos 5.10.22 #1-NixOS SMP Tue Mar 9 10:11:15 UTC 2021 x86_64 GNU/Linux
Additional context
It appears this is due to the architecture of direnv. buildFHSUserEnv depends on having a sub-shell in order to setup a chroot, but direnv just evaluates and updates environment variables.
Can you try using lorri shell instead? Does this work? It should run
the shell hook and then execute your normal user shell.
dmayle @.***> writes:
It appears this is due to the architecture of direnv. buildFHSUserEnv depends on having a sub-shell in order to setup a chroot, but direnv just evaluates and updates environment variables.
I'm seeing this as well.
My shell.nix:
{ pkgs ? import <nixpkgs> { } }:
(pkgs.buildFHSUserEnv {
name = "py310_fhs";
targetPkgs = pkgs: (with pkgs; [
gcc
python3
python3Packages.pip
python3Packages.virtualenv
zsh
]);
runScript = "zsh";
}).env
Works fine with nix-shell, seems to evaluate with lorri shell but not at all with direnv. Notably, the chroot doesn't seem active when instantiated with lorri shell but does with nix-shell.
lorri --version
1.5.0