mirror of
https://github.com/NixOS/nixos-hardware
synced 2025-01-28 19:55:01 +01:00
66 lines
2.2 KiB
Nix
66 lines
2.2 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
let
|
|
cfg = config.hardware.visionfive2;
|
|
in
|
|
{
|
|
options = {
|
|
hardware.visionfive2 = {
|
|
opensbi = {
|
|
src = lib.mkOption {
|
|
description = "VisionFive2 OpenSBI source";
|
|
type = lib.types.nullOr lib.types.package;
|
|
default = null;
|
|
};
|
|
patches = lib.mkOption {
|
|
description = "List of patches to apply to the VisionFive2 OpenSBI source";
|
|
type = lib.types.nullOr (lib.types.listOf lib.types.package);
|
|
default = null;
|
|
};
|
|
};
|
|
uboot = {
|
|
src = lib.mkOption {
|
|
description = "VisionFive2 U-boot source";
|
|
type = lib.types.nullOr lib.types.package;
|
|
default = null;
|
|
};
|
|
patches = lib.mkOption {
|
|
description = "List of patches to apply to the VisionFive2 U-boot source";
|
|
type = lib.types.nullOr (lib.types.listOf lib.types.package);
|
|
default = null;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
system.build = {
|
|
opensbi = (pkgs.callPackage ./opensbi.nix {}).overrideAttrs (f: p: {
|
|
src = if cfg.opensbi.src != null then cfg.opensbi.src else p.src;
|
|
patches = if cfg.opensbi.patches != null then cfg.opensbi.patches else (p.patches or []);
|
|
});
|
|
|
|
uboot = (pkgs.callPackage ./uboot.nix { inherit (config.system.build) opensbi; }).overrideAttrs (f: p: {
|
|
src = if cfg.uboot.src != null then cfg.uboot.src else p.src;
|
|
patches = if cfg.uboot.patches != null then cfg.uboot.patches else (p.patches or []);
|
|
});
|
|
|
|
updater-flash = pkgs.writeShellApplication {
|
|
name = "visionfive2-firmware-update-flash";
|
|
runtimeInputs = [ pkgs.mtdutils ];
|
|
text = ''
|
|
flashcp -v ${config.system.build.uboot}/u-boot-spl.bin.normal.out /dev/mtd0
|
|
flashcp -v ${config.system.build.uboot}/u-boot.itb /dev/mtd2
|
|
'';
|
|
};
|
|
|
|
updater-sd = pkgs.writeShellApplication {
|
|
name = "visionfive2-firmware-update-sd";
|
|
runtimeInputs = [ ];
|
|
text = ''
|
|
dd if=${config.system.build.uboot}/u-boot-spl.bin.normal.out of=/dev/mmcblk0p1 conv=fsync
|
|
dd if=${config.system.build.uboot}/u-boot.itb of=/dev/mmcblk0p2 conv=fsync
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|