feat(prepare-image): Ensure /usr/bin/env is always present

This is required by common patterns in shell scripts.

There are some caveats around this. Adding logic to filter whether
coreutils is included in an image would slow down the Nix evaluation,
so the link is currently created even in cases where it doesn't point
to anything.

Fixes #109
This commit is contained in:
Vincent Ambo 2021-08-25 13:53:31 +03:00 committed by Vincent Ambo
parent e85b7260b5
commit 6c4a69fa42

View File

@ -132,6 +132,18 @@ let
contentsEnv = symlinkJoin {
name = "bulk-layers";
paths = allContents.contents;
# Ensure that there is always a /usr/bin/env for shell scripts
# that require it.
#
# Note that images which do not actually contain `coreutils` will
# still have this symlink, but it will be dangling.
#
# TODO(tazjin): Don't link this if coreutils is not included.
postBuild = ''
mkdir -p $out/usr/bin
ln -s ${coreutils}/bin/env $out/usr/bin/env
'';
};
# Image layer that contains the symlink forest created above. This