forked from mirrors/nixpkgs
Merge "nixos-option --install" into nixos-generate-config
Having configuration.nix generation hidden underneath nixos-option never made sense, also given that there was another command to generate part of the configuration (nixos-hardware-scan). Now nixos-generate-config produces both configuration.nix and hardware-configuration.nix. The latter is overwritten while the former is not.
This commit is contained in:
parent
0f550596c9
commit
ac13bd2575
|
@ -18,17 +18,12 @@
|
||||||
<cmdsynopsis>
|
<cmdsynopsis>
|
||||||
<command>nixos-option</command>
|
<command>nixos-option</command>
|
||||||
<group choice="opt">
|
<group choice="opt">
|
||||||
<option>-i</option>
|
<option>-v</option>
|
||||||
<option>v</option>
|
<option>-d</option>
|
||||||
<option>d</option>
|
<option>-l</option>
|
||||||
<option>l</option>
|
|
||||||
</group>
|
</group>
|
||||||
<arg choice='plain'><replaceable>option.name</replaceable></arg>
|
<arg choice='plain'><replaceable>option.name</replaceable></arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
<cmdsynopsis>
|
|
||||||
<command>nixos-option</command>
|
|
||||||
<arg choice='plain'><option>--install</option></arg>
|
|
||||||
</cmdsynopsis>
|
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,16 +35,7 @@ of the option name given as argument. By default, it returns the value of
|
||||||
the option.</para>
|
the option.</para>
|
||||||
|
|
||||||
<para>When the option name is not an option, the command prints the list of
|
<para>When the option name is not an option, the command prints the list of
|
||||||
attributes in contained in the attribute set. This could used to provide
|
attributes contained in the attribute set.</para>
|
||||||
completion in some editors.</para>
|
|
||||||
|
|
||||||
<para>When the option <option>--install</option> (or <option>-i</option>) is
|
|
||||||
used with no option name, this command generates a template configuration
|
|
||||||
with a scan of the target system. It produces a template configuration
|
|
||||||
in <filename>/etc/nixos/configuration.nix</filename>, and a scan of the
|
|
||||||
machine in <filename>/etc/nixos/hardware-configuration.nix</filename>. The
|
|
||||||
scan of the machine is produced
|
|
||||||
by <command>nixos-hardware-scan</command>.</para>
|
|
||||||
|
|
||||||
</refsection>
|
</refsection>
|
||||||
|
|
||||||
|
@ -59,15 +45,6 @@ by <command>nixos-hardware-scan</command>.</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>--install</option>, <option>-i</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>Use the installation configuration instead of current system
|
|
||||||
configuration. Generate a template configuration if no option name is
|
|
||||||
specified.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--value</option>, <option>-v</option></term>
|
<term><option>--value</option>, <option>-v</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
@ -102,15 +79,6 @@ by <command>nixos-hardware-scan</command>.</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><envar>mountPoint</envar></term>
|
|
||||||
<listitem>
|
|
||||||
<para>Location of the target file system. Defaults to
|
|
||||||
<filename>/mnt</filename>. This environment variable is only used in
|
|
||||||
combinaison with <option>--install</option> option.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><envar>NIXOS_CONFIG</envar></term>
|
<term><envar>NIXOS_CONFIG</envar></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
|
@ -250,7 +250,7 @@ my $modulePackages = toNixExpr(removeDups @modulePackages);
|
||||||
my $attrs = multiLineList(" ", removeDups @attrs);
|
my $attrs = multiLineList(" ", removeDups @attrs);
|
||||||
my $imports = multiLineList(" ", removeDups @imports);
|
my $imports = multiLineList(" ", removeDups @imports);
|
||||||
|
|
||||||
my $fn = "$outDir/hardware.nix";
|
my $fn = "$outDir/hardware-configuration.nix";
|
||||||
print STDERR "writing $fn...\n";
|
print STDERR "writing $fn...\n";
|
||||||
mkpath($outDir, 0, 0755);
|
mkpath($outDir, 0, 0755);
|
||||||
|
|
||||||
|
@ -271,4 +271,100 @@ write_file($fn, <<EOF);
|
||||||
$attrs}
|
$attrs}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# Generate a basic configuration.nix, unless one already exists.
|
||||||
|
$fn = "$outDir/configuration.nix";
|
||||||
|
if (! -e $fn) {
|
||||||
|
print STDERR "writing $fn...\n";
|
||||||
|
|
||||||
|
my $bootloaderConfig;
|
||||||
|
if (-e "/sys/firmware/efi/efivars") {
|
||||||
|
$bootLoaderConfig = <<EOF;
|
||||||
|
# Use the gummiboot efi boot loader.
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
boot.loader.gummiboot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
# !!! Remove me when nixos is on 3.10 or greater by default
|
||||||
|
# EFI booting requires kernel >= 3.10
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_3_10;
|
||||||
|
EOF
|
||||||
|
} else {
|
||||||
|
$bootLoaderConfig = <<EOF;
|
||||||
|
# Use the GRUB 2 boot loader.
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.version = 2;
|
||||||
|
# Define on which hard drive you want to install Grub.
|
||||||
|
# boot.loader.grub.device = "/dev/sda";
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
write_file($fn, <<EOF);
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.kernelModules =
|
||||||
|
[ # Specify all kernel modules that are necessary for mounting the root
|
||||||
|
# filesystem.
|
||||||
|
# "xfs" "ata_piix"
|
||||||
|
# fbcon # Uncomment this when EFI booting to see the console before the root partition is mounted
|
||||||
|
];
|
||||||
|
|
||||||
|
$bootLoaderConfig
|
||||||
|
# networking.hostName = "nixos"; # Define your hostname.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless.
|
||||||
|
|
||||||
|
# Add filesystem entries for each partition that you want to see
|
||||||
|
# mounted at boot time. This should include at least the root
|
||||||
|
# filesystem.
|
||||||
|
|
||||||
|
# fileSystems."/".device = "/dev/disk/by-label/nixos";
|
||||||
|
|
||||||
|
# fileSystems."/data" = # where you want to mount the device
|
||||||
|
# { device = "/dev/sdb"; # the device
|
||||||
|
# fsType = "ext3"; # the type of the partition
|
||||||
|
# options = "data=journal";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List swap partitions activated at boot time.
|
||||||
|
swapDevices =
|
||||||
|
[ # { device = "/dev/disk/by-label/swap"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
# i18n = {
|
||||||
|
# consoleFont = "lat9w-16";
|
||||||
|
# consoleKeyMap = "us";
|
||||||
|
# defaultLocale = "en_US.UTF-8";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
# services.xserver.enable = true;
|
||||||
|
# services.xserver.layout = "us";
|
||||||
|
# services.xserver.xkbOptions = "eurosign:e";
|
||||||
|
|
||||||
|
# Enable the KDE Desktop Environment.
|
||||||
|
# services.xserver.displayManager.kdm.enable = true;
|
||||||
|
# services.xserver.desktopManager.kde4.enable = true;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
} else {
|
||||||
|
print STDERR "warning: not overwriting existing $fn\n";
|
||||||
|
}
|
||||||
|
|
||||||
# workaround for a bug in substituteAll
|
# workaround for a bug in substituteAll
|
||||||
|
|
|
@ -1,14 +1,7 @@
|
||||||
#! @shell@ -e
|
#! @shell@ -e
|
||||||
|
|
||||||
# Allow the location of NixOS sources and the system configuration
|
|
||||||
# file to be overridden.
|
|
||||||
|
|
||||||
: ${mountPoint=/mnt}
|
|
||||||
: ${NIXOS_CONFIG=/etc/nixos/configuration.nix}
|
|
||||||
export NIXOS_CONFIG
|
|
||||||
|
|
||||||
usage () {
|
usage () {
|
||||||
exec man nixos-rebuild
|
exec man nixos-option
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +13,6 @@ desc=false
|
||||||
defs=false
|
defs=false
|
||||||
value=false
|
value=false
|
||||||
xml=false
|
xml=false
|
||||||
install=false
|
|
||||||
verbose=false
|
verbose=false
|
||||||
|
|
||||||
option=""
|
option=""
|
||||||
|
@ -38,7 +30,6 @@ for arg; do
|
||||||
-d*) longarg="$longarg --description";;
|
-d*) longarg="$longarg --description";;
|
||||||
-v*) longarg="$longarg --value";;
|
-v*) longarg="$longarg --value";;
|
||||||
-l*) longarg="$longarg --lookup";;
|
-l*) longarg="$longarg --lookup";;
|
||||||
-i*) longarg="$longarg --install";;
|
|
||||||
-*) usage;;
|
-*) usage;;
|
||||||
esac
|
esac
|
||||||
# remove the first letter option
|
# remove the first letter option
|
||||||
|
@ -53,7 +44,6 @@ for arg; do
|
||||||
--value) value=true;;
|
--value) value=true;;
|
||||||
--lookup) defs=true;;
|
--lookup) defs=true;;
|
||||||
--xml) xml=true;;
|
--xml) xml=true;;
|
||||||
--install) install=true;;
|
|
||||||
--verbose) verbose=true;;
|
--verbose) verbose=true;;
|
||||||
--help) usage;;
|
--help) usage;;
|
||||||
-*) usage;;
|
-*) usage;;
|
||||||
|
@ -81,16 +71,6 @@ if $xml; then
|
||||||
defs=true
|
defs=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --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
|
||||||
|
@ -154,122 +134,6 @@ nixMap() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
if $install; then
|
|
||||||
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 "Generating a hardware configuration file in $hardware_config..."
|
|
||||||
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
|
|
||||||
|
|
||||||
nl="
|
|
||||||
"
|
|
||||||
if test -e /sys/firmware/efi/efivars; then
|
|
||||||
l1=" # Use the gummiboot efi boot loader."
|
|
||||||
l2=" boot.loader.grub.enable = false;"
|
|
||||||
l3=" boot.loader.gummiboot.enable = true;"
|
|
||||||
l4=" boot.loader.efi.canTouchEfiVariables = true;"
|
|
||||||
# !!! Remove me when nixos is on 3.10 or greater by default
|
|
||||||
l5=" # EFI booting requires kernel >= 3.10"
|
|
||||||
l6=" boot.kernelPackages = pkgs.linuxPackages_3_10;"
|
|
||||||
bootloader_config="$l1$nl$l2$nl$l3$nl$l4$nl$nl$l5$nl$l6"
|
|
||||||
else
|
|
||||||
l1=" # Use the Grub2 boot loader."
|
|
||||||
l2=" boot.loader.grub.enable = true;"
|
|
||||||
l3=" boot.loader.grub.version = 2;"
|
|
||||||
l4=" # Define on which hard drive you want to install Grub."
|
|
||||||
l5=' # boot.loader.grub.device = "/dev/sda";'
|
|
||||||
bootloader_config="$l1$nl$l2$nl$l3$nl$nl$l4$nl$l5"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Generating a basic configuration file in $NIXOS_CONFIG..."
|
|
||||||
|
|
||||||
# Generate a template configuration file where the user has to
|
|
||||||
# fill the gaps.
|
|
||||||
cat <<EOF > "$NIXOS_CONFIG"
|
|
||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# the system. Help is available in the configuration.nix(5) man page
|
|
||||||
# or the NixOS manual available on virtual console 8 (Alt+F8).
|
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ # Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.kernelModules =
|
|
||||||
[ # Specify all kernel modules that are necessary for mounting the root
|
|
||||||
# filesystem.
|
|
||||||
# "xfs" "ata_piix"
|
|
||||||
# fbcon # Uncomment this when EFI booting to see the console before the root partition is mounted
|
|
||||||
];
|
|
||||||
|
|
||||||
$bootloader_config
|
|
||||||
|
|
||||||
# networking.hostName = "nixos"; # Define your hostname.
|
|
||||||
# networking.wireless.enable = true; # Enables Wireless.
|
|
||||||
|
|
||||||
# Add filesystem entries for each partition that you want to see
|
|
||||||
# mounted at boot time. This should include at least the root
|
|
||||||
# filesystem.
|
|
||||||
|
|
||||||
# fileSystems."/".device = "/dev/disk/by-label/nixos";
|
|
||||||
|
|
||||||
# fileSystems."/data" = # where you want to mount the device
|
|
||||||
# { device = "/dev/sdb"; # the device
|
|
||||||
# fsType = "ext3"; # the type of the partition
|
|
||||||
# options = "data=journal";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List swap partitions activated at boot time.
|
|
||||||
swapDevices =
|
|
||||||
[ # { device = "/dev/disk/by-label/swap"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
# i18n = {
|
|
||||||
# consoleFont = "lat9w-16";
|
|
||||||
# consoleKeyMap = "us";
|
|
||||||
# defaultLocale = "en_US.UTF-8";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
# services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
# services.xserver.enable = true;
|
|
||||||
# services.xserver.layout = "us";
|
|
||||||
# services.xserver.xkbOptions = "eurosign:e";
|
|
||||||
|
|
||||||
# Enable the KDE Desktop Environment.
|
|
||||||
# services.xserver.displayManager.kdm.enable = true;
|
|
||||||
# services.xserver.desktopManager.kde4.enable = true;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
fi;
|
|
||||||
|
|
||||||
# This duplicates the work made below, but it is useful for processing
|
# This duplicates the work made below, but it is useful for processing
|
||||||
# the output of nixos-option with other tools such as nixos-gui.
|
# the output of nixos-option with other tools such as nixos-gui.
|
||||||
if $xml; then
|
if $xml; then
|
||||||
|
|
Loading…
Reference in a new issue