extlinux-conf-builder: Choose whether to use DTBs on per-generation basis

Previously, the value from stdenv.platform.kernelDTB was used. That
doesn't work well if both kinds (DTB and non-DTB) of generations exist
in the system profile.

Changed files
+5 -5
nixos
modules
system
boot
loader
-1
nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
···
isExecutable = true;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
inherit (pkgs) bash;
-
kernelDTB = pkgs.stdenv.platform.kernelDTB or false;
}
···
isExecutable = true;
path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
inherit (pkgs) bash;
}
+5 -4
nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
···
copyToKernelsDir "$path/kernel"; kernel=$result
copyToKernelsDir "$path/initrd"; initrd=$result
-
if [ -n "@kernelDTB@" ]; then
-
# XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
-
copyToKernelsDir $(readlink -m "$path/kernel/../dtbs"); dtbs=$result
fi
timestampEpoch=$(stat -L -c '%Z' $path)
···
fi
echo " LINUX ../nixos/$(basename $kernel)"
echo " INITRD ../nixos/$(basename $initrd)"
-
if [ -n "@kernelDTB@" ]; then
echo " FDTDIR ../nixos/$(basename $dtbs)"
fi
echo " APPEND systemConfig=$path init=$path/init $extraParams"
···
copyToKernelsDir "$path/kernel"; kernel=$result
copyToKernelsDir "$path/initrd"; initrd=$result
+
# XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
+
dtbDir=$(readlink -m "$path/kernel/../dtbs")
+
if [ -d "$dtbDir" ]; then
+
copyToKernelsDir "$dtbDir"; dtbs=$result
fi
timestampEpoch=$(stat -L -c '%Z' $path)
···
fi
echo " LINUX ../nixos/$(basename $kernel)"
echo " INITRD ../nixos/$(basename $initrd)"
+
if [ -d "$dtbDir" ]; then
echo " FDTDIR ../nixos/$(basename $dtbs)"
fi
echo " APPEND systemConfig=$path init=$path/init $extraParams"