Unverified Commit 9d618a6b authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

parabolic: 2024.5.0 -> 2025.1.4 (#378350)

parents 862f6f19 40e2d8c2
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
{
  lib,
  stdenvNoCC,
  fetchFromGitHub,
  nix-update-script,
}:

stdenvNoCC.mkDerivation (finalAttrs: {
  pname = "libmaddy-markdown";
  version = "1.3.0";

  src = fetchFromGitHub {
    owner = "progsource";
    repo = "maddy";
    tag = finalAttrs.version;
    hash = "sha256-sVUXACT94PSPcohnOyIp7KK8baCBuf6ZNMIyk6Cfdjg=";
  };

  dontBuild = true;
  dontConfigure = true;

  installPhase = ''
    runHook preInstall

    mkdir -p $out/include/maddy
    install -Dm444 include/maddy/* -t $out/include/maddy

    runHook postInstall
  '';

  passthru.updateScript = nix-update-script { };

  meta = {
    description = "C++ Markdown to HTML header-only parser library";
    homepage = "https://github.com/progsource/maddy";
    license = lib.licenses.mit;
    maintainers = [ lib.maintainers.normalcea ];
    platforms = lib.platforms.unix;
  };
})
+83 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  ninja,
  pkg-config,
  validatePkgConfig,
  openssl,
  sqlcipher,
  boost,
  curl,
  glib,
  libsecret,
  libmaddy-markdown,
  testers,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "libnick";
  version = "2025.1.0";

  src = fetchFromGitHub {
    owner = "NickvisionApps";
    repo = "libnick";
    tag = finalAttrs.version;
    hash = "sha256-Y7Vn9KaZjEJ29o2GouNl5B/svAtJ24El9WYgXHhnxho=";
  };

  nativeBuildInputs =
    [
      cmake
      ninja
    ]
    ++ lib.optionals stdenv.hostPlatform.isUnix [
      pkg-config
      validatePkgConfig
    ];

  buildInputs =
    [
      boost
      libmaddy-markdown
    ]
    ++ lib.optionals stdenv.hostPlatform.isUnix [
      glib
      openssl
    ]
    ++ lib.optional stdenv.hostPlatform.isWindows sqlcipher;

  propagatedBuildInputs = [
    curl
    libsecret
  ];

  cmakeFlags = [
    (lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
    (lib.cmakeFeature "USE_LIBSECRET" "true")
  ];

  postPatch = ''
    substituteInPlace cmake/libnick.pc.in \
    --replace-fail 'libdir=''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@' \
                   'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \
    --replace-fail 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' \
                   'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@'
  '';

  passthru = {
    tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
    updateScript = nix-update-script { };
  };

  meta = {
    description = "Cross-platform development base for native Nickvision applications";
    homepage = "https://github.com/NickvisionApps/libnick";
    license = lib.licenses.gpl3Plus;
    maintainers = [ lib.maintainers.normalcea ];
    platforms = lib.platforms.unix ++ lib.platforms.windows;
    pkgConfigModules = [ "libnick" ];
  };
})
+40 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchurl,
  pkg-config,
  libxml2,
  glibmm,
  meson,
  ninja,
}:

stdenv.mkDerivation rec {
  pname = "libxmlxx5";
  version = "5.4";

  src = fetchurl {
    url = "https://download.gnome.org/sources/libxml++/${version}/libxml++-${lib.versions.pad 3 version}.tar.xz";
    hash = "sha256-6aI8Q2aGqUaY0hOOa8uvhJEh1jv6D1DcNP77/XlWaEg=";
  };

  nativeBuildInputs = [
    pkg-config
    meson
    ninja
  ];

  buildInputs = [ glibmm ];

  propagatedBuildInputs = [ libxml2 ];

  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;

  meta = {
    description = "C++ wrapper for the libxml2 XML parser library";
    homepage = "https://libxmlplusplus.sourceforge.net/";
    license = lib.licenses.lgpl2Plus;
    maintainers = [ lib.maintainers.normalcea ];
    platforms = lib.platforms.unix;
  };
}
+0 −237
Original line number Diff line number Diff line
[
  {
    "pname": "Ace4896.DBus.Services.Secrets",
    "version": "1.2.0",
    "sha256": "1i1rwv8z2dx0mjib7vair2w7ylngmrcpbd012sdlpvdjpx0af0bn"
  },
  {
    "pname": "Cake.Tool",
    "version": "4.0.0",
    "sha256": "11vc5fimi6w465081sqxs4zhw7grr6v8ga7nl1mscdl43wv33ql2"
  },
  {
    "pname": "GetText.NET",
    "version": "1.9.14",
    "sha256": "18z4cf0dldcf41z8xgj3gdlvj9w5a9ikgj72623r0i740ndnl094"
  },
  {
    "pname": "GirCore.Adw-1",
    "version": "0.5.0",
    "sha256": "130jwgkkphyhsk0c14kqmznx9ywfhiwa37lzjn2qgr68akgd3xd9"
  },
  {
    "pname": "GirCore.Cairo-1.0",
    "version": "0.5.0",
    "sha256": "1x9d3jzzpf72gzxq6qf02ih2x79y9m5zqc874drl5wc8p1qbryzn"
  },
  {
    "pname": "GirCore.FreeType2-2.0",
    "version": "0.5.0",
    "sha256": "1688rn8dycqcslfk850w8w2pbs4b93nmj1xa6g4n6ncy799780cy"
  },
  {
    "pname": "GirCore.Gdk-4.0",
    "version": "0.5.0",
    "sha256": "1v2nl9gh941lqzfvryslhgsx9nwaf91q131xrpilrmk18xn3hpd6"
  },
  {
    "pname": "GirCore.GdkPixbuf-2.0",
    "version": "0.5.0",
    "sha256": "0gbmckch435s2fxpxzqjwckfsxqsidv1nz3wil3v1a2iqvk3imnr"
  },
  {
    "pname": "GirCore.Gio-2.0",
    "version": "0.5.0",
    "sha256": "1yx23jcyy7pzjkbcf0v0s4nw1n51rcaxf8dg7zqfzhvg9f0k2iwl"
  },
  {
    "pname": "GirCore.GLib-2.0",
    "version": "0.5.0",
    "sha256": "169y390cgda0ps60g2j6vf5bkr6bfmxvgzga8k697bsl3dfzkkvv"
  },
  {
    "pname": "GirCore.GObject-2.0",
    "version": "0.5.0",
    "sha256": "1w35a1kmn0ggnlwcsib9m4427299f9ylm7xkm69yzswdwzrfv1kj"
  },
  {
    "pname": "GirCore.Graphene-1.0",
    "version": "0.5.0",
    "sha256": "16y836gzn9ah963lhg533hik8wh984j33gc60kzn8nziwxl6jplq"
  },
  {
    "pname": "GirCore.Gsk-4.0",
    "version": "0.5.0",
    "sha256": "152c839l1lv6qc8pccmkzm72sfh45n9qpyyarxvllnn0lzhd50lf"
  },
  {
    "pname": "GirCore.Gtk-4.0",
    "version": "0.5.0",
    "sha256": "0lj69qx9ksz9w94j4ryy8hr0ja60ijvx8wpr4l1i7ic01gsyxprc"
  },
  {
    "pname": "GirCore.HarfBuzz-0.0",
    "version": "0.5.0",
    "sha256": "0cnic254jwkndcdg51wvi1vvh4f947ylwg63ag428gfbmx0684c4"
  },
  {
    "pname": "GirCore.Pango-1.0",
    "version": "0.5.0",
    "sha256": "0p4ks9yk3d8pl9c58zc1ncdzw45fkkmgpwn29vj1wax73iml1k79"
  },
  {
    "pname": "GirCore.PangoCairo-1.0",
    "version": "0.5.0",
    "sha256": "0j532ixh9adk2gwg55w81m5hwy0c6a3307jr4157pbjg2qm1x4mn"
  },
  {
    "pname": "Markdig",
    "version": "0.33.0",
    "sha256": "1dj06wgdqmjji4nfr1dysz7hwp5bjgsrk9qjkdq82d7gk6nmhs9r"
  },
  {
    "pname": "Meziantou.Framework.Win32.CredentialManager",
    "version": "1.4.5",
    "sha256": "1ikjxj6wir2jcjwlmd4q7zz0b4g40808gx59alvad31sb2aqp738"
  },
  {
    "pname": "Microsoft.CSharp",
    "version": "4.7.0",
    "sha256": "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"
  },
  {
    "pname": "Microsoft.Data.Sqlite.Core",
    "version": "8.0.0",
    "sha256": "05qjnzk1fxybks92y93487l3mj5nghjcwiy360xjgk3jykz3rv39"
  },
  {
    "pname": "Microsoft.NETCore.Platforms",
    "version": "1.1.0",
    "sha256": "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"
  },
  {
    "pname": "Microsoft.NETCore.Targets",
    "version": "5.0.0",
    "sha256": "0z3qyv7qal5irvabc8lmkh58zsl42mrzd1i0sssvzhv4q4kl3cg6"
  },
  {
    "pname": "Microsoft.Win32.SystemEvents",
    "version": "8.0.0",
    "sha256": "05392f41ijgn17y8pbjcx535l1k09krnq3xdp60kyq568sn6xk2i"
  },
  {
    "pname": "Nickvision.Aura",
    "version": "2023.11.4",
    "sha256": "0gasyglp1pgi0s6zqzmbm603j3j36vvr68grv6g93fdj2vjlmkxs"
  },
  {
    "pname": "Octokit",
    "version": "9.0.0",
    "sha256": "0kw49w1hxk4d2x9598012z9q1yr3ml5rm06fy1jnmhy44s3d3jp5"
  },
  {
    "pname": "pythonnet",
    "version": "3.0.3",
    "sha256": "0qnivddg13vi1fb22z3krsj1gczyyfd56nmk6gas6qrwlxdzhriv"
  },
  {
    "pname": "SQLitePCLRaw.bundle_e_sqlcipher",
    "version": "2.1.6",
    "sha256": "15v2x7y4k7cl47a9jccbvgbwngwi5dz6qhv0cxpcasx4v5i9aila"
  },
  {
    "pname": "SQLitePCLRaw.core",
    "version": "2.1.6",
    "sha256": "1w8zsgz2w2q0a9cw9cl1rzrpv48a04nhyq67ywan6xlgknds65a7"
  },
  {
    "pname": "SQLitePCLRaw.lib.e_sqlcipher",
    "version": "2.1.6",
    "sha256": "0dl5an15whs4yl5hm2wibzbfigzck0flah8a07k99y1bhbmv080z"
  },
  {
    "pname": "SQLitePCLRaw.provider.e_sqlcipher",
    "version": "2.1.6",
    "sha256": "1jx8d4dq5w2951b7w722gnxbfgdklwazc48kcbdzylkglwkrqgrq"
  },
  {
    "pname": "System.CodeDom",
    "version": "8.0.0",
    "sha256": "0zyzd15v0nf8gla7nz243m1kff8ia6vqp471i3g7xgawgj5n21dv"
  },
  {
    "pname": "System.Drawing.Common",
    "version": "8.0.0",
    "sha256": "1j4rsm36bnwqmh5br9mzmj0ikjnc39k26q6l9skjlrnw8hlngwy4"
  },
  {
    "pname": "System.IO",
    "version": "4.3.0",
    "sha256": "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"
  },
  {
    "pname": "System.IO.Pipelines",
    "version": "6.0.0",
    "sha256": "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"
  },
  {
    "pname": "System.Management",
    "version": "8.0.0",
    "sha256": "1zbwj6ii8axa4w8ymjzi9d9pj28nhswygahyqppvzaxypw6my2hz"
  },
  {
    "pname": "System.Memory",
    "version": "4.5.3",
    "sha256": "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"
  },
  {
    "pname": "System.Memory",
    "version": "4.5.5",
    "sha256": "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"
  },
  {
    "pname": "System.Reflection",
    "version": "4.3.0",
    "sha256": "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"
  },
  {
    "pname": "System.Reflection.Emit",
    "version": "4.3.0",
    "sha256": "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"
  },
  {
    "pname": "System.Reflection.Emit.ILGeneration",
    "version": "4.3.0",
    "sha256": "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"
  },
  {
    "pname": "System.Reflection.Primitives",
    "version": "4.3.0",
    "sha256": "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"
  },
  {
    "pname": "System.Runtime",
    "version": "4.3.0",
    "sha256": "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"
  },
  {
    "pname": "System.Text.Encoding",
    "version": "4.3.0",
    "sha256": "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"
  },
  {
    "pname": "System.Threading.Tasks",
    "version": "4.3.0",
    "sha256": "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"
  },
  {
    "pname": "Tmds.DBus",
    "version": "0.15.0",
    "sha256": "1bz5j6wfp9hn4fg5vjxl6mr9lva4gx6zqncqyqxrcb8lw7hvhwc6"
  },
  {
    "pname": "Tmds.DBus.Protocol",
    "version": "0.15.0",
    "sha256": "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"
  }
]
+102 −59
Original line number Diff line number Diff line
{ lib
, buildDotnetModule
, fetchFromGitHub
, dotnetCorePackages
, gtk4
, libadwaita
, pkg-config
, wrapGAppsHook4
, glib
, shared-mime-info
, gdk-pixbuf
, blueprint-compiler
, python3
, ffmpeg
{
  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"
];

buildDotnetModule rec {
stdenv.mkDerivation (finalAttrs: {
  pname = "parabolic";
  version = "2024.5.0";
  version = "2025.1.4";

  src = fetchFromGitHub {
    owner = "NickvisionApps";
    repo = "Parabolic";
    rev = version;
    hash = "sha256-awbCn7W7RUSuEByXxLGrsmYjmxCrwywhhrMJq/iM1Uc=";
    fetchSubmodules = true;
    tag = finalAttrs.version;
    hash = "sha256-B8/e5urhy5tAgHNd/PR3HlNQd0M0CxgC56nArFGlQ9c=";
  };

  dotnet-sdk = dotnetCorePackages.sdk_8_0;
  dotnet-runtime = dotnetCorePackages.runtime_8_0;
  pythonEnv = python3.withPackages(ps: with ps; [ yt-dlp ]);

  projectFile = "NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj";
  nugetDeps = ./deps.json;
  executables = "NickvisionTubeConverter.GNOME";

   nativeBuildInputs = [
  nativeBuildInputs =
    [
      cmake
      gettext
      ninja
      pkg-config
      itstool
      yelp-tools
    ]
    ++ lib.optionals (uiPlatform == "gnome") [
      wrapGAppsHook4
      blueprint-compiler
      glib
      shared-mime-info
    gdk-pixbuf
    blueprint-compiler
  ];

  buildInputs = [ gtk4 libadwaita ];
    ]
    ++ lib.optional (uiPlatform == "qt") qt6.wrapQtAppsHook;

  runtimeDeps = [
  buildInputs =
    [
      libnick
      boost
    ]
    ++ lib.optionals (uiPlatform == "qt") [
      qt6.qtbase
      qt6.qtsvg
    ]
    ++ lib.optionals (uiPlatform == "gnome") [
      glib
      gtk4
      libadwaita
    glib
    gdk-pixbuf
      libxmlxx5
    ];

  postPatch = ''
    substituteInPlace NickvisionTubeConverter.Shared/Linux/org.nickvision.tubeconverter.desktop.in --replace '@EXEC@' "NickvisionTubeConverter.GNOME"
  '';
  cmakeFlags = [
    (lib.cmakeFeature "UI_PLATFORM" uiPlatform)
  ];

  postInstall = ''
    install -Dm444 NickvisionTubeConverter.Shared/Resources/org.nickvision.tubeconverter.svg -t $out/share/icons/hicolor/scalable/apps/
    install -Dm444 NickvisionTubeConverter.Shared/Resources/org.nickvision.tubeconverter-symbolic.svg -t $out/share/icons/hicolor/symbolic/apps/
    install -Dm444 NickvisionTubeConverter.Shared/Linux/org.nickvision.tubeconverter.desktop.in -T $out/share/applications/org.nickvision.tubeconverter.desktop
  '';
  preFixup =
    lib.optionalString (uiPlatform == "gnome") "gappsWrapperArgs"
    + lib.optionalString (uiPlatform == "qt") "qtWrapperArgs"
    + "+=(--prefix PATH : ${
      lib.makeBinPath [
        aria2
        ffmpeg
        yt-dlp
      ]
    })";

  makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ pythonEnv ffmpeg ]}" ];
  passthru.updateScript = nix-update-script { };

  passthru.updateScript = ./update.sh;
  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.

  meta = with lib; {
    description = "Download web video and audio";
      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 = licenses.mit;
    maintainers = with maintainers; [ ewuuwe ];
    mainProgram = "NickvisionTubeConverter.GNOME";
    platforms = platforms.linux;
    license = lib.licenses.gpl3Plus;
    maintainers = with lib.maintainers; [
      normalcea
      getchoo
    ];
    mainProgram = "org.nickvision.tubeconverter";
    platforms = lib.platforms.linux;
  };
}
})
Loading