{ inputs, lib, pkgs, self, ... }: let inherit (inputs.nixpkgs.lib) nixosSystem; inherit (builtins) baseNameOf elem; inherit (lib.attrsets) filterAttrs; inherit (lib.modules) mkDefault; inherit (lib.strings) removeSuffix; inherit (self.modules) mapModules; in rec { mkHost = path: attrs @ {system ? "x86_64-linux", ...}: nixosSystem { inherit system; specialArgs = { inherit lib inputs system; }; modules = [ inputs.nixos-boot.nixosModules.default { nixpkgs.pkgs = pkgs; networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path)); } (filterAttrs (n: v: !elem n ["system"]) attrs) ../. # ../default.nix (import path) ]; }; mapHosts = dir: attrs @ { system ? system, ... }: mapModules dir (hostPath: mkHost hostPath attrs); }