let mods = import ./modules; users = import ./users; sources = import ./npins; pkgs = import sources.nixpkgs-unstable { }; inherit (pkgs) lib; inherit (lib) mapAttrs mapAttrs' removeSuffix evalModules ; nodes = mapAttrs' (name: _: { name = removeSuffix ".nix" name; value = import ./machines/${name}; }) (builtins.readDir ./machines); meta' = evalModules { modules = [ ./kat/meta.nix { machines = mapAttrs (_: n: n.meta) nodes; } ]; specialArgs = { inherit pkgs sources; }; }; meta = meta'.config // { machines = mapAttrs (_: node: node.node_meta) meta'.config.machines; }; in { meta = { nixpkgs = pkgs.path; specialArgs = { inherit mods users sources meta ; kat-path = ./kat; }; nodeNixpkgs = mapAttrs (_: node: node.nixpkgs-paths.nixpkgs-src) meta.machines; nodeSpecialArgs = mapAttrs (_: node: { self-meta = node; }) meta.machines; }; defaults = { name, kat-path, ... }: { imports = [ kat-path ]; networking.hostName = name; }; } // mapAttrs (_: n: n.config) nodes