{ runCommand , buildPackages , pkgs }: let uboot = pkgs.callPackage ./uboot.nix { }; opensbi = pkgs.opensbi.override { withPayload = "${uboot}/u-boot.bin"; withFDT = "${uboot}/u-boot.dtb"; }; in runCommand "firmware-starfive-visionfive-v1" { nativeBuildInputs = with buildPackages; [ xxd ]; } '' function handle_file { inFile=$1 echo inFile: $inFile outFile=$2 inSize=`stat -c "%s" $inFile` inSize32HexBe=`printf "%08x\n" $inSize` inSize32HexLe=''${inSize32HexBe:6:2}''${inSize32HexBe:4:2}''${inSize32HexBe:2:2}''${inSize32HexBe:0:2} echo "inSize: $inSize (0x$inSize32HexBe, LE:0x$inSize32HexLe)" echo $inSize32HexLe | xxd -r -ps > $outFile cat $inFile >> $outFile echo outFile: $outFile outSize=`stat -c "%s" $outFile` outSize32HexBe=`printf "%08x\n" $outSize` echo "outSize: $outSize (0x$outSize32HexBe)" } mkdir -p "$out/nix-support" echo "file bin \"$out/opensbi_u-boot_starfive_visionfive_v1.bin\"" >> "$out/nix-support/hydra-build-products" handle_file ${opensbi}/share/opensbi/lp64/generic/firmware/fw_payload.bin $out/opensbi_u-boot_starfive_visionfive_v1.bin ''