# # This file defines a development shell containing: # - hardware synthesis and simulation tools # - riscv32 cross-compiling toolchain # # Enable this shell by calling 'nix develop' in the same directory as this file. # { description = "InField project development shell"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-25.11"; outputs = { self, nixpkgs }: let systems = [ "x86_64-darwin" "aarch64-darwin" "x86_64-linux" "aarch64-linux" ]; forAllSystems = nixpkgs.lib.genAttrs systems; in { devShells = forAllSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; crossPkgs = pkgs.pkgsCross.riscv32-embedded; in { default = crossPkgs.pkgsStatic.callPackage ({ pkgs }: pkgs.mkShell { nativeBuildInputs = with pkgs; [ pkg-config file ]; buildInputs = with pkgs; [ zlib ]; depsBuildBuild = with nixpkgs.legacyPackages.${system}; [ (python3.withPackages (p: [ p.pillow ])) uv gcc yosys sby nextpnr arachne-pnr icestorm z3 boolector yices iverilog verilator ]; }) {}; } ); }; }