1import ./make-test.nix ({ pkgs, ...} : {
2 name = "slim";
3
4 meta = with pkgs.stdenv.lib.maintainers; {
5 maintainers = [ aszlig ];
6 };
7
8 machine = { pkgs, ... }: {
9 imports = [ ./common/user-account.nix ];
10 services.xserver.enable = true;
11 services.xserver.windowManager.default = "icewm";
12 services.xserver.windowManager.icewm.enable = true;
13 services.xserver.desktopManager.default = "none";
14 services.xserver.displayManager.slim = {
15 enable = true;
16
17 # Use a custom theme in order to get best OCR results
18 theme = pkgs.runCommand "slim-theme-ocr" {
19 nativeBuildInputs = [ pkgs.imagemagick ];
20 } ''
21 mkdir "$out"
22 convert -size 1x1 xc:white "$out/background.jpg"
23 convert -size 200x100 xc:white "$out/panel.jpg"
24 cat > "$out/slim.theme" <<EOF
25 background_color #ffffff
26 background_style tile
27
28 input_fgcolor #000000
29 msg_color #000000
30
31 session_color #000000
32 session_font Verdana:size=16:bold
33
34 username_msg Username:
35 username_font Verdana:size=16:bold
36 username_color #000000
37 username_x 50%
38 username_y 40%
39
40 password_msg Password:
41 password_x 50%
42 password_y 40%
43 EOF
44 '';
45 };
46 };
47
48 enableOCR = true;
49
50 testScript = { nodes, ... }: let
51 user = nodes.machine.config.users.users.alice;
52 in ''
53 startAll;
54 $machine->waitForText(qr/Username:/);
55 $machine->sendChars("${user.name}\n");
56 $machine->waitForText(qr/Password:/);
57 $machine->sendChars("${user.password}\n");
58
59 $machine->waitForFile('${user.home}/.Xauthority');
60 $machine->succeed('xauth merge ${user.home}/.Xauthority');
61 $machine->waitForWindow('^IceWM ');
62
63 # Make sure SLiM doesn't create a log file
64 $machine->fail('test -e /var/log/slim.log');
65 '';
66})