Unverified Commit 7e434548 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

scanservjs: 2.27.1 -> 3.0.4 (#448697)

parents 3ea36f94 7432e50d
Loading
Loading
Loading
Loading
+14 −68
Original line number Diff line number Diff line
@@ -2,85 +2,31 @@
  lib,
  fetchFromGitHub,
  buildNpmPackage,
  fetchNpmDeps,
  nodejs_20,
  replaceVars,
}:

let
  # Build fails on node 22, presumably because of esm.
  # https://github.com/NixOS/nixpkgs/issues/371649
  nodejs = nodejs_20;
  version = "2.27.1";
buildNpmPackage (finalAttrs: {
  pname = "scanservjs";
  version = "3.0.4";

  src = fetchFromGitHub {
    owner = "sbs20";
    repo = "scanservjs";
    # rev = "v${version}";
    # 2.27.1 doesn't have a tag
    rev = "b15adc6f97fb152fd9819371bb1a9b8118baf55b";
    hash = "sha256-ne9fEF/eurWPXzmJQzBn5jiy+JgxMWiCXsOdmu2fj6E=";
  };

  depsHashes = {
    server = "sha256-M8t+TrE+ntZaI9X7hEel94bz34DPtW32n0KKMSoCfIs=";
    client = "sha256-C31WBYE8ba0t4mfKFAuYWrCZtSdN7tQIYmCflDRKuBM=";
  };

  serverDepsForClient = fetchNpmDeps {
    inherit src nodejs;
    sourceRoot = "${src.name}/packages/server";
    name = "scanservjs";
    hash = depsHashes.server or lib.fakeHash;
    tag = "v${finalAttrs.version}";
    hash = "sha256-qCJyQO/hSDF4NOupV7sepwvpNyjSElnqT71LJuIKe+A=";
  };

  # static client files
  client = buildNpmPackage {
    pname = "scanservjs-client";
    inherit version src nodejs;

    sourceRoot = "${src.name}/packages/client";
    npmDepsHash = depsHashes.client or lib.fakeHash;

    preBuild = ''
      cd ../server
      chmod +w package-lock.json . /build/source/
      npmDeps=${serverDepsForClient} npmConfigHook
      cd ../client
    '';
  npmDepsHash = "sha256-HIWT09G8gqSFt9CIjsjJaDRnj2GO0G6JOGeI0p4/1vw=";

    env.NODE_OPTIONS = "--openssl-legacy-provider";

    dontNpmInstall = true;
    installPhase = ''
      mv /build/source/dist/client $out
    '';
  };

in
buildNpmPackage {
  pname = "scanservjs";
  inherit version src nodejs;

  sourceRoot = "${src.name}/packages/server";
  npmDepsHash = depsHashes.server or lib.fakeHash;

  # can't use "patches" since they change the server deps' hash for building the client
  # (I don't want to maintain one more hash)
  preBuild = ''
    chmod +w /build/source
    patch -p3 <${
      replaceVars ./decouple-from-source-tree.patch {
        inherit client;
      }
    }
    substituteInPlace src/api.js --replace 'NIX_OUT_PLACEHOLDER' "$out"
  '';
  # Build fails on node 22, presumably because of esm.
  # https://github.com/NixOS/nixpkgs/issues/371649
  nodejs = nodejs_20;

  postInstall = ''
    mkdir -p $out/bin
    makeWrapper ${lib.getExe nodejs} $out/bin/scanservjs \
    mkdir $out/bin
    makeWrapper ${lib.getExe finalAttrs.nodejs} $out/bin/scanservjs \
      --set NODE_ENV production \
      --add-flags "'$out/lib/node_modules/scanservjs-api/src/server.js'"
      --add-flags "'$out/lib/node_modules/scanservjs/app-server/src/server.js'"
  '';

  meta = {
@@ -92,4 +38,4 @@ buildNpmPackage {
    maintainers = with lib.maintainers; [ chayleaf ];
    platforms = lib.platforms.linux;
  };
}
})