0b26af2188
boots into stage 1 (kernel+initrd) succesfully. `system-configuration.nix' contains the definition of the configuration to be installed. The attribute systemConfiguration is installed into the profile /nix/var/nix/profiles/system. Then the program /nix/var/nix/profiles/system/bin/switch-to-configuration is called to finalise the installation. This program (generated by system-configuration.sh) installs Grub on the drive with a menu that contains the entry for the desired kernel and initrd. In principle this allows us to do rollbacks to previous system configurations by doing `nix-env --rollback' and then calling switch-to-configuration to update Grub. Ideally this should be done in a single command (and we should consider the obvious risk of garbage collecting the current kernel etc. to which the current Grub menu points...). Maybe the responsibility for generating the Grub menu should be placed somewhere else. For instance, we could generate a Grub menu automatically out of all the generations in the `system' profile. svn path=/nixu/trunk/; revision=7009
33 lines
675 B
Nix
33 lines
675 B
Nix
let
|
|
|
|
# The root device.
|
|
rootDevice = "/dev/hda1";
|
|
|
|
# The device on which GRUB should be installed (leave empty if you
|
|
# don't want GRUB to be installed).
|
|
grubDevice = "/dev/hda";
|
|
|
|
in
|
|
|
|
# Build boot scripts for the CD that find the CD-ROM automatically.
|
|
with import ./rescue-system.nix {
|
|
autoDetectRootDevice = false;
|
|
inherit rootDevice;
|
|
};
|
|
|
|
|
|
rec {
|
|
|
|
|
|
systemConfiguration = pkgs.stdenv.mkDerivation {
|
|
name = "system-configuration";
|
|
builder = ./system-configuration.sh;
|
|
inherit (pkgs) grub coreutils gnused gnugrep diffutils;
|
|
inherit grubDevice;
|
|
kernel = pkgs.kernel + "/vmlinuz";
|
|
initrd = initialRamdisk + "/initrd";
|
|
};
|
|
|
|
|
|
}
|