Add --install option for nixos-option which is used to handle options of
the target system (when installing) and also to generate a template configuration file for users. svn path=/nixos/trunk/; revision=23923
This commit is contained in:
parent
58ce746eb0
commit
7ea957fd3d
@ -2,15 +2,17 @@
|
|||||||
|
|
||||||
# Allow the location of NixOS sources and the system configuration
|
# Allow the location of NixOS sources and the system configuration
|
||||||
# file to be overridden.
|
# file to be overridden.
|
||||||
|
|
||||||
|
: ${mountPoint=/mnt}
|
||||||
: ${NIXOS_PATH=/etc/nixos/nixos}
|
: ${NIXOS_PATH=/etc/nixos/nixos}
|
||||||
: ${NIXOS=/etc/nixos/nixos}
|
|
||||||
: ${NIXPKGS=/etc/nixos/nixpkgs}
|
|
||||||
: ${NIXOS_CONFIG=/etc/nixos/configuration.nix}
|
: ${NIXOS_CONFIG=/etc/nixos/configuration.nix}
|
||||||
|
: ${NIXPKGS=/etc/nixos/nixpkgs}
|
||||||
export NIXOS_PATH
|
export NIXOS_PATH
|
||||||
|
|
||||||
usage () {
|
usage () {
|
||||||
echo 1>&2 "
|
echo 1>&2 "
|
||||||
Usage: $0 OPTION_NAME [-v] [-d] [-l]
|
Usage: $0 [--install] [-v] [-d] [-l] OPTION_NAME
|
||||||
|
$0 [--install]
|
||||||
|
|
||||||
This program is used to explore NixOS options by looking at their values or
|
This program is used to explore NixOS options by looking at their values or
|
||||||
by looking at their description. It is helpful for understanding the how
|
by looking at their description. It is helpful for understanding the how
|
||||||
@ -18,6 +20,11 @@ your configuration is working.
|
|||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
|
-i | --install Use the configuration on
|
||||||
|
${mountPoint:+$mountPoint/}$NIXOS_CONFIG instead of
|
||||||
|
the current system configuration. Generate a
|
||||||
|
template configuration if no option name is
|
||||||
|
specified.
|
||||||
-v | --value Display the current value, based on your
|
-v | --value Display the current value, based on your
|
||||||
configuration.
|
configuration.
|
||||||
-d | --default Display the default value, the example and the
|
-d | --default Display the default value, the example and the
|
||||||
@ -26,8 +33,9 @@ Options:
|
|||||||
is declared.
|
is declared.
|
||||||
--help Show this message.
|
--help Show this message.
|
||||||
|
|
||||||
Environment variables affecting nixos-option:
|
Environment variables affecting $0:
|
||||||
|
|
||||||
|
\$mountPoint Path to the target file system.
|
||||||
\$NIXOS_PATH Path where the NixOS repository is located.
|
\$NIXOS_PATH Path where the NixOS repository is located.
|
||||||
\$NIXOS_CONFIG Path to your configuration file.
|
\$NIXOS_CONFIG Path to your configuration file.
|
||||||
\$NIXPKGS Path to Nix packages.
|
\$NIXPKGS Path to Nix packages.
|
||||||
@ -44,6 +52,7 @@ Environment variables affecting nixos-option:
|
|||||||
desc=false
|
desc=false
|
||||||
defs=false
|
defs=false
|
||||||
value=false
|
value=false
|
||||||
|
install=false
|
||||||
verbose=false
|
verbose=false
|
||||||
|
|
||||||
option=""
|
option=""
|
||||||
@ -52,18 +61,39 @@ argfun=""
|
|||||||
for arg; do
|
for arg; do
|
||||||
if test -z "$argfun"; then
|
if test -z "$argfun"; then
|
||||||
case $arg in
|
case $arg in
|
||||||
-d|--description) desc=true;;
|
-*)
|
||||||
-v|--value) value=true;;
|
longarg=""
|
||||||
-l|--lookup) defs=true;;
|
sarg="$arg"
|
||||||
|
while test "$sarg" != "-"; do
|
||||||
|
case $sarg in
|
||||||
|
--*) longarg=$arg;;
|
||||||
|
-d*) longarg="$longarg --description";;
|
||||||
|
-v*) longarg="$longarg --value";;
|
||||||
|
-l*) longarg="$longarg --lookup";;
|
||||||
|
-i*) longarg="$longarg --install";;
|
||||||
|
-*) usage;;
|
||||||
|
esac
|
||||||
|
sarg="-${sarg#??}"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*) longarg=$arg;;
|
||||||
|
esac
|
||||||
|
for larg in $longarg; do
|
||||||
|
case $larg in
|
||||||
|
--description) desc=true;;
|
||||||
|
--value) value=true;;
|
||||||
|
--lookup) defs=true;;
|
||||||
|
--install) install=true;;
|
||||||
--verbose) verbose=true;;
|
--verbose) verbose=true;;
|
||||||
--help) usage;;
|
--help) usage;;
|
||||||
-*) usage;;
|
-*) usage;;
|
||||||
*) if test -z "$option"; then
|
*) if test -z "$option"; then
|
||||||
option="$arg"
|
option="$larg"
|
||||||
else
|
else
|
||||||
usage
|
usage
|
||||||
fi;;
|
fi;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
else
|
else
|
||||||
case $argfun in
|
case $argfun in
|
||||||
set_*)
|
set_*)
|
||||||
@ -75,6 +105,16 @@ for arg; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# --install cannot be used with -d -v -l without option name.
|
||||||
|
if $value || $desc || $defs && $install && test -z "$option"; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
generate=false
|
||||||
|
if ! $defs && ! $desc && ! $value && $install && test -z "$option"; then
|
||||||
|
generate=true
|
||||||
|
fi
|
||||||
|
|
||||||
if ! $defs && ! $desc; then
|
if ! $defs && ! $desc; then
|
||||||
value=true
|
value=true
|
||||||
fi
|
fi
|
||||||
@ -111,7 +151,130 @@ findSources(){
|
|||||||
nix-instantiate - --eval-only --strict
|
nix-instantiate - --eval-only --strict
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $install; then
|
||||||
|
if test -e "$mountPoint$NIXOS_PATH"; then
|
||||||
|
export NIXOS_PATH="$mountPoint$NIXOS_PATH"
|
||||||
|
fi
|
||||||
|
if test -e "$mountPoint$NIXPKGS"; then
|
||||||
|
export NIXPKGS="$mountPoint$NIXPKGS"
|
||||||
|
fi
|
||||||
|
export NIXOS_CONFIG="$mountPoint$NIXOS_CONFIG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $generate; then
|
||||||
|
mkdir -p $(dirname "$NIXOS_CONFIG")
|
||||||
|
|
||||||
|
# Scan the hardware and add the result to /etc/nixos/hardware-scan.nix.
|
||||||
|
hardware_config="${NIXOS_CONFIG%/configuration.nix}/hardware-configuration.nix"
|
||||||
|
if test -e "$hardware_config"; then
|
||||||
|
echo "A hardware configuration file exists, generation skipped."
|
||||||
|
else
|
||||||
|
echo "Scan your hardware to generate a hardware configuration file."
|
||||||
|
nixos-hardware-scan > "$hardware_config"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -e "$NIXOS_CONFIG"; then
|
||||||
|
echo 1>&2 "error: Cannot generate a template configuration because a configuration file exists."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Generate a template configuration that you should edit."
|
||||||
|
|
||||||
|
# Generate a template configuration file where the user has to
|
||||||
|
# fill the gaps.
|
||||||
|
echo > "$NIXOS_CONFIG" \
|
||||||
|
'# Edit this configuration file which defines what would be installed on the
|
||||||
|
# system. To Help while choosing option value, you can watch at the manual
|
||||||
|
# page of configuration.nix or at the last chapter of the manual available
|
||||||
|
# on the virtual console 8 (Alt+F8).
|
||||||
|
|
||||||
|
{config, pkgs, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
require = [
|
||||||
|
# Include the configuration for part of your system which have been
|
||||||
|
# detected automatically. In addition, it includes the same
|
||||||
|
# configuration as the installation device that you used.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.kernelModules = [
|
||||||
|
# Specify all kernel modules that are necessary for mounting the root
|
||||||
|
# file system.
|
||||||
|
#
|
||||||
|
# "ext4" "ata_piix"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.grub = {
|
||||||
|
# Use grub 2 as boot loader.
|
||||||
|
enable = true;
|
||||||
|
version = 2;
|
||||||
|
|
||||||
|
# Define on which hard drive you want to install Grub.
|
||||||
|
# device = "/dev/sda";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
# hostName = "nixos"; # Define your hostname.
|
||||||
|
interfaceMonitor.enable = true; # Watch for plugged cable.
|
||||||
|
enableWLAN = true; # Enables Wireless.
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add file system entries for each partition that you want to see mounted
|
||||||
|
# at boot time. You can add filesystems which are not mounted at boot by
|
||||||
|
# adding the noauto option.
|
||||||
|
fileSystems = [
|
||||||
|
# Mount the root file system
|
||||||
|
#
|
||||||
|
# { mountPoint = "/";
|
||||||
|
# device = "/dev/sda2";
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Copy & Paste & Uncomment & Modify to add any other file system.
|
||||||
|
#
|
||||||
|
# { mountPoint = "/data"; # where you want to mount the device
|
||||||
|
# device = "/dev/sdb"; # the device or the label of the device
|
||||||
|
# # label = "data";
|
||||||
|
# fsType = "ext3"; # the type of the partition.
|
||||||
|
# options = "data=journal";
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
# List swap partitions that are mounted at boot time.
|
||||||
|
#
|
||||||
|
# { device = "/dev/sda1"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
# i18n = {
|
||||||
|
# consoleFont = "lat9w-16";
|
||||||
|
# consoleKeyMap = "us";
|
||||||
|
# defaultLocale = "en_US.UTF-8";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Add an OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Add CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Add XServer (default if you have used a graphical iso)
|
||||||
|
# service.xserver = {
|
||||||
|
# enable = true;
|
||||||
|
# layout = "us";
|
||||||
|
# xkbOptions = "eurosign:e";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Add the NixOS Manual on virtual console 8
|
||||||
|
services.nixosManual.showManual = true;
|
||||||
|
}
|
||||||
|
'
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi;
|
||||||
|
|
||||||
if test "$(evalOpt "_type" 2> /dev/null)" = '"option"'; then
|
if test "$(evalOpt "_type" 2> /dev/null)" = '"option"'; then
|
||||||
$value && evalCfg;
|
$value && evalCfg;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user