{config, lib, ...}: let inherit (lib.options) mkOption; inherit (lib.modules) mkOptionDefault; cfg = config.services.keycloak; in { options.services.keycloak = with lib.types; { protocol = mkOption { type = enum [ "http" "https" ]; readOnly = true; }; port = mkOption { type = port; readOnly = true; }; }; config.services.keycloak = { protocol = mkOptionDefault (if cfg.sslCertificate != null then "https" else "http"); port = mkOptionDefault cfg.settings."${cfg.protocol}-port"; }; }