{ config, lib, ... }: with lib; let getHostConfigurations = svcConfig: hostName: lib.mapAttrsToList (groupName: _: svcConfig.nixos.${groupName}) (lib.filterAttrs (_: v: lib.elem hostName v) svcConfig.nodes); getServiceConfigurations = svcConfig: getHostConfigurations svcConfig config.vars.hostName; in { options.services = mkOption { description = "Cluster services."; type = with types; attrsOf (submodule (import ./service-module.nix config.vars)); default = {}; }; config.out.injectedNixosConfig = lib.flatten (lib.mapAttrsToList (_: getServiceConfigurations) config.services); }