nixos-generate-config: Set linuxPackages_latest when ISO boots latest kernel

This commit is contained in:
Will Fancher
2024-12-05 17:19:52 -05:00
parent 6f1b070056
commit 674a41e913
4 changed files with 30 additions and 1 deletions

View File

@@ -2,4 +2,8 @@
{
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.supportedFilesystems.zfs = false;
environment.etc."nixos-generate-config.conf".text = ''
[Defaults]
Kernel=latest
'';
}

View File

@@ -13,6 +13,7 @@
.Op Fl -root Ar root
.Op Fl -dir Ar dir
.Op Fl -flake
.Op Fl -kernel Ar <lts|latest>
.
.
.
@@ -66,6 +67,9 @@ instead of
.Pa /etc/nixos Ns
\&.
.
.It Fl -kernel Ar <lts|latest>
Set the kernel in the generated configuration file.
.
.It Fl -force
Overwrite
.Pa /etc/nixos/configuration.nix

View File

@@ -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 .= <<EOF;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
EOF
}
my $networkingDhcpConfig = generateNetworkingDhcpConfig();
my $xserverConfig = generateXserverConfig();

View File

@@ -30,7 +30,12 @@ let
name = "nixos-generate-config";
src = ./nixos-generate-config.pl;
replacements = {
perl = "${pkgs.perl.withPackages (p: [ p.FileSlurp ])}/bin/perl";
perl = "${
pkgs.perl.withPackages (p: [
p.FileSlurp
p.ConfigIniFiles
])
}/bin/perl";
hostPlatformSystem = pkgs.stdenv.hostPlatform.system;
detectvirt = "${config.systemd.package}/bin/systemd-detect-virt";
btrfs = "${pkgs.btrfs-progs}/bin/btrfs";