nixpkgs/pkgs/by-name/pa/parabolic/package.nix
2025-02-03 18:07:56 +01:00

121 lines
2.6 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
cmake,
gettext,
itstool,
ninja,
yelp-tools,
pkg-config,
libnick,
boost,
glib,
shared-mime-info,
gtk4,
libadwaita,
wrapGAppsHook4,
libxmlxx5,
blueprint-compiler,
qt6,
yt-dlp,
ffmpeg,
aria2,
nix-update-script,
uiPlatform ? "gnome",
}:
assert lib.assertOneOf "uiPlatform" uiPlatform [
"gnome"
"qt"
];
stdenv.mkDerivation (finalAttrs: {
pname = "parabolic";
version = "2025.1.4";
src = fetchFromGitHub {
owner = "NickvisionApps";
repo = "Parabolic";
tag = finalAttrs.version;
hash = "sha256-B8/e5urhy5tAgHNd/PR3HlNQd0M0CxgC56nArFGlQ9c=";
};
nativeBuildInputs =
[
cmake
gettext
ninja
pkg-config
itstool
yelp-tools
]
++ 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
]
++ lib.optionals (uiPlatform == "gnome") [
glib
gtk4
libadwaita
libxmlxx5
];
cmakeFlags = [
(lib.cmakeFeature "UI_PLATFORM" uiPlatform)
];
preFixup =
lib.optionalString (uiPlatform == "gnome") "gappsWrapperArgs"
+ lib.optionalString (uiPlatform == "qt") "qtWrapperArgs"
+ "+=(--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:
- Downloading and converting videos and audio using ffmpeg.
- Supporting multiple codecs.
- Offering YouTube sponsorblock support.
- Running multiple downloads at a time.
- 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;
maintainers = with lib.maintainers; [
normalcea
getchoo
];
mainProgram = "org.nickvision.tubeconverter";
platforms = lib.platforms.linux;
};
})