2009-06-10 15:40:35 +02:00
|
|
|
{ stdenv, squashfsTools, perl, pathsFromGraph
|
|
|
|
|
|
|
|
, # The root directory of the squashfs filesystem is filled with the
|
|
|
|
# closures of the Nix store paths listed here.
|
|
|
|
storeContents ? []
|
|
|
|
}:
|
|
|
|
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
name = "squashfs.img";
|
2011-09-14 20:20:50 +02:00
|
|
|
|
2009-06-10 15:40:35 +02:00
|
|
|
buildInputs = [perl squashfsTools];
|
2011-09-14 20:20:50 +02:00
|
|
|
|
2009-06-10 15:40:35 +02:00
|
|
|
# For obtaining the closure of `storeContents'.
|
|
|
|
exportReferencesGraph =
|
|
|
|
map (x: [("closure-" + baseNameOf x) x]) storeContents;
|
|
|
|
|
|
|
|
buildCommand =
|
|
|
|
''
|
|
|
|
# Add the closures of the top-level store objects.
|
|
|
|
storePaths=$(perl ${pathsFromGraph} closure-*)
|
2011-09-14 20:20:50 +02:00
|
|
|
|
2009-06-10 15:40:35 +02:00
|
|
|
# Also include a manifest of the closures in a format suitable
|
|
|
|
# for nix-store --load-db.
|
|
|
|
printRegistration=1 perl ${pathsFromGraph} closure-* > nix-path-registration
|
|
|
|
|
|
|
|
# Generate the squashfs image.
|
|
|
|
mksquashfs nix-path-registration $storePaths $out \
|
|
|
|
-keep-as-directory -all-root
|
|
|
|
'';
|
|
|
|
}
|