blog-articles/article/tech/comfyui-on-nixos.md
2025-02-07 01:06:45 +09:00

3.1 KiB

title tags image publish
ComfyUIをNixOSで動かす
Linux
NixOS
AI
Stable-Diffusion
ComfyUI
/uploads/error.png public

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を作成します。

{
  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を作成します。

python -m venv venv

その後、venvに入ります。

source venv/bin/activate

venvの中で、必要なパッケージをインストールします。まずはtorchまわりから。

pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.3

コマンドはpytorch.orgで教えてくれるやつです。

その後、ComfyUIの依存パッケージをインストールします。

pip install -r requirements.txt

実行

venvに入った状態で、ComfyUIを起動します。

source venv/bin/activate
python main.py

これでComfyUIが起動します。 やったね!

おわりに

Pythonの環境管理がだるい論はよく聞きますが、flakeとvenvを使うと雑に楽できていい感じでした。もとからpythonのパッケージまわりは行儀が悪いので、中途半端なflakeも許されるはずだ。