chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / yt / ytdownloader / package.nix
blob190c8e9f96f13b61b92f0e4caff12f6704316aae
2   lib,
3   buildNpmPackage,
4   fetchFromGitHub,
5   copyDesktopItems,
6   makeWrapper,
7   ffmpeg,
8   yt-dlp,
9   makeDesktopItem,
10   electron,
13 buildNpmPackage rec {
14   pname = "ytDownloader";
15   version = "3.18.2";
17   src = fetchFromGitHub {
18     owner = "aandrew-me";
19     repo = "ytDownloader";
20     rev = "refs/tags/v${version}";
21     hash = "sha256-j6FeRqAeqXLofvI5R7nOwfg6wd17Xk85vryktGfnxyI=";
22   };
24   npmDepsHash = "sha256-LUlpyzHJDpjytZmMjjn899NKwvb80a0DXdMhVT2aRTY=";
26   nativeBuildInputs = [
27     copyDesktopItems
28     makeWrapper
29   ];
30   buildInputs = [
31     ffmpeg
32     yt-dlp
33   ];
35   desktopItems = [
36     (makeDesktopItem {
37       name = "ytDownloader";
38       exec = "ytdownloader %U";
39       icon = "ytdownloader";
40       desktopName = "ytDownloader";
41       comment = "A modern GUI video and audio downloader";
42       categories = [ "Utility" ];
43       startupWMClass = "ytDownloader";
44     })
45   ];
47   ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
49   dontNpmBuild = true;
51   # Patch config dir to ~/.config/ytdownloader
52   # Otherwise it stores config in ~/.config/Electron
53   patches = [ ./config-dir.patch ];
55   # Replace hardcoded ffmpeg and ytdlp paths
56   # Also stop it from downloading ytdlp
57   postPatch = ''
58     substituteInPlace src/renderer.js \
59       --replace-fail $\{__dirname}/../ffmpeg '${lib.getExe ffmpeg}' \
60       --replace-fail 'path.join(os.homedir(), ".ytDownloader", "ytdlp")' '`${lib.getExe yt-dlp}`' \
61       --replace-fail '!!localStorage.getItem("fullYtdlpBinPresent")' 'true'
62     # Disable auto-updates
63     substituteInPlace src/preferences.js \
64       --replace-warn 'const autoUpdateDisabled = getId("autoUpdateDisabled");' 'const autoUpdateDisabled = "true";'
65   '';
67   postInstall = ''
68     makeWrapper ${electron}/bin/electron $out/bin/ytdownloader \
69         --add-flags $out/lib/node_modules/ytdownloader/main.js
71     install -Dm444 assets/images/icon.png $out/share/pixmaps/ytdownloader.png
72   '';
74   meta = {
75     description = "Modern GUI video and audio downloader";
76     homepage = "https://github.com/aandrew-me/ytDownloader";
77     license = lib.licenses.gpl3Only;
78     maintainers = with lib.maintainers; [ chewblacka ];
79     platforms = lib.platforms.all;
80     mainProgram = "ytdownloader";
81   };