{ description = "ECP5 toolchain template project"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = inputs@{ nixpkgs, ... }: let # litex-overlay = final: prev: { # pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ # (python-final: python-prev: { # litex = python-final.callPackage (import ./litex.nix) { }; # # can add more packages here! # }) # ]; # }; litex-overlay = import ./litex; systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; forAllSystems = function: nixpkgs.lib.genAttrs systems (system: function ( import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ litex-overlay ]; # patches, version pins, new pkgs here. } )); in { devShells = forAllSystems (pkgs: { default = pkgs.mkShell { packages = with pkgs; [ (python3.withPackages (ps: with ps; [ cocotb cocotb-bus litex litedram liteeth litescope litespi liteiclink pythondata-cpu-vexriscv pythondata-software-compiler_rt pythondata-software-picolibc amaranth ])) yosys nextpnr pkgsCross.riscv64.buildPackages.gcc gnumake # simulators verilog verilator # support package trellis # loader openfpgaloader ecpdap # easier to poke probes. ]; }; }); }; }