Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vdhcoapp: init at 2.0.19 #300051

Merged
merged 2 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7848,6 +7848,12 @@
github = "HannahMR";
githubId = 9088467;
};
hannesgith = {
email = "nix@h-h.win";
github = "hannesgith";
githubId = 33062605;
name = "Hannes Hattenbach";
};
hansjoergschurr = {
email = "commits@schurr.at";
github = "hansjoergschurr";
Expand Down
46 changes: 46 additions & 0 deletions pkgs/by-name/vd/vdhcoapp/ffmpeg-filepicker.patch
Original file line number Diff line number Diff line change
@@ -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")) {
40 changes: 40 additions & 0 deletions pkgs/by-name/vd/vdhcoapp/filepicker.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
83 changes: 83 additions & 0 deletions pkgs/by-name/vd/vdhcoapp/package.nix
Original file line number Diff line number Diff line change
@@ -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 = [
HannesGitH marked this conversation as resolved.
Show resolved Hide resolved
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;
HannesGitH marked this conversation as resolved.
Show resolved Hide resolved
platforms = lib.platforms.linux;
maintainers = with maintainers; [ hannesgith ];
mainProgram = "vdhcoapp";
};
}