This flake hosts my take on running NixOS on the VisionFive 2.
A basic SD-card image can be created by building the sd
package:
nix build github:Snektron/nixos-vf2#sd
The resulting image can be flashed to an SD card using dd
, after decompressing:
zstd -d result/std-image/nixos-sd-image-*.img.zst -o sdcard.img
sudo dd if=sdcard.img of=/dev/your-disk bs=1M oflag=sync status=progress
The SD card image also contains a patched-up bootloader version. This means that the image is bootable on a new VisionFive 2 board without having to flash a newer bootloader version. To boot using this included bootloader the VisionFive 2 must be configured to boot from SDIO3.0, which can be done by setting the GPIO_0
switch to high (1), and the GPIO_1
switch to low (0). See also the VF2 quick start guide, 4.6. Boot Mode Settings.
Note: sometimes when pressing the reset switch, the only thing that shows up is
BOOT fail,Error is 0xffffffff
In this case, just keep pressing the reset switch until it works.
packages.${system}.kernel
is a Linux kernel version that works on the VisionFive 2. Currently used is esmil/linux/jh7110.packages.${system}.splTool
is StarFive's spl_tool, required for building firmware.packages.${system}.uboot
is a patched u-boot that properly works with NixOS. This version properly fixes up the memory and ethernet device tree nodes, cleans up the initialization script, and enables booting from sd, mmc, and nvme.packages.${system}.opensbi
is upstream OpenSBI configured to compile with the custom u-boot.packages.${system}.firmware
createsu-boot-spl.bin
andvisionfive2_fw_payload.img
from above u-boot and OpenSBI versions. These can also be flashed to the VisionFive 2's flash like the regular images, as described in the VF2 quick start guide, 4.3. Updating SPL and U-Boot.packages.${system}.sd
is an alias that buildsnixosConfiguration.sd
.nixosConfigurations.sd
is a basic bootable SD-card image. It starts sshd and sgetty on boot. Default credentials areroot
with passwordsecret
.nixosModules.sdImage
is an implementation ofsd-card.nix
tweaked for booting the VisionFive 2. Besides the root filesystem, it contains a boot partition, OpenSBI and u-boot.devShells.${system}.default
is a dev shell with picocom.