1{ pkgs, ... }:
2{
3 name = "xrdp";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ ];
6 };
7
8 nodes = {
9 server =
10 { pkgs, ... }:
11 {
12 imports = [ ./common/user-account.nix ];
13 services.xrdp.enable = true;
14 services.xrdp.defaultWindowManager = "${pkgs.xterm}/bin/xterm";
15 networking.firewall.allowedTCPPorts = [ 3389 ];
16 };
17
18 client =
19 { pkgs, ... }:
20 {
21 imports = [
22 ./common/x11.nix
23 ./common/user-account.nix
24 ];
25 test-support.displayManager.auto.user = "alice";
26 environment.systemPackages = [ pkgs.freerdp ];
27 services.xrdp.enable = true;
28 services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";
29 };
30 };
31
32 testScript =
33 { nodes, ... }:
34 let
35 user = nodes.client.users.users.alice;
36 in
37 ''
38 start_all()
39
40 client.wait_for_x()
41 client.wait_for_file("${user.home}/.Xauthority")
42 client.succeed("xauth merge ${user.home}/.Xauthority")
43
44 client.sleep(5)
45
46 client.execute("xterm >&2 &")
47 client.sleep(1)
48 client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:${user.name} /p:${user.password}\n")
49 client.sleep(5)
50 client.screenshot("localrdp")
51
52 client.execute("xterm >&2 &")
53 client.sleep(1)
54 client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:${user.name} /p:${user.password}\n")
55 client.sleep(5)
56 client.screenshot("remoterdp")
57 '';
58}