1{
2 buildNpmPackage,
3 fetchFromGitHub,
4 jq,
5 lib,
6 nixosTests,
7}:
8
9buildNpmPackage rec {
10 pname = "node-red";
11 version = "4.1.0";
12
13 src = fetchFromGitHub {
14 owner = "node-red";
15 repo = "node-red";
16 tag = version;
17 hash = "sha256-MBuWVrN5KNUSNRMZTrDwkQjf3E7BPpnYZL0LKSd6dvU=";
18 };
19
20 npmDepsHash = "sha256-FV+41HMggMMadRQG/jVnTkp4ycAthp+a4QPrTRhuris=";
21
22 postPatch =
23 let
24 packageDir = "packages/node_modules/node-red";
25 in
26 ''
27 ln -s ${./package-lock.json} package-lock.json
28
29 ${lib.getExe jq} '. += {"bin": {"node-red": "${packageDir}/red.js", "node-red-pi": "${packageDir}/bin/node-red-pi"}}' package.json > package.json.tmp
30 mv package.json.tmp package.json
31 '';
32
33 makeCacheWritable = true;
34
35 passthru = {
36 tests = {
37 inherit (nixosTests) node-red;
38 };
39 updateScript = ./update.sh;
40 };
41
42 meta = {
43 changelog = "https://github.com/node-red/node-red/blob/${src.rev}/CHANGELOG.md";
44 description = "Low-code programming for event-driven applications";
45 homepage = "https://nodered.org/";
46 license = lib.licenses.asl20;
47 mainProgram = "node-red";
48 maintainers = with lib.maintainers; [ matthewcroughan ];
49 };
50}