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
+}