Flake for running SD on NixOS
Go to file
2022-10-26 23:19:58 +10:00
InvokeAI@a8b794d7e0 small cleanup in shellHook and unused packages, updated submodule 2022-10-18 19:44:06 +10:00
packages made blip work 2022-10-26 22:40:16 +10:00
stable-diffusion-webui@7f8ab1ee8f extracted patch for webui into a file 2022-10-26 23:02:03 +10:00
.gitmodules update gradio to 3.5 2022-10-25 22:56:56 +10:00
flake.lock update gradio to 3.5 2022-10-25 22:56:56 +10:00
flake.nix fixed shellHook for webui 2022-10-26 23:19:58 +10:00
README.md Update README.md 2022-10-22 19:16:47 +10:00
webui.patch extracted patch for webui into a file 2022-10-26 23:02:03 +10:00

nix-stable-diffusion

Flake for running SD on NixOS

What's done

  • Nix devShell capable of running InvokeAI's flavor of SD without need to fallback for pip or conda (including AMD ROCM support)
  • ...???
  • PROFIT

How to use it?

  1. Clone repo
  2. Clone submodule with InvokeAI
  3. Run nix develop .#invokeai.{default,nvidia,amd}, wait for shell to build
    1. .#invokeai.default builds shell which overrides bare minimum required for SD to run
    2. .#invokeai.amd builds shell which overrides torch packages with ROCM-enabled bin versions
    3. .#invokeai.nvidia builds shell with overlay explicitly setting cudaSupport = true for torch
  4. Inside InvokeAI's directory, run python scripts/preload_models.py to preload models (doesn't include SD weights)
  5. Obtain and place SD weights into models/ldm/stable-diffusion-v1/model.ckpt
  6. Run CLI with python scripts/invoke.py or GUI with python scripts/invoke.py --web
  7. For more detailed instructions consult https://invoke-ai.github.io/InvokeAI/installation/INSTALL_LINUX/

What's needed to be done

  • devShell with CUDA support (should be trivial, but requires volunteer with NVidia GPU)
  • Missing packages definitions should be submitted to Nixpkgs
  • Investigate ROCM device warning on startup
  • Apply patches so that all downloaded models would go into one specific folder
  • Should create a PR to pynixify with "skip-errors mode" so that no ugly patches would be necessary
  • Shell hooks for initial setup?
  • May be this devShell should be itself turned into a package?
  • Add additional flavors of SD ?

Acknowledgements

Many many thanks to https://github.com/cript0nauta/pynixify which generated all the boilerplate for missing python packages.
Also thanks to https://github.com/colemickens/stable-diffusion-flake and https://github.com/skogsbrus/stable-diffusion-nix-flake for inspiration and some useful code snippets.