1import ./make-test.nix ({ pkgs, ... }: {
2 name = "kde4";
3 meta = with pkgs.stdenv.lib.maintainers; {
4 maintainers = [ iElectric eelco chaoflow ];
5 };
6
7 machine =
8 { config, pkgs, ... }:
9
10 { imports = [ ./common/user-account.nix ];
11
12 virtualisation.memorySize = 1024;
13
14 services.xserver.enable = true;
15
16 services.httpd.enable = true;
17 services.httpd.adminAddr = "foo@example.org";
18 services.httpd.documentRoot = "${pkgs.valgrind}/share/doc/valgrind/html";
19
20 services.xserver.displayManager.kdm.enable = true;
21 services.xserver.displayManager.kdm.extraConfig =
22 ''
23 [X-:0-Core]
24 AutoLoginEnable=true
25 AutoLoginUser=alice
26 AutoLoginPass=foobar
27 '';
28
29 services.xserver.desktopManager.kde4.enable = true;
30
31 # Include most of KDE. We don't really test these here, but at
32 # least they should build.
33 environment.systemPackages =
34 [ pkgs.kde4.kdemultimedia
35 pkgs.kde4.kdegraphics
36 pkgs.kde4.kdeutils
37 pkgs.kde4.kdegames
38 #pkgs.kde4.kdeedu
39 pkgs.kde4.kdeaccessibility
40 pkgs.kde4.kdeadmin
41 pkgs.kde4.kdenetwork
42 pkgs.kde4.kdetoys
43 pkgs.kde4.kdewebdev
44 ];
45 };
46
47 testScript = ''
48 $machine->waitUntilSucceeds("pgrep plasma-desktop");
49 $machine->waitForWindow(qr/plasma-desktop/);
50
51 # Check that logging in has given the user ownership of devices.
52 $machine->succeed("getfacl /dev/snd/timer | grep -q alice");
53
54 $machine->execute("su - alice -c 'DISPLAY=:0.0 kwrite /var/log/messages &'");
55 $machine->waitForWindow(qr/messages.*KWrite/);
56
57 $machine->execute("su - alice -c 'DISPLAY=:0.0 konqueror http://localhost/ &'");
58 $machine->waitForWindow(qr/Valgrind.*Konqueror/);
59
60 $machine->execute("su - alice -c 'DISPLAY=:0.0 gwenview ${pkgs.kde4.kde_wallpapers}/share/wallpapers/Hanami/contents/images/1280x1024.jpg &'");
61 $machine->waitForWindow(qr/Gwenview/);
62
63 $machine->sleep(10);
64
65 $machine->screenshot("screen");
66 '';
67
68})