{ config, lib, pkgs, ... }: let cfg = config.nixfiles.modules.matrix.element; in { options.nixfiles.modules.matrix.element = { enable = lib.mkEnableOption "Element, a Matrix web interface"; domain = lib.mkOption { description = "Domain name sans protocol scheme."; type = with lib.types; nullOr str; default = "element.${config.networking.domain}"; }; homeserver = lib.mkOption { description = "Default Matrix homeserver."; type = lib.types.str; default = lib.my.domain.azahi; }; }; config = lib.mkIf cfg.enable { assertions = [ { assertion = with config.nixfiles.modules.matrix; (synapse.enable || dendrite.enable) && !(!synapse.enable && !dendrite.enable); message = "Synapse or Dendrite must be enabled"; } ]; nixfiles.modules.nginx = { enable = true; virtualHosts.${cfg.domain}.locations."/".root = pkgs.element-web.override { conf = { default_server_config."m.homeserver" = { base_url = "https://${cfg.homeserver}"; server_name = cfg.homeserver; }; disable_custom_urls = true; disable_guests = true; disable_login_language_selector = true; disable_3pid_login = true; brand = cfg.homeserver; branding.authFooterLinks = [ { text = "NixOS"; url = "https://nixos.org"; } ]; default_theme = "dark"; }; }; }; }; }