1import ./make-test.nix ({ pkgs, ...} : {
2 name = "xfce";
3 meta = with pkgs.stdenv.lib.maintainers; {
4 maintainers = [ eelco chaoflow shlevy ];
5 };
6
7 machine =
8 { pkgs, ... }:
9
10 { imports = [ ./common/user-account.nix ];
11
12 services.xserver.enable = true;
13
14 services.xserver.displayManager.auto.enable = true;
15 services.xserver.displayManager.auto.user = "alice";
16
17 services.xserver.desktopManager.xfce.enable = true;
18
19 environment.systemPackages = [ pkgs.xorg.xmessage ];
20 };
21
22 testScript =
23 ''
24 $machine->waitForX;
25 $machine->waitForFile("/home/alice/.Xauthority");
26 $machine->succeed("xauth merge ~alice/.Xauthority");
27 $machine->waitForWindow(qr/xfce4-panel/);
28 $machine->sleep(10);
29
30 # Check that logging in has given the user ownership of devices.
31 $machine->succeed("getfacl /dev/snd/timer | grep -q alice");
32
33 $machine->succeed("su - alice -c 'DISPLAY=:0.0 xfce4-terminal &'");
34 $machine->waitForWindow(qr/Terminal/);
35 $machine->sleep(10);
36 $machine->screenshot("screen");
37
38 # Ensure that the X server does proper access control.
39 $machine->mustFail("su - bob -c 'DISPLAY=:0.0 xmessage Foo'");
40 $machine->mustFail("su - bob -c 'DISPLAY=:0 xmessage Foo'");
41 '';
42})