1{
2 lib,
3 package,
4 pkgs,
5 ...
6}:
7
8let
9 error =
10 if lib.versionOlder package.version "2" then
11 "Inappropriate ioctl for device, cannot set"
12 else
13 "No valid USB adapter found";
14in
15{
16 name = "zigbee2mqtt-${lib.versions.major package.version}.x";
17 nodes.machine = {
18 systemd.services.dummy-serial = {
19 wantedBy = [
20 "multi-user.target"
21 ];
22 serviceConfig = {
23 ExecStart = "${pkgs.socat}/bin/socat pty,link=/dev/ttyACM0,mode=666 pty,link=/dev/ttyACM1";
24 };
25 };
26
27 services.zigbee2mqtt = {
28 enable = true;
29 inherit package;
30 };
31
32 systemd.services.zigbee2mqtt.serviceConfig.DevicePolicy = lib.mkForce "auto";
33 };
34
35 testScript = ''
36 machine.wait_for_unit("multi-user.target")
37 machine.wait_until_fails("systemctl status zigbee2mqtt.service")
38 machine.succeed(
39 "journalctl -eu zigbee2mqtt | grep '${error}'"
40 )
41
42 machine.log(machine.succeed("systemd-analyze security zigbee2mqtt.service"))
43 '';
44}