{ inputs, ... }: let inherit (inputs) self; inherit (self) lib; inherit (lib.attrsets) listToAttrs; inherit (lib.path) append; createHost' = extraModules: hostDir: lib.nixosSystem { system = null; specialArgs = { inherit lib inputs self; }; modules = [ hostDir ../modules ./common/core ] ++ extraModules; }; createHost = createHost' []; createDesktop = createHost' [ ./common/desktop ]; createServer = createHost' []; createHosts = hosts: listToAttrs (map (host: let createFn = { desktop = createDesktop; server = createServer; generic = createHost; }."${host.type}"; path' = append host.dir "system.nix"; cfg = (import path') { inherit inputs; }; in { name = cfg.poz.other.system.hostname; value = createFn host.dir; }) hosts); in createHosts [ { dir = ./niks; type = "desktop"; } { dir = ./del; type = "desktop"; } { dir = ./hape; type = "desktop"; } { dir = ./chmura; type = "server"; } { dir = ./work; type = "desktop"; } ]