{ lib, nixpkgs, inputs, self, ... }: rec { getDirs = parentDir: lib.mapAttrs (n: v: (import "${parentDir}/${n}")) ( lib.filterAttrs (n: v: v == "directory") (builtins.readDir parentDir) ); loadInstances = dir: extraModules: lib.mapAttrs (n: v: loadInstance extraModules v) (getDirs dir); loadInstance = extraModules: instance: nixpkgs.lib.nixosSystem { system = instance.system; specialArgs = { inherit inputs; }; modules = instance.modules ++ extraModules ++ [ { nixpkgs.overlays = [ self.overlays.default ]; nixpkgs.config.allowUnfree = true; networking.hostName = instance.hostName; } ]; }; }