{ 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)) (getDirs dir); loadInstance = extraModules: instance: instanceConfigs: nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs instanceConfigs; instanceConfig = instance; }; modules = instance.modules ++ extraModules ++ [ ( { pkgs, ... }: { nixpkgs.overlays = [ (final: prev: { inherit (final.unstable.lixPackageSets.latest) nixpkgs-review nix-direnv nix-eval-jobs nix-fast-build colmena ; }) ]; nix.package = pkgs.unstable.lixPackageSets.latest.lix; } ) ( { pkgs, ... }: { nixpkgs.overlays = [ self.overlays.default ]; nixpkgs.config.allowUnfree = true; networking.hostName = instance.hostName; } ) ]; }; }