1import ./make-test-python.nix (
2 { lib, pkgs, ... }:
3 {
4 name = "livebook-service";
5
6 nodes = {
7 machine =
8 { config, pkgs, ... }:
9 {
10 imports = [
11 ./common/user-account.nix
12 ];
13
14 services.livebook = {
15 enableUserService = true;
16 environment = {
17 LIVEBOOK_PORT = 20123;
18 };
19 environmentFile = pkgs.writeText "livebook.env" ''
20 LIVEBOOK_PASSWORD = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
21 '';
22 };
23 };
24 };
25
26 testScript =
27 { nodes, ... }:
28 let
29 user = nodes.machine.users.users.alice;
30 sudo = lib.concatStringsSep " " [
31 "XDG_RUNTIME_DIR=/run/user/${toString user.uid}"
32 "sudo"
33 "--preserve-env=XDG_RUNTIME_DIR"
34 "-u"
35 "alice"
36 ];
37 in
38 ''
39 machine.wait_for_unit("multi-user.target")
40
41 machine.succeed("loginctl enable-linger alice")
42 machine.wait_until_succeeds("${sudo} systemctl --user is-active livebook.service")
43 machine.wait_for_open_port(20123, timeout=10)
44
45 machine.succeed("curl -L localhost:20123 | grep 'Type password'")
46 '';
47 }
48)