{ config, inputs, lib, withSystem, ... }: { perSystem = { config, pkgs, ... }: let inherit (config.dependencySets) aipython3-amd aipython3-nvidia; src = inputs.invokeai-src; mkInvokeAIVariant = args: pkgs.callPackage ./package.nix ({ inherit src; } // args); in { packages = { invokeai-amd = mkInvokeAIVariant { aipython3 = aipython3-amd; }; invokeai-nvidia = mkInvokeAIVariant { aipython3 = aipython3-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") ]; }; }; }