mirror of
https://github.com/denismhz/flake.git
synced 2025-11-09 08:06:23 +01:00
Update
This commit is contained in:
parent
778f1e59e1
commit
5bf9ff997e
17
flake.lock
17
flake.lock
|
|
@ -215,6 +215,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700403855,
|
||||||
|
"narHash": "sha256-Q0Uzjik9kUTN9pd/kp52XJi5kletBhy29ctBlAG+III=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0c5678df521e1407884205fe3ce3cf1d7df297db",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-23.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697059129,
|
"lastModified": 1697059129,
|
||||||
|
|
@ -240,6 +256,7 @@
|
||||||
"invokeai-src": "invokeai-src",
|
"invokeai-src": "invokeai-src",
|
||||||
"kohya_ss-src": "kohya_ss-src",
|
"kohya_ss-src": "kohya_ss-src",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"sd-src": "sd-src",
|
"sd-src": "sd-src",
|
||||||
"sgm-src": "sgm-src",
|
"sgm-src": "sgm-src",
|
||||||
"textgen-src": "textgen-src"
|
"textgen-src": "textgen-src"
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,9 @@
|
||||||
description = "A Nix Flake that makes AI reproducible and easy to run";
|
description = "A Nix Flake that makes AI reproducible and easy to run";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
nixpkgs-stable = {
|
||||||
|
url = github:NixOS/nixpkgs/nixos-23.05;
|
||||||
|
};
|
||||||
bark-gui-src = {
|
bark-gui-src = {
|
||||||
url = "github:C0untFloyd/bark-gui";
|
url = "github:C0untFloyd/bark-gui";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
|
@ -49,7 +52,7 @@
|
||||||
};
|
};
|
||||||
outputs = { flake-parts, invokeai-src, hercules-ci-effects, ... }@inputs:
|
outputs = { flake-parts, invokeai-src, hercules-ci-effects, ... }@inputs:
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
perSystem = { system, ... }: {
|
perSystem = { system, ... }:{
|
||||||
_module.args.pkgs = import inputs.nixpkgs { config.allowUnfree = true; inherit system; };
|
_module.args.pkgs = import inputs.nixpkgs { config.allowUnfree = true; inherit system; };
|
||||||
legacyPackages = {
|
legacyPackages = {
|
||||||
koboldai = builtins.throw ''
|
koboldai = builtins.throw ''
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,57 @@
|
||||||
lib: {
|
lib: {
|
||||||
fixPackages = final: prev: let
|
fixPackages = final: prev:
|
||||||
relaxProtobuf = pkg: pkg.overrideAttrs (old: {
|
let
|
||||||
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
|
relaxProtobuf = pkg: pkg.overrideAttrs (old: {
|
||||||
pythonRelaxDeps = [ "protobuf" ];
|
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
|
||||||
});
|
pythonRelaxDeps = [ "protobuf" ];
|
||||||
in {
|
});
|
||||||
invisible-watermark = prev.invisible-watermark.overridePythonAttrs {
|
in
|
||||||
pythonImportsCheck = [ ];
|
{
|
||||||
};
|
invisible-watermark = prev.invisible-watermark.overridePythonAttrs {
|
||||||
torchsde = prev.torchsde.overridePythonAttrs { doCheck = false;
|
pythonImportsCheck = [ ];
|
||||||
pythonImportsCheck = []; };
|
};
|
||||||
pytorch-lightning = relaxProtobuf prev.pytorch-lightning;
|
torchsde = prev.torchsde.overridePythonAttrs {
|
||||||
wandb = relaxProtobuf (prev.wandb.overridePythonAttrs {
|
doCheck = false;
|
||||||
doCheck = false;
|
pythonImportsCheck = [ ];
|
||||||
});
|
};
|
||||||
anyio = prev.anyio.overridePythonAttrs { doCheck = false; dontUsePytestCheck = true;};
|
pytorch-lightning = relaxProtobuf prev.pytorch-lightning;
|
||||||
mocket = prev.mocket.overridePythonAttrs { doCheck = false; dontUsePytestCheck = true;};
|
wandb = relaxProtobuf (prev.wandb.overridePythonAttrs {
|
||||||
markdown-it-py = prev.markdown-it-py.overrideAttrs (old: {
|
doCheck = false;
|
||||||
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
|
});
|
||||||
pythonRelaxDeps = [ "linkify-it-py" ];
|
anyio = prev.anyio.overridePythonAttrs { doCheck = false; dontUsePytestCheck = true; };
|
||||||
passthru = old.passthru // {
|
mocket = prev.mocket.overridePythonAttrs { doCheck = false; dontUsePytestCheck = true; };
|
||||||
optional-dependencies = with final; {
|
markdown-it-py = prev.markdown-it-py.overrideAttrs (old: {
|
||||||
linkify = [ linkify-it-py ];
|
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
|
||||||
plugins = [ mdit-py-plugins ];
|
pythonRelaxDeps = [ "linkify-it-py" ];
|
||||||
|
passthru = old.passthru // {
|
||||||
|
optional-dependencies = with final; {
|
||||||
|
linkify = [ linkify-it-py ];
|
||||||
|
plugins = [ mdit-py-plugins ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
});
|
||||||
});
|
filterpy = prev.filterpy.overrideAttrs (old: {
|
||||||
filterpy = prev.filterpy.overrideAttrs (old: {
|
doInstallCheck = false;
|
||||||
doInstallCheck = false;
|
});
|
||||||
});
|
shap = prev.shap.overrideAttrs (old: {
|
||||||
shap = prev.shap.overrideAttrs (old: {
|
doInstallCheck = false;
|
||||||
doInstallCheck = false;
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.packaging ];
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ final.packaging ];
|
pythonImportsCheck = [ "shap" ];
|
||||||
pythonImportsCheck = [ "shap" ];
|
|
||||||
|
|
||||||
meta = old.meta // {
|
meta = old.meta // {
|
||||||
broken = false;
|
broken = false;
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
streamlit = let
|
streamlit =
|
||||||
streamlit = final.callPackage (final.pkgs.path + "/pkgs/applications/science/machine-learning/streamlit") {
|
let
|
||||||
protobuf3 = final.protobuf;
|
streamlit = final.callPackage (final.pkgs.path + "/pkgs/applications/science/machine-learning/streamlit") {
|
||||||
};
|
protobuf3 = final.protobuf;
|
||||||
in final.toPythonModule (relaxProtobuf streamlit);
|
};
|
||||||
opencv-python-headless = final.opencv-python;
|
in
|
||||||
opencv-python = final.opencv4;
|
final.toPythonModule (relaxProtobuf streamlit);
|
||||||
};
|
opencv-python-headless = final.opencv-python;
|
||||||
|
opencv-python = final.opencv4;
|
||||||
|
};
|
||||||
|
|
||||||
torchRocm = final: prev: {
|
torchRocm = final: prev: {
|
||||||
torch = prev.torch.override {
|
torch = prev.torch.override {
|
||||||
|
|
@ -54,7 +60,7 @@ lib: {
|
||||||
rocmSupport = true;
|
rocmSupport = true;
|
||||||
};
|
};
|
||||||
torchvision = prev.torchvision.overridePythonAttrs (old: {
|
torchvision = prev.torchvision.overridePythonAttrs (old: {
|
||||||
patches = (old.patches or []) ++ [ ./torchvision/fix-rocm-build.patch ];
|
patches = (old.patches or [ ]) ++ [ ./torchvision/fix-rocm-build.patch ];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
42
packages/pillow/default.nix
Normal file
42
packages/pillow/default.nix
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, buildPythonPackage
|
||||||
|
, pythonOlder
|
||||||
|
, fetchPypi
|
||||||
|
, isPyPy
|
||||||
|
, defusedxml, olefile, freetype, libjpeg, zlib, libtiff, libwebp, libxcrypt, tcl, lcms2, tk, libX11
|
||||||
|
, libxcb, openjpeg, libimagequant, pyroma, numpy, pytestCheckHook
|
||||||
|
# for passthru.tests
|
||||||
|
, imageio, matplotlib, pilkit, pydicom, reportlab
|
||||||
|
}@args:
|
||||||
|
|
||||||
|
import ./generic.nix (rec {
|
||||||
|
pname = "pillow";
|
||||||
|
version = "9.4.0";
|
||||||
|
format = "setuptools";
|
||||||
|
|
||||||
|
disabled = pythonOlder "3.7";
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
pname = "Pillow";
|
||||||
|
inherit version;
|
||||||
|
hash = "sha256-ocLXeARI65P7zDeJvzkWqlcg2ULjeUX0BWaAMX8c0j4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
inherit imageio matplotlib pilkit pydicom reportlab;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://python-pillow.org/";
|
||||||
|
description = "The friendly PIL fork (Python Imaging Library)";
|
||||||
|
longDescription = ''
|
||||||
|
The Python Imaging Library (PIL) adds image processing
|
||||||
|
capabilities to your Python interpreter. This library
|
||||||
|
supports many file formats, and provides powerful image
|
||||||
|
processing and graphics capabilities.
|
||||||
|
'';
|
||||||
|
license = licenses.hpnd;
|
||||||
|
maintainers = with maintainers; [ goibhniu prikhi SuperSandro2000 ];
|
||||||
|
};
|
||||||
|
} // args )
|
||||||
81
packages/pillow/generic.nix
Normal file
81
packages/pillow/generic.nix
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
{ pname
|
||||||
|
, version
|
||||||
|
, disabled
|
||||||
|
, src
|
||||||
|
, patches ? []
|
||||||
|
, meta
|
||||||
|
, passthru ? {}
|
||||||
|
, ...
|
||||||
|
}@args:
|
||||||
|
|
||||||
|
with args;
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
inherit pname version format src meta passthru patches;
|
||||||
|
|
||||||
|
# Disable imagefont tests, because they don't work well with infinality:
|
||||||
|
# https://github.com/python-pillow/Pillow/issues/1259
|
||||||
|
postPatch = ''
|
||||||
|
rm Tests/test_imagefont.py
|
||||||
|
'';
|
||||||
|
|
||||||
|
disabledTests = [
|
||||||
|
# Code quality mismathch 9 vs 10
|
||||||
|
"test_pyroma"
|
||||||
|
|
||||||
|
# pillow-simd
|
||||||
|
"test_roundtrip"
|
||||||
|
"test_basic"
|
||||||
|
"test_custom_metadata"
|
||||||
|
"test_file_png"
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# Disable darwin tests which require executables: `iconutil` and `screencapture`
|
||||||
|
"test_grab"
|
||||||
|
"test_grabclipboard"
|
||||||
|
"test_save"
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ olefile ]
|
||||||
|
++ lib.optionals (lib.versionAtLeast version "8.2.0") [ defusedxml ];
|
||||||
|
|
||||||
|
nativeCheckInputs = [ pytestCheckHook pyroma numpy ];
|
||||||
|
|
||||||
|
buildInputs = [ freetype libjpeg openjpeg libimagequant zlib libtiff libwebp libxcrypt tcl lcms2 ]
|
||||||
|
++ lib.optionals (lib.versionAtLeast version "7.1.0") [ libxcb ]
|
||||||
|
++ lib.optionals (isPyPy) [ tk libX11 ];
|
||||||
|
|
||||||
|
# NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
|
||||||
|
# NOTE: The Pillow install script will, by default, add paths like /usr/lib
|
||||||
|
# and /usr/include to the search paths. This can break things when building
|
||||||
|
# on a non-NixOS system that has some libraries installed that are not
|
||||||
|
# installed in Nix (for example, Arch Linux has jpeg2000 but Nix doesn't
|
||||||
|
# build Pillow with this support). We patch the `disable_platform_guessing`
|
||||||
|
# setting here, instead of passing the `--disable-platform-guessing`
|
||||||
|
# command-line option, since the command-line option doesn't work when we run
|
||||||
|
# tests.
|
||||||
|
preConfigure = let
|
||||||
|
libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
|
||||||
|
libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
|
||||||
|
in ''
|
||||||
|
sed -i "setup.py" \
|
||||||
|
-e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
|
||||||
|
s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
|
||||||
|
s|^JPEG2K_ROOT =.*$|JPEG2K_ROOT = ${libinclude openjpeg}|g ;
|
||||||
|
s|^IMAGEQUANT_ROOT =.*$|IMAGEQUANT_ROOT = ${libinclude' libimagequant}|g ;
|
||||||
|
s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
|
||||||
|
s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
|
||||||
|
s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
|
||||||
|
s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
|
||||||
|
s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
|
||||||
|
export LDFLAGS="$LDFLAGS -L${libwebp}/lib"
|
||||||
|
export CFLAGS="$CFLAGS -I${libwebp}/include"
|
||||||
|
'' + lib.optionalString (lib.versionAtLeast version "7.1.0") ''
|
||||||
|
export LDFLAGS="$LDFLAGS -L${libxcb}/lib"
|
||||||
|
export CFLAGS="$CFLAGS -I${libxcb.dev}/include"
|
||||||
|
'' + lib.optionalString stdenv.isDarwin ''
|
||||||
|
# Remove impurities
|
||||||
|
substituteInPlace setup.py \
|
||||||
|
--replace '"/Library/Frameworks",' "" \
|
||||||
|
--replace '"/System/Library/Frameworks"' ""
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, setuptools
|
, setuptools
|
||||||
, torch
|
|
||||||
, numpy
|
, numpy
|
||||||
|
, torch
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
|
|
|
||||||
35
projects/automatic1111/_outputpaths.patch
Normal file
35
projects/automatic1111/_outputpaths.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
diff --git a/modules/shared_options.py b/modules/shared_options.py
|
||||||
|
index 00b273fa..9dd8e2ce 100644
|
||||||
|
--- a/modules/shared_options.py
|
||||||
|
+++ b/modules/shared_options.py
|
||||||
|
@@ -4,6 +4,8 @@ from modules import localization, ui_components, shared_items, shared, interroga
|
||||||
|
from modules.paths_internal import models_path, script_path, data_path, sd_configs_path, sd_default_config, sd_model_file, default_sd_model_file, extensions_dir, extensions_builtin_dir # noqa: F401
|
||||||
|
from modules.shared_cmd_options import cmd_opts
|
||||||
|
from modules.options import options_section, OptionInfo, OptionHTML
|
||||||
|
+from modules.paths_internal import data_path
|
||||||
|
+import os
|
||||||
|
|
||||||
|
options_templates = {}
|
||||||
|
hide_dirs = shared.hide_dirs
|
||||||
|
@@ -66,14 +68,14 @@ options_templates.update(options_section(('saving-images', "Saving images/grids"
|
||||||
|
|
||||||
|
options_templates.update(options_section(('saving-paths', "Paths for saving"), {
|
||||||
|
"outdir_samples": OptionInfo("", "Output directory for images; if empty, defaults to three directories below", component_args=hide_dirs),
|
||||||
|
- "outdir_txt2img_samples": OptionInfo("outputs/txt2img-images", 'Output directory for txt2img images', component_args=hide_dirs),
|
||||||
|
- "outdir_img2img_samples": OptionInfo("outputs/img2img-images", 'Output directory for img2img images', component_args=hide_dirs),
|
||||||
|
- "outdir_extras_samples": OptionInfo("outputs/extras-images", 'Output directory for images from extras tab', component_args=hide_dirs),
|
||||||
|
+ "outdir_txt2img_samples": OptionInfo(os.path.join(data_path,"outputs/txt2img-images"), 'Output directory for txt2img images', component_args=hide_dirs),
|
||||||
|
+ "outdir_img2img_samples": OptionInfo(os.path.join(data_path,"outputs/img2img-images"), 'Output directory for img2img images', component_args=hide_dirs),
|
||||||
|
+ "outdir_extras_samples": OptionInfo(os.path.join(data_path,"outputs/extras-images"), 'Output directory for images from extras tab', component_args=hide_dirs),
|
||||||
|
"outdir_grids": OptionInfo("", "Output directory for grids; if empty, defaults to two directories below", component_args=hide_dirs),
|
||||||
|
- "outdir_txt2img_grids": OptionInfo("outputs/txt2img-grids", 'Output directory for txt2img grids', component_args=hide_dirs),
|
||||||
|
- "outdir_img2img_grids": OptionInfo("outputs/img2img-grids", 'Output directory for img2img grids', component_args=hide_dirs),
|
||||||
|
- "outdir_save": OptionInfo("log/images", "Directory for saving images using the Save button", component_args=hide_dirs),
|
||||||
|
- "outdir_init_images": OptionInfo("outputs/init-images", "Directory for saving init images when using img2img", component_args=hide_dirs),
|
||||||
|
+ "outdir_txt2img_grids": OptionInfo(os.path.join(data_path,"outputs/txt2img-grids"), 'Output directory for txt2img grids', component_args=hide_dirs),
|
||||||
|
+ "outdir_img2img_grids": OptionInfo(os.path.join(data_path,"outputs/img2img-grids"), 'Output directory for img2img grids', component_args=hide_dirs),
|
||||||
|
+ "outdir_save": OptionInfo(os.path.join(data_path,"log/images"), "Directory for saving images using the Save button", component_args=hide_dirs),
|
||||||
|
+ "outdir_init_images": OptionInfo(os.path.join(data_path,"outputs/init-images"), "Directory for saving init images when using img2img", component_args=hide_dirs),
|
||||||
|
}))
|
||||||
|
|
||||||
|
options_templates.update(options_section(('saving-to-dirs', "Saving to a directory"), {
|
||||||
|
|
@ -6,107 +6,95 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
perSystem = { config, pkgs, ... }: let
|
perSystem = { config, pkgs, system, ... }:
|
||||||
commonOverlays = [
|
let
|
||||||
overlays.python-fixPackages
|
commonOverlays = [
|
||||||
(l.overlays.callManyPackages [
|
#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?
|
||||||
../../packages/discord-webhook
|
(
|
||||||
../../packages/deforum
|
final: prev: {
|
||||||
../../packages/ultralytics
|
pillow = pkgs.python3.pkgs.callPackage ../../packages/pillow { };
|
||||||
../../packages/rich
|
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
||||||
../../packages/k_diffusion
|
(
|
||||||
../../packages/openclip
|
python-final: python-prev: {
|
||||||
../../packages/safetensors
|
pillow = python-final.callPackage ../../packages/pillow { };
|
||||||
../../packages/easing-functions
|
}
|
||||||
../../packages/dynamicprompts
|
)
|
||||||
../../packages/controlnet-aux
|
];
|
||||||
../../packages/fastapi
|
}
|
||||||
../../packages/fastapi-events
|
)
|
||||||
../../packages/fastapi-socketio
|
overlays.python-fixPackages
|
||||||
../../packages/pytorch-lightning
|
(l.overlays.callManyPackages [
|
||||||
../../packages/starlette
|
../../packages/analytics-python
|
||||||
../../packages/compel
|
../../packages/basicsr
|
||||||
../../packages/taming-transformers-rom1504
|
../../packages/blendmodes
|
||||||
../../packages/albumentations
|
../../packages/blip
|
||||||
../../packages/qudida
|
../../packages/codeformer
|
||||||
../../packages/gfpgan
|
../../packages/facexlib
|
||||||
../../packages/basicsr
|
../../packages/gfpgan
|
||||||
../../packages/facexlib
|
../../packages/gradio
|
||||||
../../packages/realesrgan
|
../../packages/gradio-client
|
||||||
../../packages/codeformer
|
../../packages/k_diffusion
|
||||||
../../packages/clipseg
|
../../packages/lpips
|
||||||
../../packages/kornia
|
../../packages/openclip
|
||||||
../../packages/picklescan
|
../../packages/pillow
|
||||||
../../packages/diffusers
|
../../packages/pytorch-lightning
|
||||||
../../packages/pypatchmatch
|
../../packages/realesrgan
|
||||||
../../packages/torch-fidelity
|
../../packages/taming-transformers-rom1504
|
||||||
../../packages/resize-right
|
../../packages/tomesd
|
||||||
../../packages/torchdiffeq
|
../../packages/torch-fidelity
|
||||||
../../packages/accelerate
|
../../packages/torch-grammar
|
||||||
../../packages/clip-anytorch
|
../../packages/xformers
|
||||||
../../packages/clean-fid
|
])
|
||||||
../../packages/getpass-asterisk
|
(final: prev: lib.mapAttrs
|
||||||
../../packages/mediapipe
|
(_: pkg: pkg.overrideAttrs (old: {
|
||||||
../../packages/python-engineio
|
nativeBuildInputs = old.nativeBuildInputs ++ [ final.pythonRelaxDepsHook ];
|
||||||
../../packages/lpips
|
pythonRemoveDeps = [ "opencv-python-headless" "opencv-python" "tb-nightly" "clip" ];
|
||||||
../../packages/blip
|
}
|
||||||
../../packages/gradio
|
))
|
||||||
../../packages/gradio-client
|
{
|
||||||
../../packages/analytics-python
|
inherit (prev)
|
||||||
../../packages/tomesd
|
gfpgan
|
||||||
../../packages/blendmodes
|
basicsr
|
||||||
../../packages/xformers
|
facexlib
|
||||||
../../packages/zipunicode
|
realesrgan
|
||||||
])
|
;
|
||||||
(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 = {
|
python3Variants = {
|
||||||
nvidia = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
|
nvidia = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
|
||||||
overlays.python-torchCuda
|
overlays.python-torchCuda
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
src = inputs.a1111-src;
|
src = inputs.a1111-src;
|
||||||
mkAutomatic1111Variant = args: pkgs.callPackage ./package.nix ({ inherit src; sd-src = inputs.sd-src; sgm-src = inputs.sgm-src; } // args);
|
mkAutomatic1111Variant = args: pkgs.callPackage ./package.nix ({ inherit src; sd-src = inputs.sd-src; sgm-src = inputs.sgm-src; } // args);
|
||||||
in {
|
in
|
||||||
packages = {
|
{
|
||||||
a1111-nvidia = mkAutomatic1111Variant {
|
packages = {
|
||||||
python3Packages = python3Variants.nvidia;
|
a1111-nvidia = mkAutomatic1111Variant {
|
||||||
|
python3Packages = python3Variants.nvidia;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
flake.nixosModules = let
|
flake.nixosModules =
|
||||||
packageModule = pkgAttrName: { pkgs, ... }: {
|
let
|
||||||
services.a1111.package = withSystem pkgs.system (
|
packageModule = pkgAttrName: { pkgs, ... }: {
|
||||||
{ config, ... }: lib.mkOptionDefault config.packages.${pkgAttrName}
|
services.a1111.package = withSystem pkgs.system (
|
||||||
);
|
{ config, ... }: lib.mkOptionDefault config.packages.${pkgAttrName}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
a1111 = ./nixos;
|
||||||
|
invokeai-nvidia = {
|
||||||
|
imports = [
|
||||||
|
config.flake.nixosModules.invokeai
|
||||||
|
(packageModule "a1111-nvidia")
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
in {
|
|
||||||
a1111 = ./nixos;
|
|
||||||
invokeai-nvidia = {
|
|
||||||
imports = [
|
|
||||||
config.flake.nixosModules.invokeai
|
|
||||||
(packageModule "a1111-nvidia")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
131
projects/automatic1111/nixos/default.nix
Normal file
131
projects/automatic1111/nixos/default.nix
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkIf mkOption mkEnableOption mkRenamedOptionModule types
|
||||||
|
escapeShellArgs flatten getExe mapAttrsToList
|
||||||
|
isBool isFloat isInt isList isString
|
||||||
|
floatToString optionalString
|
||||||
|
;
|
||||||
|
|
||||||
|
cfg = config.services.invokeai;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = map ({ old, new ? old }: mkRenamedOptionModule [ "services" "invokeai" old ] [ "services" "invokeai" "settings" new ]) [
|
||||||
|
{ old = "host"; }
|
||||||
|
{ old = "port"; }
|
||||||
|
{ old = "dataDir"; new = "root"; }
|
||||||
|
{ old = "precision"; }
|
||||||
|
];
|
||||||
|
options.services.invokeai = {
|
||||||
|
enable = mkEnableOption "InvokeAI Web UI for Stable Diffusion";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
description = "Which InvokeAI package to use.";
|
||||||
|
type = types.package;
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
description = "Which user to run InvokeAI as.";
|
||||||
|
default = "invokeai";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
group = mkOption {
|
||||||
|
description = "Which group to run InvokeAI as.";
|
||||||
|
default = "invokeai";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
description = "Structured command line arguments.";
|
||||||
|
default = { };
|
||||||
|
type = types.submodule {
|
||||||
|
freeformType = with types; let
|
||||||
|
atom = nullOr (oneOf [
|
||||||
|
bool
|
||||||
|
str
|
||||||
|
int
|
||||||
|
float
|
||||||
|
]);
|
||||||
|
in attrsOf (either atom (listOf atom));
|
||||||
|
options = {
|
||||||
|
host = mkOption {
|
||||||
|
description = "Which IP address to listen on.";
|
||||||
|
default = "127.0.0.1";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
description = "Which port to listen on.";
|
||||||
|
default = 9090;
|
||||||
|
type = types.port;
|
||||||
|
};
|
||||||
|
|
||||||
|
root = mkOption {
|
||||||
|
description = "Where to store InvokeAI's state.";
|
||||||
|
default = "/var/lib/invokeai";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
precision = mkOption {
|
||||||
|
description = "Set model precision.";
|
||||||
|
default = "auto";
|
||||||
|
type = types.enum [ "auto" "float32" "autocast" "float16" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraArgs = mkOption {
|
||||||
|
description = "Additional raw command line arguments.";
|
||||||
|
default = [];
|
||||||
|
type = with types; listOf str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
|
||||||
|
cliArgs = (flatten (mapAttrsToList (n: v:
|
||||||
|
if v == null then []
|
||||||
|
else if isBool v then [ "--${optionalString (!v) "no-"}${n}" ]
|
||||||
|
else if isInt v then [ "--${n}" "${toString v}" ]
|
||||||
|
else if isFloat v then [ "--${n}" "${floatToString v}" ]
|
||||||
|
else if isString v then ["--${n}" v ]
|
||||||
|
else if isList v then [ "--${n}" (toString v) ]
|
||||||
|
else throw "Unhandled type for setting \"${n}\""
|
||||||
|
) cfg.settings)) ++ cfg.extraArgs;
|
||||||
|
|
||||||
|
in mkIf cfg.enable {
|
||||||
|
users.users = mkIf (cfg.user == "invokeai") {
|
||||||
|
invokeai = {
|
||||||
|
isSystemUser = true;
|
||||||
|
inherit (cfg) group;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users.groups = mkIf (cfg.group == "invokeai") {
|
||||||
|
invokeai = {};
|
||||||
|
};
|
||||||
|
systemd.services.invokeai = {
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
environment = {
|
||||||
|
HOME = "${cfg.settings.root}/.home";
|
||||||
|
INVOKEAI_ROOT = "${cfg.settings.root}";
|
||||||
|
NIXIFIED_AI_NONINTERACTIVE = "1";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
ExecStart = "${getExe cfg.package} ${escapeShellArgs cliArgs}";
|
||||||
|
PrivateTmp = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d '${cfg.settings.root}' 0755 ${cfg.user} ${cfg.group} - -"
|
||||||
|
"d '${cfg.settings.root}/configs' 0755 ${cfg.user} ${cfg.group} - -"
|
||||||
|
"d '${cfg.settings.root}/.home' 0750 ${cfg.user} ${cfg.group} - -"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,183 +1,114 @@
|
||||||
{ python3Packages,
|
{ python3Packages
|
||||||
sd-src,
|
, sd-src
|
||||||
sgm-src,
|
, sgm-src
|
||||||
# misc
|
, # misc
|
||||||
lib
|
lib
|
||||||
, src
|
, src
|
||||||
# extra deps
|
# extra deps
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
submodel = pkg: python3Packages.${pkg} + "/lib/python3.10/site-packages";
|
|
||||||
taming-transformers = submodel "taming-transformers-rom1504";
|
|
||||||
k_diffusion = submodel "k_diffusion";
|
|
||||||
codeformer = (submodel "codeformer") + "/codeformer";
|
|
||||||
blip = (submodel "blip") + "/blip";
|
|
||||||
in
|
|
||||||
python3Packages.buildPythonPackage {
|
python3Packages.buildPythonPackage {
|
||||||
pname = "Automatic1111";
|
pname = "Automatic1111";
|
||||||
format = "other";
|
format = "other";
|
||||||
version = "v1.6.0";
|
version = "v1.6.0";
|
||||||
inherit src;
|
inherit src;
|
||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
moviepy #for prompt travel
|
aiofiles
|
||||||
zipunicode #for civitaui browser+
|
analytics-python
|
||||||
imageio #animatediff create webm and shit
|
altair
|
||||||
av #animatediff create webm and shit
|
blendmodes
|
||||||
discord-webhook #for dreambooth i think
|
codeformer
|
||||||
numexpr #for some extension
|
einops
|
||||||
deforum #for some extension
|
facexlib
|
||||||
ultralytics #extension
|
gfpgan
|
||||||
k_diffusion
|
gradio
|
||||||
inflection
|
gradio-client
|
||||||
gdown
|
inflection
|
||||||
altair
|
k-diffusion
|
||||||
aiofiles
|
kornia
|
||||||
openclip
|
lark
|
||||||
semver
|
openclip
|
||||||
numpy
|
omegaconf
|
||||||
rich #extension
|
piexif
|
||||||
torchsde
|
pytorch-lightning
|
||||||
uvicorn
|
realesrgan
|
||||||
pyperclip
|
safetensors
|
||||||
invisible-watermark
|
semantic-version
|
||||||
fastapi
|
taming-transformers-rom1504
|
||||||
fastapi-events
|
timm
|
||||||
fastapi-socketio
|
tomesd
|
||||||
timm
|
torch
|
||||||
scikit-image
|
transformers
|
||||||
controlnet-aux
|
xformers
|
||||||
compel
|
];
|
||||||
python-dotenv
|
|
||||||
uvloop
|
|
||||||
watchfiles
|
|
||||||
httptools
|
|
||||||
websockets
|
|
||||||
dnspython
|
|
||||||
albumentations
|
|
||||||
opencv4
|
|
||||||
pudb
|
|
||||||
imageio
|
|
||||||
imageio-ffmpeg
|
|
||||||
compel
|
|
||||||
npyscreen
|
|
||||||
pytorch-lightning
|
|
||||||
protobuf
|
|
||||||
omegaconf
|
|
||||||
test-tube
|
|
||||||
einops
|
|
||||||
taming-transformers-rom1504
|
|
||||||
torch-fidelity
|
|
||||||
torchmetrics
|
|
||||||
transformers
|
|
||||||
kornia
|
|
||||||
k-diffusion
|
|
||||||
picklescan
|
|
||||||
diffusers
|
|
||||||
pypatchmatch
|
|
||||||
realesrgan
|
|
||||||
pillow
|
|
||||||
send2trash
|
|
||||||
flask
|
|
||||||
flask-cors
|
|
||||||
dependency-injector
|
|
||||||
gfpgan
|
|
||||||
eventlet
|
|
||||||
clipseg
|
|
||||||
getpass-asterisk
|
|
||||||
safetensors
|
|
||||||
datasets
|
|
||||||
accelerate
|
|
||||||
easing-functions
|
|
||||||
dynamicprompts
|
|
||||||
torchvision
|
|
||||||
test-tube
|
|
||||||
lark
|
|
||||||
gradio
|
|
||||||
gradio-client
|
|
||||||
tomesd
|
|
||||||
piexif
|
|
||||||
blendmodes
|
|
||||||
xformers
|
|
||||||
python-multipart
|
|
||||||
];
|
|
||||||
nativeBuildInputs = with python3Packages; [ pythonRelaxDepsHook pip ];
|
|
||||||
pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" "opencv-python" ];
|
|
||||||
pythonRelaxDeps = [ "dnspython" "flask" "requests" "numpy" "pytorch-lightning" "torchsde" "uvicorn" "invisible-watermark" "accelerate" "scikit-image" "safetensors" "torchvision" "test-tube" "fastapi" ];
|
|
||||||
|
|
||||||
dontUsePytestCheck = true;
|
patches = [ ./_outputpaths.patch ];
|
||||||
|
|
||||||
doCheck = false;
|
buildPhase =
|
||||||
|
''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
mkdir -p dist
|
||||||
|
cp -r . $out
|
||||||
|
chmod -R +w $out
|
||||||
|
cd $out
|
||||||
|
|
||||||
buildPhase = ''
|
sed -i '28,43d' launch.py
|
||||||
runHook preBuild
|
|
||||||
mkdir -p dist
|
|
||||||
cp -r . $out
|
|
||||||
chmod -R +w $out
|
|
||||||
cd $out
|
|
||||||
|
|
||||||
#replace dirs in paths_internal.py
|
|
||||||
#mkdir -p /var/lib/.webui
|
|
||||||
sed -i 's#os\.path\.join(script_path, "config_states")#os\.path\.join(data_path, "config_states")#' ./modules/paths_internal.py
|
|
||||||
#delete lines trying to pull git repos and setting up tests in launch.py
|
|
||||||
sed -i '28,43d' launch.py
|
|
||||||
|
|
||||||
#firstly, we need to make launch.py runnable by adding python shebang
|
substituteInPlace ./modules/paths_internal.py \
|
||||||
cat <<-EOF > exec_launch.py.unwrapped
|
--replace 'os.path.join(script_path, "config_states")' \
|
||||||
$(echo "#!/usr/bin/python")
|
'os.path.join(data_path, "config_states")'
|
||||||
$(cat launch.py)
|
|
||||||
EOF
|
substituteInPlace ./modules/shared_gradio_themes.py \
|
||||||
chmod +x exec_launch.py.unwrapped
|
--replace script_path data_path
|
||||||
|
|
||||||
#creating wrapper around launch.py with PYTHONPATH correctly set
|
#make launch.py executable > shebang
|
||||||
makeWrapper "$(pwd)/exec_launch.py.unwrapped" exec_launch.py \
|
mkdir -p $out/bin
|
||||||
--set-default PYTHONPATH $PYTHONPATH
|
cat <<-EOF > launch.py
|
||||||
|
$(echo "#!/usr/bin/python")
|
||||||
|
$(cat launch.py)
|
||||||
|
EOF
|
||||||
|
chmod +x launch.py
|
||||||
|
makeWrapper "$out/launch.py" $out/bin/launch-wrapped.py \
|
||||||
|
--run 'export COMMANDLINE_ARGS="''${COMMANDLINE_ARGS:-\
|
||||||
|
--data-dir $HOME/.webui --skip-install \
|
||||||
|
--theme dark --ckpt-dir $HOME/.webui/models/ckpt \
|
||||||
|
--embeddings-dir $HOME/.webui/models/embeddings \
|
||||||
|
--medvram --no-half-vae}"' \
|
||||||
|
--set-default PYTHONPATH $PYTHONPATH \
|
||||||
|
--chdir $out
|
||||||
|
|
||||||
mkdir $out/bin
|
rm -rf dist
|
||||||
pushd $out/bin
|
|
||||||
ln -s ../exec_launch.py launch.py
|
|
||||||
buck='$' #escaping $ inside shell inside shell is tricky
|
|
||||||
#next is an additional shell wrapper, which sets sensible default args for CLI
|
|
||||||
#additional arguments will be passed further
|
|
||||||
cat <<-EOF > flake-launch
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
pushd $out #For some reason, fastapi only works when current workdir is set inside the repo
|
|
||||||
trap "popd" EXIT
|
|
||||||
|
|
||||||
"$out/bin/launch.py" --skip-install "$buck{@}"
|
runHook postBuild
|
||||||
EOF
|
'';
|
||||||
# below lie remnants of my attempt to make webui use similar paths as InvokeAI for models download
|
|
||||||
# additions of such options in upstream is a welcome sign, however they're mostly ignored and therefore useless
|
|
||||||
# TODO: check in 6 months, maybe it'll work
|
|
||||||
# For now, your best bet is to use ZFS dataset with dedup enabled or make symlinks after the fact
|
|
||||||
|
|
||||||
#--codeformer-models-path "\$mp/codeformer" \
|
|
||||||
#--gfpgan-models-path "\$mp/gfpgan" --esrgan-models-path "\$mp/esrgan" \
|
|
||||||
#--bsrgan-models-path "\$mp/bsrgan" --realesrgan-models-path "\$mp/realesrgan" \
|
|
||||||
#--clip-models-path "\$mp/clip"
|
|
||||||
chmod +x flake-launch
|
|
||||||
popd
|
|
||||||
|
|
||||||
runHook postBuild
|
installPhase =
|
||||||
'';
|
let
|
||||||
installPhase = ''
|
submodel = pkg: python3Packages.${pkg} + "/lib/python3.10/site-packages";
|
||||||
runHook preInstall
|
taming-transformers = submodel "taming-transformers-rom1504";
|
||||||
|
k_diffusion = submodel "k_diffusion";
|
||||||
|
codeformer = (submodel "codeformer") + "/codeformer";
|
||||||
|
blip = (submodel "blip") + "/blip";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
rm -rf repositories/
|
rm -rf repositories/
|
||||||
mkdir repositories
|
mkdir repositories
|
||||||
pushd repositories
|
pushd repositories
|
||||||
ln -s ${sd-src}/ stable-diffusion-stability-ai
|
ln -s ${sd-src}/ stable-diffusion-stability-ai
|
||||||
ln -s ${sgm-src}/ generative-models
|
ln -s ${sgm-src}/ generative-models
|
||||||
ln -s ${taming-transformers}/ taming-transformers
|
ln -s ${taming-transformers}/ taming-transformers
|
||||||
ln -s ${k_diffusion}/ k-diffusion
|
ln -s ${k_diffusion}/ k-diffusion
|
||||||
ln -s ${codeformer}/ CodeFormer
|
ln -s ${codeformer}/ CodeFormer
|
||||||
ln -s ${blip}/ BLIP
|
ln -s ${blip}/ BLIP
|
||||||
popd
|
popd
|
||||||
echo $PATH
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
meta = {
|
meta = {
|
||||||
description = "Fancy Web UI for Stable Diffusion";
|
description = "Fancy Web UI for Stable Diffusion";
|
||||||
homepage = "https://github.com/AUTOMATIC1111/stable-diffusion-webui";
|
homepage = "https://github.com/AUTOMATIC1111/stable-diffusion-webui";
|
||||||
mainProgram = "flake-launch";
|
mainProgram = "launch-wrapped.py";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,51 @@
|
||||||
|
|
||||||
{ config, inputs, lib, withSystem, ... }:
|
{ config, inputs, lib, withSystem, ... }:
|
||||||
|
let
|
||||||
|
l = lib // config.flake.lib;
|
||||||
|
inherit (config.flake) overlays;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
perSystem = { config, pkgs, ... }:
|
perSystem = { config, pkgs, ... }: let
|
||||||
let
|
commonOverlays = [
|
||||||
src = inputs.bark-gui-src;
|
overlays.python-fixPackages
|
||||||
overlays = [
|
(l.overlays.callManyPackages [
|
||||||
(
|
../../packages/audiolm-pytorch
|
||||||
final: prev: {
|
../../packages/ema-pytorch
|
||||||
final.python310 = prev.python310.override {
|
../../packages/local-attention
|
||||||
enableOptimizations = true;
|
../../packages/pytorch-seed
|
||||||
reproducibleBuild = false;
|
../../packages/vector-quantize-pytorch
|
||||||
self = final.python310;
|
])
|
||||||
buildInputs = [ final.ffmpeg-full ];
|
];
|
||||||
};
|
|
||||||
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
|
||||||
(
|
|
||||||
python-final: python-prev: {
|
|
||||||
pytorch-seed = python-final.callPackage ../../Packages/pytorch-seed { };
|
|
||||||
audiolm-pytorch = python-final.callPackage ../../Packages/audiolm-pytorch { };
|
|
||||||
vector-quantize-pytorch = python-final.callPackage ../../Packages/vector-quantize-pytorch { };
|
|
||||||
local-attention = python-final.callPackage ../../Packages/local-attention { };
|
|
||||||
ema-pytorch = python-final.callPackage ../../Packages/ema-pytorch { };
|
|
||||||
|
|
||||||
openai-triton = python-prev.openai-triton-bin;
|
python3Variants = {
|
||||||
torch = python-prev.torch-bin;
|
nvidia = l.overlays.applyOverlays pkgs.python3Packages (commonOverlays ++ [
|
||||||
torchaudio = python-prev.torchaudio-bin;
|
overlays.python-torchCuda
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
#bark-gui = python-final.callPackage ../../Packages/bark-gui.nix { };
|
src = inputs.bark-gui-src;
|
||||||
}
|
mkbark-guiVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args);
|
||||||
)
|
in {
|
||||||
];
|
packages = {
|
||||||
}
|
bark-gui-nvidia = mkbark-guiVariant {
|
||||||
)
|
python3Packages = python3Variants.nvidia;
|
||||||
];
|
|
||||||
mkbark-guiVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
packages = {
|
|
||||||
bark-gui = mkbark-guiVariant {
|
|
||||||
inherit overlays;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.nixosModules = let
|
||||||
|
packageModule = pkgAttrName: { pkgs, ... }: {
|
||||||
|
services.a1111.package = withSystem pkgs.system (
|
||||||
|
{ config, ... }: lib.mkOptionDefault config.packages.${pkgAttrName}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
bark-gui = ./nixos;
|
||||||
|
invokeai-nvidia = {
|
||||||
|
imports = [
|
||||||
|
config.flake.nixosModules.invokeai
|
||||||
|
(packageModule "bark-gui-nvidia")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,77 +1,63 @@
|
||||||
{ lib
|
{ python3Packages
|
||||||
, buildPythonPackage
|
, # misc
|
||||||
, fetchFromGitHub
|
lib
|
||||||
, writeShellScript
|
|
||||||
, setuptools
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
, fairseq
|
|
||||||
, audiolm-pytorch
|
|
||||||
, gradio
|
|
||||||
, funcy
|
|
||||||
, linkify-it-py
|
|
||||||
, mutagen
|
|
||||||
, pytorch-seed
|
|
||||||
, pyyaml
|
|
||||||
, sentencepiece
|
|
||||||
, transformers
|
|
||||||
|
|
||||||
, ffmpeg-full
|
|
||||||
|
|
||||||
, src
|
, src
|
||||||
|
# extra deps
|
||||||
}:
|
}:
|
||||||
|
python3Packages.buildPythonPackage {
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "bark-gui";
|
pname = "bark-gui";
|
||||||
format = "pyproject";
|
format = "setuptools";
|
||||||
version = "0.7.1";
|
version = "07.1";
|
||||||
|
inherit src;
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = with python3Packages; [
|
||||||
fairseq
|
|
||||||
audiolm-pytorch
|
audiolm-pytorch
|
||||||
gradio
|
boto3
|
||||||
|
ema-pytorch
|
||||||
|
encodec
|
||||||
funcy
|
funcy
|
||||||
linkify-it-py
|
gradio
|
||||||
mutagen
|
local-attention
|
||||||
pytorch-seed
|
pytorch-seed
|
||||||
pyyaml
|
safetensors
|
||||||
sentencepiece
|
scipy
|
||||||
|
torch-bin
|
||||||
|
torchaudio-bin
|
||||||
transformers
|
transformers
|
||||||
|
vector-quantize-pytorch
|
||||||
];
|
];
|
||||||
buildInputs = [
|
#nativeBuildInputs = with python3Packages; [ pythonRelaxDepsHook pip ];
|
||||||
setuptools
|
nativeBuildInputs = with python3Packages; [ setuptools pip ];
|
||||||
ffmpeg-full
|
#pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" "opencv-python" ];
|
||||||
|
pythonRelaxDeps = [ "dnspython" "flask" "requests" "numpy" "pytorch-lightning" "torchsde" "uvicorn" "invisible-watermark" "accelerate" "scikit-image" "safetensors" "torchvision" "test-tube" "fastapi" ];
|
||||||
|
|
||||||
|
makeWrapperArgs = [
|
||||||
|
'' --set-default PYTHONPATH=$PYTHONPATH ''
|
||||||
];
|
];
|
||||||
|
|
||||||
dontWrapPythonPrograms = true;
|
buildPhase = ''
|
||||||
postFixup =
|
mkdir -p dist
|
||||||
let
|
runHook preBuild
|
||||||
setupScript = writeShellScript "bark-gui" ''
|
cp -r . $out
|
||||||
if [[ ! -d $HOME/.bark-gui ]]; then
|
chmod -R +w $out
|
||||||
mkdir -p $HOME
|
cd $out
|
||||||
cp -r ${src} $HOME/.bark-gui
|
|
||||||
chmod 0755 $HOME/.bark-gui
|
chmod +x webui.py
|
||||||
chmod 0644 $HOME/.bark-gui/config.yaml
|
#add shbang to webui.py
|
||||||
mkdir -p $HOME/.bark-gui/training/data/output
|
cat <<-EOF > webui.py
|
||||||
mkdir -p $HOME/.bark-gui/training/inputtext
|
$(echo "#!/usr/bin/python")
|
||||||
chmod 755 $HOME/.bark-gui/training/data/output $HOME/.bark-gui/training/inputtext $HOME/.bark-gui/bark/assets/prompts/custom/
|
$(cat webui.py)
|
||||||
fi
|
EOF
|
||||||
pushd "$PWD"
|
|
||||||
cd $HOME/.bark-gui/
|
mkdir -p $out/bin
|
||||||
MYOLDPATH="$PATH"
|
ln -s webui-wrapped.py $out/bin/bark-gui
|
||||||
export PATH="$PATH:${ffmpeg-full.bin}/bin/"
|
makeWrapper "$(pwd)/webui.py" "$out/bin/bark-gui" --set-default PYTHONPATH=$PYTHONPATH
|
||||||
python webui.py "$@"
|
chmod +x $out/bin/bark-gui
|
||||||
export PATH="$MYOLDPATH"
|
|
||||||
popd
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
in
|
|
||||||
''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
ln -s ${setupScript} $out/bin/bark-gui
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A Gradio Web UI for an extended - easy to use - Bark Version";
|
description = "A Gradio Web UI for an extended - easy to use - Bark Version.";
|
||||||
homepage = "https://github.com/C0untFloyd/bark-gui";
|
homepage = "https://github.com/C0untFloyd/bark-gui";
|
||||||
mainProgram = "bark-gui";
|
mainProgram = "bark-gui";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -84,11 +84,10 @@ in
|
||||||
|
|
||||||
src = inputs.kohya_ss-src;
|
src = inputs.kohya_ss-src;
|
||||||
|
|
||||||
mkkohya_ssVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args);
|
mkkohya_ssVariant = args: python3Variants.nvidia.callPackage ./package.nix ({ inherit src; } // args);
|
||||||
in {
|
in {
|
||||||
packages = {
|
packages = {
|
||||||
kohya_ss-nvidia = mkkohya_ssVariant {
|
kohya_ss-nvidia = mkkohya_ssVariant {
|
||||||
python3Packages = python3Variants.nvidia;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
legacyPackages = {
|
legacyPackages = {
|
||||||
|
|
|
||||||
|
|
@ -1,114 +1,190 @@
|
||||||
{ python3Packages
|
{ lib
|
||||||
, lib
|
, pythonRelaxDepsHook
|
||||||
, src
|
, pip
|
||||||
|
, src
|
||||||
|
, deforum
|
||||||
|
, inflection
|
||||||
|
, gdown
|
||||||
|
, altair
|
||||||
|
, aiofiles
|
||||||
|
, openclip
|
||||||
|
, semver
|
||||||
|
, numpy
|
||||||
|
, torchsde
|
||||||
|
, uvicorn
|
||||||
|
, pyperclip
|
||||||
|
, invisible-watermark
|
||||||
|
, fastapi
|
||||||
|
, fastapi-events
|
||||||
|
, fastapi-socketio
|
||||||
|
, timm
|
||||||
|
, scikit-image
|
||||||
|
, controlnet-aux
|
||||||
|
, compel
|
||||||
|
, python-dotenv
|
||||||
|
, uvloop
|
||||||
|
, watchfiles
|
||||||
|
, httptools
|
||||||
|
, websockets
|
||||||
|
, dnspython
|
||||||
|
, albumentations
|
||||||
|
, opencv4
|
||||||
|
, pudb
|
||||||
|
, imageio
|
||||||
|
, imageio-ffmpeg
|
||||||
|
, npyscreen
|
||||||
|
, pytorch-lightning
|
||||||
|
, protobuf
|
||||||
|
, omegaconf
|
||||||
|
, test-tube
|
||||||
|
, einops
|
||||||
|
, taming-transformers-rom1504
|
||||||
|
, torch-fidelity
|
||||||
|
, torchmetrics
|
||||||
|
, transformers
|
||||||
|
, kornia
|
||||||
|
, k-diffusion
|
||||||
|
, picklescan
|
||||||
|
, diffusers
|
||||||
|
, pypatchmatch
|
||||||
|
, realesrgan
|
||||||
|
, pillow
|
||||||
|
, send2trash
|
||||||
|
, flask
|
||||||
|
, flask-cors
|
||||||
|
, dependency-injector
|
||||||
|
, gfpgan
|
||||||
|
, eventlet
|
||||||
|
, clipseg
|
||||||
|
, getpass-asterisk
|
||||||
|
, safetensors
|
||||||
|
, datasets
|
||||||
|
, accelerate
|
||||||
|
, easing-functions
|
||||||
|
, dynamicprompts
|
||||||
|
, torchvision
|
||||||
|
, lark
|
||||||
|
, gradio
|
||||||
|
, gradio-client
|
||||||
|
, tomesd
|
||||||
|
, piexif
|
||||||
|
, blendmodes
|
||||||
|
, poetry-core
|
||||||
|
, xformers
|
||||||
|
, python-multipart
|
||||||
|
, buildPythonPackage
|
||||||
|
, easygui
|
||||||
|
, rich
|
||||||
}:
|
}:
|
||||||
python3Packages.buildPythonPackage {
|
buildPythonPackage {
|
||||||
pname = "kohya_ss";
|
pname = "kohya_ss";
|
||||||
format = "other";
|
format = "pyproject";
|
||||||
version = "v22.1.1";
|
version = "v22.1.1";
|
||||||
inherit src;
|
inherit src;
|
||||||
propagatedBuildInputs = with python3Packages; [
|
propagatedBuildInputs = [
|
||||||
deforum
|
deforum
|
||||||
inflection
|
rich
|
||||||
gdown
|
inflection
|
||||||
altair
|
gdown
|
||||||
aiofiles
|
altair
|
||||||
openclip
|
aiofiles
|
||||||
semver
|
openclip
|
||||||
numpy
|
semver
|
||||||
torchsde
|
numpy
|
||||||
uvicorn
|
torchsde
|
||||||
pyperclip
|
uvicorn
|
||||||
invisible-watermark
|
pyperclip
|
||||||
fastapi
|
invisible-watermark
|
||||||
fastapi-events
|
fastapi
|
||||||
fastapi-socketio
|
fastapi-events
|
||||||
timm
|
fastapi-socketio
|
||||||
scikit-image
|
timm
|
||||||
controlnet-aux
|
scikit-image
|
||||||
compel
|
controlnet-aux
|
||||||
python-dotenv
|
compel
|
||||||
uvloop
|
python-dotenv
|
||||||
watchfiles
|
uvloop
|
||||||
httptools
|
watchfiles
|
||||||
websockets
|
httptools
|
||||||
dnspython
|
websockets
|
||||||
albumentations
|
dnspython
|
||||||
opencv4
|
albumentations
|
||||||
pudb
|
opencv4
|
||||||
imageio
|
pudb
|
||||||
imageio-ffmpeg
|
imageio
|
||||||
compel
|
imageio-ffmpeg
|
||||||
npyscreen
|
compel
|
||||||
pytorch-lightning
|
npyscreen
|
||||||
protobuf
|
pytorch-lightning
|
||||||
omegaconf
|
protobuf
|
||||||
test-tube
|
omegaconf
|
||||||
einops
|
test-tube
|
||||||
taming-transformers-rom1504
|
einops
|
||||||
torch-fidelity
|
taming-transformers-rom1504
|
||||||
torchmetrics
|
torch-fidelity
|
||||||
transformers
|
torchmetrics
|
||||||
kornia
|
transformers
|
||||||
k-diffusion
|
kornia
|
||||||
picklescan
|
k-diffusion
|
||||||
diffusers
|
picklescan
|
||||||
pypatchmatch
|
diffusers
|
||||||
realesrgan
|
pypatchmatch
|
||||||
pillow
|
realesrgan
|
||||||
send2trash
|
pillow
|
||||||
flask
|
send2trash
|
||||||
flask-cors
|
flask
|
||||||
dependency-injector
|
flask-cors
|
||||||
gfpgan
|
dependency-injector
|
||||||
eventlet
|
gfpgan
|
||||||
clipseg
|
eventlet
|
||||||
getpass-asterisk
|
clipseg
|
||||||
safetensors
|
getpass-asterisk
|
||||||
datasets
|
safetensors
|
||||||
accelerate
|
datasets
|
||||||
easing-functions
|
accelerate
|
||||||
dynamicprompts
|
easing-functions
|
||||||
torchvision
|
dynamicprompts
|
||||||
test-tube
|
torchvision
|
||||||
lark
|
test-tube
|
||||||
gradio
|
lark
|
||||||
gradio-client
|
gradio
|
||||||
tomesd
|
gradio-client
|
||||||
piexif
|
tomesd
|
||||||
blendmodes
|
piexif
|
||||||
xformers
|
blendmodes
|
||||||
python-multipart
|
poetry-core
|
||||||
];
|
xformers
|
||||||
nativeBuildInputs = with python3Packages; [ pythonRelaxDepsHook pip ];
|
python-multipart
|
||||||
|
easygui
|
||||||
|
];
|
||||||
|
nativeBuildInputs = [ pythonRelaxDepsHook pip ];
|
||||||
pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" "opencv-python" ];
|
pythonRemoveDeps = [ "clip" "pyreadline3" "flaskwebgui" "opencv-python" ];
|
||||||
pythonRelaxDeps = [ "dnspython" "flask" "requests" "numpy" "pytorch-lightning" "torchsde" "uvicorn" "invisible-watermark" "accelerate" "scikit-image" "safetensors" "torchvision" "test-tube" "fastapi" ];
|
pythonRelaxDeps = [ "dnspython" "flask" "requests" "numpy" "pytorch-lightning" "torchsde" "uvicorn" "invisible-watermark" "accelerate" "scikit-image" "safetensors" "torchvision" "test-tube" "fastapi" ];
|
||||||
|
|
||||||
dontUsePytestCheck = true;
|
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
dontUsePytestCheck = true;
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
cp -r . $out
|
mkdir -p $out
|
||||||
chmod -R +w $out
|
cp -r . $out
|
||||||
cd $out
|
cd $out
|
||||||
|
|
||||||
--run setup.sh
|
mkdir -p $out/bin
|
||||||
mkdir -p $out/bin
|
sed -i "2i echo $OSTYPE" $out/setup.sh
|
||||||
mv gui.sh $out/bin/gui.sh
|
chmod +x kohya_gui.py
|
||||||
|
sed -i '10d' $out/library/localization.py
|
||||||
|
sed -i "10i\ \ \ \ dirname = '$out/localizations'" $out/library/localization.py
|
||||||
|
sed -i "1i #!/bin/python" $out/kohya_gui.py
|
||||||
|
echo "$(python --version)"
|
||||||
|
makeWrapper $out/kohya_gui.py $out/bin/gui_wrapped.py --set-default PYTHONPATH $PYTHONPATH
|
||||||
|
chmod +x $out/bin/gui_wrapped.py
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "GUI for Kohya's Stable Diffusion trainers";
|
description = "GUI for Kohya's Stable Diffusion trainers";
|
||||||
homepage = "https://github.com/bmaltais/kohya_ss.git";
|
homepage = "https://github.com/bmaltais/kohya_ss.git";
|
||||||
mainProgram = "gui.sh";
|
mainProgram = "gui_wrapped.py";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue