Unverified Commit 32bf2f31 authored by Jasi's avatar Jasi
Browse files

parabolic: 2025.6.0 → 2025.8.1

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.
parent a3cdfe96
Loading
Loading
Loading
Loading
+22 −55
Original line number Diff line number Diff line
@@ -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,57 +61,29 @@ 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 : ${
  preFixup = ''
    gappsWrapperArgs+=(--prefix PATH : ${
      lib.makeBinPath [
        aria2
        ffmpeg
        yt-dlp
      ]
    })

      wrapProgram $out/bin/org.nickvision.tubeconverter \
        ''${makeWrapperArgs[@]}
  '';

  passthru.updateScript = nix-update-script { };
@@ -120,8 +91,9 @@ stdenv.mkDerivation (finalAttrs: {
  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;