105 lines
3.8 KiB
Nix
105 lines
3.8 KiB
Nix
{
|
||
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 libraries FIRST (critical for GPU inference)
|
||
export LD_LIBRARY_PATH="${pkgs.rocmPackages.clr}/lib:${pkgs.rocmPackages.rocm-runtime}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.zlib}/lib:${pkgs.zstd.out}/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 7.0 nightly - ROCm 7.1.1環境で動作確認済み)
|
||
pip install --quiet --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm7.0
|
||
# 次に通常の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"
|
||
|
||
# 環境変数をファイルに保存(サーバープロセス用)
|
||
# CRITICAL: ROCm library paths MUST come first for GPU inference
|
||
cat > "$PWD/.env" << EOF
|
||
LD_LIBRARY_PATH=${pkgs.rocmPackages.clr}/lib:${pkgs.rocmPackages.rocm-runtime}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.zlib}/lib:${pkgs.zstd.out}/lib
|
||
ROCM_PATH=${pkgs.rocmPackages.clr}
|
||
HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
EOF
|
||
|
||
echo "[Setup] Environment ready with GPU support"
|
||
'';
|
||
};
|
||
}
|
||
);
|
||
}
|