nixos-config/modules/matrix/mautrix-whatsapp.nix
Charlotte 🦝 Delenk 28f1d0eca9
All checks were successful
Hydra packages.aarch64-linux.plover-plugin-modal-dictionary Hydra build #20839 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-modal-dictionary
Hydra packages.x86_64-linux.plover-plugin-emoji Hydra build #20890 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-emoji
Hydra packages.aarch64-linux.plover-plugin-dotool-output Hydra build #20834 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-dotool-output
Hydra packages.x86_64-linux.emoji-rosaflags Hydra build #20860 of nixos-config:pr610:packages.x86_64-linux.emoji-rosaflags
Hydra packages.x86_64-linux.python-tulir-telethon Hydra build #20906 of nixos-config:pr610:packages.x86_64-linux.python-tulir-telethon
Hydra packages.x86_64-linux.kreative-square Hydra build #20875 of nixos-config:pr610:packages.x86_64-linux.kreative-square
Hydra packages.aarch64-linux.mautrix-whatsapp Hydra build #20826 of nixos-config:pr610:packages.aarch64-linux.mautrix-whatsapp
Hydra packages.x86_64-linux.plover-plugin-dict-commands Hydra build #20888 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-dict-commands
Hydra packages.aarch64-linux.emoji-volpeon-raccoon Hydra build #20816 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-raccoon
Hydra packages.x86_64-linux.lotte-art Hydra build #20876 of nixos-config:pr610:packages.x86_64-linux.lotte-art
Hydra packages.aarch64-linux.kreative-square Hydra build #20820 of nixos-config:pr610:packages.aarch64-linux.kreative-square
Hydra packages.aarch64-linux.python-plover-stroke Hydra build #20848 of nixos-config:pr610:packages.aarch64-linux.python-plover-stroke
Hydra packages.x86_64-linux.emoji-volpeon-bunhd Hydra build #20863 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-bunhd
Hydra packages.aarch64-linux.python-simplefuzzyset Hydra build #20850 of nixos-config:pr610:packages.aarch64-linux.python-simplefuzzyset
Hydra packages.aarch64-linux.plover-plugin-stenotype-extended Hydra build #20842 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-stenotype-extended
Hydra packages.aarch64-linux.emoji-volpeon-blobfox-flip Hydra build #20807 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-blobfox-flip
Hydra packages.x86_64-linux.emoji-volpeon-bunhd-flip Hydra build #20864 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-bunhd-flip
Hydra packages.x86_64-linux.emoji-raccoon Hydra build #20859 of nixos-config:pr610:packages.x86_64-linux.emoji-raccoon
Hydra packages.x86_64-linux.emoji-volpeon-neofox Hydra build #20870 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-neofox
Hydra packages.x86_64-linux.emoji-volpeon-drgn Hydra build #20865 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-drgn
Hydra packages.aarch64-linux.emoji-caro Hydra build #20802 of nixos-config:pr610:packages.aarch64-linux.emoji-caro
Hydra packages.aarch64-linux.lotte-art Hydra build #20821 of nixos-config:pr610:packages.aarch64-linux.lotte-art
Hydra packages.x86_64-linux.plover-plugin-tapey-tape Hydra build #20899 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-tapey-tape
Hydra packages.x86_64-linux.constructium Hydra build #20856 of nixos-config:pr610:packages.x86_64-linux.constructium
Hydra packages.x86_64-linux.fairfax-hd Hydra build #20874 of nixos-config:pr610:packages.x86_64-linux.fairfax-hd
Hydra packages.aarch64-linux.mgba-dev Hydra build #20827 of nixos-config:pr610:packages.aarch64-linux.mgba-dev
Hydra packages.aarch64-linux.mautrix-telegram Hydra build #20825 of nixos-config:pr610:packages.aarch64-linux.mautrix-telegram
Hydra packages.x86_64-linux.plover-plugin-dotool-output Hydra build #20889 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-dotool-output
Hydra packages.x86_64-linux.emoji-volpeon-gphn Hydra build #20868 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-gphn
Hydra packages.x86_64-linux.plover-plugin-modal-dictionary Hydra build #20894 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-modal-dictionary
Hydra packages.aarch64-linux.fairfax Hydra build #20818 of nixos-config:pr610:packages.aarch64-linux.fairfax
Hydra packages.aarch64-linux.emoji-raccoon Hydra build #20804 of nixos-config:pr610:packages.aarch64-linux.emoji-raccoon
Hydra packages.aarch64-linux.plover-plugin-yaml-dictionary Hydra build #20845 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-yaml-dictionary
Hydra packages.x86_64-linux.plover-plugin-lapwing-aio Hydra build #20891 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-lapwing-aio
Hydra packages.aarch64-linux.emoji-volpeon-bunhd-flip Hydra build #20809 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-bunhd-flip
Hydra packages.x86_64-linux.miifox-net Hydra build #20883 of nixos-config:pr610:packages.x86_64-linux.miifox-net
Hydra packages.x86_64-linux.emoji-volpeon-floof Hydra build #20866 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-floof
Hydra packages.x86_64-linux.mautrix-telegram Hydra build #20880 of nixos-config:pr610:packages.x86_64-linux.mautrix-telegram
Hydra packages.x86_64-linux.mgba-dev Hydra build #20882 of nixos-config:pr610:packages.x86_64-linux.mgba-dev
Hydra packages.aarch64-linux.yiffstash Hydra build #20852 of nixos-config:pr610:packages.aarch64-linux.yiffstash
Hydra packages.x86_64-linux.plover-plugin-python-dictionary Hydra build #20895 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-python-dictionary
Hydra packages.x86_64-linux.plover-plugin-last-translation Hydra build #20892 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-last-translation
Hydra packages.x86_64-linux.yiffstash Hydra build #20907 of nixos-config:pr610:packages.x86_64-linux.yiffstash
Hydra packages.aarch64-linux.plover-plugin-dict-commands Hydra build #20833 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-dict-commands
Hydra packages.aarch64-linux.emoji-volpeon-gphn Hydra build #20813 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-gphn
Hydra packages.aarch64-linux.plover-plugin-emoji Hydra build #20835 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-emoji
Hydra packages.x86_64-linux.emoji-volpeon-vlpn Hydra build #20872 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-vlpn
Hydra packages.x86_64-linux.plover-plugin-rkb1-hid Hydra build #20896 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-rkb1-hid
Hydra packages.x86_64-linux.emoji-volpeon-raccoon Hydra build #20871 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-raccoon
Hydra packages.aarch64-linux.plover-plugin-python-dictionary Hydra build #20840 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-python-dictionary
Hydra packages.aarch64-linux.plover-plugin-machine-hid Hydra build #20838 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-machine-hid
Hydra packages.aarch64-linux.mautrix-discord Hydra build #20823 of nixos-config:pr610:packages.aarch64-linux.mautrix-discord
Hydra packages.x86_64-linux.plover-plugins-manager Hydra build #20901 of nixos-config:pr610:packages.x86_64-linux.plover-plugins-manager
Hydra packages.aarch64-linux.emoji-volpeon-bunhd Hydra build #20808 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-bunhd
Hydra packages.aarch64-linux.plover-plugin-rkb1-hid Hydra build #20841 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-rkb1-hid
Hydra packages.x86_64-linux.plover-plugin-stenotype-extended Hydra build #20897 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-stenotype-extended
Hydra packages.aarch64-linux.emoji-rosaflags Hydra build #20805 of nixos-config:pr610:packages.aarch64-linux.emoji-rosaflags
Hydra packages.aarch64-linux.alco-sans Hydra build #20798 of nixos-config:pr610:packages.aarch64-linux.alco-sans
Hydra packages.aarch64-linux.asar-asm Hydra build #20799 of nixos-config:pr610:packages.aarch64-linux.asar-asm
Hydra packages.x86_64-linux.python-rtf-tokenize Hydra build #20904 of nixos-config:pr610:packages.x86_64-linux.python-rtf-tokenize
Hydra packages.x86_64-linux.mautrix-discord Hydra build #20878 of nixos-config:pr610:packages.x86_64-linux.mautrix-discord
Hydra packages.x86_64-linux.python-simplefuzzyset Hydra build #20905 of nixos-config:pr610:packages.x86_64-linux.python-simplefuzzyset
Hydra devShell.x86_64-linux Hydra build #20793 of nixos-config:pr610:devShell.x86_64-linux
Hydra packages.x86_64-linux.fairfax Hydra build #20873 of nixos-config:pr610:packages.x86_64-linux.fairfax
Hydra packages.x86_64-linux.alco-sans Hydra build #20853 of nixos-config:pr610:packages.x86_64-linux.alco-sans
Hydra packages.x86_64-linux.plover-plugin-machine-hid Hydra build #20893 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-machine-hid
Hydra packages.x86_64-linux.python-plover-stroke Hydra build #20903 of nixos-config:pr610:packages.x86_64-linux.python-plover-stroke
Hydra packages.x86_64-linux.emoji-volpeon-fox Hydra build #20867 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-fox
Hydra packages.x86_64-linux.asar-asm Hydra build #20854 of nixos-config:pr610:packages.x86_64-linux.asar-asm
Hydra packages.aarch64-linux.constructium Hydra build #20801 of nixos-config:pr610:packages.aarch64-linux.constructium
Hydra packages.x86_64-linux.mautrix-slack Hydra build #20879 of nixos-config:pr610:packages.x86_64-linux.mautrix-slack
Hydra packages.x86_64-linux.python-mautrix Hydra build #20902 of nixos-config:pr610:packages.x86_64-linux.python-mautrix
Hydra packages.x86_64-linux.matrix-media-repo Hydra build #20877 of nixos-config:pr610:packages.x86_64-linux.matrix-media-repo
Hydra packages.x86_64-linux.plover Hydra build #20886 of nixos-config:pr610:packages.x86_64-linux.plover
Hydra packages.x86_64-linux.plover-dict-didoesdigital Hydra build #20887 of nixos-config:pr610:packages.x86_64-linux.plover-dict-didoesdigital
Hydra packages.aarch64-linux.emoji-volpeon-vlpn Hydra build #20817 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-vlpn
Hydra packages.aarch64-linux.mautrix-slack Hydra build #20824 of nixos-config:pr610:packages.aarch64-linux.mautrix-slack
Hydra packages.aarch64-linux.python-mautrix Hydra build #20847 of nixos-config:pr610:packages.aarch64-linux.python-mautrix
Hydra packages.aarch64-linux.plover-plugin-last-translation Hydra build #20837 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-last-translation
Hydra packages.aarch64-linux.plover-plugin-stitching Hydra build #20843 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-stitching
Hydra packages.aarch64-linux.plover-plugins-manager Hydra build #20846 of nixos-config:pr610:packages.aarch64-linux.plover-plugins-manager
Hydra packages.aarch64-linux.python-rtf-tokenize Hydra build #20849 of nixos-config:pr610:packages.aarch64-linux.python-rtf-tokenize
Hydra packages.aarch64-linux.plover-dict-didoesdigital Hydra build #20832 of nixos-config:pr610:packages.aarch64-linux.plover-dict-didoesdigital
Hydra packages.aarch64-linux.emoji-volpeon-blobfox Hydra build #20806 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-blobfox
Hydra packages.aarch64-linux.plover-plugin-tapey-tape Hydra build #20844 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-tapey-tape
Hydra packages.aarch64-linux.plover-plugin-lapwing-aio Hydra build #20836 of nixos-config:pr610:packages.aarch64-linux.plover-plugin-lapwing-aio
Hydra packages.aarch64-linux.emoji-volpeon-neocat Hydra build #20814 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-neocat
Hydra packages.aarch64-linux.papermc Hydra build #20830 of nixos-config:pr610:packages.aarch64-linux.papermc
Hydra packages.x86_64-linux.plover-plugin-yaml-dictionary Hydra build #20900 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-yaml-dictionary
Hydra packages.aarch64-linux.bsnes-plus Hydra build #20800 of nixos-config:pr610:packages.aarch64-linux.bsnes-plus
Hydra packages.x86_64-linux.mautrix-whatsapp Hydra build #20881 of nixos-config:pr610:packages.x86_64-linux.mautrix-whatsapp
Hydra packages.aarch64-linux.nasin-nanpa Hydra build #20829 of nixos-config:pr610:packages.aarch64-linux.nasin-nanpa
Hydra packages.aarch64-linux.emoji-volpeon-fox Hydra build #20812 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-fox
Hydra packages.aarch64-linux.miifox-net Hydra build #20828 of nixos-config:pr610:packages.aarch64-linux.miifox-net
Hydra packages.x86_64-linux.emoji-volpeon-blobfox-flip Hydra build #20862 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-blobfox-flip
Hydra packages.aarch64-linux.emoji-volpeon-neofox Hydra build #20815 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-neofox
Hydra packages.x86_64-linux.emoji-caro Hydra build #20857 of nixos-config:pr610:packages.x86_64-linux.emoji-caro
Hydra packages.aarch64-linux.emoji-volpeon-floof Hydra build #20811 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-floof
Hydra packages.x86_64-linux.plover-plugin-stitching Hydra build #20898 of nixos-config:pr610:packages.x86_64-linux.plover-plugin-stitching
Hydra packages.aarch64-linux.fairfax-hd Hydra build #20819 of nixos-config:pr610:packages.aarch64-linux.fairfax-hd
Hydra packages.x86_64-linux.bsnes-plus Hydra build #20855 of nixos-config:pr610:packages.x86_64-linux.bsnes-plus
Hydra packages.aarch64-linux.python-tulir-telethon Hydra build #20851 of nixos-config:pr610:packages.aarch64-linux.python-tulir-telethon
Hydra packages.x86_64-linux.emoji-volpeon-neocat Hydra build #20869 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-neocat
Hydra packages.aarch64-linux.emoji-lotte Hydra build #20803 of nixos-config:pr610:packages.aarch64-linux.emoji-lotte
Hydra packages.x86_64-linux.emoji-lotte Hydra build #20858 of nixos-config:pr610:packages.x86_64-linux.emoji-lotte
Hydra vf2.riscv64-linux Hydra build #20910 of nixos-config:pr610:vf2.riscv64-linux
Hydra packages.x86_64-linux.nasin-nanpa Hydra build #20884 of nixos-config:pr610:packages.x86_64-linux.nasin-nanpa
Hydra packages.x86_64-linux.emoji-volpeon-blobfox Hydra build #20861 of nixos-config:pr610:packages.x86_64-linux.emoji-volpeon-blobfox
Hydra packages.aarch64-linux.emoji-volpeon-drgn Hydra build #20810 of nixos-config:pr610:packages.aarch64-linux.emoji-volpeon-drgn
Hydra packages.aarch64-linux.plover Hydra build #20831 of nixos-config:pr610:packages.aarch64-linux.plover
Hydra packages.aarch64-linux.matrix-media-repo Hydra build #20822 of nixos-config:pr610:packages.aarch64-linux.matrix-media-repo
Hydra packages.x86_64-linux.papermc Hydra build #20885 of nixos-config:pr610:packages.x86_64-linux.papermc
Hydra installer.x86_64-linux Hydra build #20794 of nixos-config:pr610:installer.x86_64-linux
Hydra rainbow-resort.x86_64-linux Hydra build #20908 of nixos-config:pr610:rainbow-resort.x86_64-linux
Hydra thinkrac.x86_64-linux Hydra build #20909 of nixos-config:pr610:thinkrac.x86_64-linux
Hydra nixos-8gb-fsn1-1.x86_64-linux Hydra build #20797 of nixos-config:pr610:nixos-8gb-fsn1-1.x86_64-linux
Hydra instance-20221213-1915.aarch64-linux Hydra build #20795 of nixos-config:pr610:instance-20221213-1915.aarch64-linux
Hydra nas.x86_64-linux Hydra build #20796 of nixos-config:pr610:nas.x86_64-linux
update bridge configs
2024-10-27 06:50:41 +01:00

