make config.hardware.dts.src nullable

This is for QEMU where we won't have to provide a dtb because the
device tree is built by the platform according the (emulated) hardware
present.

Maybe in future there will be other hardware devices where we
don't need to provide a dtb.
This commit is contained in:
Daniel Barlow 2023-12-09 15:51:30 +00:00
parent 03b17fa3ed
commit 4229b42d82
2 changed files with 15 additions and 8 deletions

View file

@ -9,6 +9,7 @@ let
cfg = config.boot.loader.extlinux;
o = config.system.outputs;
cmdline = concatStringsSep " " config.boot.commandLine;
wantsDtb = config.hardware.dts ? src && config.hardware.dts.src != null;
in {
options.system.outputs.extlinux = mkOption {
type = types.package;
@ -20,18 +21,18 @@ in {
system.outputs.extlinux = pkgs.runCommand "extlinux" {} ''
mkdir $out
cd $out
# cp {o.dtb} dtb
${if wantsDtb then "cp ${o.dtb} dtb" else "true"}
cp ${o.initramfs} initramfs
gzip -9f < ${o.kernel} > kernel.gz
cp ${o.zimage} kernel
mkdir extlinux
cat > extlinux/extlinux.conf << _EOF
menu title Liminix
timeout 100
label Liminix
kernel /boot/kernel.gz
initrd /boot/initramfs
append ${cmdline}
# fdt /boot/dtb
kernel /boot/kernel
# initrd /boot/initramfs
append ${cmdline} root=/dev/vda1
${if wantsDtb then "fdt /boot/dtb" else ""}
_EOF
'';
};