invokeai: use callPackage

This commit is contained in:
Max 2023-02-20 22:04:48 +01:00
parent 2c8a7c3a50
commit 70fd1f1831
2 changed files with 90 additions and 66 deletions

View file

@ -4,75 +4,25 @@
perSystem = { config, pkgs, ... }: let perSystem = { config, pkgs, ... }: let
inherit (config.dependencySets) aipython3-amd aipython3-nvidia; inherit (config.dependencySets) aipython3-amd aipython3-nvidia;
getVersion = lib.flip lib.pipe [ src = inputs.invokeai-src;
(src: builtins.readFile "${src}/setup.py")
(builtins.match ".+VERSION = '([^']+)'.+")
builtins.head
];
mkInvokeAIVariant = { aipython3, wsl ? false }: aipython3.buildPythonPackage rec {
pname = "InvokeAI";
version = getVersion src;
src = inputs.invokeai-src;
propagatedBuildInputs = with aipython3; [
numpy
albumentations
opencv4
pudb
imageio
imageio-ffmpeg
pytorch-lightning
protobuf
omegaconf
test-tube
((pkgs.streamlit.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pythonRelaxDepsHook ];
pythonRelaxDeps = [ "protobuf" ];
})).override { protobuf3 = protobuf; })
einops
taming-transformers-rom1504
torch-fidelity
torchmetrics
transformers
kornia
k-diffusion
picklescan
diffusers
pypatchmatch
realesrgan
pillow
send2trash
flask
flask-socketio
flask-cors
dependency-injector
gfpgan
eventlet
clipseg
getpass-asterisk
];
nativeBuildInputs = [ aipython3.pythonRelaxDepsHook ];
pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" ];
pythonRelaxDeps = [ "protobuf" ];
postFixup = ''
${lib.optionalString wsl "makeWrapperArgs+=( --set LD_LIBRARY_PATH '/usr/lib/wsl/lib' )"}
chmod +x $out/bin/*
wrapPythonPrograms
'';
doCheck = false;
meta = {
description = "Fancy Web UI for Stable Diffusion";
homepage = "https://invoke-ai.github.io/InvokeAI/";
mainProgram = "invoke.py";
};
};
mkInvokeAIVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args);
in { in {
packages = { packages = {
invokeai-amd = mkInvokeAIVariant { aipython3 = aipython3-amd; }; invokeai-amd = mkInvokeAIVariant {
invokeai-nvidia = mkInvokeAIVariant { aipython3 = aipython3-nvidia; }; aipython3 = aipython3-amd;
invokeai-amd-wsl = mkInvokeAIVariant { aipython3 = aipython3-amd; wsl = true; }; };
invokeai-nvidia-wsl = mkInvokeAIVariant { aipython3 = aipython3-nvidia; wsl = true;}; invokeai-nvidia = mkInvokeAIVariant {
aipython3 = aipython3-nvidia;
};
invokeai-amd-wsl = mkInvokeAIVariant {
aipython3 = aipython3-amd;
wsl = true;
};
invokeai-nvidia-wsl = mkInvokeAIVariant {
aipython3 = aipython3-nvidia;
wsl = true;
};
}; };
}; };
} }

View file

@ -0,0 +1,74 @@
{ aipython3
# dependencies
, streamlit
# misc
, lib
, src
# configuration
, wsl ? false
}:
let
getVersion = lib.flip lib.pipe [
(src: builtins.readFile "${src}/setup.py")
(builtins.match ".+VERSION = '([^']+)'.+")
builtins.head
];
in
aipython3.buildPythonPackage {
pname = "InvokeAI";
version = getVersion src;
inherit src;
propagatedBuildInputs = with aipython3; [
numpy
albumentations
opencv4
pudb
imageio
imageio-ffmpeg
pytorch-lightning
protobuf
omegaconf
test-tube
((streamlit.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pythonRelaxDepsHook ];
pythonRelaxDeps = [ "protobuf" ];
})).override { protobuf3 = protobuf; })
einops
taming-transformers-rom1504
torch-fidelity
torchmetrics
transformers
kornia
k-diffusion
picklescan
diffusers
pypatchmatch
realesrgan
pillow
send2trash
flask
flask-socketio
flask-cors
dependency-injector
gfpgan
eventlet
clipseg
getpass-asterisk
];
nativeBuildInputs = [ aipython3.pythonRelaxDepsHook ];
pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" ];
pythonRelaxDeps = [ "protobuf" ];
postFixup = ''
${lib.optionalString wsl "makeWrapperArgs+=( --set LD_LIBRARY_PATH '/usr/lib/wsl/lib' )"}
chmod +x $out/bin/*
wrapPythonPrograms
'';
doCheck = false;
meta = {
description = "Fancy Web UI for Stable Diffusion";
homepage = "https://invoke-ai.github.io/InvokeAI/";
mainProgram = "invoke.py";
};
}