@cryptotaxi247 / infra / commits / 83d47bbb

non-critical-infra/element-web: init on chat.nixos.org

This is in line with the previous set up and was used by the moderation team, as a client to access the administrative account.

Martin Weinelt committed May 16, 2024 at 14:01 UTC 83d47bbb61bd8dda82710adb700896189b7fc34b
2 files changed +66
non-critical-infra/hosts/caliban.nixos.org/default.nix
+1
@@ -8,6 +8,7 @@
8 inputs.srvos.nixosModules.hardware-hetzner-online-amd
9 ../../modules/first-time-contribution-tagger.nix
10 ../../modules/backup.nix
11 + ../../modules/element-web.nix
12 ../../modules/matrix-synapse.nix
13 ../../modules/vaultwarden.nix
14 ];
non-critical-infra/modules/element-web.nix new
+65
@@ -0,0 +1,65 @@
1 +{ pkgs, ... }:
2 +let
3 + domainName = "chat.nixos.org";
4 +
5 + # https://github.com/element-hq/element-web/blob/develop/config.sample.json
6 + elementWebConfig = {
7 + default_server_config = {
8 + "m.homeserver" = {
9 + base_url = "https://matrix.nixos.org";
10 + server_name = "nixos.org";
11 + };
12 + "m.identity_server" = {
13 + base_url = "https://vector.im";
14 + };
15 + };
16 + disable_custom_urls = false;
17 + disable_guests = false;
18 + disable_login_language_selector = false;
19 + disable_3pid_login = false;
20 + brand = "Element";
21 + integrations_ui_url = "https://scalar.vector.im/";
22 + integrations_rest_url = "https://scalar.vector.im/api";
23 + integrations_widgets_urls = [
24 + "https://scalar.vector.im/_matrix/integrations/v1"
25 + "https://scalar.vector.im/api"
26 + "https://scalar-staging.vector.im/_matrix/integrations/v1"
27 + "https://scalar-staging.vector.im/api"
28 + "https://scalar-staging.riot.im/scalar/api"
29 + ];
30 + integrations_jitsi_widget_url = "https://scalar.vector.im/api/widgets/jitsi.html";
31 + bug_report_endpoint_url = "https://riot.im/bugreports/submit";
32 + default_country_code = "GB";
33 + show_labs_settings = true;
34 + features = { };
35 + default_federate = true;
36 + default_theme = "light";
37 + roomDirectory = {
38 + servers = [ ];
39 + };
40 + settingDefaults = {
41 + breadcrumbs = true;
42 + };
43 + jitsi = {
44 + preferred_domain = "meet.element.io";
45 + };
46 + element_call = {
47 + url = "https://call.element.io";
48 + participant_limit = 8;
49 + brand = "Element Call";
50 + };
51 + map_style_url = "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx";
52 + };
53 +in
54 +{
55 + security.acme.certs."${domainName}".reloadServices = [ "nginx.service" ];
56 +
57 + services.nginx.virtualHosts."${domainName}" = {
58 + enableACME = true;
59 + forceSSL = true;
60 +
61 + root = pkgs.element-web.override (old: {
62 + conf = elementWebConfig;
63 + });
64 + };
65 +}