{ description = "OR1 Dataflow CPU development environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; pythonPackages = ps: with ps; [ ipykernel jupyterlab numpy pip simpy pytest hypothesis typing-extensions lark fastapi uvicorn websockets watchdog httpx ]; pythonEnv = pkgs.python312.withPackages pythonPackages; in { devShells.default = pkgs.mkShell { name = "or1-dev"; packages = with pkgs; [ pythonEnv uv zlib libffi openssl expat zstd nodejs nodePackages.npm playwright-driver.browsers ]; # Point nix-ld at the libs these wheels need LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.stdenv.cc.cc.lib # libstdc++ pkgs.zlib pkgs.libffi pkgs.openssl pkgs.zstd pkgs.expat ]; PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"; PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; PLAYWRIGHT_HOST_PLATFORM_OVERRIDE = "ubuntu-24.04"; shellHook = '' # Create/reuse a local venv so uv has somewhere to install to. # This keeps everything contained and reproducible. if [ ! -d .venv ]; then echo "Creating Python venv..." uv venv --python ${pythonEnv}/bin/python3.12 fi source .venv/bin/activate echo "" echo " Python: $(python --version)" echo " uv: $(uv --version)" echo "" ''; }; } ); }