Add a grub configuration file.
svn path=/nixos/branches/fix-style/; revision=13685
This commit is contained in:
parent
b67e2a12aa
commit
e4b0134a43
113
installer/grub.nix
Normal file
113
installer/grub.nix
Normal 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.
|
||||
}
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user