init
This commit is contained in:
commit
6152bd2ba9
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*result*
|
37
base.nix
Normal file
37
base.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
# Use the kernel from ./kernel.nix
|
||||||
|
boot.kernelPackages = let
|
||||||
|
linux_VisionFive = pkgs.callPackage ./kernel.nix { };
|
||||||
|
in lib.mkForce (pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_VisionFive));
|
||||||
|
|
||||||
|
# Remove ZFS
|
||||||
|
boot.supportedFilesystems = lib.mkForce [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" "ext4" "vfat" ];
|
||||||
|
|
||||||
|
# Awaiting upstream linux-firmware patch
|
||||||
|
# https://lore.kernel.org/all/CADWks+YJm8bi+KPXYTvQ3JrriDW2dcdxfSZ2O5J0vfhfC654Tw@mail.gmail.com/
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/168826#issuecomment-1152990386
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
linux-firmware = prev.linux-firmware.overrideAttrs (old: {
|
||||||
|
postInstall = ''
|
||||||
|
cp $out/lib/firmware/brcm/brcmfmac43430-sdio.AP6212.txt \
|
||||||
|
$out/lib/firmware/brcm/brcmfmac43430-sdio.starfive,visionfive-v1.txt
|
||||||
|
'';
|
||||||
|
outputHash = null;
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable ssh on boot
|
||||||
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users.default = {
|
||||||
|
password = "visionfive-nix";
|
||||||
|
isNormalUser = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
4
configuration.nix
Normal file
4
configuration.nix
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
networking.firewall.allowedTCPPorts = [ 19999 ];
|
||||||
|
services.netdata.enable = true;
|
||||||
|
}
|
83
flake.lock
Normal file
83
flake.lock
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"jh7100_ddrinit": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-pOlg3FtFdFhHHnE16izS26RkJ7RbQpglDKgpVRdyAso=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/JH7100_ddrinit/releases/download/ddrinit-2133-211102/ddrinit-2133-211102.bin.out"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/JH7100_ddrinit/releases/download/ddrinit-2133-211102/ddrinit-2133-211102.bin.out"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jh7100_recovery_binary": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-T3vqaelqwXiOqD8yRHw899A5GI2J+hU/5l5S3euIs2g=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/bootloader_recovery/releases/download/JH7100_recovery_binary/jh7100_recovery_boot.bin"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/bootloader_recovery/releases/download/JH7100_recovery_binary/jh7100_recovery_boot.bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jh7100_secondBoot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-Ek8RK8t3y9JfpVfey1X9yZn9OIbOj/EJokUeWbZWZGU=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/JH7100_secondBoot/releases/download/bootloader-211102_VisionFive_JH7100/bootloader-JH7100-211102.bin.out"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://github.com/starfive-tech/JH7100_secondBoot/releases/download/bootloader-211102_VisionFive_JH7100/bootloader-JH7100-211102.bin.out"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jh71xx-tools": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1644591616,
|
||||||
|
"narHash": "sha256-eCOI/kYmkSxL4HPqBPoJFWa6qJwqafPOxS8KhIuMF4s=",
|
||||||
|
"owner": "xypron",
|
||||||
|
"repo": "jh71xx-tools",
|
||||||
|
"rev": "afe3328923d6c3883886a00c4ed10eda019f2db1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "xypron",
|
||||||
|
"repo": "jh71xx-tools",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1652789813,
|
||||||
|
"narHash": "sha256-90QPw85Vl9+YWQpM/zRjb0/OYI+IODimC4LZufpCIh4=",
|
||||||
|
"owner": "Madouura",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "aff8bd5ce0a12ee22402cd9bc6b3c437f0845345",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Madouura",
|
||||||
|
"ref": "dev/linux-riscv",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"jh7100_ddrinit": "jh7100_ddrinit",
|
||||||
|
"jh7100_recovery_binary": "jh7100_recovery_binary",
|
||||||
|
"jh7100_secondBoot": "jh7100_secondBoot",
|
||||||
|
"jh71xx-tools": "jh71xx-tools",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
117
flake.nix
Normal file
117
flake.nix
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:Madouura/nixpkgs/dev/linux-riscv";
|
||||||
|
jh7100_ddrinit = {
|
||||||
|
url = "https://github.com/starfive-tech/JH7100_ddrinit/releases/download/ddrinit-2133-211102/ddrinit-2133-211102.bin.out";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
jh7100_secondBoot = {
|
||||||
|
url = "https://github.com/starfive-tech/JH7100_secondBoot/releases/download/bootloader-211102_VisionFive_JH7100/bootloader-JH7100-211102.bin.out";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
jh7100_recovery_binary = {
|
||||||
|
url = "https://github.com/starfive-tech/bootloader_recovery/releases/download/JH7100_recovery_binary/jh7100_recovery_boot.bin";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
jh71xx-tools = {
|
||||||
|
url = "github:xypron/jh71xx-tools";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs, jh71xx-tools, jh7100_recovery_binary, jh7100_secondBoot, jh7100_ddrinit }:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
modules = [
|
||||||
|
"${nixpkgs}/nixos/modules/installer/sd-card/sd-image-riscv64-visionfive-installer.nix"
|
||||||
|
./base.nix
|
||||||
|
./configuration.nix
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
apps.x86_64-linux = {
|
||||||
|
flashBootloader =
|
||||||
|
let
|
||||||
|
expectScript = pkgs.writeScript "expect-visionfive.sh" ''
|
||||||
|
#!${pkgs.expect}/bin/expect -f
|
||||||
|
set timeout -1
|
||||||
|
spawn ${pkgs.picocom}/bin/picocom [lindex $argv 0] -b 115200 -s "${pkgs.lrzsz}/bin/sz -X"
|
||||||
|
expect "bootloader"
|
||||||
|
expect "DDR"
|
||||||
|
send "\r"
|
||||||
|
expect "0:update uboot"
|
||||||
|
expect "select the function:"
|
||||||
|
send "0\r"
|
||||||
|
expect "send file by xmodem"
|
||||||
|
expect "CC"
|
||||||
|
send "\x01\x13"
|
||||||
|
expect "*** file:"
|
||||||
|
send "${pkgs.pkgsCross.riscv64.firmware-visionfive}/opensbi_u-boot_visionfive.bin"
|
||||||
|
send "\r"
|
||||||
|
expect "Transfer complete"
|
||||||
|
'';
|
||||||
|
program = pkgs.writeShellScript "flash-visionfive.sh" ''
|
||||||
|
if $(groups | grep --quiet --word-regexp "dialout"); then
|
||||||
|
echo "User is in dialout group, flashing to board without sudo"
|
||||||
|
${expectScript} $1
|
||||||
|
else
|
||||||
|
echo "User is not in dialout group, flashing to board with sudo"
|
||||||
|
sudo ${expectScript} $1
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
type = "app";
|
||||||
|
program = "${program}";
|
||||||
|
};
|
||||||
|
flashOriginal =
|
||||||
|
let
|
||||||
|
program = pkgs.writeShellScript "flash-visionfive.sh" ''
|
||||||
|
flash() {
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
${pkgs.lib.getExe self.packages.x86_64-linux.jh7100-recover} \
|
||||||
|
-D $1 \
|
||||||
|
-r ${jh7100_recovery_binary} \
|
||||||
|
-b ${jh7100_secondBoot} \
|
||||||
|
-d ${jh7100_ddrinit}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if $(groups | grep --quiet --word-regexp "dialout"); then
|
||||||
|
echo "User is in dialout group, flashing to board without sudo"
|
||||||
|
flash
|
||||||
|
else
|
||||||
|
echo "User is not in dialout group, flashing to board with sudo"
|
||||||
|
sudo flash
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
type = "app";
|
||||||
|
program = "${program}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
packages.x86_64-linux = {
|
||||||
|
jh7100-recover = pkgs.writeCBin "jh7100-recover" (builtins.readFile "${jh71xx-tools}/jh7100-recover.c");
|
||||||
|
};
|
||||||
|
images = {
|
||||||
|
visionfive-cross-x86 = self.nixosConfigurations.visionfive-cross-x86.config.system.build.sdImage;
|
||||||
|
visionfive-native = self.nixosConfigurations.visionfive-cross-x86.config.system.build.sdImage;
|
||||||
|
};
|
||||||
|
nixosConfigurations = {
|
||||||
|
visionfive-cross-x86 = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = modules ++ [
|
||||||
|
{
|
||||||
|
nixpkgs.crossSystem = {
|
||||||
|
system = "riscv64-linux";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
visionfive-native = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "riscv64-linux";
|
||||||
|
modules = modules;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
kernel.nix
Normal file
42
kernel.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{ lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, buildLinux
|
||||||
|
, ... } @ args:
|
||||||
|
|
||||||
|
let
|
||||||
|
modDirVersion = "5.18.5";
|
||||||
|
in buildLinux (args // {
|
||||||
|
inherit modDirVersion;
|
||||||
|
version = "${modDirVersion}-visionfive";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "starfive-tech";
|
||||||
|
repo = "linux";
|
||||||
|
rev = "8fb50a9b3e5d401d4ec169c858e8b7ba0a542955";
|
||||||
|
sha256 = "sha256-kjOoNJhmmQdpmtx0m1ZovH3mj2x4NB6iInEknxZq8Dw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
kernelPatches = [];
|
||||||
|
|
||||||
|
defconfig = "starfive_jh7100_fedora_defconfig";
|
||||||
|
|
||||||
|
structuredExtraConfig = with lib.kernel; {
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraMeta = {
|
||||||
|
branch = "visionfive-5.18.y";
|
||||||
|
description = "Linux kernel for StarFive's JH7100 RISC-V SoC (VisionFive)";
|
||||||
|
platforms = [ "riscv64-linux" ];
|
||||||
|
hydraPlatforms = [ "riscv64-linux" ];
|
||||||
|
};
|
||||||
|
} // (args.argsOverride or { }))
|
Loading…
Reference in New Issue
Block a user