{
  kubernetes.customTypes = {
    # HACK: These are dummy custom types.
    # This is needed, because the CRDs imported as a chart are not available as Nix modules.
    # There is no nix-based validation on resources defined using these types!
    # See: https://github.com/hall/kubenix/issues/34
    ipAddressPool = {
      attrName = "ipAddressPools";
      group = "metallb.io";
      version = "v1beta1";
      kind = "IPAddressPool";
    };

    l2Advertisement = {
      attrName = "l2Advertisements";
      group = "metallb.io";
      version = "v1beta1";
      kind = "L2Advertisement";
    };

    helmChartConfig = {
      attrName = "helmChartConfigs";
      group = "helm.cattle.io";
      version = "v1";
      kind = "HelmChartConfig";
    };

    clusterIssuer = {
      attrName = "clusterIssuers";
      group = "cert-manager.io";
      version = "v1";
      kind = "ClusterIssuer";
    };

    recurringJob = {
      attrName = "recurringJobs";
      group = "longhorn.io";
      version = "v1beta1";
      kind = "RecurringJob";
    };

    middlewares = {
      attrName = "middlewares";
      group = "traefik.io";
      version = "v1alpha1";
      kind = "Middleware";
    };

    backuptargets = {
      attrName = "backuptargets";
      group = "longhorn.io";
      version = "v1beta1";
      kind = "BackupTarget";
    };
  };
}