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

165 lines
4.2 KiB
Nix

# 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.1";
src = super.fetchPypi {
inherit (old) pname;
version = "0.20.1";
# sha256 = "sha256-Gq9klAMXk+SHb7C6z6apErVRz0PB5jyADfixqGZyDDc="; # v0.20.0
sha256 = "sha256-aFhesbASA2icQZm8RA1r5hbwhR6fDrQeSneIRcWg/Vs="; # v0.20.1
};
});
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";
# TODO: The official repo was deleted, find the new one once it pops up
# src = pkgs.fetchFromGitHub {
# owner = "exislow";
# repo = "tidal-dl-ng";
# rev = "v${version}";
# sha256 = "sha256-PUT0anx1yivgXwW21jah7Rv1/BabOT+KPoW446NFNyg=";
# };
src = pkgs.fetchFromGitHub {
owner = "rodvicj";
repo = "tidal_dl_ng-Project";
rev = "4573142c76ef045ebf8e80c34657dd2bec96f17d";
sha256 = "sha256-3sO2qj8V4KXOWK7vQsFAOYeTZo2rsc/M36SwRnC0oVg=";
};
doCheck = false;
catchConflicts = false;
strictDeps = 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
];
};
#
# 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];
}