{ config, lib, pkgs, modulesPath, ... }: let overlay = final: prev: { uboot = 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 = 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}/u-boot-nodtb.bin" ]; }); }; in { nixpkgs.overlays = [ overlay ]; #boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPatches = [ { name = assert false; "sbi-early-console"; patch = null; extraConfig = '' # Early console via SBI RISCV_SBI y RISCV_SBI_V01 y SERIAL_EARLYCON y SERIAL_EARLYCON_RISCV_SBI y HVC_DRIVER y HVC_RISCV_SBI y ''; } ]; }