Unverified Commit 1a357a92 authored by PedroHLC ☭'s avatar PedroHLC ☭
Browse files

fx-cast-bridge: adopt buildNpmPackage

parent ad5505f0
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
# How to generate a new version:
#
# Update version and hash as usual.
#
# ```
# git clone https://github.com/hensm/fx_cast.git
# cd fx_cast/app
# # Add `"name": "fx_cast_bridge", "version": "...",` to package.json and package-lock.json
# nix run nixpkgs#nodePackages.node2nix -- -c node2nix -l package-lock.json -d
# cp -v node-*.nix package*.json ${nixpkgs_path:?}/pkgs/tools/misc/fx_cast/
# ```
{ pkgs, stdenv }: let
  nodeEnv = import ./node-env.nix {
    inherit (pkgs) nodejs stdenv lib python2 runCommand writeTextFile writeShellScript;
    inherit pkgs;
    libtool = if stdenv.isDarwin then pkgs.darwin.cctools else null;
  };
  nodePackages = import ./node-packages.nix {
    inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
    inherit nodeEnv;
    globalBuildInputs = [pkgs.avahi-compat];
  };
in
stdenv.mkDerivation rec {
  pname = "fx_cast_bridge";
{ lib, buildNpmPackage, fetchFromGitHub, avahi-compat, nodejs, python3 }:

buildNpmPackage rec {
  pname = "fx-cast-bridge";
  version = "0.3.1";

  src = pkgs.fetchFromGitHub {
  src = fetchFromGitHub {
    owner = "hensm";
    repo = "fx_cast";
    rev = "v${version}";
    hash = "sha256-hB4NVJW2exHoKsMp0CKzHerYgj8aR77rV+ZsCoWA1Dg=";
  };
  sourceRoot = "source/app";
  npmDepsHash = "sha256-GLrDRZqKcX1PDGREx+MLZ1TEjr88r9nz4TvZ9nvo40g=";

  buildInputs = with pkgs; [
    nodejs
  ];
  nativeBuildInputs = [ python3 ];
  buildInputs = [ avahi-compat ];

  buildPhase = ''
    ln -vs ${nodePackages.nodeDependencies}/lib/node_modules app/node_modules
    # The temporary home solves the "failed with exit code 243"
    HOME="$(mktemp -d)" npm run build:app
  postPatch = ''
    substituteInPlace bin/lib/paths.js \
      --replace "../../../" "../../"
  '';

  dontNpmInstall = true;
  installPhase = ''
    mkdir -p $out/bin $out/lib/mozilla/native-messaging-hosts $out/opt
    runHook preInstall

    mkdir -p $out/{bin,lib/mozilla/native-messaging-hosts}

    substituteInPlace dist/app/fx_cast_bridge.json \
      --replace "$(realpath dist/app/fx_cast_bridge.sh)" "$out/bin/fx_cast_bridge"
    mv dist/app/fx_cast_bridge.json $out/lib/mozilla/native-messaging-hosts

    rm dist/app/fx_cast_bridge.sh
    mv dist/app $out/lib/fx_cast_bridge
    mv node_modules $out/lib/fx_cast_bridge/node_modules

    echo "#! /bin/sh
      NODE_PATH=${nodePackages.nodeDependencies}/lib/node_modules exec ${pkgs.nodejs}/bin/node $out/opt/fx_cast_bridge/src/main.js --_name fx_cast_bridge \"\$@\"
    NODE_PATH=\"$out/lib/node_modules\" \\
      exec ${nodejs}/bin/node \\
      $out/lib/fx_cast_bridge/src/main.js \\
      --_name fx_cast_bridge \"\$@\"
    " >$out/bin/fx_cast_bridge
    chmod +x $out/bin/fx_cast_bridge

    mv dist/app $out/opt/fx_cast_bridge
    runHook postInstall
  '';

  meta = with pkgs.lib; {
  meta = with lib; {
    description = "Implementation of the Chrome Sender API (Chromecast) within Firefox";
    homepage = "https://hensm.github.io/fx_cast/";
    license = licenses.mit;
+0 −686

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −2043

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −3950

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −37
Original line number Diff line number Diff line
{
    "name": "fx_cast_bridge",
    "version": "0.3.1",
    "type": "module",
    "scripts": {
        "build": "node bin/build.js",
        "package": "node bin/build.js --package",
        "install-manifest": "node bin/install-manifest.js",
        "remove-manifest": "node bin/install-manifest.js --remove"
    },
    "dependencies": {
        "bplist-creator": "^0.1.0",
        "bplist-parser": "^0.3.1",
        "castv2": "^0.1.10",
        "fast-srp-hap": "^2.0.4",
        "mdns": "^2.7.2",
        "mime-types": "^2.1.35",
        "node-fetch": "^3.2.3",
        "tweetnacl": "^1.0.3",
        "ws": "^8.5.0",
        "yargs": "^17.5.1"
    },
    "devDependencies": {
        "@types/mdns": "^0.0.34",
        "@types/mime-types": "^2.1.1",
        "@types/minimist": "^1.2.2",
        "@types/node": "^17.0.26",
        "@types/node-fetch": "^2.6.1",
        "@types/ws": "^8.5.3",
        "@types/yargs": "^17.0.11",
        "fs-extra": "^10.1.0",
        "mustache": "^4.2.0",
        "pkg": "^5.6.0",
        "tiny-typed-emitter": "^2.1.0",
        "typescript": "^4.6.3"
    }
}
Loading