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

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