2006-11-17 15:13:21 +01:00
|
|
|
{ stdenv, cdrtools
|
2006-11-02 18:56:50 +01:00
|
|
|
|
|
|
|
# The file name of the resulting ISO image.
|
|
|
|
, isoName ? "cd.iso"
|
|
|
|
|
|
|
|
, # The files and directories to be placed in the ISO file system.
|
|
|
|
# This is a list of attribute sets {source, target} where `source'
|
|
|
|
# is the file system object (regular file or directory) to be
|
|
|
|
# grafted in the file system at path `target'.
|
|
|
|
contents
|
|
|
|
|
2006-11-17 15:13:21 +01:00
|
|
|
/*
|
2006-11-04 00:41:57 +01:00
|
|
|
, # In addition to `contents', the closure of the store paths listed
|
|
|
|
# in `packages' are also placed in the file system.
|
|
|
|
packages ? []
|
2006-11-17 15:13:21 +01:00
|
|
|
*/
|
2006-11-04 00:41:57 +01:00
|
|
|
|
|
|
|
, # `init' should be a store path, the closure of which is added to
|
|
|
|
# the image, just like `packages'. However, in addition, a symlink
|
|
|
|
# `/init' to `init' will be created.
|
|
|
|
init ? null
|
|
|
|
|
2006-11-02 18:56:50 +01:00
|
|
|
# Whether this should be an El-Torito bootable CD.
|
|
|
|
, bootable ? false
|
|
|
|
|
|
|
|
# The path (in the ISO file system) of the boot image.
|
|
|
|
, bootImage ? ""
|
|
|
|
|
|
|
|
}:
|
|
|
|
|
|
|
|
assert bootable -> bootImage != "";
|
|
|
|
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
name = "iso9660-image";
|
|
|
|
builder = ./make-iso9660-image.sh;
|
2006-11-17 15:13:21 +01:00
|
|
|
buildInputs = [cdrtools];
|
|
|
|
inherit isoName init bootable bootImage;
|
2006-11-04 00:41:57 +01:00
|
|
|
sources = map ({source, target}: source) contents;
|
|
|
|
targets = map ({source, target}: target) contents;
|
2006-11-17 15:13:21 +01:00
|
|
|
|
|
|
|
# For obtaining the closure of `init'.
|
|
|
|
exportReferencesGraph = ["init-closure" init];
|
|
|
|
pathsFromGraph = ./paths-from-graph.sh;
|
2006-11-02 18:56:50 +01:00
|
|
|
}
|