--- title: ComfyUIをNixOSで動かす tags: - Linux - NixOS - AI - Stable-Diffusion - ComfyUI image: /uploads/error.png publish: public --- [ComfyUI](https://github.com/comfyanonymous/ComfyUI)をNixOSに導入します。Installingの項が簡潔にまとまっているので、そんなに苦労しませんでしたが一応備忘録として残します。 前にArchでSDWebUIを導入する記事を書きましたが、なんかComfyUIいいぞと言う話を聞いたので、新環境に導入してみます。Stable Diffusion WebUIと比べてシンプルで導入も楽でした。 今回検証に使った環境は以下のとおりです。 dist: NixOS desktop: Wayland(hyprland) cpu: Ryzen 7900X3D gpu: Radeon 7900GRE # 実行環境・依存関係 ComfyUIはCloneできているものとします。 Pythonをflakeのdirenvで導入します。ディレクトリのルートに`flake.nix`を作成します。 ```nix { inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; flake-compat = { url = "github:edolstra/flake-compat"; flake = false; }; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem ( system: let pkgs = nixpkgs.legacyPackages.${system}; pythonEnv = pkgs.python3.withPackages (ps: [ ]); in { devShells.default = pkgs.mkShell { packages = [ pythonEnv ]; LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath ( with pkgs; [ stdenv.cc.cc.lib zstd ] ); }; } ); } ``` きちんと依存パッケージを定義できますが、今回はvenvで茶を濁します。torchまわりのパッケージを定義するのは面倒でした。 `LD_LIBRARY_PATH`はシェアライブラリの場所です。libstdc++とlibzstdが要求されるので、その解決をしています。 ## pip venvを利用するので、pipが使えます。 最初にvenvを作成します。 ```sh python -m venv venv ``` その後、venvに入ります。 ```sh source venv/bin/activate ``` venvの中で、必要なパッケージをインストールします。まずはtorchまわりから。 ```sh pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.3 ``` コマンドは[pytorch.org](https://pytorch.org/get-started/locally/)で教えてくれるやつです。 その後、ComfyUIの依存パッケージをインストールします。 ```sh pip install -r requirements.txt ``` # 実行 venvに入った状態で、ComfyUIを起動します。 ```sh source venv/bin/activate ``` ```sh python main.py ``` これでComfyUIが起動します。 やったね! # おわりに Pythonの環境管理がだるい論はよく聞きますが、flakeとvenvを使うと雑に楽できていい感じでした。もとからpythonのパッケージまわりは行儀が悪いので、中途半端なflakeも許されるはずだ。