final: prev: # Changes to packages from nixpkgs { opensbi = prev.opensbi.overrideAttrs (old: { makeFlags = old.makeFlags ++ [ # Build OpenSBI without compressed instructions "PLATFORM_RISCV_ISA=rv64gv" # Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate ]; }); # Fix GCC 13 format-overflow warning/error: # ../src/shared/install.c:444:64: error: ā€˜%sā€™ directive argument is null [-Werror=format-overflow=] # 444 | err = log_error_errno(changes[i].type, "Failed to %s unit, unit %s does not exist.", # | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ systemd = prev.systemd.overrideAttrs (old: { CFLAGS = "-Wno-error=format-overflow"; }); qemu = prev.qemu.override { rutabagaSupport = false; }; uboot-custom = prev.ubootQemuRiscv64Smode.override { # Override preboot to set 'bootcmd' directly to the kernel address in RAM extraConfig = '' CONFIG_PREBOOT="setenv fdt_addr ''${fdtcontroladdr}; fdt addr ''${fdtcontroladdr}; setenv bootcmd booti ''${kernel_addr_r} - ''${fdtcontroladdr};" ''; }; opensbi-uboot = prev.opensbi.overrideAttrs (old: { makeFlags = old.makeFlags ++ [ # Build OpenSBI without compressed instructions "PLATFORM_RISCV_ISA=rv64gv" # Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate "FW_PAYLOAD_PATH=${final.uboot-custom}/u-boot.bin" ]; }); linuxPackagesCustom = prev.linuxPackagesFor (prev.linux.override { structuredExtraConfig = with prev.lib.kernel; { KEXEC = yes; SERIAL_8250_DW = yes; PINCTRL_STARFIVE = yes; # Doesn't build as a module DW_AXI_DMAC_STARFIVE = yes; # stmmac hangs when built as a module #PTP_1588_CLOCK = yes; #STMMAC_ETH = yes; #STMMAC_PCI = yes; # For qemu BLOCK = yes; BLK_DEV = yes; DEVTMPFS = yes; VIRTIO_MENU = yes; VIRTIO_BLK = yes; # For 9P: https://wiki.qemu.org/Documentation/9psetup NET_9P = yes; NET_9P_VIRTIO = yes; NET_9P_DEBUG = yes; "9P_FS" = yes; "9P_FS_POSIX_ACL" = yes; PCI = yes; VIRTIO_PCI = yes; PCI_HOST_GENERIC = yes; }; }); }