zigbee2mqtt_2: init at 2.1.1

https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.0.0
https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.0
https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.1

Changed files
+125 -32
nixos
doc
manual
release-notes
modules
services
home-automation
tests
pkgs
by-name
zi
zigbee2mqtt_1
zigbee2mqtt_2
+2
nixos/doc/manual/release-notes/rl-2505.section.md
···
- `nodePackages."@commitlint/config-conventional"` has been removed, as it is a library, and projects should depend on it instead.
+
- zigbee2mqtt is now available in version 2.x as `zigbee2mqtt_2`. In NixOS 25.11 we'll remove `zigbee2mqtt_1` and default to `zigbee2mqtt_2`. See the [breaking changes](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) announcement for 2.0.0.
+
- `nodePackages.vls` has been deprecated, as the upstream consumer of it, vetur, has been deprecated by upstream. Upstream suggests migrating to Volar for Vue LSP tooling instead.
- `nodePackages.create-react-native-app` has been removed, as it is deprecated. Upstream suggests using a framework for React Native apps instead.
+1
nixos/modules/services/home-automation/zigbee2mqtt.nix
···
SystemCallFilter = [
"@system-service @pkey"
"~@privileged @resources"
+
"@chown"
];
UMask = "0077";
};
+8 -1
nixos/tests/all-tests.nix
···
zenohd = handleTest ./zenohd.nix {};
zeronet-conservancy = handleTest ./zeronet-conservancy.nix {};
zfs = handleTest ./zfs.nix {};
-
zigbee2mqtt = handleTest ./zigbee2mqtt.nix {};
+
zigbee2mqtt_1 = runTest {
+
imports = [ ./zigbee2mqtt.nix ];
+
_module.args.package = pkgs.zigbee2mqtt_1;
+
};
+
zigbee2mqtt_2 = runTest {
+
imports = [ ./zigbee2mqtt.nix ];
+
_module.args.package = pkgs.zigbee2mqtt_2;
+
};
zipline = handleTest ./zipline.nix {};
zoneminder = handleTest ./zoneminder.nix {};
zookeeper = handleTest ./zookeeper.nix {};
+40 -30
nixos/tests/zigbee2mqtt.nix
···
-
import ./make-test-python.nix (
-
{ pkgs, lib, ... }:
-
{
-
name = "zigbee2mqtt";
-
nodes.machine =
-
{ pkgs, ... }:
-
{
-
systemd.services.dummy-serial = {
-
wantedBy = [
-
"multi-user.target"
-
];
-
serviceConfig = {
-
ExecStart = "${pkgs.socat}/bin/socat pty,link=/dev/ttyACM0,mode=666 pty,link=/dev/ttyACM1";
-
};
-
};
+
{
+
lib,
+
package,
+
pkgs,
+
...
+
}:
-
services.zigbee2mqtt = {
-
enable = true;
-
};
-
-
systemd.services.zigbee2mqtt.serviceConfig.DevicePolicy = lib.mkForce "auto";
+
let
+
error =
+
if lib.versionOlder package.version "2" then
+
"Inappropriate ioctl for device, cannot set"
+
else
+
"No valid USB adapter found";
+
in
+
{
+
name = "zigbee2mqtt-${lib.versions.major package.version}.x";
+
nodes.machine = {
+
systemd.services.dummy-serial = {
+
wantedBy = [
+
"multi-user.target"
+
];
+
serviceConfig = {
+
ExecStart = "${pkgs.socat}/bin/socat pty,link=/dev/ttyACM0,mode=666 pty,link=/dev/ttyACM1";
};
+
};
-
testScript = ''
-
machine.wait_for_unit("multi-user.target")
-
machine.wait_until_fails("systemctl status zigbee2mqtt.service")
-
machine.succeed(
-
"journalctl -eu zigbee2mqtt | grep 'Error: Inappropriate ioctl for device, cannot set'"
-
)
+
services.zigbee2mqtt = {
+
enable = true;
+
inherit package;
+
};
+
+
systemd.services.zigbee2mqtt.serviceConfig.DevicePolicy = lib.mkForce "auto";
+
};
+
+
testScript = ''
+
machine.wait_for_unit("multi-user.target")
+
machine.wait_until_fails("systemctl status zigbee2mqtt.service")
+
machine.succeed(
+
"journalctl -eu zigbee2mqtt | grep '${error}'"
+
)
-
machine.log(machine.succeed("systemd-analyze security zigbee2mqtt.service"))
-
'';
-
}
-
)
+
machine.log(machine.succeed("systemd-analyze security zigbee2mqtt.service"))
+
'';
+
}
+1 -1
pkgs/by-name/zi/zigbee2mqtt_1/package.nix
···
npmFlags = lib.optionals (!withSystemd) [ "--omit=optional" ];
-
passthru.tests.zigbee2mqtt = nixosTests.zigbee2mqtt;
+
passthru.tests.zigbee2mqtt = nixosTests.zigbee2mqtt_1;
passthru.updateScript = nix-update-script { };
meta = with lib; {
+73
pkgs/by-name/zi/zigbee2mqtt_2/package.nix
···
+
{
+
lib,
+
stdenv,
+
fetchFromGitHub,
+
nodejs,
+
npmHooks,
+
pnpm_9,
+
systemdMinimal,
+
nixosTests,
+
nix-update-script,
+
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemdMinimal,
+
}:
+
+
let
+
pnpm = pnpm_9;
+
in
+
stdenv.mkDerivation (finalAttrs: {
+
pname = "zigbee2mqtt";
+
version = "2.1.1";
+
+
src = fetchFromGitHub {
+
owner = "Koenkk";
+
repo = "zigbee2mqtt";
+
tag = finalAttrs.version;
+
hash = "sha256-YVsQ4Zo0nlIb9m4wiK7xcqB7eE/h2ZvTTqEYLDagoHM=";
+
};
+
+
pnpmDeps = pnpm.fetchDeps {
+
inherit (finalAttrs) pname version src;
+
hash = "sha256-Wr7FngKfedUrtOLpaTxvAdJZfCXo1/+oLMIJMOCgafk=";
+
};
+
+
nativeBuildInputs = [
+
nodejs
+
npmHooks.npmInstallHook
+
pnpm.configHook
+
];
+
+
buildInputs = lib.optionals withSystemd [
+
systemdMinimal
+
];
+
+
buildPhase = ''
+
runHook preBuild
+
+
pnpm run build
+
+
runHook postBuild
+
'';
+
+
dontNpmPrune = true;
+
+
passthru.tests.zigbee2mqtt = nixosTests.zigbee2mqtt_2;
+
passthru.updateScript = nix-update-script { };
+
+
meta = with lib; {
+
changelog = "https://github.com/Koenkk/zigbee2mqtt/releases/tag/${finalAttrs.version}";
+
description = "Zigbee to MQTT bridge using zigbee-shepherd";
+
homepage = "https://github.com/Koenkk/zigbee2mqtt";
+
license = licenses.gpl3;
+
longDescription = ''
+
Allows you to use your Zigbee devices without the vendor's bridge or gateway.
+
+
It bridges events and allows you to control your Zigbee devices via MQTT.
+
In this way you can integrate your Zigbee devices with whatever smart home infrastructure you are using.
+
'';
+
maintainers = with maintainers; [
+
sweber
+
hexa
+
];
+
mainProgram = "zigbee2mqtt";
+
};
+
})