lol

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

+30 -1
+4
nixos/modules/installer/cd-dvd/latest-kernel.nix
··· 2 2 { 3 3 boot.kernelPackages = pkgs.linuxPackages_latest; 4 4 boot.supportedFilesystems.zfs = false; 5 + environment.etc."nixos-generate-config.conf".text = '' 6 + [Defaults] 7 + Kernel=latest 8 + ''; 5 9 }
+4
nixos/modules/installer/tools/manpages/nixos-generate-config.8
··· 13 13 .Op Fl -root Ar root 14 14 .Op Fl -dir Ar dir 15 15 .Op Fl -flake 16 + .Op Fl -kernel Ar <lts|latest> 16 17 . 17 18 . 18 19 . ··· 65 66 instead of 66 67 .Pa /etc/nixos Ns 67 68 \&. 69 + . 70 + .It Fl -kernel Ar <lts|latest> 71 + Set the kernel in the generated configuration file. 68 72 . 69 73 .It Fl -force 70 74 Overwrite
+16
nixos/modules/installer/tools/nixos-generate-config.pl
··· 38 38 my $noFilesystems = 0; 39 39 my $flake = 0; 40 40 my $showHardwareConfig = 0; 41 + my $kernel = "lts"; 41 42 42 43 if (-e "/etc/nixos-generate-config.conf") { 43 44 my $cfg = new Config::IniFiles -file => "/etc/nixos-generate-config.conf"; 44 45 $outDir = $cfg->val("Defaults", "Directory") // $outDir; 45 46 $rootDir = $cfg->val("Defaults", "RootDirectory") // $rootDir; 47 + $kernel = $cfg->val("Defaults", "Kernel") // $kernel; 46 48 } 47 49 48 50 for (my $n = 0; $n < scalar @ARGV; $n++) { ··· 73 75 elsif ($arg eq "--flake") { 74 76 $flake = 1; 75 77 } 78 + elsif ($arg eq "--kernel") { 79 + $n++; 80 + $kernel = $ARGV[$n]; 81 + die "$0: ‘--kernel’ requires an argument\n" unless defined $kernel; 82 + } 76 83 else { 77 84 die "$0: unrecognized argument ‘$arg’\n"; 78 85 } ··· 80 87 81 88 $rootDir =~ s/\/*$//; # remove trailing slashes 82 89 $rootDir = File::Spec->rel2abs($rootDir); # resolve absolute path 90 + die "$0: invalid kernel: '$kernel'" unless $kernel eq "lts" || $kernel eq "latest"; 83 91 84 92 my @attrs = (); 85 93 my @kernelModules = (); ··· 713 721 # boot.loader.efi.efiSysMountPoint = "/boot/efi"; 714 722 # Define on which hard drive you want to install Grub. 715 723 # boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only 724 + EOF 725 + } 726 + 727 + if ($kernel eq "latest") { 728 + $bootLoaderConfig .= <<EOF; 729 + 730 + # Use latest kernel. 731 + boot.kernelPackages = pkgs.linuxPackages_latest; 716 732 EOF 717 733 } 718 734
+6 -1
nixos/modules/installer/tools/tools.nix
··· 30 30 name = "nixos-generate-config"; 31 31 src = ./nixos-generate-config.pl; 32 32 replacements = { 33 - perl = "${pkgs.perl.withPackages (p: [ p.FileSlurp ])}/bin/perl"; 33 + perl = "${ 34 + pkgs.perl.withPackages (p: [ 35 + p.FileSlurp 36 + p.ConfigIniFiles 37 + ]) 38 + }/bin/perl"; 34 39 hostPlatformSystem = pkgs.stdenv.hostPlatform.system; 35 40 detectvirt = "${config.systemd.package}/bin/systemd-detect-virt"; 36 41 btrfs = "${pkgs.btrfs-progs}/bin/btrfs";