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
142
143
144
145
146
147
148
149
150
151
152
153
|
{ lib
, stdenv
, mkDerivation
, fetchFromGitHub
, chromaprint
, cmake
, faad2
, ffmpeg
, fftw
, flac
, gbenchmark
, glibcLocales
, gtest
, hidapi
, lame
, libebur128
, libdjinterop
, libGLU
, libid3tag
, libkeyfinder
, libmad
, libmodplug
, libopus
, libsecret
, libshout
, libsndfile
, libusb1
, libvorbis
, libxcb
, lilv
, lv2
, microsoft-gsl
, mp4v2
, opusfile
, pcre
, pkg-config
, portaudio
, portmidi
, protobuf
, qtbase
, qtkeychain
, qtscript
, qtsvg
, qtx11extras
, rubberband
, serd
, sord
, soundtouch
, sratom
, sqlite
, taglib
, upower
, vamp-plugin-sdk
, wavpack
, wrapGAppsHook3
}:
mkDerivation rec {
pname = "mixxx";
version = "2.4.1";
src = fetchFromGitHub {
owner = "mixxxdj";
repo = "mixxx";
rev = version;
hash = "sha256-BOdXgA+z3sFE4ngAEhSbp1gDbsti1STJY2Yy6Hp+zTE=";
};
nativeBuildInputs = [ cmake pkg-config wrapGAppsHook3 ];
dontWrapGApps = true;
buildInputs = [
chromaprint
faad2
ffmpeg
fftw
flac
gbenchmark
glibcLocales
gtest
hidapi
lame
libebur128
libGLU
libid3tag
libdjinterop
libkeyfinder
libmad
libmodplug
libopus
libsecret
libshout
libsndfile
libusb1
libvorbis
libxcb
lilv
lv2
microsoft-gsl
mp4v2
opusfile
pcre
portaudio
portmidi
protobuf
qtbase
qtkeychain
qtscript
qtsvg
qtx11extras
rubberband
serd
sord
soundtouch
sratom
sqlite
taglib
upower
vamp-plugin-sdk
wavpack
];
preFixup=''
qtWrapperArgs+=(--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive ''${gappsWrapperArgs[@]})
'';
# mixxx installs udev rules to DATADIR instead of SYSCONFDIR
# let's disable this and install udev rules manually via postInstall
# see https://github.com/mixxxdj/mixxx/blob/2.3.5/CMakeLists.txt#L1381-L1392
cmakeFlags = [
"-DINSTALL_USER_UDEV_RULES=OFF"
];
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
rules="$src/res/linux/mixxx-usb-uaccess.rules"
if [ ! -f "$rules" ]; then
echo "$rules is missing, must update the Nix file."
exit 1
fi
mkdir -p "$out/lib/udev/rules.d"
cp "$rules" "$out/lib/udev/rules.d/69-mixxx-usb-uaccess.rules"
'';
meta = with lib; {
homepage = "https://mixxx.org";
description = "Digital DJ mixing software";
mainProgram = "mixxx";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ bfortz benley ];
platforms = platforms.linux;
};
}
|