OR-1 dataflow CPU sketch
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}