mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 07:23:20 +00:00
83 lines
2.2 KiB
Nix
83 lines
2.2 KiB
Nix
{
|
|
lib,
|
|
buildNpmPackage,
|
|
fetchFromGitHub,
|
|
copyDesktopItems,
|
|
makeWrapper,
|
|
ffmpeg,
|
|
yt-dlp,
|
|
makeDesktopItem,
|
|
electron,
|
|
}:
|
|
|
|
buildNpmPackage rec {
|
|
pname = "ytDownloader";
|
|
version = "3.18.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "aandrew-me";
|
|
repo = "ytDownloader";
|
|
rev = "refs/tags/v${version}";
|
|
hash = "sha256-/3VlBxT06/jnBwk07zoUs1yb9MUB9U+oJtXBGoKH6Dg=";
|
|
};
|
|
|
|
npmDepsHash = "sha256-dAd9O3iOELBRRzQV/+DSQXHS5PLjDZvsF2D1vwT9dw8=";
|
|
|
|
nativeBuildInputs = [
|
|
copyDesktopItems
|
|
makeWrapper
|
|
];
|
|
buildInputs = [
|
|
ffmpeg
|
|
yt-dlp
|
|
];
|
|
|
|
desktopItems = [
|
|
(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'
|
|
# Disable auto-updates
|
|
substituteInPlace src/preferences.js \
|
|
--replace-warn 'const autoUpdateDisabled = getId("autoUpdateDisabled");' 'const autoUpdateDisabled = "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
|
|
'';
|
|
|
|
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";
|
|
};
|
|
}
|