summary refs log tree commit diff
path: root/pkgs/build-support/build-fhs-userenv/default.nix
diff options
context:
space:
mode:
authorYegor Timoshenko <yegortimoshenko@gmail.com>2017-11-03 12:07:45 +0000
committerYegor Timoshenko <yegortimoshenko@gmail.com>2017-11-09 19:58:55 +0000
commitedb59ee7bdd0e419d35ea9202feba251692f821e (patch)
tree4af8247996088bbe367a3fc9894cda3f9e0b18ae /pkgs/build-support/build-fhs-userenv/default.nix
parentd03678c227bf40192a353939c61cb533c7abe5a0 (diff)
downloadnixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar.gz
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar.bz2
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar.lz
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar.xz
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.tar.zst
nixpkgs-edb59ee7bdd0e419d35ea9202feba251692f821e.zip
chroot-user: rewrite in C, drop CHROOTENV_EXTRA_BINDS
Formatted via clang-format.
Diffstat (limited to 'pkgs/build-support/build-fhs-userenv/default.nix')
-rw-r--r--pkgs/build-support/build-fhs-userenv/default.nix23
1 files changed, 12 insertions, 11 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/default.nix b/pkgs/build-support/build-fhs-userenv/default.nix
index d91cdffcf39..5f3ec4dc8ea 100644
--- a/pkgs/build-support/build-fhs-userenv/default.nix
+++ b/pkgs/build-support/build-fhs-userenv/default.nix
@@ -2,16 +2,19 @@
 
 let buildFHSEnv = callPackage ./env.nix { }; in
 
-args@{ name, runScript ? "bash", extraBindMounts ? [], extraInstallCommands ? "", meta ? {}, passthru ? {}, ... }:
+args@{ name, runScript ? "bash", extraInstallCommands ? "", meta ? {}, passthru ? {}, ... }:
 
 let
-  env = buildFHSEnv (removeAttrs args [ "runScript" "extraBindMounts" "extraInstallCommands" "meta" "passthru" ]);
+  env = buildFHSEnv (removeAttrs args [ "runScript" "extraInstallCommands" "meta" "passthru" ]);
 
-  # Sandboxing script
-  chroot-user = writeScript "chroot-user" ''
-    #! ${ruby}/bin/ruby
-    ${builtins.readFile ./chroot-user.rb}
-  '';
+  chrootenv = stdenv.mkDerivation {
+    name = "chrootenv";
+
+    unpackPhase = "cp ${./chrootenv.c} chrootenv.c";
+    installPhase = "cp chrootenv $out";
+
+    makeFlags = [ "chrootenv" ];
+  };
 
   init = run: writeScript "${name}-init" ''
     #! ${stdenv.shell}
@@ -32,8 +35,7 @@ in runCommand name {
   passthru = passthru // {
     env = runCommand "${name}-shell-env" {
       shellHook = ''
-        ${lib.optionalString (extraBindMounts != []) ''export CHROOTENV_EXTRA_BINDS="${lib.concatStringsSep ":" extraBindMounts}:$CHROOTENV_EXTRA_BINDS"''}
-        exec ${chroot-user} ${init "bash"} "$(pwd)"
+        exec ${chrootenv} ${init "bash"} "$(pwd)"
       '';
     } ''
       echo >&2 ""
@@ -46,8 +48,7 @@ in runCommand name {
   mkdir -p $out/bin
   cat <<EOF >$out/bin/${name}
   #! ${stdenv.shell}
-  ${lib.optionalString (extraBindMounts != []) ''export CHROOTENV_EXTRA_BINDS="${lib.concatStringsSep ":" extraBindMounts}:$CHROOTENV_EXTRA_BINDS"''}
-  exec ${chroot-user} ${init runScript} "\$(pwd)" "\$@"
+  exec ${chrootenv} ${init runScript} "\$(pwd)" "\$@"
   EOF
   chmod +x $out/bin/${name}
   ${extraInstallCommands}