fluffychat: 1.22.1 -> 1.23.0 (#364091)
[NixPkgs.git] / pkgs / by-name / za / zap-chip / package.nix
blob5a358c0f32d36c19bbfabd4cd2e9147214fb1a9d
2   lib,
3   buildNpmPackage,
4   electron_31,
5   fetchFromGitHub,
6   writers,
7   withGui ? false,
8 }:
10 let
11   electron = electron_31;
13 buildNpmPackage rec {
14   pname = "zap-chip";
15   version = "2024.09.27";
17   src = fetchFromGitHub {
18     owner = "project-chip";
19     repo = "zap";
20     rev = "v${version}";
21     hash = "sha256-Dc5rU4jJ6aJpk8mwL+XNSmtisYxF86VzXd/Aacd4p0o=";
22   };
24   npmDepsHash = "sha256-ZFksGwKlXkz6XTs2QdalGB0hR16HfB69XQOFWI9X/KY=";
26   env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
27   env.CYPRESS_INSTALL_BINARY = "0";
29   patches = [
30     # the build system creates a file `.version.json` from a git command
31     # as we don't build from a git repo, we create the file manually in postPatch
32     # and this patch disables the logic running git
33     ./dont-get-version-from-git.patch
34     # some files are installed via `npx copyfiles` which tries to download
35     # code from the internet. This fails in the sandbox. This patch replaces the
36     # logic by running "normal" commands instead of `npx copyfiles`
37     ./dont-download-copyfiles-to-copy-files.patch
38   ];
40   postPatch =
41     let
42       versionJson = {
43         hash = version;
44         timestamp = 1;
45         date = version;
46         zapVersion = version;
47       };
48     in
49     ''
50       cp ${writers.writeJSON "zapversion.json" versionJson} .version.json
51       cat .version.json
52     '';
54   postBuild = lib.optionalString withGui ''
55     npm exec electron-builder -- \
56       --dir \
57       -c.electronDist=${electron.dist} \
58       -c.electronVersion=${electron.version}
59   '';
61   postInstall =
62     ''
63       # this file is also used at runtime
64       install -m644 .version.json $out/lib/node_modules/zap/
65     ''
66     + lib.optionalString (!withGui) ''
67       # home-assistant chip-* python packages need the executable under the name zap-cli
68       mv $out/bin/zap $out/bin/zap-cli
69     '';
71   meta = {
72     description = "Generic generation engine and user interface for applications and libraries based on Zigbee Cluster Library (ZCL)";
73     changelog = "https://github.com/project-chip/zap/releases/tag/v${version}";
74     license = lib.licenses.asl20;
75     maintainers = with lib.maintainers; [ symphorien ];
76     mainProgram = "zap" + lib.optionalString (!withGui) "-cli";
77   };