commit b18be6283dbe39b102f7e19429809c9f90bea2e5
parent 25b46eecc76641d1ef473cf5f73c41dff7db4e8b
Author: Katja (zaphyra) <git@ctu.cx>
Date: Mon, 26 May 2025 10:39:07 +0200
parent 25b46eecc76641d1ef473cf5f73c41dff7db4e8b
Author: Katja (zaphyra) <git@ctu.cx>
Date: Mon, 26 May 2025 10:39:07 +0200
config/nixos/modules/presets/katja/mautrixBridges: add `whatsapp` (and enable on host `morio`)
3 files changed, 100 insertions(+), 2 deletions(-)
A
|
96
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/config/nixos/modules/presets/katja/mautrixBridges/whatsapp.nix b/config/nixos/modules/presets/katja/mautrixBridges/whatsapp.nix @@ -0,0 +1,96 @@ +{ + povSelf, + pkgs, + lib, + config, + hostConfig, + ... +}: +let + inherit (lib) types; + cfg = lib.getAttrFromPath povSelf config; + +in +{ + + options.enable = { + type = types.bool; + default = false; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = config.modules.websites."grapevine.zaphyra.eu".enable == true; + message = "The option 'modules.websites.\"grapevine.zaphyra.eu\"' must be enabled in order to use this module."; + } + ]; + + sops.secrets."environments/mautrixBridges/whatsapp" = { }; + + modules.services.mautrixBridge.whatsapp = { + enable = true; + package = pkgs.mautrix-whatsapp.override { withGoolm = true; }; + serviceDependencies = [ "grapevine.service" ]; + environmentFile = config.sops.secrets."environments/mautrixBridges/whatsapp".path; + settings = rec { + network = { + displayname_template = "{{or .BusinessName .PushName .Phone}} (WA)"; + os_name = "Mautrix-WhatsApp (on ${homeserver.domain})"; + identity_change_notices = true; + url_previews = true; + history_sync = { + request_full_sync = true; + full_sync_config.days_limit = 1000; + full_sync_config.size_mb_limit = 1024; + full_sync_config.storage_quota_mb = 1024; + }; + }; + + homeserver.address = "http://[::1]:6167/"; + homeserver.domain = "zaphyra.eu"; + + database.type = "sqlite3-fk-wal"; + database.uri = "file:/var/lib/mautrix-whatsapp/mautrix-whatsapp.db?_txlock=immediate"; + + encryption.allow = true; + encryption.default = true; + encryption.pickle_key = "$MAUTRIX_PICKLE_KEY"; + + relay.enabled = false; + backfill.enabled = true; + backfill.max_initial_messages = 100; + + # double_puppet.secrets."${homeserver.domain}" = "as_token:$MAUTRIX_DOUBLE_PUPPET_SHARED_SECRET"; + + appservice = { + id = "whatsapp"; + address = "http://[::1]:29318/"; + hostname = "[::1]"; + port = 29318; + as_token = "$MAUTRIX_AS_TOKEN"; + hs_token = "$MAUTRIX_HS_TOKEN"; + }; + + bridge = { + personal_filtering_spaces = true; + + permissions."${homeserver.domain}" = "admin"; + + cleanup_on_logout = + { + enabled = true; + } + // (lib.genAttrs [ "manual" "bad_credentials" ] (name: { + shared_has_users = "delete"; + shared_no_users = "delete"; + relayed = "delete"; + private = "delete"; + })); + }; + }; + }; + + }; + +}
diff --git a/hosts/morio/default.nix b/hosts/morio/default.nix @@ -63,6 +63,7 @@ dnsServer.enable = true; mailServer.enable = true; mautrixBridges.signal.enable = true; + mautrixBridges.whatsapp.enable = true; }; };
diff --git a/secrets/morio.yaml b/secrets/morio.yaml @@ -17,6 +17,7 @@ environments: vaultwarden: ENC[AES256_GCM,data:kIFPmYWNZ/n+azRhLFUA+AbBH4QpV1qOvRBVRB7RcxPmntqJuXQR1/7bqIjTGKc6H6Xzh4nhXtrHIBusF4IMz4vRa47ZQ35Kkuj+VVRXTx6KebFQSsN0PggvSsDQHtjInXge3KbszTSmptm58O2hLTznln7220vvWTJw+zIZZPhnwCc61sa+6BcakUmm2Mvv9DsO3TRzO6de94DiRpFrohBDOmszfDKPvURKW+QWnL+242H4NxttvzwhSN2dCyECTfbFhpVbK9aDjhI9Sl1pX4lwYZgtg2VbiVr61iNter+q6cLzWe6sOKCoCONO79DENKnsMoDa693rF1vQoPP1QVKsuWc+uxXFxfArZzmHLcxMJTo=,iv:dhV8x1ckZgpjZLs2r+X3Dqks5RXJMxfxAhff6MmQUBM=,tag:lSgrK+T0CqJCe/idwuG37A==,type:str] mautrixBridges: signal: ENC[AES256_GCM,data:PuyUzSf4Xl3eJDDoDSX3gz6B1oXXiMWeECtOs3pmd2n6rJYRWRD7Ve6iz6a9/VdIFNomNSyGVBPJ6y+YZlD3Gq4g+U3a6hsAsBbIU4REVP/9igwLmP+fB3FMNzE9gcN0MSZx5dxSEFuVGgktvGH9Vb7SSHfjhPxfhRd67SS+MFrxwYCpfxlh9PxKBT3EqA8hWgPB7bxBcaW/khf996xdMfHeaxxQAXDyanOgIn5iDtrM9PbHsEpS8xlN1fSVQKYbQgz+WnL+7hudvj/rXeGNVxMXd//7JTsopzslGQ1JtgwN9fJ8uDKytWux54dmSvdUL35cDgmn/4AUSL/hQvOm4i12+9MbOj9/9l6clp+BSS2fI1XhDWEWOqG7/Cb85ABRmQzDlE3EfMPQF4HY4PKh1F+Xy1BgbbWSDoeQEs3jWqO6Qgq3fW8RO06/DU/11IFb0BhSAyUrlB9FnD4mvMY2Sf9Sdw5hUsuJ2psPSLCrjiYoPnOyIuELCctW3SkBeNn1,iv:Min6Y4qEZQAxQ2gTQR5+vZuSeY0YY3Wa6ixr6NnHhPY=,tag:3qB8BHmPCyFLYR7j2HxgVA==,type:str] + whatsapp: ENC[AES256_GCM,data:7vGIEBWX2Pu8y3pb69cOAMRTG37F5Yg82OkJDzpxk86+q5JLYCSjPEUR90OdyguKb8Ru4TMbqRw87pWkV2AA8YUMY6RUKzgeRghXNZQjhLo6eFTYxGILkjw+7CeuwJlzlmvbunvO1iuV8TduGSQSN+9rCyugHeqoMldRIcgHLkTBJ5XwsT/8gGzwlGsGD3GOr3weeAhCCZc4jRKlep3h3oGi3WqabpG8Pjp9FTCpVi7JuFA9cSXbSpiVU7PwG8ACDeZqcGTn3dQhdtYrBvBkiGgMY3Bjn8O73/6m6xJ1TChqPOMiR5xWBA0hdKUQImOo7qEbGqsWew1ucejrP8Skj6BOUDHag1r7eKNtXYxSstAXt3u7UVZbyX641SJ8umezpQtr+A+WiCrZZAOhGf5tgZRh3zCGaMOO8HjpEj0dvpgs73ZPpzPGxvDk7Yvws22Oka7vlBeqLknAFAV7SA7ZqakqPXeFlYt9PMVCPHTZTzDrzwpRyEnTmilPyto0lJX3,iv:7voliAT5vclU+ZPtoYr3+TCOa42eNJ+iEHMn5rwdg4Q=,tag:tDai6Pf1wx6Pt4qGAo7KYw==,type:str] sops: age: - recipient: age1wpffcr5p88a2x9dzx5v3sq4jqurvygu94fx773n229fqk4p95qzs840cmn @@ -28,8 +29,8 @@ sops: bDRhUEtDdmlZa0ZENFhSVnNqVjFCR1UKEIkSg3tKFkwlnNXFFqCBtdZBGz1bEmWl wghkTtqTl++759zZAAmjdnFFQWs/AoCZ5g/GUidz6HHcFdxMpGVmiA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-05-26T07:31:04Z" - mac: ENC[AES256_GCM,data:PA6Y0U/zotdJPKa0LiMC7vvIiuyhw0L1mNv5mtKRvnQNhnTpjOFDCtS1vYNzurw1GlCh//KspxJK3hNZhXpPzDSM5GIz+JxLTS1LdACyN28vlb3n4pRvRflNjet765S6MVLzoPat/9ebeYghxlGTzXntckaKvj0YwBeIVEeMYEQ=,iv:IdwSgEt2Jmom9UYZKDnkZRIY6AmWIodK4a6rW2NmUEQ=,tag:TQPSKgE5He++PwOkPcrOtQ==,type:str] + lastmodified: "2025-05-26T08:23:49Z" + mac: ENC[AES256_GCM,data:eGXn/YP0CEqyHPxYBJrQw85FHbX+iU0TPSe0MeJzF2svkT23UtAHM0tMCBTB06UfG25zBs6XFjQ9q/rB3L1yVGlBAbnvn3aPXAvym59O4utVO1q2Wd/l+Bvglr17IJbKRNy5TQLo8d1FO9tJQnAaaeeSvtYVlMt8AuU9Wn9hUcQ=,iv:Jvk5OsYWH+spq2WVsL2F+V5+MHjkuZ/xHiw5v+uBxkY=,tag:bgLJsV908myIHDGGGXPYvw==,type:str] pgp: - created_at: "2025-05-21T08:09:28Z" enc: |-