lorri icon indicating copy to clipboard operation
lorri copied to clipboard

Lorri fails to setup FHS user environment

Open dmayle opened this issue 4 years ago • 3 comments

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:

  1. Install bazel
  2. Use git to checkout https://github.com/dmayle/nixos-bazel-userenv-example
  3. Change to the lorri subdirectory
  4. direnv allow
  5. 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

dmayle avatar May 03 '21 13:05 dmayle

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.

dmayle avatar May 05 '21 11:05 dmayle

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.

Profpatsch avatar May 17 '21 22:05 Profpatsch

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

martsa1 avatar Aug 19 '22 14:08 martsa1