74107a7867
This takes another approach at binding FHS directory structure. We now bind-mount all the root filesystem to directory "/host" in the target tree. From that we symlink all the directories into the tree if they do not already exist in FHS structure. This probably makes `CHROOTENV_EXTRA_BINDS` unnecessary -- its main usecase was to add bound directories from the host to the sandbox, and we not just symlink all of them. I plan to get some feedback on its usage and maybe deprecate it. This also drops old `buildFHSChrootEnv` infrastructure. The main problem with it is it's very difficult to unmount a recursive-bound directory when mount is not sandboxed. This problem is a bug even without these changes -- if you have for example `/home/alice` mounted to somewhere, you wouldn't see it in `buildFHSChrootEnv` now. With the new directory structure, it's impossible to use regular bind at all. After some tackling with this I realized that the fix would be brittle and dangerous (if you don't unmount everything clearly and proceed to removing the temporary directory, bye-bye fs!). It also probably doesn't worth it because I haven't heard that someone actually uses it for a long time, and `buildFHSUserEnv` should cover most cases while being much more maintainable and safe for the end-user. |
||
---|---|---|
.. | ||
aliases.nix | ||
all-packages.nix | ||
default.nix | ||
dotnet-packages.nix | ||
emacs-packages.nix | ||
go-packages.nix | ||
guile-2-test.nix | ||
haskell-packages.nix | ||
lua-packages.nix | ||
make-tarball.nix | ||
metrics.nix | ||
node-packages-generated.nix | ||
node-packages.json | ||
node-packages.nix | ||
perl-packages.nix | ||
php-packages.nix | ||
platforms.nix | ||
pure-packages.nix | ||
python-packages.nix | ||
release-cross.nix | ||
release-lib.nix | ||
release-python.nix | ||
release-small.nix | ||
release.nix | ||
rust-packages.nix | ||
stdenv.nix |