summary refs log tree commit diff
path: root/nixos/tests/kde4.nix
blob: 9ecfe6870564331a97733c841a4dd41fa4a359f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import ./make-test.nix ({ pkgs, ... }: {
  name = "kde4";
  meta = with pkgs.stdenv.lib.maintainers; {
    maintainers = [ domenkozar eelco chaoflow ];
  };

  machine =
    { config, pkgs, ... }:

    { imports = [ ./common/user-account.nix ];

      virtualisation.memorySize = 1024;

      services.xserver.enable = true;

      services.httpd.enable = true;
      services.httpd.adminAddr = "foo@example.org";
      services.httpd.documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html";

      services.xserver.displayManager.kdm.enable = true;
      services.xserver.displayManager.kdm.extraConfig =
        ''
          [X-:0-Core]
          AutoLoginEnable=true
          AutoLoginUser=alice
          AutoLoginPass=foobar
        '';

      services.xserver.desktopManager.kde4.enable = true;

      # Include most of KDE. We don't really test these here, but at
      # least they should build.
      environment.systemPackages =
        [ pkgs.kde4.kdemultimedia
          pkgs.kde4.kdegraphics
          pkgs.kde4.kdeutils
          pkgs.kde4.kdegames
          #pkgs.kde4.kdeedu
          pkgs.kde4.kdeaccessibility
          pkgs.kde4.kdeadmin
          pkgs.kde4.kdenetwork
          pkgs.kde4.kdetoys
          pkgs.kde4.kdewebdev
          pkgs.xorg.xmessage
        ];
    };

  testScript = ''
      $machine->waitUntilSucceeds("pgrep plasma-desktop");
      $machine->succeed("xauth merge ~alice/.Xauthority");
      $machine->waitForWindow(qr/plasma-desktop/);

      # Check that logging in has given the user ownership of devices.
      $machine->succeed("getfacl /dev/snd/timer | grep -q alice");

      $machine->execute("su - alice -c 'DISPLAY=:0.0 kwrite /var/log/messages &'");
      $machine->waitForWindow(qr/messages.*KWrite/);

      $machine->execute("su - alice -c 'DISPLAY=:0.0 konqueror http://localhost/ &'");
      $machine->waitForWindow(qr/Valgrind.*Konqueror/);

      $machine->execute("su - alice -c 'DISPLAY=:0.0 gwenview ${pkgs.kde4.kde_wallpapers}/share/wallpapers/Hanami/contents/images/1280x1024.jpg &'");
      $machine->waitForWindow(qr/Gwenview/);

      $machine->sleep(10);

      $machine->screenshot("screen");
    '';

})