From 32bf2f319c434a952db344b03fc74593fb5b3a08 Mon Sep 17 00:00:00 2001 From: Jasi Date: Sun, 3 Aug 2025 15:37:43 -0400 Subject: [PATCH] =?UTF-8?q?parabolic:=202025.6.0=20=E2=86=92=202025.8.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream no longer supports the Qt version of the app, so all Qt related components and workarounds are dropped from the builder. In addition, upstream now vendors their own yt-dlp when the program starts up (occurs even when yt-dlp from nixpkgs and yt-dlp upstream match). This is patched out to ensure that nixpkgs users always use yt-dlp managed by Nix rather than a vendored version. --- pkgs/by-name/pa/parabolic/package.nix | 77 ++++++++------------------- 1 file changed, 22 insertions(+), 55 deletions(-) diff --git a/pkgs/by-name/pa/parabolic/package.nix b/pkgs/by-name/pa/parabolic/package.nix index 4185627fbdd9..12ae8ffefb93 100644 --- a/pkgs/by-name/pa/parabolic/package.nix +++ b/pkgs/by-name/pa/parabolic/package.nix @@ -18,29 +18,21 @@ wrapGAppsHook4, libxmlxx5, blueprint-compiler, - qt6, - qlementine, - qlementine-icons, yt-dlp, ffmpeg, aria2, nix-update-script, - uiPlatform ? "gnome", }: -assert lib.assertOneOf "uiPlatform" uiPlatform [ - "gnome" - "qt" -]; stdenv.mkDerivation (finalAttrs: { pname = "parabolic"; - version = "2025.6.0"; + version = "2025.8.1"; src = fetchFromGitHub { owner = "NickvisionApps"; repo = "Parabolic"; tag = finalAttrs.version; - hash = "sha256-Osfj/GaD4t85ZYnlFDqgHhLJLA8VvgqtHEJN8bn0SxI="; + hash = "sha256-Xft9yqkJzWu4eGPDtRl4tV4594HjJp17Osnv0kG0IMk="; }; # Patches desktop file/dbus service bypassing wrapped executable @@ -52,6 +44,13 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace "resources/linux/org.nickvision.tubeconverter.service.in" \ --replace-fail "@CMAKE_INSTALL_FULL_LIBDIR@/@PROJECT_NAME@/@OUTPUT_NAME@" \ "@CMAKE_INSTALL_FULL_BINDIR@/@PROJECT_NAME@" + '' + # Ensure that users are not downloading vendored versions of yt-dlp + # outside of nixpkgs + + '' + substituteInPlace "libparabolic/src/models/downloadmanager.cpp" \ + --replace-fail "m_ytdlpManager.checkForUpdates();" \ + "" ''; nativeBuildInputs = [ @@ -62,66 +61,39 @@ stdenv.mkDerivation (finalAttrs: { itstool yelp-tools desktop-file-utils - ] - ++ lib.optionals (uiPlatform == "gnome") [ wrapGAppsHook4 blueprint-compiler glib shared-mime-info - ] - ++ lib.optional (uiPlatform == "qt") qt6.wrapQtAppsHook; + ]; buildInputs = [ libnick boost - ] - ++ lib.optionals (uiPlatform == "qt") [ - qt6.qtbase - qt6.qtsvg - qlementine - qlementine-icons - ] - ++ lib.optionals (uiPlatform == "gnome") [ glib gtk4 libadwaita libxmlxx5 ]; - cmakeFlags = [ - (lib.cmakeFeature "UI_PLATFORM" uiPlatform) - ]; - - dontWrapGApps = true; - dontWrapQtApps = true; - - preFixup = - lib.optionalString (uiPlatform == "gnome") '' - makeWrapperArgs+=("''${gappsWrapperArgs[@]}") - '' - + lib.optionalString (uiPlatform == "qt") '' - makeWrapperArgs+=("''${qtWrapperArgs[@]}") - '' - + '' - makeWrapperArgs+=(--prefix PATH : ${ - lib.makeBinPath [ - aria2 - ffmpeg - yt-dlp - ] - }) - - wrapProgram $out/bin/org.nickvision.tubeconverter \ - ''${makeWrapperArgs[@]} - ''; + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : ${ + lib.makeBinPath [ + aria2 + ffmpeg + yt-dlp + ] + }) + ''; passthru.updateScript = nix-update-script { }; meta = { description = "Graphical frontend for yt-dlp to download video and audio"; longDescription = '' - Parabolic is a user-friendly frontend for `yt-dlp` that supports - many features including but limited to: + Parabolic is a user-friendly adwaita application for `yt-dlp` + that supports many features including but not limited to: + - Downloading and converting videos and audio using ffmpeg. - Supporting multiple codecs. - Offering YouTube sponsorblock support. @@ -129,11 +101,6 @@ stdenv.mkDerivation (finalAttrs: { - Downloading metadata and video subtitles. - Allowing the use of `aria2` for parallel downloads. - Offering a graphical keyring to manage account credentials. - - Being available as both a Qt and GNOME application. - - By default, the GNOME interface is used, but the Qt interface - can be built by overriding the `uiPlatform` argument to `"qt"` - over the default value `"gnome"`. ''; homepage = "https://github.com/NickvisionApps/Parabolic"; license = lib.licenses.gpl3Plus;