···
1
-
import ./make-test-python.nix (
4
-
# How to interactively test this module if the audio actually works
3
+
# How to interactively test this module if the audio actually works
6
-
# - nix run .#pulseaudio-module-xrdp.tests.xrdp-with-audio-pulseaudio.driverInteractive
7
-
# - test_script() # launches the terminal and the tests itself
8
-
# - server.send_monitor_command("hostfwd_add tcp::3389-:3389") # forward the RDP port to the host
9
-
# - Connect with the RDP client you like (ex: Remmina)
10
-
# - Don't forget to enable audio support. In remmina: Advanced -> Audio output mode to Local (default is Off)
11
-
# - Open a browser or something that plays sound. Ex: chromium
5
+
# - nix run .#pulseaudio-module-xrdp.tests.xrdp-with-audio-pulseaudio.driverInteractive
6
+
# - test_script() # launches the terminal and the tests itself
7
+
# - server.send_monitor_command("hostfwd_add tcp::3389-:3389") # forward the RDP port to the host
8
+
# - Connect with the RDP client you like (ex: Remmina)
9
+
# - Don't forget to enable audio support. In remmina: Advanced -> Audio output mode to Local (default is Off)
10
+
# - Open a browser or something that plays sound. Ex: chromium
13
-
name = "xrdp-with-audio-pulseaudio";
14
-
meta = with pkgs.lib.maintainers; {
15
-
maintainers = [ lucasew ];
12
+
name = "xrdp-with-audio-pulseaudio";
13
+
meta = with pkgs.lib.maintainers; {
14
+
maintainers = [ lucasew ];
22
-
imports = [ ./common/user-account.nix ];
21
+
imports = [ ./common/user-account.nix ];
24
-
environment.etc."xrdp/test.txt".text = "Shouldn't conflict";
23
+
environment.etc."xrdp/test.txt".text = "Shouldn't conflict";
26
-
services.xrdp.enable = true;
27
-
services.xrdp.audio.enable = true;
28
-
services.xrdp.defaultWindowManager = "${pkgs.xterm}/bin/xterm";
25
+
services.xrdp.enable = true;
26
+
services.xrdp.audio.enable = true;
27
+
services.xrdp.defaultWindowManager = "${pkgs.xterm}/bin/xterm";
30
-
services.pulseaudio = {
29
+
services.pulseaudio = {
34
-
systemd.user.services.pactl-list = {
36
-
while [ ! -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]; do
33
+
systemd.user.services.pactl-list = {
35
+
while [ ! -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]; do
40
-
${pkgs.pulseaudio}/bin/pactl list
42
-
${pkgs.pulseaudio}/bin/pactl get-default-source | tee /tmp/pulseaudio-source
44
-
${pkgs.pulseaudio}/bin/pactl get-default-sink | tee /tmp/pulseaudio-sink
39
+
${pkgs.pulseaudio}/bin/pactl list
41
+
${pkgs.pulseaudio}/bin/pactl get-default-source | tee /tmp/pulseaudio-source
43
+
${pkgs.pulseaudio}/bin/pactl get-default-sink | tee /tmp/pulseaudio-sink
47
-
wantedBy = [ "default.target" ];
50
-
networking.firewall.allowedTCPPorts = [ 3389 ];
46
+
wantedBy = [ "default.target" ];
58
-
./common/user-account.nix
60
-
test-support.displayManager.auto.user = "alice";
49
+
networking.firewall.allowedTCPPorts = [ 3389 ];
62
-
environment.systemPackages = [ pkgs.freerdp ];
57
+
./common/user-account.nix
59
+
test-support.displayManager.auto.user = "alice";
64
-
services.xrdp.enable = true;
65
-
services.xrdp.audio.enable = true;
66
-
services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";
61
+
environment.systemPackages = [ pkgs.freerdp ];
63
+
services.xrdp.enable = true;
64
+
services.xrdp.audio.enable = true;
65
+
services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";
68
-
services.pulseaudio = {
67
+
services.pulseaudio = {
77
-
user = nodes.client.config.users.users.alice;
76
+
user = nodes.client.config.users.users.alice;
83
-
client.wait_for_file("${user.home}/.Xauthority")
84
-
client.succeed("xauth merge ${user.home}/.Xauthority")
82
+
client.wait_for_file("${user.home}/.Xauthority")
83
+
client.succeed("xauth merge ${user.home}/.Xauthority")
88
-
client.execute("xterm >&2 &")
87
+
client.execute("xterm >&2 &")
91
-
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:${user.name} /p:${user.password} /sound\n")
90
+
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:${user.name} /p:${user.password} /sound\n")
95
-
client.succeed("[ -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]") # checks if it's a socket
97
-
client.screenshot("localrdp")
94
+
client.succeed("[ -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]") # checks if it's a socket
96
+
client.screenshot("localrdp")
99
-
client.execute("xterm >&2 &")
101
-
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:${user.name} /p:${user.password} /sound\n")
98
+
client.execute("xterm >&2 &")
100
+
client.send_chars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:${user.name} /p:${user.password} /sound\n")
104
-
server.succeed("[ -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]") # checks if it's a socket
105
-
server.succeed('[ "$(cat /tmp/pulseaudio-source)" == "xrdp-source" ]')
106
-
server.succeed('[ "$(cat /tmp/pulseaudio-sink)" == "xrdp-sink" ]')
107
-
client.screenshot("remoterdp")
103
+
server.succeed("[ -S /tmp/.xrdp/xrdp_chansrv_audio_in_socket_* ]") # checks if it's a socket
104
+
server.succeed('[ "$(cat /tmp/pulseaudio-source)" == "xrdp-source" ]')
105
+
server.succeed('[ "$(cat /tmp/pulseaudio-sink)" == "xrdp-sink" ]')
106
+
client.screenshot("remoterdp")