155 lines
5.3 KiB
Nix

{
system,
config,
pkgs,
lib,
...
}:
with lib; let
dataDir = "/var/lib/mautrix-whatsapp";
registrationFile = config.sops.secrets."services/mautrix/whatsapp.yaml".path;
cfg = config.services.mautrix-whatsapp;
settingsFormat = pkgs.formats.yaml {};
settingsFileUnsubstituted = settingsFormat.generate "mautrix-whatsapp-config-unsubstituted.yaml" cfg.settings;
settingsFile = "${dataDir}/config.yaml";
inherit (pkgs) mautrix-whatsapp;
in {
disabledModules = ["services/matrix/mautrix-whatsapp.nix"];
options = {
services.mautrix-whatsapp = {
enable = mkEnableOption "Mautrix-Whatsapp, a Matrix-Whatsapp hybrid puppeting/relaybot bridge";
settings = mkOption rec {
apply = recursiveUpdate default;
inherit (settingsFormat) type;
default = {
appservice = {
address = "http://mautrix-whatsapp.int.chir.rs:29318";
hostname = "0.0.0.0";
port = 29318;
as_token = "$AS_TOKEN";
hs_token = "$HS_TOKEN";
};
logging = {
min_level = "debug";
writers = [
{
type = "stdout";
format = "pretty-colored";
}
];
};
};
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
File containing environment variables to be passed to the mautrix-telegram service,
in which secret tokens can be specified securely by defining values for
<literal>MAUTRIX_TELEGRAM_APPSERVICE_AS_TOKEN</literal>,
<literal>MAUTRIX_TELEGRAM_APPSERVICE_HS_TOKEN</literal>,
<literal>MAUTRIX_TELEGRAM_TELEGRAM_API_ID</literal>,
<literal>MAUTRIX_TELEGRAM_TELEGRAM_API_HASH</literal> and optionally
<literal>MAUTRIX_TELEGRAM_TELEGRAM_BOT_TOKEN</literal>.
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.mautrix-whatsapp-genregistration = {
description = "Mautrix-Whatsapp Registration";
script = ''
# Not all secrets can be passed as environment variable (yet)
# https://github.com/tulir/mautrix-telegram/issues/584
[ -f ${settingsFile} ] && rm -f ${settingsFile}
export AS_TOKEN=$(${pkgs.yq}/bin/yq -r '.as_token' ${registrationFile})
export HS_TOKEN=$(${pkgs.yq}/bin/yq -r '.hs_token' ${registrationFile})
umask 0177
${pkgs.envsubst}/bin/envsubst \
-o ${settingsFile} \
-i ${settingsFileUnsubstituted}
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ReadWritePaths = baseNameOf dataDir;
NoNewPrivileges = true;
MemoryDenyWriteExecute = true;
PrivateDevices = true;
PrivateTmp = true;
ProtectHome = true;
ProtectSystem = "strict";
ProtectControlGroups = true;
RestrictSUIDSGID = true;
RestrictRealtime = true;
LockPersonality = true;
ProtectKernelLogs = true;
ProtectKernelTunables = true;
ProtectHostname = true;
ProtectKernelModules = true;
ProtectClock = true;
SystemCallArchitectures = "native";
SystemCallErrorNumber = "EPERM";
SystemCallFilter = "@system-service";
WorkingDirectory = dataDir;
StateDirectory = baseNameOf dataDir;
UMask = 0117;
User = "mautrix-whatsapp";
Group = "mautrix-whatsapp";
EnvironmentFile = cfg.environmentFile;
};
restartTriggers = [settingsFileUnsubstituted cfg.environmentFile];
};
systemd.services.mautrix-whatsapp = {
description = "Mautrix-Whatsapp";
wantedBy = ["multi-user.target"];
wants = ["mautrix-whatsapp-genregistration.service"];
after = ["mautrix-whatsapp-genregistration.service"];
serviceConfig = {
Type = "simple";
Restart = "always";
ReadWritePaths = baseNameOf dataDir;
NoNewPrivileges = true;
MemoryDenyWriteExecute = true;
PrivateDevices = true;
PrivateTmp = true;
ProtectHome = true;
ProtectSystem = "strict";
ProtectControlGroups = true;
RestrictSUIDSGID = true;
RestrictRealtime = true;
LockPersonality = true;
ProtectKernelLogs = true;
ProtectKernelTunables = true;
ProtectHostname = true;
ProtectKernelModules = true;
ProtectClock = true;
SystemCallArchitectures = "native";
SystemCallErrorNumber = "EPERM";
SystemCallFilter = "@system-service";
WorkingDirectory = dataDir;
StateDirectory = baseNameOf dataDir;
UMask = 0117;
User = "mautrix-whatsapp";
Group = "mautrix-whatsapp";
EnvironmentFile = cfg.environmentFile;
ExecStart = ''
${mautrix-whatsapp}/bin/mautrix-whatsapp \
--config='${settingsFile}'
'';
};
restartTriggers = [cfg.environmentFile];
};
users.users.mautrix-whatsapp = {
description = "Mautrix Whatsapp bridge";
home = "${dataDir}";
useDefaultShell = true;
group = "mautrix-whatsapp";
isSystemUser = true;
};
users.groups.mautrix-whatsapp = {};
sops.secrets."services/mautrix/whatsapp.yaml".owner = "mautrix-whatsapp";
};
}