OR-1 dataflow CPU sketch
at main 88 lines 2.2 kB view raw
1{ 2 description = "OR1 Dataflow CPU development environment"; 3 4 inputs = { 5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 flake-utils.url = "github:numtide/flake-utils"; 7 }; 8 9 outputs = { 10 self, 11 nixpkgs, 12 flake-utils, 13 }: 14 flake-utils.lib.eachDefaultSystem ( 15 system: let 16 pkgs = import nixpkgs { 17 inherit system; 18 config.allowUnfree = true; 19 }; 20 pythonPackages = ps: 21 with ps; [ 22 ipykernel 23 jupyterlab 24 numpy 25 pip 26 simpy 27 pytest 28 hypothesis 29 typing-extensions 30 lark 31 fastapi 32 uvicorn 33 websockets 34 watchdog 35 httpx 36 ]; 37 pythonEnv = pkgs.python312.withPackages pythonPackages; 38 in { 39 devShells.default = pkgs.mkShell { 40 name = "or1-dev"; 41 42 packages = with pkgs; [ 43 pythonEnv 44 uv 45 zlib 46 libffi 47 openssl 48 expat 49 zstd 50 51 nodejs 52 nodePackages.npm 53 playwright-driver.browsers 54 ]; 55 56 # Point nix-ld at the libs these wheels need 57 LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 58 pkgs.stdenv.cc.cc.lib # libstdc++ 59 pkgs.zlib 60 pkgs.libffi 61 pkgs.openssl 62 pkgs.zstd 63 pkgs.expat 64 ]; 65 66 PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; 67 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"; 68 PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; 69 PLAYWRIGHT_HOST_PLATFORM_OVERRIDE = "ubuntu-24.04"; 70 71 shellHook = '' 72 # Create/reuse a local venv so uv has somewhere to install to. 73 # This keeps everything contained and reproducible. 74 if [ ! -d .venv ]; then 75 echo "Creating Python venv..." 76 uv venv --python ${pythonEnv}/bin/python3.12 77 fi 78 source .venv/bin/activate 79 80 echo "" 81 echo " Python: $(python --version)" 82 echo " uv: $(uv --version)" 83 echo "" 84 ''; 85 }; 86 } 87 ); 88}