From 95738f6d9fec3900090c8429096b31a55e700d39 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Fri, 18 Jul 2025 00:25:49 +0200 Subject: [PATCH] Derivations/TidalDlNg: Add tidal-dl-ng derivation --- derivations/default.nix | 1 + derivations/tidal-dl-ng/default.nix | 148 ++++++++++++++++++++++++++++ home/christoph/default.nix | 1 + 3 files changed, 150 insertions(+) create mode 100644 derivations/tidal-dl-ng/default.nix diff --git a/derivations/default.nix b/derivations/default.nix index dd14e933..0aa3543f 100644 --- a/derivations/default.nix +++ b/derivations/default.nix @@ -7,4 +7,5 @@ monolisa = pkgs.callPackage ./monolisa {}; msty = pkgs.callPackage ./msty {}; + tidal-dl-ng = pkgs.callPackage ./tidal-dl-ng {}; } diff --git a/derivations/tidal-dl-ng/default.nix b/derivations/tidal-dl-ng/default.nix new file mode 100644 index 00000000..76005517 --- /dev/null +++ b/derivations/tidal-dl-ng/default.nix @@ -0,0 +1,148 @@ +# https://github.com/exislow/tidal-dl-ng/issues/472 +# https://gist.github.com/xaolanx/4c88d0cbc0dee90764bae767006103f8 +{ + lib, + stdenv, + pkgs, +}: let + # + # Dependencies + # + requests_2_32_4 = pkgs.python3Packages.requests.overridePythonAttrs (old: { + version = "2.32.4"; + src = pkgs.python3Packages.fetchPypi { + inherit (old) pname; + version = "2.32.4"; + sha256 = "sha256-J9AxZoLIopg00yZIIAJLYqNpQgg9Usry8UwFkTNtNCI="; + }; + patches = + builtins.filter ( + p: !pkgs.lib.strings.hasInfix "CVE-2024-47081" (toString p) + ) + old.patches; + }); + + pycryptodome_3_23_0 = pkgs.python3Packages.pycryptodome.overridePythonAttrs (old: { + version = "3.23.0"; + src = pkgs.python3Packages.fetchPypi { + inherit (old) pname; + version = "3.23.0"; + sha256 = "sha256-RHcAplcYLWAzi6sJ/bJ1GPiFauzYCuTGvd22f/XaRO8="; + }; + }); + + pathvalidate_3_3_1 = pkgs.python3Packages.pathvalidate.overridePythonAttrs (old: { + version = "3.3.1"; + src = pkgs.python3Packages.fetchPypi { + inherit (old) pname; + version = "3.3.1"; + sha256 = "sha256-sYwHISv+rWJDRbuOHWFBzc8Vo5c2mU6guUA1rSsboXc="; + }; + }); + + typer_0_16_0 = pkgs.python3Packages.typer.overridePythonAttrs (old: { + version = "0.16.0"; + src = pkgs.python3Packages.fetchPypi { + inherit (old) pname; + version = "0.16.0"; + sha256 = "sha256-rzd/+u4dvjeulEDLTo8RaG6lzk6brgG4SufGO4fx3Ts="; + }; + }); + + tidalDlNg = pkgs.python3Packages.buildPythonApplication rec { + pname = "tidal-dl-ng"; + version = "0.26.2"; + format = "pyproject"; + + src = pkgs.fetchFromGitHub { + owner = "exislow"; + repo = "tidal-dl-ng"; + rev = "v${version}"; + sha256 = "sha256-9C7IpLKeR08/nMbePltwGrzIgXfdaVfyOeFQnfCwMKg="; + }; + + doCheck = false; + catchConflicts = false; + + nativeBuildInputs = with pkgs.python3Packages; [poetry-core setuptools]; + + propagatedBuildInputs = with pkgs.python3Packages; [ + requests_2_32_4 + coloredlogs + dataclasses-json + m3u8 + mpegdash + mutagen + pathvalidate_3_3_1 + pycryptodome_3_23_0 + python-ffmpeg + rich + tidalapi + toml + typer_0_16_0 + pyside6 + pyqtdarktheme + ]; + + # pythonOutputDistPhase = '' + # echo "⚠️Skipping pythonOutputDistPhase" + # ''; + # pythonCatchConflictsPhase = '' + # echo "🛑 Skipping pythonCatchConflictsPhase" + # ''; + }; + + # + # Wrapped applications + # + + tidal-dl-ng = pkgs.writeShellApplication { + name = "tdn"; + runtimeInputs = [tidalDlNg]; + text = ''exec tidal-dl-ng "$@"''; + }; + + tidal-dl-ng-gui = pkgs.writeShellApplication { + name = "tdng"; + runtimeInputs = [ + tidalDlNg + pkgs.kdePackages.qtbase + pkgs.kdePackages.qtsvg + ]; + text = '' + export QT_QPA_PLATFORM=xcb + export QT_PLUGIN_PATH=${pkgs.kdePackages.qtbase}/lib/qt-6/plugins + exec tidal-dl-ng-gui "$@" + ''; + }; + + tidal-dl-ng-gui-desktopfile = pkgs.stdenv.mkDerivation { + pname = "tdng"; + version = "0.26.2"; + dontUnpack = true; + + nativeBuildInputs = [pkgs.makeWrapper]; + + installPhase = '' + mkdir -p $out/bin + cp ${tidal-dl-ng-gui}/bin/tdng $out/bin/ + + mkdir -p $out/share/applications + cat > $out/share/applications/tdng.desktop << EOF + [Desktop Entry] + Name=Tidal Downloader NG + Comment=Download music from Tidal + Exec=tdng + Icon=audio-x-generic + Terminal=false + Type=Application + Categories=AudioVideo;Audio;Player; + EOF + ''; + }; +in + # Combine the outputs into a single package + pkgs.buildEnv { + name = "tidal-dl-ng-env"; + paths = [tidal-dl-ng tidal-dl-ng-gui-desktopfile]; + } diff --git a/home/christoph/default.nix b/home/christoph/default.nix index f45758ce..6a0c6d91 100644 --- a/home/christoph/default.nix +++ b/home/christoph/default.nix @@ -487,6 +487,7 @@ ferdium gparted tidal-hifi + tidal-dl-ng # Office wacomtablet # For xournalpp/krita