summaryrefslogtreecommitdiff
path: root/nix/modules/mautrix.nix
diff options
context:
space:
mode:
authorPreston Pan <ret2pop@gmail.com>2025-09-18 22:33:36 -0700
committerPreston Pan <ret2pop@gmail.com>2025-09-18 22:33:36 -0700
commitbb31a5a879154432e11a75e69070b58004ddc07b (patch)
tree4bd092f8808e32947629b75e708830699d4773dc /nix/modules/mautrix.nix
parentcae70df061d9fc4f33a2da66a21c86eb3eb1fa3b (diff)
big refactor
Diffstat (limited to 'nix/modules/mautrix.nix')
-rw-r--r--nix/modules/mautrix.nix150
1 files changed, 150 insertions, 0 deletions
diff --git a/nix/modules/mautrix.nix b/nix/modules/mautrix.nix
new file mode 100644
index 0000000..5eacb4a
--- /dev/null
+++ b/nix/modules/mautrix.nix
@@ -0,0 +1,150 @@
+{ lib, config, ... }:
+{
+ services.mautrix-discord = {
+ enable = lib.mkDefault config.monorepo.profiles.server.enable;
+ environmentFile = "/etc/mautrix";
+ settings = {
+ bridge = {
+ animated_sticker = {
+ args = {
+ fps = 25;
+ height = 320;
+ width = 320;
+ };
+ target = "webp";
+ };
+ autojoin_thread_on_open = true;
+ avatar_proxy_key = "generate";
+ backfill = {
+ forward_limits = {
+ initial = {
+ channel = 0;
+ dm = 0;
+ thread = 0;
+ };
+ max_guild_members = -1;
+ missed = {
+ channel = 0;
+ dm = 0;
+ thread = 0;
+ };
+ };
+ };
+ cache_media = "unencrypted";
+ channel_name_template = "{{if or (eq .Type 3) (eq .Type 4)}}{{.Name}}{{else}}#{{.Name}}{{end}}";
+ command_prefix = "!discord";
+ custom_emoji_reactions = true;
+ delete_guild_on_leave = true;
+ delete_portal_on_channel_delete = false;
+ delivery_receipts = false;
+ direct_media = {
+ allow_proxy = true;
+ enabled = false;
+ server_key = "generate";
+ };
+ displayname_template = "{{if .Webhook}}Webhook{{else}}{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}{{end}}";
+ double_puppet_allow_discovery = true;
+ double_puppet_server_map = { };
+ embed_fields_as_tables = true;
+ enable_webhook_avatars = true;
+ encryption = {
+ allow = false;
+ allow_key_sharing = false;
+ appservice = false;
+ default = false;
+ delete_keys = {
+ delete_fully_used_on_decrypt = false;
+ delete_on_device_delete = false;
+ delete_outbound_on_ack = false;
+ delete_outdated_inbound = false;
+ delete_prev_on_new_session = false;
+ dont_store_outbound = false;
+ periodically_delete_expired = false;
+ ratchet_on_decrypt = false;
+ };
+ msc4190 = false;
+ plaintext_mentions = false;
+ require = false;
+ rotation = {
+ disable_device_change_key_rotation = false;
+ enable_custom = false;
+ messages = 100;
+ milliseconds = 604800000;
+ };
+ verification_levels = {
+ receive = "unverified";
+ send = "unverified";
+ share = "cross-signed-tofu";
+ };
+ };
+ federate_rooms = true;
+ guild_name_template = "{{.Name}}";
+ login_shared_secret_map = { };
+ management_room_text = {
+ additional_help = "";
+ welcome = "Hello, I'm a Discord bridge bot.";
+ welcome_connected = "Use `help` for help.";
+ welcome_unconnected = "Use `help` for help or `login` to log in.";
+ };
+ message_error_notices = true;
+ message_status_events = false;
+ mute_channels_on_create = false;
+ permissions = {
+ "@${config.monorepo.vars.internetName}:matrix.${config.monorepo.vars.orgHost}" = "admin";
+ "*" = "user";
+ };
+ portal_message_buffer = 128;
+ prefix_webhook_messages = true;
+ private_chat_portal_meta = "default";
+ provisioning = {
+ debug_endpoints = false;
+ prefix = "/_matrix/provision";
+ shared_secret = "generate";
+ };
+ public_address = null;
+ resend_bridge_info = false;
+ restricted_rooms = false;
+ startup_private_channel_create_limit = 5;
+ sync_direct_chat_list = false;
+ use_discord_cdn_upload = true;
+ username_template = "discord_{{.}}";
+ };
+
+ appservice = {
+ address = "http://localhost:29334";
+ hostname = "0.0.0.0";
+ port = 29334;
+ id = "discord";
+ bot = {
+ username = "discordbot";
+ displayname = "Discord bridge bot";
+ avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
+ };
+ ephemeral_events = true;
+ async_transactions = false;
+ database = {
+ type = "sqlite3";
+ uri = "file:${config.services.mautrix-discord.dataDir}/mautrix-discord.db?_txlock=immediate";
+ max_open_conns = 20;
+ max_idle_conns = 2;
+ max_conn_idle_time = null;
+ max_conn_lifetime = null;
+ };
+ as_token = "$MAUTRIX_DISCORD_APPSERVICE_AS_TOKEN";
+ hs_token = "$MAUTRIX_DISCORD_APPSERVICE_HS_TOKEN";
+ };
+
+ dataDir = "/var/lib/mautrix-discord";
+ homeserver = {
+ async_media = false;
+ message_send_checkpoint_endpoint = null;
+ ping_interval_seconds = 0;
+ software = "standard";
+ status_endpoint = null;
+ websocket = false;
+ domain = "matrix.${config.monorepo.vars.orgHost}";
+ address = "http://localhost:6167";
+ };
+ };
+ };
+}