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 {
|
resumeDevice = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
example = "0:0";
|
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 {
|
kernelParams = mkOption {
|
||||||
default = [
|
default = [
|
||||||
"selinux=0"
|
"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 {
|
extraTTYs = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
example = [8 9];
|
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 = {
|
system = {
|
||||||
@ -2509,6 +2439,7 @@ in
|
|||||||
require = [
|
require = [
|
||||||
# boot (is it the right place ?)
|
# boot (is it the right place ?)
|
||||||
(import ../boot/boot-stage-2.nix)
|
(import ../boot/boot-stage-2.nix)
|
||||||
|
(import ../installer/grub.nix)
|
||||||
|
|
||||||
# system
|
# system
|
||||||
(import ../system/system-options.nix)
|
(import ../system/system-options.nix)
|
||||||
|
@ -196,14 +196,7 @@ rec {
|
|||||||
|
|
||||||
# Script to build the Grub menu containing the current and previous
|
# Script to build the Grub menu containing the current and previous
|
||||||
# system configurations.
|
# system configurations.
|
||||||
grubMenuBuilder = pkgs.substituteAll {
|
grubMenuBuilder = config.system.build.grubMenuBuilder;
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Putting it all together. This builds a store object containing
|
# Putting it all together. This builds a store object containing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user