90 lines
2.4 KiB
Nix
90 lines
2.4 KiB
Nix
args@{ config, pkgs, custom-utils, ... }:
|
|
|
|
let
|
|
ports = import ../ports.nix args;
|
|
shutdownAndroidVm = pkgs.writeShellScript "shutdown-android-vm" ''
|
|
set -e
|
|
export PATH=${pkgs.lib.makeBinPath [pkgs.libvirt pkgs.gnused pkgs.android-tools]}
|
|
|
|
if [ "$(virsh domstate "$1")" = "running" ]; then
|
|
host="$(virsh -q domifaddr --domain "$1" | sed -n -r 's#.*ipv4\s*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/[0-9]+$#\1#p')"
|
|
port=5555
|
|
adb connect "$host:$port"
|
|
adb -s "$host:$port" shell -- reboot -p
|
|
fi
|
|
'';
|
|
vmName = "Bliss-v16";
|
|
in
|
|
{
|
|
jalr.matrix.mautrix-whatsapp = {
|
|
enable = true;
|
|
port = ports.mautrix-whatsapp.tcp;
|
|
settings.bridge.permissions = {
|
|
# Only one user since using the name from the address book does not
|
|
# work with multiple users
|
|
#"@jalr:jalr.de" = 100;
|
|
"@jalr:jalr.de" = "admin";
|
|
"jalr.de" = "user";
|
|
};
|
|
};
|
|
|
|
jalr.libvirt.enable = true;
|
|
|
|
systemd.services = {
|
|
libvirt-guests.serviceConfig.ExecStop = [
|
|
""
|
|
"${shutdownAndroidVm} ${vmName}"
|
|
"${pkgs.libvirt}/libexec/libvirt-guests.sh stop"
|
|
];
|
|
|
|
"whatsapp@" = {
|
|
description = "Start Android VM, wait for WhatsApp and shut down VM.";
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
};
|
|
environment.VM = "%i";
|
|
script = ''
|
|
export PATH=${pkgs.lib.makeBinPath [pkgs.libvirt pkgs.gnused pkgs.android-tools pkgs.coreutils]}
|
|
|
|
domstate="$(virsh domstate "$VM")"
|
|
|
|
if [ "$domstate" != "running" ]; then
|
|
virsh start "$VM"
|
|
fi
|
|
|
|
echo "Wait until IP of Android VM is known"
|
|
while :; do
|
|
host="$(virsh -q domifaddr --domain "$VM" | sed -n -r 's#.*ipv4\s*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/[0-9]+$#\1#p')"
|
|
if [ "$host" ]; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
port=5555
|
|
adb connect "$host:$port"
|
|
|
|
echo "Waiting for WhatsApp"
|
|
while ! adb -s "$host:$port" shell -- pgrep com.whatsapp > /dev/null; do
|
|
sleep 1
|
|
done
|
|
|
|
echo "Sleeping..."
|
|
sleep 5m
|
|
|
|
echo "Shutting down Android"
|
|
adb -s "$host:$port" shell -- reboot -p
|
|
'';
|
|
};
|
|
};
|
|
systemd.timers."whatsapp-${vmName}" = {
|
|
description = "Start Android VM to run WhatsApp";
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
Persistent = true;
|
|
OnCalendar = "*-*-* 2:00:00";
|
|
Unit = "whatsapp@${vmName}.service";
|
|
};
|
|
};
|
|
}
|