{ description = "Blender VoiceVox Plugin 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; }; in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ # Python環境 python311 python311Packages.pip python311Packages.virtualenv git # C/C++標準ライブラリ(PyTorchなどに必要) stdenv.cc.cc.lib zlib zstd # ROCm関連(AMD GPU推論に必要) rocmPackages.clr rocmPackages.rocm-smi rocmPackages.rocm-runtime ]; shellHook = '' python --version blender --version | head -n 1 # ROCm環境変数 export ROCM_PATH="${pkgs.rocmPackages.clr}" export HSA_OVERRIDE_GFX_VERSION="11.0.0" # RX 7900 (RDNA 3 / gfx1100) # LD_LIBRARY_PATH: ROCm、C++標準ライブラリ、その他必要なライブラリ export LD_LIBRARY_PATH="${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.zlib}/lib:${pkgs.zstd.out}/lib:${pkgs.rocmPackages.clr}/lib:${pkgs.rocmPackages.rocm-runtime}/lib:$LD_LIBRARY_PATH" # venvのセットアップ VENV_DIR="$PWD/.venv" if [ ! -d "$VENV_DIR" ]; then echo "[Setup] Creating Python virtual environment..." python -m venv "$VENV_DIR" fi # venvをアクティベート source "$VENV_DIR/bin/activate" # 必要なパッケージのインストール確認とインストール if ! python -c "import torch; print(torch.cuda.is_available())" 2>/dev/null | grep -q "True"; then echo "[Setup] Installing Python dependencies..." # まずPyTorch ROCm版をインストール(ROCm 6.2用) pip install --quiet torch torchvision --index-url https://download.pytorch.org/whl/rocm6.2 # 次に通常のPyPIから他のパッケージをインストール pip install --quiet \ ultralytics \ opencv-python-headless \ numpy \ fastapi \ uvicorn \ pydantic # opencv-pythonがインストールされていたら削除(headless版のみ使用) pip uninstall -y opencv-python opencv 2>/dev/null || true # opencv-python-headlessを再インストールして確実にする pip install --quiet --force-reinstall opencv-python-headless echo "[Setup] Dependencies installed successfully" fi # Pythonパスにカレントディレクトリを追加 export PYTHONPATH="$PWD:$PYTHONPATH" # アドオンのインストールパスを環境変数として設定 export BLENDER_USER_SCRIPTS="$HOME/.config/blender/5.0/scripts" export BLENDER_USER_ADDONS="$BLENDER_USER_SCRIPTS/addons" # 環境変数をファイルに保存(サーバープロセス用) cat > "$PWD/.env" << EOF LD_LIBRARY_PATH=${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.zlib}/lib:${pkgs.zstd.out}/lib:${pkgs.rocmPackages.clr}/lib:${pkgs.rocmPackages.rocm-runtime}/lib ROCM_PATH=${pkgs.rocmPackages.clr} HSA_OVERRIDE_GFX_VERSION=11.0.0 PYTORCH_ROCM_ARCH=gfx1100 ROCBLAS_TENSILE_LIBPATH=${pkgs.rocmPackages.clr}/lib/rocblas/library EOF echo "[Setup] Environment ready with GPU support" ''; }; } ); }