blob: 9a607c16e4aaca7ca2e8cddc86e5ea8ea75e6314 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
{ lib
, buildNpmPackage
, fetchFromGitHub
, makeWrapper
, ffmpeg
, yt-dlp
, makeDesktopItem
, electron
}:
buildNpmPackage rec {
pname = "ytDownloader";
version = "3.17.3";
src = fetchFromGitHub {
owner = "aandrew-me";
repo = "ytDownloader";
rev = "refs/tags/v${version}";
hash = "sha256-aqQGOqPLKKTBjWjL3KyRD4paBGCQLhCBjXwVVhoHDSk=";
};
npmDepsHash = "sha256-lhFyiWy9dgnxxaElavzqA4YpRm7cVC23pvL5Kwve58E=";
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ ffmpeg yt-dlp ];
desktopItem = makeDesktopItem {
name = "ytDownloader";
exec = "ytdownloader %U";
icon = "ytdownloader";
desktopName = "ytDownloader";
comment = "A modern GUI video and audio downloader";
categories = [ "Utility" ];
startupWMClass = "ytDownloader";
};
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
dontNpmBuild = true;
# Patch config dir to ~/.config/ytdownloader
# Otherwise it stores config in ~/.config/Electron
patches = [ ./config-dir.patch ];
# Replace hardcoded ffmpeg and ytdlp paths
# Also stop it from downloading ytdlp
postPatch = ''
substituteInPlace src/renderer.js \
--replace-fail $\{__dirname}/../ffmpeg '${lib.getExe ffmpeg}' \
--replace-fail 'path.join(os.homedir(), ".ytDownloader", "ytdlp")' '`${lib.getExe yt-dlp}`' \
--replace-fail '!!localStorage.getItem("fullYtdlpBinPresent")' 'true'
'';
postInstall = ''
makeWrapper ${electron}/bin/electron $out/bin/ytdownloader \
--add-flags $out/lib/node_modules/ytdownloader/main.js
install -Dm444 assets/images/icon.png $out/share/pixmaps/ytdownloader.png
install -Dm444 "${desktopItem}/share/applications/"* -t $out/share/applications
'';
meta = {
description = "A modern GUI video and audio downloader";
homepage = "https://github.com/aandrew-me/ytDownloader";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ chewblacka ];
platforms = lib.platforms.all;
mainProgram = "ytdownloader";
};
}
|