{ inputs, lib, self, specialArgs, repositoryModules, guestFiles, registryAssembly, }: let mkHost = { hostName, system ? "x86_64-linux", }: inputs.nixpkgs.lib.nixosSystem { inherit system specialArgs; modules = [ repositoryModules ] ++ guestFiles ++ [ inputs.chaotic.nixosModules.default inputs.disko.nixosModules.disko inputs.sops-nix.nixosModules.sops inputs.stylix.nixosModules.stylix registryAssembly.module (self + "/hosts/${hostName}") { networking.hostName = hostName; modules.host.enable = true; } ]; }; mkHosts = hostsDir: let hostNames = lib.attrNames (lib.filterAttrs (_name: type: type == "directory") (builtins.readDir hostsDir)); in lib.genAttrs hostNames (hostName: mkHost { inherit hostName; }); in { inherit mkHosts; }