This is currently our default display manager, so I'm adding this to the "tested" job as well to ensure we don't ship broken revisions where X is most likely not working. The test uses a custom SLiM theme that's specifically tailored for good OCR results (mainly white background and black fonts without anything else), because our default NixOS theme has a very small contrast between background and fonts in some places. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
67 lines
1.8 KiB
Nix
67 lines
1.8 KiB
Nix
import ./make-test.nix ({ pkgs, ...} : {
|
|
name = "slim";
|
|
|
|
meta = with pkgs.stdenv.lib.maintainers; {
|
|
maintainers = [ aszlig ];
|
|
};
|
|
|
|
machine = { pkgs, lib, ... }: {
|
|
imports = [ ./common/user-account.nix ];
|
|
services.xserver.enable = true;
|
|
services.xserver.windowManager.default = "icewm";
|
|
services.xserver.windowManager.icewm.enable = true;
|
|
services.xserver.desktopManager.default = "none";
|
|
services.xserver.displayManager.slim = {
|
|
enable = true;
|
|
|
|
# Use a custom theme in order to get best OCR results
|
|
theme = pkgs.runCommand "slim-theme-ocr" {
|
|
nativeBuildInputs = [ pkgs.imagemagick ];
|
|
} ''
|
|
mkdir "$out"
|
|
convert -size 1x1 xc:white "$out/background.jpg"
|
|
convert -size 200x100 xc:white "$out/panel.jpg"
|
|
cat > "$out/slim.theme" <<EOF
|
|
background_color #ffffff
|
|
background_style tile
|
|
|
|
input_fgcolor #000000
|
|
msg_color #000000
|
|
|
|
session_color #000000
|
|
session_font Verdana:size=16:bold
|
|
|
|
username_msg Username:
|
|
username_font Verdana:size=16:bold
|
|
username_color #000000
|
|
username_x 50%
|
|
username_y 40%
|
|
|
|
password_msg Password:
|
|
password_x 50%
|
|
password_y 40%
|
|
EOF
|
|
'';
|
|
};
|
|
};
|
|
|
|
enableOCR = true;
|
|
|
|
testScript = { nodes, ... }: let
|
|
user = nodes.machine.config.users.extraUsers.alice;
|
|
in ''
|
|
startAll;
|
|
$machine->waitForText(qr/Username:/);
|
|
$machine->sendChars("${user.name}\n");
|
|
$machine->waitForText(qr/Password:/);
|
|
$machine->sendChars("${user.password}\n");
|
|
|
|
$machine->waitForFile('${user.home}/.Xauthority');
|
|
$machine->succeed('xauth merge ${user.home}/.Xauthority');
|
|
$machine->waitForWindow('^IceWM ');
|
|
|
|
# Make sure SLiM doesn't create a log file
|
|
$machine->fail('test -e /var/log/slim.log');
|
|
'';
|
|
})
|