2006-11-02 17:56:50 +00:00
|
|
|
source $stdenv/setup
|
|
|
|
|
|
|
|
set -o pipefail
|
|
|
|
|
|
|
|
# Get the paths in the closure of `packages'. Unfortunately, the only
|
|
|
|
# way to get the closure is to call Nix, which is strictly speaking
|
|
|
|
# forbidden. But we do it anyway. In time, we should add a feature
|
|
|
|
# to Nix to let Nix pass closures to builders.
|
2006-11-12 23:30:03 +00:00
|
|
|
packagesClosure=$(nix-store -qR $packages $init)
|
2006-11-02 17:56:50 +00:00
|
|
|
|
|
|
|
# Paths in cpio archives *must* be relative, otherwise the kernel
|
|
|
|
# won't unpack 'em.
|
|
|
|
mkdir root
|
|
|
|
cd root
|
2006-11-02 23:58:06 +00:00
|
|
|
cp -prd --parents $packagesClosure .
|
2006-11-02 17:56:50 +00:00
|
|
|
|
|
|
|
# Put the closure in a gzipped cpio archive.
|
|
|
|
ensureDir $out
|
|
|
|
ln -s $init init
|
|
|
|
find * -print0 | cpio -ov -H newc --null | gzip -9 > $out/initrd
|