{ lib, pkgs, ... }:

{
  name = "anbox";
  meta.maintainers = with lib.maintainers; [ mvnetbiz ];

  nodes.machine =
    { pkgs, config, ... }:
    {
      imports = [
        ./common/user-account.nix
        ./common/x11.nix
      ];

      environment.systemPackages = with pkgs; [ android-tools ];

      test-support.displayManager.auto.user = "alice";

      virtualisation.anbox.enable = true;
      boot.kernelPackages = pkgs.linuxKernel.packages.linux_5_15;
      virtualisation.memorySize = 2500;
    };

  testScript =
    { nodes, ... }:
    let
      user = nodes.machine.users.users.alice;
      bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus";
    in
    ''
      machine.wait_for_x()

      machine.wait_until_succeeds(
          "sudo -iu alice ${bus} anbox wait-ready"
      )

      machine.wait_until_succeeds("adb shell true")

      print(machine.succeed("adb devices"))
    '';
}