* make-initrd.nix: builds a initial RAM disk. The resulting initrd will contain just a Nix store containing the specified lists of packages, with a symlink `/init' to the actual init program in the Nix store. * make-iso9660-image.nix: builds a bootable ISO image. * rescue-system.nix: builds a bootable ISO image (using the two function above) that boots into a very minimal Linux environment containing (at the moment) the dietlibc-based bash and coreutils, loaded from the initrd. Eventually this should become a two-stage boot (load kernel modules from the initrd, mount the actual root file system (e.g., the installation CD), call the real init). The rescue system (probably a misnomer) should become the minimal environment necessary for the installer (on CD) and the boot process of an installed NixOS (on HD). svn path=/nixu/trunk/; revision=6926
29 lines
761 B
Nix
29 lines
761 B
Nix
{ stdenv, cdrtools
|
|
|
|
# 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
|
|
|
|
# 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;
|
|
buildInputs = [cdrtools];
|
|
inherit isoName bootable bootImage;
|
|
graftList = map ({source, target}: target + "=" + source) contents;
|
|
}
|