diff options
author | sils <sils@sils.li> | 2024-01-05 17:14:57 +0100 |
---|---|---|
committer | Soispha <soispha@vhack.eu> | 2024-01-06 12:13:01 +0100 |
commit | 488968f54c528ea9438da3ba02fb7d385c6ab368 (patch) | |
tree | b9414b89edb10187832411ff9031a13c023dd1e9 | |
parent | feat(flake): update to nixos-23.11 (diff) | |
download | nixos-server-488968f54c528ea9438da3ba02fb7d385c6ab368.tar.gz nixos-server-488968f54c528ea9438da3ba02fb7d385c6ab368.zip |
feat(system/services/matrix): use mautrix-whatsapp module provided by
nixpkgs
-rw-r--r-- | system/services/matrix/bridges/mautrix-whatsapp.nix | 149 | ||||
-rw-r--r-- | system/services/matrix/default.nix | 4 |
2 files changed, 0 insertions, 153 deletions
diff --git a/system/services/matrix/bridges/mautrix-whatsapp.nix b/system/services/matrix/bridges/mautrix-whatsapp.nix deleted file mode 100644 index 1c68af9..0000000 --- a/system/services/matrix/bridges/mautrix-whatsapp.nix +++ /dev/null @@ -1,149 +0,0 @@ -# TAKEN FROM: https://raw.githubusercontent.com/Vskilet/nixpkgs/mautrix-whatsapp2/nixos/modules/services/matrix/mautrix-whatsapp.nix -{ - lib, - config, - pkgs, - ... -}: -with lib; let - cfg = config.services.mautrix-whatsapp; - dataDir = "/var/lib/mautrix-whatsapp"; - settingsFormat = pkgs.formats.json {}; - - registrationFile = "${dataDir}/whatsapp-registration.yaml"; - settingsFile = settingsFormat.generate "config.json" cfg.settings; - - startupScript = '' - ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token - | .[0].appservice.hs_token = .[1].hs_token - | .[0]' ${settingsFile} ${registrationFile} \ - > ${dataDir}/config.yml - - ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ - --config='${dataDir}/config.yml' \ - --registration='${registrationFile}' - ''; -in { - options.services.mautrix-whatsapp = { - enable = mkEnableOption "Mautrix-whatsapp, a puppeting bridge between Matrix and WhatsApp."; - - settings = mkOption rec { - apply = recursiveUpdate default; - inherit (settingsFormat) type; - - description = lib.mdDoc '' - {file}`config.yaml` configuration as a Nix attribute set. - Configuration options should match those described in - [example-config.yaml](https://github.com/mautrix/whatsapp/blob/master/example-config.yaml). - ''; - default = { - homeserver = { - domain = config.services.matrix-synapse.settings.server_name; - }; - appservice = { - address = "http://localhost:29318"; - hostname = "0.0.0.0"; - port = 29318; - database = { - type = "sqlite3"; - uri = "${dataDir}/mautrix-whatsapp.db"; - }; - id = "whatsapp"; - bot = { - username = "whatsappbot"; - displayname = "WhatsApp Bot"; - }; - as_token = ""; - hs_token = ""; - }; - bridge = { - username_template = "whatsapp_{{.}}"; - displayname_template = "{{if .Notify}}{{.Notify}}{{else}}{{.Jid}}{{end}}"; - command_prefix = "!wa"; - permissions."*" = "relay"; - }; - relay = { - enabled = true; - management = "!whatsappbot:${toString config.services.matrix-synapse.settings.server_name}"; - }; - logging = { - directory = "${dataDir}/logs"; - file_name_format = "{{.Date}}-{{.Index}}.log"; - file_date_format = "2006-01-02"; - file_mode = 0384; - timestamp_format = "Jan _2, 2006 15:04:05"; - print_level = "info"; - }; - }; - example = { - settings = { - homeserver.address = "https://matrix.myhomeserver.org"; - bridge.permissions = { - "@admin:myhomeserver.org" = "admin"; - }; - }; - }; - }; - - serviceDependencies = mkOption { - type = with types; listOf str; - default = optional config.services.matrix-synapse.enable "matrix-synapse.service"; - defaultText = literalExpression '' - optional config.services.matrix-synapse.enable "matrix-synapse.service" - ''; - description = lib.mdDoc '' - List of Systemd services to require and wait for when starting the application service. - ''; - }; - }; - - config = mkIf cfg.enable { - systemd.services.mautrix-whatsapp = { - description = "Mautrix-WhatsApp Service - A WhatsApp bridge for Matrix"; - - wantedBy = ["multi-user.target"]; - wants = ["network-online.target"] ++ cfg.serviceDependencies; - after = ["network-online.target"] ++ cfg.serviceDependencies; - - preStart = '' - # generate the appservice's registration file if absent - if [ ! -f '${registrationFile}' ]; then - ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ - --generate-registration \ - --config='${settingsFile}' \ - --registration='${registrationFile}' - fi - chmod 640 ${registrationFile} - ''; - - script = startupScript; - - serviceConfig = { - Type = "simple"; - #DynamicUser = true; - PrivateTmp = true; - StateDirectory = baseNameOf dataDir; - WorkingDirectory = "${dataDir}"; - - ProtectSystem = "strict"; - ProtectHome = true; - ProtectKernelTunables = true; - ProtectKernelModules = true; - ProtectControlGroups = true; - User = "mautrix-whatsapp"; - Group = "matrix-synapse"; - SupplementaryGroups = "matrix-synapse"; - UMask = 0027; - Restart = "always"; - }; - }; - - users.groups.mautrix-whatsapp = {}; - users.users.mautrix-whatsapp = { - isSystemUser = true; - group = "mautrix-whatsapp"; - home = dataDir; - }; - services.matrix-synapse.settings.app_service_config_files = ["${registrationFile}"]; - }; -} diff --git a/system/services/matrix/default.nix b/system/services/matrix/default.nix index 9148f66..66474cc 100644 --- a/system/services/matrix/default.nix +++ b/system/services/matrix/default.nix @@ -12,10 +12,6 @@ return 200 '${builtins.toJSON data}'; ''; in { - imports = [ - ./bridges/mautrix-whatsapp.nix - ]; - networking.firewall.allowedTCPPorts = [80 443]; services = { |