Add a grub configuration file.

svn path=/nixos/branches/fix-style/; revision=13685
This commit is contained in:
Nicolas Pierron 2009-01-02 16:07:34 +00:00
parent b67e2a12aa
commit e4b0134a43
3 changed files with 115 additions and 78 deletions

113
installer/grub.nix Normal file
View File

@ -0,0 +1,113 @@
{pkgs, config, ...}:
###### interface
let
inherit (pkgs.lib) mkOption;
options = {
boot = {
grubDevice = mkOption {
default = "";
example = "/dev/hda";
description = "
The device on which the boot loader, Grub, will be installed.
If empty, Grub won't be installed and it's your responsibility
to make the system bootable.
";
};
bootMount = mkOption {
default = "";
example = "(hd0,0)";
description = "
If the system partition may be wiped on reinstall, it is better
to have /boot on a small partition. To do it, we need to explain
to GRUB where the kernels live. Specify the partition here (in
GRUB notation.
";
};
configurationName = mkOption {
default = "";
example = "Stable 2.6.21";
description = "
Grub entry name instead of default.
";
};
extraGrubEntries = mkOption {
default = "";
example = "
title Windows
chainloader (hd0,1)+1
";
description = "
Any additional entries you want added to the Grub boot menu.
";
};
extraGrubEntriesBeforeNixos = mkOption {
default = false;
description = "
Wheter extraGrubEntries are put before the Nixos-default option
";
};
grubSplashImage = mkOption {
default = pkgs.fetchurl {
url = http://www.gnome-look.org/CONTENT/content-files/36909-soft-tux.xpm.gz;
sha256 = "14kqdx2lfqvh40h6fjjzqgff1mwk74dmbjvmqphi6azzra7z8d59";
};
example = null;
description = "
Background image used for Grub. It must be a 640x480,
14-colour image in XPM format, optionally compressed with
<command>gzip</command> or <command>bzip2</command>. Set to
<literal>null</literal> to run Grub in text mode.
";
};
configurationLimit = mkOption {
default = 100;
example = 120;
description = "
Maximum of configurations in boot menu. GRUB has problems when
there are too many entries.
";
};
};
};
in
###### implementation
let
grubMenuBuilder = pkgs.substituteAll {
src = ../installer/grub-menu-builder.sh;
isExecutable = true;
inherit (pkgs) bash;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
inherit (config.boot) copyKernels extraGrubEntries extraGrubEntriesBeforeNixos
grubSplashImage bootMount configurationLimit;
};
in
{
require = [
options
# config.system.build
(import ../system/system-options.nix)
];
system = {
build = {
inherit grubMenuBuilder;
};
};
# and many other things that have to be moved inside this file.
}

View File

@ -55,27 +55,6 @@ in
";
};
grubDevice = mkOption {
default = "";
example = "/dev/hda";
description = "
The device on which the boot loader, Grub, will be installed.
If empty, Grub won't be installed and it's your responsibility
to make the system bootable.
";
};
bootMount = mkOption {
default = "";
example = "(hd0,0)";
description = "
If the system partition may be wiped on reinstall, it is better
to have /boot on a small partition. To do it, we need to explain
to GRUB where the kernels live. Specify the partition here (in
GRUB notation.
";
};
resumeDevice = mkOption {
default = "";
example = "0:0";
@ -103,14 +82,6 @@ in
";
};
configurationName = mkOption {
default = "";
example = "Stable 2.6.21";
description = "
Grub entry name instead of default.
";
};
kernelParams = mkOption {
default = [
"selinux=0"
@ -276,38 +247,6 @@ in
";
};
extraGrubEntries = mkOption {
default = "";
example = "
title Windows
chainloader (hd0,1)+1
";
description = "
Any additional entries you want added to the Grub boot menu.
";
};
extraGrubEntriesBeforeNixos = mkOption {
default = false;
description = "
Wheter extraGrubEntries are put before the Nixos-default option
";
};
grubSplashImage = mkOption {
default = pkgs.fetchurl {
url = http://www.gnome-look.org/CONTENT/content-files/36909-soft-tux.xpm.gz;
sha256 = "14kqdx2lfqvh40h6fjjzqgff1mwk74dmbjvmqphi6azzra7z8d59";
};
example = null;
description = "
Background image used for Grub. It must be a 640x480,
14-colour image in XPM format, optionally compressed with
<command>gzip</command> or <command>bzip2</command>. Set to
<literal>null</literal> to run Grub in text mode.
";
};
extraTTYs = mkOption {
default = [];
example = [8 9];
@ -321,15 +260,6 @@ in
";
};
configurationLimit = mkOption {
default = 100;
example = 120;
description = "
Maximum of configurations in boot menu. GRUB has problems when
there are too many entries.
";
};
};
system = {
@ -2509,6 +2439,7 @@ in
require = [
# boot (is it the right place ?)
(import ../boot/boot-stage-2.nix)
(import ../installer/grub.nix)
# system
(import ../system/system-options.nix)

View File

@ -196,14 +196,7 @@ rec {
# Script to build the Grub menu containing the current and previous
# system configurations.
grubMenuBuilder = pkgs.substituteAll {
src = ../installer/grub-menu-builder.sh;
isExecutable = true;
inherit (pkgs) bash;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
inherit (config.boot) copyKernels extraGrubEntries extraGrubEntriesBeforeNixos
grubSplashImage bootMount configurationLimit;
};
grubMenuBuilder = config.system.build.grubMenuBuilder;
# Putting it all together. This builds a store object containing