Add the following to your inputs:
stable-diffusion-webui-nix = {
url = "github:Janrupf/stable-diffusion-webui-nix/main";
inputs.nixpkgs.follows = "nixpkgs";
};
Then add the overlay to your system configuration:
{
nixpkgs.overlays = [ stable-diffusion-webui-nix.overlays.default ];
}
Finally add the package to your packages:
environment.systemPackages = [ pkgs.stable-diffusion-webui ];
Afterwards you should have the command stable-diffusion-webui
available which launches the server.
Data is by default stored in $HOME/.local/share/stable-diffusion-webui
, this can be
overwritten by using the --data-dir /another/path
argument when starting the Web UI.
Running Stable Diffusion models requires CUDA and thus depends on packages which are by default not available in the NixOS cache. Add the cuda-maintainers Cachix as a substituter to your Nix configuration. See the NixOS Wiki for more information.
Due to the nature of python package management, this flake is quite complex.
- update the Web UI commit hash in
source/default.nix
(and other sources). - run
nix run .#stable-diffusion-webui-update-requirements requirements/requirements.json
to update the requirements metadata - try running the Web UI using
nix run .
and test everything
NOTE: If you get an error that you have run out of disk space during step 2, your
/tmp
is too small. Either increase the tmpfs size or run the command with TMPDIR
set to a different directory. Generally, if step 2 fails the temporary directory
may not be deleted, you are free to rm -rf
it, but it can be useful for inspecting
why it failed.
This flake supports the usual mechanism of opening a development shell with a proper
python environment set up already. Run nix develop
to open this shell.
Please note that this shell does not come with a virtual environment. If you need to update requirements, do so as described above.