flake/projects/automatic1111/default.nix

106 lines
3 KiB
Nix

{ config, inputs, lib, withSystem, ... }:
let
l = lib // config.flake.lib;
inherit (config.flake) overlays;
in
{
perSystem = { config, pkgs, system, ... }:
let
commonOverlays = [
#need pillow < 10.0.0 for scripts like x,y,z plot to work
#cant i do like only for this for invoke other version?
(
final: prev: {
pillow = pkgs.python3.pkgs.callPackage ../../packages/pillow { };
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(
python-final: python-prev: {
pillow = python-final.callPackage ../../packages/pillow { };
}
)
];
}
)
overlays.python-fixPackages
(l.overlays.callManyPackages [
../../packages/analytics-python
../../packages/basicsr
../../packages/blendmodes
../../packages/blip
../../packages/codeformer
../../packages/deforum
../../packages/facexlib
../../packages/gfpgan
../../packages/gradio
../../packages/gradio-client
../../packages/k_diffusion
../../packages/lpips
../../packages/mediapipe
../../packages/openclip
../../packages/pillow
../../packages/pyfunctional
../../packages/pytorch-lightning
../../packages/realesrgan
../../packages/taming-transformers-rom1504
../../packages/tomesd
../../packages/torch-fidelity
../../packages/torch-grammar
../../packages/ultralytics
../../packages/xformers
../../packages/zipunicode
])
(final: prev: lib.mapAttrs
(_: pkg: pkg.overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
pythonRemoveDeps = [ "opencv-python-headless" "opencv-python" "tb-nightly" "clip" ];
}
))
{
inherit (prev)
gfpgan
basicsr
facexlib
realesrgan
;
}
)
];
python3Variants = {
nvidia = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
overlays.python-torchCuda
]);
};
src = inputs.a1111-src;
mkAutomatic1111Variant = args: pkgs.callPackage ./package.nix ({ inherit src; sd-src = inputs.sd-src; sgm-src = inputs.sgm-src; } // args);
in
{
packages = {
a1111-nvidia = mkAutomatic1111Variant {
python3Packages = python3Variants.nvidia;
};
};
};
flake.nixosModules =
let
packageModule = pkgAttrName: { pkgs, ... }: {
services.a1111.package = withSystem pkgs.system (
{ config, ... }: lib.mkOptionDefault config.packages.${pkgAttrName}
);
};
in
{
a1111 = ./nixos;
a1111-nvidia = {
imports = [
config.flake.nixosModules.a1111
(packageModule "a1111-nvidia")
];
};
};
}