about summary refs log tree commit diff
path: root/pkgs/by-name/vd/vdhcoapp
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/vd/vdhcoapp')
-rw-r--r--pkgs/by-name/vd/vdhcoapp/ffmpeg-filepicker.patch46
-rw-r--r--pkgs/by-name/vd/vdhcoapp/filepicker.nix40
-rw-r--r--pkgs/by-name/vd/vdhcoapp/package.nix83
3 files changed, 169 insertions, 0 deletions
diff --git a/pkgs/by-name/vd/vdhcoapp/ffmpeg-filepicker.patch b/pkgs/by-name/vd/vdhcoapp/ffmpeg-filepicker.patch
new file mode 100644
index 0000000000000..f6fb777e186e9
--- /dev/null
+++ b/pkgs/by-name/vd/vdhcoapp/ffmpeg-filepicker.patch
@@ -0,0 +1,46 @@
+diff --git a/src/converter.js b/src/converter.js
+index af7b4c3..20da407 100644
+--- a/src/converter.js
++++ b/src/converter.js
+@@ -1,4 +1,4 @@
+-import open from 'open';
++const open = import('open');
+ 
+ const os = require("os");
+ const path = require('path');
+@@ -9,9 +9,9 @@ const rpc = require('./weh-rpc');
+ 
+ const exec_dir = path.dirname(process.execPath);
+ 
+-const ffmpeg = findExecutableFullPath("ffmpeg", exec_dir);
+-const ffprobe = findExecutableFullPath("ffprobe", exec_dir);
+-const filepicker = findExecutableFullPath("filepicker", exec_dir);
++const ffmpeg = "@ffmpeg@/bin/ffmpeg";
++const ffprobe = "@ffmpeg@/bin/ffprobe";
++const filepicker = "@filepicker@";
+ 
+ if (!fileExistsSync(ffmpeg)) {
+   logger.error("ffmpeg not found. Install ffmpeg and make sure it's in your path.");
+diff --git a/src/main.js b/src/main.js
+index 47b92de..e2e9402 100644
+--- a/src/main.js
++++ b/src/main.js
+@@ -1,4 +1,4 @@
+-const config = require('config.json');
++const config = require('./config.json');
+ const converter = require('./converter');
+ const os = require("os");
+ 
+diff --git a/src/native-autoinstall.js b/src/native-autoinstall.js
+index 556a22b..c729568 100644
+--- a/src/native-autoinstall.js
++++ b/src/native-autoinstall.js
+@@ -1,7 +1,7 @@
+ const os = require("os");
+ const path = require("path");
+ const { spawn, exec } = require('child_process');
+-const config = require('config.json');
++const config = require('./config.json');
+ 
+ let fs;
+ if (process.versions.node.startsWith("10")) {
\ No newline at end of file
diff --git a/pkgs/by-name/vd/vdhcoapp/filepicker.nix b/pkgs/by-name/vd/vdhcoapp/filepicker.nix
new file mode 100644
index 0000000000000..7aec0f9e2838f
--- /dev/null
+++ b/pkgs/by-name/vd/vdhcoapp/filepicker.nix
@@ -0,0 +1,40 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, atk
+, gtk3
+, glib
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "filepicker";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "paulrouget";
+    repo = "static-filepicker";
+    rev = "v${version}";
+    hash = "sha256-7sRzf3SA9RSBf4O36olXgka8c6Bufdb0qsuTofVe55s=";
+  };
+
+  cargoHash = "sha256-aal7ppFkCpNc+QTS4Qklsb9WfJ65QqG6p1eOskiX+/Q=";
+
+  buildInputs = [
+    atk
+    gtk3
+    glib
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  meta = with lib; {
+    description = "File picker used by VDHCoApp";
+    homepage = "https://github.com/paulrouget/static-filepicker";
+    license = licenses.gpl2;
+    mainProgram = "filepicker";
+    maintainers = with maintainers; [ hannesgith ];
+  };
+}
diff --git a/pkgs/by-name/vd/vdhcoapp/package.nix b/pkgs/by-name/vd/vdhcoapp/package.nix
new file mode 100644
index 0000000000000..ad61515b9ecba
--- /dev/null
+++ b/pkgs/by-name/vd/vdhcoapp/package.nix
@@ -0,0 +1,83 @@
+{ lib
+, fetchFromGitHub
+, buildNpmPackage
+, nodejs
+, ffmpeg
+, callPackage
+, substituteAll
+, makeWrapper
+, toml2json
+, jq
+}:
+buildNpmPackage rec {
+  pname = "vdhcoapp";
+  version = "2.0.19";
+
+  src = fetchFromGitHub {
+    owner = "aclap-dev";
+    repo = "vdhcoapp";
+    rev = "v${version}";
+    hash = "sha256-8xeZvqpRq71aShVogiwlVD3gQoPGseNOmz5E3KbsZxU=";
+  };
+
+  sourceRoot = "${src.name}/app";
+  npmDepsHash = "sha256-E032U2XZdyTER6ROkBosOTn7bweDXHl8voC3BQEz8Wg=";
+  dontNpmBuild = true;
+
+  nativeBuildInputs = [
+    makeWrapper
+    toml2json
+    jq
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./ffmpeg-filepicker.patch;
+      inherit ffmpeg;
+      filepicker = lib.getExe (callPackage ./filepicker.nix {});
+    })
+  ];
+
+  postPatch = ''
+    # Cannot use patch, setting placeholder here
+    substituteInPlace src/native-autoinstall.js \
+      --replace process.execPath "\"${placeholder "out"}/bin/vdhcoapp\""
+  '';
+
+  preBuild = ''
+    toml2json --pretty ../config.toml > src/config.json
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/opt/vdhcoapp
+    cp -r . "$out/opt/vdhcoapp"
+
+    makeWrapper ${nodejs}/bin/node $out/bin/vdhcoapp \
+      --add-flags $out/opt/vdhcoapp/src/main.js
+
+    generateManifest() {
+      type=$1
+      outputFolder=$2
+      mkdir -p $outputFolder
+      manifestName=$(jq -r '.meta.id' src/config.json).json
+      jq '.store.'$type'.manifest * (.meta | with_entries(select (.key == "description")) * {"name": .id}) * {"path" : "${placeholder "out"}/bin/vdhcoapp"}' src/config.json > $outputFolder/$manifestName
+    }
+
+    generateManifest google $out/etc/opt/chrome/native-messaging-hosts
+    generateManifest google $out/etc/chromium/native-messaging-hosts
+    generateManifest mozilla $out/lib/mozilla/native-messaging-hosts
+    generateManifest google $out/etc/opt/edge/native-messaging-hosts
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Companion application for the Video DownloadHelper browser add-on";
+    homepage = "https://www.downloadhelper.net/";
+    license = licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = with maintainers; [ hannesgith ];
+    mainProgram = "vdhcoapp";
+  };
+}