flake/projects/invokeai/default.nix
Max 079f83ba45 Major Upgrade/Refactor
- KoboldAI is no longer upstream maintained, so is now deprecated in
  nixified.ai

- InvokeAI: v2.3.1.post2 -> v3.3.0post3
- textgen: init at v1.7
- treewide: update flake inputs including nixpkgs
- treewide: add a bunch of new dependencies and upgrade old ones
2023-10-19 22:13:37 +01:00

111 lines
3 KiB
Nix

{ config, inputs, lib, withSystem, ... }:
let
l = lib // config.flake.lib;
inherit (config.flake) overlays;
in
{
perSystem = { config, pkgs, ... }: let
commonOverlays = [
overlays.python-fixPackages
(l.overlays.callManyPackages [
../../packages/mediapipe
../../packages/safetensors
../../packages/easing-functions
../../packages/dynamicprompts
../../packages/controlnet-aux
../../packages/fastapi
../../packages/fastapi-events
../../packages/fastapi-socketio
../../packages/starlette
../../packages/pytorch-lightning
../../packages/compel
../../packages/taming-transformers-rom1504
../../packages/albumentations
../../packages/qudida
../../packages/gfpgan
../../packages/basicsr
../../packages/facexlib
../../packages/realesrgan
../../packages/codeformer
../../packages/clipseg
../../packages/kornia
../../packages/picklescan
../../packages/diffusers
../../packages/pypatchmatch
../../packages/torch-fidelity
../../packages/resize-right
../../packages/torchdiffeq
../../packages/accelerate
../../packages/clip-anytorch
../../packages/clean-fid
../../packages/getpass-asterisk
../../packages/mediapipe
../../packages/python-engineio
])
(final: prev: lib.mapAttrs
(_: pkg: pkg.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
pythonRemoveDeps = [ "opencv-python-headless" "opencv-python" "tb-nightly" "clip" ];
}))
{
inherit (prev)
albumentations
qudida
gfpgan
basicsr
facexlib
realesrgan
clipseg
;
}
)
];
python3Variants = {
amd = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
overlays.python-torchRocm
]);
nvidia = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
overlays.python-torchCuda
]);
};
src = inputs.invokeai-src;
mkInvokeAIVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args);
in {
packages = {
invokeai-amd = mkInvokeAIVariant {
python3Packages = python3Variants.amd;
};
invokeai-nvidia = mkInvokeAIVariant {
python3Packages = python3Variants.nvidia;
};
};
};
flake.nixosModules = let
packageModule = pkgAttrName: { pkgs, ... }: {
services.invokeai.package = withSystem pkgs.system (
{ config, ... }: lib.mkOptionDefault config.packages.${pkgAttrName}
);
};
in {
invokeai = ./nixos;
invokeai-amd = {
imports = [
config.flake.nixosModules.invokeai
(packageModule "invokeai-amd")
];
};
invokeai-nvidia = {
imports = [
config.flake.nixosModules.invokeai
(packageModule "invokeai-nvidia")
];
};
};
}