summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-08-26 19:37:48 +0300
committerNikolay Amiantov <ab@fmap.me>2015-08-26 19:39:08 +0300
commit47ea8c097c08ee19f8622eae4e9e3acdc99fce3e (patch)
tree0eb061fec67ce083784d31b3820c7682db21f999 /pkgs/build-support
parent9635f89fff80cd243462c20a311f7340031f0f59 (diff)
downloadnixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar.gz
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar.bz2
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar.lz
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar.xz
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.tar.zst
nixlib-47ea8c097c08ee19f8622eae4e9e3acdc99fce3e.zip
buildFHSUserEnv: add .env support
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/build-fhs-userenv/default.nix44
1 files changed, 30 insertions, 14 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/default.nix b/pkgs/build-support/build-fhs-userenv/default.nix
index b57b687e20f7..9060c073eee3 100644
--- a/pkgs/build-support/build-fhs-userenv/default.nix
+++ b/pkgs/build-support/build-fhs-userenv/default.nix
@@ -1,4 +1,4 @@
-{ writeText, writeScriptBin, stdenv, ruby } : { env, runScript } :
+{ runCommand, writeText, writeScriptBin, stdenv, ruby } : { env, runScript ? "bash" } :
 
 let
   name = env.pname;
@@ -9,21 +9,37 @@ let
     ${builtins.readFile ./chroot-user.rb}
   '';
 
-  init = writeText "init" ''
-           # Make /tmp directory
-           mkdir -m 1777 /tmp
+  init = run: writeText "${name}-init" ''
+    # Make /tmp directory
+    mkdir -m 1777 /tmp
 
-           # Expose sockets in /tmp
-           for i in /host-tmp/.*-unix; do
-             ln -s "$i" "/tmp/$(basename "$i")"
-           done
+    # Expose sockets in /tmp
+    for i in /host-tmp/.*-unix; do
+      ln -s "$i" "/tmp/$(basename "$i")"
+    done
 
-           [ -d "$1" ] && [ -r "$1" ] && cd "$1"
-           shift
-           exec "${runScript}" "$@"
-         '';
+    [ -d "$1" ] && [ -r "$1" ] && cd "$1"
+    shift
+    exec ${run} "$@"
+  '';
 
-in writeScriptBin name ''
+in runCommand name {
+  passthru.env =
+    runCommand "${name}-shell-env" {
+      shellHook = ''
+        exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init "bash"} "$(pwd)"
+      '';
+    } ''
+      echo >&2 ""
+      echo >&2 "*** User chroot 'env' attributes are intended for interactive nix-shell sessions, not for building! ***"
+      echo >&2 ""
+      exit 1
+    '';
+} ''
+  mkdir -p $out/bin
+  cat <<EOF >$out/bin/${name}
   #! ${stdenv.shell}
-  exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init} "$(pwd)" "$@"
+  exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init runScript} "\$(pwd)" "\$@"
+  EOF
+  chmod +x $out/bin/${name}
 ''