diff options
author | Peter Hoeg <peter@hoeg.com> | 2022-04-01 10:41:31 +0800 |
---|---|---|
committer | Peter Hoeg <peter@hoeg.com> | 2022-04-03 03:37:22 +0800 |
commit | e38cc45dd196bcbe177e6852b2f8ebc4bcca3bd7 (patch) | |
tree | cf6aa07f25ed59afb8bc3eaf567bea1d7d6b2446 /nixos/tests/maestral.nix | |
parent | 43844c1f1a042dc9985bfad51f857ba17201555f (diff) |
nixos: add maestral tests
Diffstat (limited to 'nixos/tests/maestral.nix')
-rw-r--r-- | nixos/tests/maestral.nix | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/nixos/tests/maestral.nix b/nixos/tests/maestral.nix new file mode 100644 index 0000000000000..ba2e0b2f3baab --- /dev/null +++ b/nixos/tests/maestral.nix @@ -0,0 +1,72 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "maestral"; + meta = with pkgs.lib.maintainers; { + maintainers = [ peterhoeg ]; + }; + + nodes = + let + common = attrs: + pkgs.lib.recursiveUpdate + { + imports = [ ./common/user-account.nix ]; + systemd.user.services.maestral = { + description = "Maestral Dropbox Client"; + serviceConfig.Type = "exec"; + }; + } + attrs; + + in + { + cli = { ... }: common { + systemd.user.services.maestral = { + wantedBy = [ "default.target" ]; + serviceConfig.ExecStart = "${pkgs.maestral}/bin/maestral start --foreground"; + }; + }; + + gui = { ... }: common { + services.xserver = { + enable = true; + displayManager.sddm.enable = true; + displayManager.defaultSession = "plasma"; + desktopManager.plasma5.enable = true; + desktopManager.plasma5.runUsingSystemd = true; + displayManager.autoLogin = { + enable = true; + user = "alice"; + }; + }; + + systemd.user.services = { + maestral = { + wantedBy = [ "graphical-session.target" ]; + serviceConfig.ExecStart = "${pkgs.maestral-gui}/bin/maestral_qt"; + }; + # PowerDevil doesn't like our VM + plasma-powerdevil.enable = false; + }; + }; + }; + + testScript = { nodes, ... }: + let + user = nodes.cli.config.users.users.alice; + in + '' + start_all() + + with subtest("CLI"): + # we need SOME way to give the user an active login session + cli.execute("loginctl enable-linger ${user.name}") + cli.systemctl("start user@${toString user.uid}") + cli.wait_for_unit("maestral.service", "${user.name}") + + with subtest("GUI"): + gui.wait_for_x() + gui.succeed("xauth merge ${user.home}/.Xauthority") + gui.wait_for_window("^Desktop ") + gui.wait_for_unit("maestral.service", "${user.name}") + ''; +}) |