{ lib, inputs, self, }: let registryAssembly = import ./registry.nix { inherit lib self; }; modules = import ./modules.nix { inherit lib; }; flakeLib = import ../lib { inherit lib; }; moduleFiles = modules.mkModules (self + "/modules"); guestFiles = modules.mkModules (self + "/guests"); collectedRegistry = registryAssembly.collect { hosts = self.nixosConfigurations; }; specialArgs = { inherit flake inputs self ; registry = collectedRegistry; }; flake = { inherit (hosts) mkHosts; inherit (guests) mkGuest; lib = flakeLib; }; guests = import ./guests.nix { inherit inputs lib self specialArgs moduleFiles registryAssembly flakeLib ; }; hosts = import ./hosts.nix { inherit inputs lib self specialArgs moduleFiles guestFiles registryAssembly ; }; in flake