From 748493d3699de674d02f1c947fa5185af7b58c25 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sun, 5 Jan 2025 04:15:24 +0100 Subject: [PATCH] zigbee2mqtt: 1.42.0 -> 2.1.0 https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.0.0 https://github.com/Koenkk/zigbee2mqtt/releases/tag/2.1.0 --- .../manual/release-notes/rl-2505.section.md | 2 + .../services/home-automation/zigbee2mqtt.nix | 1 + nixos/tests/zigbee2mqtt.nix | 2 +- pkgs/by-name/zi/zigbee2mqtt/package.nix | 40 ++++++++++++++----- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 0295deffc3d00a..7d55cb24fcdb1d 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -145,6 +145,8 @@ access or want to access home directory via `killHook`, hardening setting can be changed via, e.g. `systemd.services.earlyoom.serviceConfig.ProtectSystem`. +- `zigbee2mqtt` was updated beyond version 2.0. This brings many [breaking changes](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) that should be taken into account during an upgrade. + - `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. diff --git a/nixos/modules/services/home-automation/zigbee2mqtt.nix b/nixos/modules/services/home-automation/zigbee2mqtt.nix index c76c1c86da755f..0b0a9f9c8700ec 100644 --- a/nixos/modules/services/home-automation/zigbee2mqtt.nix +++ b/nixos/modules/services/home-automation/zigbee2mqtt.nix @@ -123,6 +123,7 @@ in SystemCallFilter = [ "@system-service @pkey" "~@privileged @resources" + "@chown" ]; UMask = "0077"; }; diff --git a/nixos/tests/zigbee2mqtt.nix b/nixos/tests/zigbee2mqtt.nix index 3b7b6a8033b09e..ba330422ed88a4 100644 --- a/nixos/tests/zigbee2mqtt.nix +++ b/nixos/tests/zigbee2mqtt.nix @@ -25,7 +25,7 @@ import ./make-test-python.nix ( 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'" + "journalctl -eu zigbee2mqtt | grep 'No valid USB adapter found'" ) machine.log(machine.succeed("systemd-analyze security zigbee2mqtt.service")) diff --git a/pkgs/by-name/zi/zigbee2mqtt/package.nix b/pkgs/by-name/zi/zigbee2mqtt/package.nix index 71d7e9501db895..44d23d308c5950 100644 --- a/pkgs/by-name/zi/zigbee2mqtt/package.nix +++ b/pkgs/by-name/zi/zigbee2mqtt/package.nix @@ -1,38 +1,60 @@ { lib, stdenv, - buildNpmPackage, fetchFromGitHub, + nodejs, + npmHooks, + pnpm_9, systemdMinimal, nixosTests, nix-update-script, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemdMinimal, }: -buildNpmPackage rec { +let + pnpm = pnpm_9; +in +stdenv.mkDerivation (finalAttrs: { pname = "zigbee2mqtt"; - version = "1.42.0"; + version = "2.1.0"; src = fetchFromGitHub { owner = "Koenkk"; repo = "zigbee2mqtt"; - rev = version; - hash = "sha256-/7mZrf3FyIliCzsy6yzVRJYMy4bViphYi81UY43iO98="; + tag = finalAttrs.version; + hash = "sha256-p4BzDrxlfCbyDKjvcuUuOM/sWrpS6PiFK6es2726vPU="; }; - npmDepsHash = "sha256-heqTYLC+TQPQ2dc5MrVdvJeNqrygC4tUgkLcfKvlYvE="; + pnpmDeps = pnpm.fetchDeps { + inherit (finalAttrs) pname version src; + hash = "sha256-uJjD5Tk/QDEuzwkRaM6oU+3r2vFMXwaHrBZ0bbkjwEY="; + }; + + nativeBuildInputs = [ + nodejs + npmHooks.npmInstallHook + pnpm.configHook + ]; buildInputs = lib.optionals withSystemd [ systemdMinimal ]; - npmFlags = lib.optionals (!withSystemd) [ "--omit=optional" ]; + buildPhase = '' + runHook preBuild + + pnpm run build + + runHook postBuild + ''; + + dontNpmPrune = true; passthru.tests.zigbee2mqtt = nixosTests.zigbee2mqtt; passthru.updateScript = nix-update-script { }; meta = with lib; { - changelog = "https://github.com/Koenkk/zigbee2mqtt/releases/tag/${version}"; + 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; @@ -48,4 +70,4 @@ buildNpmPackage rec { ]; mainProgram = "zigbee2mqtt"; }; -} +})