1
Files
flake-nixinator/derivations/tidal-dl-ng/default.nix

149 lines
3.6 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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];
}