# https://github.com/exislow/tidal-dl-ng/issues/472 # https://gist.github.com/xaolanx/4c88d0cbc0dee90764bae767006103f8 { lib, stdenv, pkgs, }: let # # Custom Dependencies # pythonPkgs = pkgs.python313Packages.overrideScope (self: super: { typer = super.typer.overridePythonAttrs (old: { version = "0.20.0"; src = super.fetchPypi { inherit (old) pname; version = "0.20.0"; sha256 = "sha256-Gq9klAMXk+SHb7C6z6apErVRz0PB5jyADfixqGZyDDc="; }; }); rich = super.rich.overridePythonAttrs (old: { version = "14.2.0"; src = super.fetchPypi { inherit (old) pname; version = "14.2.0"; sha256 = "sha256-c/9Qx8DBx3yCQweSg/Tts3bw9kQkM67LjOfm0LktH+Q="; }; doCheck = false; }); }); # typer_0_20_0 = pkgs.python313Packages.typer.overridePythonAttrs (old: { # version = "0.20.0"; # src = pkgs.python313Packages.fetchPypi { # inherit (old) pname; # version = "0.20.0"; # sha256 = "sha256-Gq9klAMXk+SHb7C6z6apErVRz0PB5jyADfixqGZyDDc="; # }; # }); # # rich_14_2_0 = pkgs.python313Packages.rich.overridePythonAttrs (old: { # version = "14.2.0"; # src = pkgs.python313Packages.fetchPypi { # inherit (old) pname; # version = "14.2.0"; # sha256 = "sha256-c/9Qx8DBx3yCQweSg/Tts3bw9kQkM67LjOfm0LktH+Q="; # }; # doCheck = false; # }); # rich_14_2_0 = pkgs.python313Packages.rich.overridePythonAttrs (old: { # version = "14.2.0"; # src = pkgs.fetchFromGitHub { # owner = "Textualize"; # repo = "rich"; # tag = "v14.2.0"; # hash = "sha256-oQbxRbZnVr/Ln+i/hpBw5FlpUp3gcp/7xsxi6onPkn8="; # }; # }); tidalDlNg = pythonPkgs.buildPythonApplication rec { pname = "tidal-dl-ng"; version = "0.31.3"; format = "pyproject"; src = pkgs.fetchFromGitHub { owner = "exislow"; repo = "tidal-dl-ng"; rev = "v${version}"; sha256 = "sha256-PUT0anx1yivgXwW21jah7Rv1/BabOT+KPoW446NFNyg="; }; doCheck = false; catchConflicts = false; nativeBuildInputs = with pythonPkgs; [poetry-core setuptools]; # https://github.com/exislow/tidal-dl-ng/blob/master/pyproject.toml propagatedBuildInputs = with pythonPkgs; [ # Nixpkgs requests mutagen dataclasses-json pathvalidate m3u8 coloredlogs pyside6 pyqtdarktheme toml pycryptodome tidalapi python-ffmpeg ansi2html # Custom Deps typer rich ]; # 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.31.3"; 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]; }