1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "moonraker";
5 meta = with pkgs.lib.maintainers; {
6 maintainers = [ zhaofengli ];
7 };
8
9 nodes = {
10 printer =
11 { config, pkgs, ... }:
12 {
13 security.polkit.enable = true;
14
15 services.moonraker = {
16 enable = true;
17 allowSystemControl = true;
18
19 settings = {
20 authorization = {
21 trusted_clients = [
22 "127.0.0.0/8"
23 "::1/128"
24 ];
25 };
26 };
27 };
28
29 services.klipper = {
30 enable = true;
31
32 user = "moonraker";
33 group = "moonraker";
34
35 # No mcu configured so won't even enter `ready` state
36 settings = { };
37 };
38 };
39 };
40
41 testScript = ''
42 printer.start()
43
44 printer.wait_for_unit("klipper.service")
45 printer.wait_for_unit("moonraker.service")
46 printer.wait_until_succeeds("curl http://localhost:7125/printer/info | grep -v 'Not Found' >&2", timeout=30)
47
48 with subtest("Check that we can perform system-level operations"):
49 printer.succeed("curl -X POST http://localhost:7125/machine/services/stop?service=klipper | grep ok >&2")
50 printer.wait_until_succeeds("systemctl --no-pager show klipper.service | grep ActiveState=inactive", timeout=10)
51 '';
52 }
53)