diff --git a/nixos/modules/installer/cd-dvd/latest-kernel.nix b/nixos/modules/installer/cd-dvd/latest-kernel.nix index ac2baaf9ff69..53b9af38ba0b 100644 --- a/nixos/modules/installer/cd-dvd/latest-kernel.nix +++ b/nixos/modules/installer/cd-dvd/latest-kernel.nix @@ -2,4 +2,8 @@ { boot.kernelPackages = pkgs.linuxPackages_latest; boot.supportedFilesystems.zfs = false; + environment.etc."nixos-generate-config.conf".text = '' + [Defaults] + Kernel=latest + ''; } diff --git a/nixos/modules/installer/tools/manpages/nixos-generate-config.8 b/nixos/modules/installer/tools/manpages/nixos-generate-config.8 index 33afcc2d3b02..622a4a2c1180 100644 --- a/nixos/modules/installer/tools/manpages/nixos-generate-config.8 +++ b/nixos/modules/installer/tools/manpages/nixos-generate-config.8 @@ -13,6 +13,7 @@ .Op Fl -root Ar root .Op Fl -dir Ar dir .Op Fl -flake +.Op Fl -kernel Ar . . . @@ -66,6 +67,9 @@ instead of .Pa /etc/nixos Ns \&. . +.It Fl -kernel Ar +Set the kernel in the generated configuration file. +. .It Fl -force Overwrite .Pa /etc/nixos/configuration.nix diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index 1168abafb157..6f1e98a585bc 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -38,11 +38,13 @@ my $force = 0; my $noFilesystems = 0; my $flake = 0; my $showHardwareConfig = 0; +my $kernel = "lts"; if (-e "/etc/nixos-generate-config.conf") { my $cfg = new Config::IniFiles -file => "/etc/nixos-generate-config.conf"; $outDir = $cfg->val("Defaults", "Directory") // $outDir; $rootDir = $cfg->val("Defaults", "RootDirectory") // $rootDir; + $kernel = $cfg->val("Defaults", "Kernel") // $kernel; } for (my $n = 0; $n < scalar @ARGV; $n++) { @@ -73,6 +75,11 @@ for (my $n = 0; $n < scalar @ARGV; $n++) { elsif ($arg eq "--flake") { $flake = 1; } + elsif ($arg eq "--kernel") { + $n++; + $kernel = $ARGV[$n]; + die "$0: ‘--kernel’ requires an argument\n" unless defined $kernel; + } else { die "$0: unrecognized argument ‘$arg’\n"; } @@ -80,6 +87,7 @@ for (my $n = 0; $n < scalar @ARGV; $n++) { $rootDir =~ s/\/*$//; # remove trailing slashes $rootDir = File::Spec->rel2abs($rootDir); # resolve absolute path +die "$0: invalid kernel: '$kernel'" unless $kernel eq "lts" || $kernel eq "latest"; my @attrs = (); my @kernelModules = (); @@ -716,6 +724,14 @@ EOF EOF } + if ($kernel eq "latest") { + $bootLoaderConfig .= <