Commit 674a41e9 authored by Will Fancher's avatar Will Fancher
Browse files

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

parent 6f1b0700
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2,4 +2,8 @@
{
  boot.kernelPackages = pkgs.linuxPackages_latest;
  boot.supportedFilesystems.zfs = false;
  environment.etc."nixos-generate-config.conf".text = ''
    [Defaults]
    Kernel=latest
  '';
}
+4 −0
Original line number Diff line number Diff line
@@ -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
+16 −0
Original line number Diff line number Diff line
@@ -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();
+6 −1
Original line number Diff line number Diff line
@@ -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";