final: prev: # Changes to packages from nixpkgs { opensbi = prev.opensbi.overrideAttrs (old: { makeFlags = old.makeFlags ++ [ # Build OpenSBI without compressed instructions "PLATFORM_RISCV_ISA=rv64g" # 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};" CONFIG_RISCV_ISA_C=n ''; # Also include debug u-boot filesToInstall = ["u-boot.bin" "u-boot"]; }; opensbi-uboot = prev.opensbi.overrideAttrs (old: { makeFlags = old.makeFlags ++ [ # Build OpenSBI without compressed instructions "PLATFORM_RISCV_ISA=rv64g" # Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate "FW_PAYLOAD_PATH=${final.uboot-custom}/u-boot.bin" ]; }); uboot-fpga = prev.ubootQemuRiscv64Smode.override { filesToInstall = [ "u-boot.bin" "u-boot-nodtb.bin" ]; extraConfig = '' CONFIG_RISCV=y CONFIG_RISCV_SMODE=y CONFIG_SYS_MALLOC_LEN=0x800000 CONFIG_NR_DRAM_BANKS=1 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80200000 CONFIG_ENV_SIZE=0x20000 CONFIG_SYS_LOAD_ADDR=0x80200000 CONFIG_ARCH_RV64I=y CONFIG_FIT=y CONFIG_DISTRO_DEFAULTS=y CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y CONFIG_SYS_CBSIZE=256 CONFIG_SYS_PBSIZE=276 CONFIG_SYS_BOOTM_LEN=0x4000000 CONFIG_CMD_BOOTEFI_SELFTEST=y CONFIG_CMD_NVEDIT_EFI=y # CONFIG_CMD_MII is not set CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_DM_MTD=y CONFIG_FLASH_SHOW_PROGRESS=0 CONFIG_SYS_MAX_FLASH_BANKS=2 #CONFIG_TEXT_BASE=0x80000000 # ------------------------- CONFIG_RISCV_ISA_C=n # CONFIG_OF_EMBED=n # CONFIG_OF_SEPARATE=y # CONFIG_OF_OMIT_DTB=y CONFIG_REQUIRE_SERIAL_CONSOLE=n CONFIG_SERIAL_SEARCH_ALL=y CONFIG_OF_CONTROL=y CONFIG_OF_BOARD=y CONFIG_OF_HAS_PRIOR_STAGE=y CONFIG_BLKMAP=y CONFIG_CMD_BLKMAP=y CONFIG_SBI_V01=y CONFIG_DEBUG_UART=y CONFIG_DEBUG_UART_ANNOUNCE=y CONFIG_DEBUG_SBI_CONSOLE=y ''; }; opensbi-fpga = prev.opensbi.overrideAttrs (old: { makeFlags = old.makeFlags ++ [ # Build OpenSBI without compressed instructions "PLATFORM_RISCV_ISA=rv64g" "PLATFORM=fpga/openpiton" # Check with: riscv64-unknown-elf-objdump -d -M no-aliases rotate "FW_PAYLOAD_PATH=${final.uboot-fpga}/u-boot-nodtb.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; VIRTIO_NET = yes; EXT4_FS = yes; # For 9P: https://wiki.qemu.org/Documentation/9psetup NET_9P = yes; NET_9P_VIRTIO = yes; NET_9P_DEBUG = yes; NET_DEVICES = yes; NET_CORE = yes; INET = yes; NETWORK_FILESYSTEMS = yes; OVERLAY_FS = yes; "9P_FS" = yes; "9P_FS_POSIX_ACL" = yes; PCI = yes; VIRTIO_PCI = yes; PCI_HOST_GENERIC = yes; RISCV_ISA_C = no; NONPORTABLE = yes; EFI = no; }; }); }