{ inputs = { nixpkgs.url = "github:matthewcroughan/nixpkgs/mc/riscv-testing"; # VisionFive ("v1") vendor-kernel = { url = "github:starfive-tech/linux"; flake = false; }; }; outputs = { self, nixpkgs, vendor-kernel, ... }: let inherit (nixpkgs) lib; system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; }; modules = [ { nixpkgs.overlays = [ self.overlay ]; } "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-riscv64-visionfive-installer.nix" ./base.nix ./configuration.nix ]; in { overlay = final: prev: { linuxPackages_visionfive = final.linuxPackagesFor ( ( final.callPackage ./kernel.nix { inherit vendor-kernel; } ).override { patches = []; } ); }; legacyPackages.${system} = { inherit (pkgs.pkgsCross.riscv64.linux) linuxPackages_visionfive; }; images = { visionfive-cross = self.nixosConfigurations.visionfive-cross.config.system.build.sdImage; visionfive-native = self.nixosConfigurations.visionfive-native.config.system.build.sdImage; visionfive2-cross = self.nixosConfigurations.visionfive2-cross.config.system.build.sdImage; visionfive2-native = self.nixosConfigurations.visionfive2-native.config.system.build.sdImage; }; nixosConfigurations = { visionfive-cross = nixpkgs.lib.nixosSystem { system = "${system}"; modules = modules ++ [ { nixpkgs.crossSystem = { system = "riscv64-linux"; }; } ]; }; visionfive-native = nixpkgs.lib.nixosSystem { system = "riscv64-linux"; modules = modules; }; }; }; }