Move qemu specific config to vm.nix
This commit is contained in:
parent
730e342bfe
commit
4d284ae315
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
"${modulesPath}/profiles/base.nix"
|
#"${modulesPath}/profiles/base.nix"
|
||||||
|
#"${modulesPath}/profiles/minimal.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.crossSystem = {
|
nixpkgs.crossSystem = {
|
||||||
@ -11,28 +12,11 @@
|
|||||||
|
|
||||||
networking.hostName = "nixos-riscv";
|
networking.hostName = "nixos-riscv";
|
||||||
|
|
||||||
nixpkgs.overlays = [ (import ./overlay.nix) ];
|
|
||||||
|
|
||||||
# Enable ssh on boot
|
# Enable ssh on boot
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
|
|
||||||
#boot.kernelPackages = lib.mkForce pkgs.linuxPackagesCustom;
|
|
||||||
|
|
||||||
boot.kernelPatches = [ {
|
|
||||||
name = "riscv-common";
|
|
||||||
patch = null;
|
|
||||||
extraConfig = ''
|
|
||||||
KEXEC y
|
|
||||||
'';
|
|
||||||
} ];
|
|
||||||
|
|
||||||
boot.kernelParams = [
|
|
||||||
"console=tty1"
|
|
||||||
"console=ttyS0,115200"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.getty.autologinUser = "test";
|
services.getty.autologinUser = "test";
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
@ -45,5 +29,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ vim gdb neofetch gcc bintools ];
|
#environment.systemPackages = with pkgs; [ vim gdb neofetch gcc bintools ];
|
||||||
}
|
}
|
||||||
|
71
overlay.nix
71
overlay.nix
@ -3,76 +3,5 @@ final: prev:
|
|||||||
# Changes to packages from nixpkgs
|
# Changes to packages from nixpkgs
|
||||||
|
|
||||||
{
|
{
|
||||||
# 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"
|
|
||||||
];
|
|
||||||
});
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
32
vm.nix
32
vm.nix
@ -8,8 +8,11 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelParams = [ "boot.shell_on_fail" ];
|
kernelParams = [
|
||||||
#kernelPackages = lib.mkForce pkgs.linuxPackagesCustom;
|
"console=tty1"
|
||||||
|
"console=ttyS0,115200"
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
];
|
||||||
consoleLogLevel = lib.mkDefault 7;
|
consoleLogLevel = lib.mkDefault 7;
|
||||||
initrd.kernelModules = [
|
initrd.kernelModules = [
|
||||||
"virtio_pci"
|
"virtio_pci"
|
||||||
@ -54,4 +57,29 @@
|
|||||||
generic-extlinux-compatible.enable = true;
|
generic-extlinux-compatible.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
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"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user