1{ pkgs, lib, ... }:
2{
3 name = "gnome-flashback";
4 meta.maintainers = lib.teams.gnome.members ++ [ lib.maintainers.chpatrick ];
5
6 nodes.machine =
7 { nodes, ... }:
8 let
9 user = nodes.machine.users.users.alice;
10 in
11
12 {
13 imports = [ ./common/user-account.nix ];
14
15 services.xserver.enable = true;
16
17 services.displayManager.gdm = {
18 enable = true;
19 debug = true;
20 };
21
22 services.displayManager.autoLogin = {
23 enable = true;
24 user = user.name;
25 };
26
27 services.desktopManager.gnome.enable = true;
28 services.desktopManager.gnome.debug = true;
29 services.desktopManager.gnome.flashback.enableMetacity = true;
30 services.displayManager.defaultSession = "gnome-flashback-metacity";
31 };
32
33 testScript =
34 { nodes, ... }:
35 let
36 user = nodes.machine.users.users.alice;
37 uid = toString user.uid;
38 xauthority = "/run/user/${uid}/gdm/Xauthority";
39 in
40 ''
41 with subtest("Login to GNOME Flashback with GDM"):
42 machine.wait_for_x()
43 machine.wait_until_succeeds('journalctl -t gnome-session-binary --grep "Entering running state"')
44 # Wait for alice to be logged in"
45 machine.wait_for_unit("default.target", "${user.name}")
46 machine.wait_for_file("${xauthority}")
47 machine.succeed("xauth merge ${xauthority}")
48 # Check that logging in has given the user ownership of devices
49 assert "alice" in machine.succeed("getfacl -p /dev/snd/timer")
50
51 with subtest("Wait for Metacity"):
52 machine.wait_until_succeeds("pgrep metacity")
53
54 with subtest("Regression test for #233920"):
55 machine.wait_until_succeeds("pgrep -fa gnome-flashback-media-keys")
56 machine.sleep(20)
57 machine.screenshot("screen")
58 '';
59}