-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdevenv.nix
More file actions
135 lines (120 loc) ยท 3.32 KB
/
devenv.nix
File metadata and controls
135 lines (120 loc) ยท 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{ pkgs, lib, config, ... }: {
# Reachy Mini MuJoCo Simulation Environment
# Fully declarative development environment for robot simulation
packages = with pkgs; [
# OpenGL/Graphics dependencies for MuJoCo
libGL
libGLU
libglvnd
glew
glfw
mesa
mesa.drivers
xorg.libX11
xorg.libXext
xorg.libXrender
xorg.libXrandr
xorg.libXi
xorg.libXcursor
xorg.libXinerama
xorg.libxcb
libxkbcommon
# GLib for OpenCV
glib
# Audio libraries (required even though we're not using sound)
portaudio
alsa-lib
# Build tools
gcc
pkg-config
# Git LFS for model files (MJCF assets)
git-lfs
# Development tools
pre-commit
];
# Python 3.10 with virtual environment
languages.python = {
enable = true;
version = "3.10";
venv.enable = true;
venv.requirements = ''
# Core dependencies
numpy>=2.2.5,<2.3.0
scipy==1.15.3
opencv-python<=5.0
psutil
jinja2
uvicorn[standard]
fastapi
pyserial
huggingface-hub==0.34.4
asgiref
aiohttp
log-throttling==0.0.3
pyusb>=1.2.1
libusb_package>=1.0.26.3
pip>=25
# MuJoCo simulation
mujoco==3.3.0
# Reachy Mini specific (will install from source)
# These are not on PyPI, will be installed via pip install -e .
# reachy_mini_motor_controller>=1.0.0
# eclipse-zenoh>=1.4.0
# cv2_enumerate_cameras>=1.2.1
# reachy-mini-rust-kinematics>=1.0.1
# Development tools
pytest
pytest-asyncio
ruff==0.12.0
mypy==1.18.2
pre-commit
onshape-to-robot==1.7.6
placo==0.9.14
'';
};
# Environment variables
env = {
# MuJoCo rendering backend
# Options: "glfw" (GUI), "egl" (headless+GPU), "osmesa" (headless+CPU)
MUJOCO_GL = "osmesa";
# Ensure OpenGL and system libraries are found
LD_LIBRARY_PATH = lib.makeLibraryPath [
pkgs.libGL
pkgs.libGLU
pkgs.libglvnd
pkgs.glew
pkgs.glfw
pkgs.mesa
pkgs.mesa.drivers
pkgs.glib
pkgs.portaudio
pkgs.alsa-lib
pkgs.xorg.libxcb
pkgs.libxkbcommon
];
# Force software rendering to avoid GPU/Wayland issues
LIBGL_ALWAYS_SOFTWARE = "1";
__GLX_VENDOR_LIBRARY_NAME = "mesa";
};
# Shell initialization
enterShell = ''
echo "๐ค Reachy Mini MuJoCo Simulation Environment"
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
echo "๐ Python: $(python --version)"
echo "๐ฆ Virtual environment: .devenv/state/venv"
echo "๐ฎ MuJoCo GL backend: $MUJOCO_GL (software rendering)"
echo ""
echo "๐ Quick start:"
echo " 1. pip install -e .[mujoco,dev] # Install reachy-mini"
echo " 2. reachy-mini-daemon --sim # Launch simulation"
echo ""
echo "๐ก Access dashboard at: http://localhost:8000"
echo "โ ๏ธ Audio disabled | Using CPU rendering for stability"
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
# Auto-setup git-lfs if not already done
if ! git lfs env &>/dev/null 2>&1; then
echo "๐ง Setting up Git LFS..."
git lfs install
fi
'';
}