Simon Bruder
10b8d432d5
This applies the REUSE specification to the repository, so the licensing information can be tracked for every file individually.
86 lines
2.6 KiB
Nix
86 lines
2.6 KiB
Nix
# SPDX-FileCopyrightText: 2021-2023 Simon Bruder <simon@sbruder.de>
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# somewhat adapted from https://github.com/NixOS/nixpkgs/pull/59211
|
|
{ config, lib, pkgs, ... }:
|
|
let
|
|
synapseCfg = config.services.matrix-synapse.settings;
|
|
in
|
|
let
|
|
config = rec {
|
|
homeserver = {
|
|
address = synapseCfg.public_baseurl;
|
|
domain = synapseCfg.server_name;
|
|
};
|
|
appservice = rec {
|
|
hostname = "127.0.0.1";
|
|
port = 29318;
|
|
address = "http://${hostname}:${toString port}";
|
|
provisioning.shared_secret = "disable";
|
|
database = {
|
|
type = "sqlite3";
|
|
uri = "/var/lib/mautrix-whatsapp/mautrix-whatsapp.db";
|
|
};
|
|
id = "whatsapp";
|
|
bot = {
|
|
username = "whatsappbot";
|
|
displayname = "WhatsApp bridge bot";
|
|
avatar = "mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr";
|
|
};
|
|
};
|
|
whatsapp = {
|
|
browser_name = "mx-wa";
|
|
os_name = "Mautrix-WhatsApp bridge";
|
|
};
|
|
bridge = {
|
|
command_prefix = "!wa";
|
|
delivery_receipts = true;
|
|
displayname_template = "{{if .FullName}}{{.FullName}}{{else if .Notify}}{{.Notify}}{{else}}{{.Jid}}{{end}} (WA)";
|
|
history_sync = {
|
|
backfill = true;
|
|
};
|
|
identity_change_notices = true;
|
|
permissions = {
|
|
# Only one user since using the name from the address book does not
|
|
# work with multiple users
|
|
"@simon:${homeserver.domain}" = 100;
|
|
};
|
|
private_chat_portal_meta = true;
|
|
reaction_notices = true;
|
|
relay.enable = false;
|
|
};
|
|
logging = {
|
|
print_level = "info";
|
|
file_name_format = null;
|
|
};
|
|
};
|
|
|
|
generatedConfig = pkgs.runCommandNoCC "mautrix-whatsapp-config"
|
|
{
|
|
buildInputs = with pkgs; [ mautrix-whatsapp ];
|
|
}
|
|
''
|
|
mkdir $out
|
|
cat ${pkgs.writeText "mautrix-whatsapp.yaml" (lib.generators.toYAML { } config)} > $out/config.yaml
|
|
mautrix-whatsapp -c $out/config.yaml -g -r $out/registration.yaml
|
|
'';
|
|
in
|
|
{
|
|
systemd.services.mautrix-whatsapp = {
|
|
description = "Mautrix-WhatsApp Service - A WhatsApp bridge for Matrix";
|
|
after = [ "network.target" "matrix-synapse.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
DynamicUser = true;
|
|
StateDirectory = "mautrix-whatsapp";
|
|
WorkingDirectory = "/var/lib/mautrix-whatsapp";
|
|
ExecStart = "${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp -c ${generatedConfig}/config.yaml";
|
|
Restart = "on-failure";
|
|
};
|
|
};
|
|
|
|
services.matrix-synapse.settings.app_service_config_files = lib.singleton "${generatedConfig}/registration.yaml";
|
|
}
|