{ inputs = { nixpkgs = { url = "github:NixOS/nixpkgs/nixpkgs-unstable"; }; utils.url = "github:numtide/flake-utils"; }; outputs = inputs: inputs.utils.lib.eachDefaultSystem ( system: let pkgs = import inputs.nixpkgs { localSystem = system; overlays = [ (final: prev: { riscv-bluespec-classic = pkgs.callPackage ( { stdenv, bluespec, nextpnr, openfpgaloader, trellis, which, yosys, }: stdenv.mkDerivation { pname = "riscv-bluespec-classic"; version = "0.1.0"; src = ./.; # Versions can be checked with # `nix eval --json ".#riscv-bluespec-classic.nativeBuildInputs" | nix-shell -p jq --run jq` nativeBuildInputs = [ bluespec nextpnr openfpgaloader trellis which yosys ]; makeFlags = [ "fpga" ]; installPhase = '' runHook preInstall mkdir -p "$out" cp "./ulx3s_fpga/mkTop.bit" "$out/" runHook postInstall ''; } ) { }; }) ]; }; in { packages = { default = inputs.self.packages."${system}".riscv-bluespec-classic; riscv-bluespec-classic = pkgs.riscv-bluespec-classic; }; devShells.default = with pkgs; mkShell { inputsFrom = [ riscv-bluespec-classic ]; }; } ); }