1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
{ lib
, stdenv
, fetchFromGitHub
, pkg-config
, python3Packages
, ffmpeg
, flac
, libjxl
, librsvg
, gobject-introspection
, gtk3
, kissfft
, libnotify
, libsamplerate
, libvorbis
, miniaudio
, mpg123
, libopenmpt
, opusfile
, wavpack
, pango
, pulseaudio
, withDiscordRPC ? false
}:
stdenv.mkDerivation rec {
pname = "tauon";
version = "7.6.3";
src = fetchFromGitHub {
owner = "Taiko2k";
repo = "TauonMusicBox";
rev = "v${version}";
hash = "sha256-cNR4Ffn9HvgL5KV4FUSnbzEh6VfoKaIbfpb18/qKEns=";
};
postUnpack = ''
rmdir source/src/phazor/kissfft
ln -s ${kissfft.src} source/src/phazor/kissfft
rmdir source/src/phazor/miniaudio
ln -s ${miniaudio.src} source/src/phazor/miniaudio
'';
postPatch = ''
substituteInPlace tauon.py \
--replace 'install_mode = False' 'install_mode = True' \
--replace 'install_directory = os.path.dirname(os.path.abspath(__file__))' 'install_directory = "${placeholder "out"}/share/tauon"'
substituteInPlace t_modules/t_main.py \
--replace 'install_mode = False' 'install_mode = True' \
--replace 'libopenmpt.so' '${lib.getLib libopenmpt}/lib/libopenmpt.so' \
--replace 'lib/libphazor.so' '../../lib/libphazor.so'
substituteInPlace t_modules/t_phazor.py \
--replace 'lib/libphazor.so' '../../lib/libphazor.so'
patchShebangs compile-phazor.sh
substituteInPlace compile-phazor.sh --replace 'gcc' '${stdenv.cc.targetPrefix}cc'
substituteInPlace extra/tauonmb.desktop --replace 'Exec=/opt/tauon-music-box/tauonmb.sh' 'Exec=${placeholder "out"}/bin/tauon'
'';
postBuild = ''
./compile-phazor.sh
'';
nativeBuildInputs = [
pkg-config
python3Packages.wrapPython
];
buildInputs = [
flac
gobject-introspection
gtk3
libnotify
libopenmpt
librsvg
libsamplerate
libvorbis
mpg123
opusfile
pango
wavpack
];
pythonPath = with python3Packages; [
beautifulsoup4
gst-python
dbus-python
isounidecode
libjxl
musicbrainzngs
mutagen
natsort
pillow
plexapi
pycairo
pychromecast
pylast
pygobject3
pylyrics
pysdl2
requests
send2trash
setproctitle
] ++ lib.optional withDiscordRPC pypresence
++ lib.optional stdenv.isLinux pulsectl;
makeWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath [ffmpeg]}"
"--prefix LD_LIBRARY_PATH : ${pulseaudio}/lib"
"--prefix PYTHONPATH : $out/share/tauon"
"--set GI_TYPELIB_PATH $GI_TYPELIB_PATH"
];
installPhase = ''
install -Dm755 tauon.py $out/bin/tauon
mkdir -p $out/share/tauon
cp -r lib $out
cp -r assets input.txt t_modules theme templates $out/share/tauon
wrapPythonPrograms
mkdir -p $out/share/applications
install -Dm755 extra/tauonmb.desktop $out/share/applications/tauonmb.desktop
mkdir -p $out/share/icons/hicolor/scalable/apps
install -Dm644 extra/tauonmb{,-symbolic}.svg $out/share/icons/hicolor/scalable/apps
'';
meta = with lib; {
description = "The Linux desktop music player from the future";
homepage = "https://tauonmusicbox.rocks/";
changelog = "https://github.com/Taiko2k/TauonMusicBox/releases/tag/v${version}";
license = licenses.gpl3;
maintainers = with maintainers; [ jansol ];
platforms = platforms.linux ++ platforms.darwin;
};
}
|