anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / audio / mixxx / default.nix
blob90bc0361031806b08c18dc9f8cf13641f03e66a5
1 { lib
2 , stdenv
3 , mkDerivation
4 , fetchFromGitHub
5 , chromaprint
6 , cmake
7 , faad2
8 , ffmpeg
9 , fftw
10 , flac
11 , gbenchmark
12 , glibcLocales
13 , gtest
14 , hidapi
15 , lame
16 , libebur128
17 , libdjinterop
18 , libGLU
19 , libid3tag
20 , libkeyfinder
21 , libmad
22 , libmodplug
23 , libopus
24 , libsecret
25 , libshout
26 , libsndfile
27 , libusb1
28 , libvorbis
29 , libxcb
30 , lilv
31 , lv2
32 , microsoft-gsl
33 , mp4v2
34 , opusfile
35 , pcre
36 , pkg-config
37 , portaudio
38 , portmidi
39 , protobuf
40 , qtbase
41 , qtkeychain
42 , qtscript
43 , qtsvg
44 , qtx11extras
45 , rubberband
46 , serd
47 , sord
48 , soundtouch
49 , sratom
50 , sqlite
51 , taglib
52 , upower
53 , vamp-plugin-sdk
54 , wavpack
55 , wrapGAppsHook3
58 mkDerivation rec {
59   pname = "mixxx";
60   version = "2.4.1";
62   src = fetchFromGitHub {
63     owner = "mixxxdj";
64     repo = "mixxx";
65     rev = version;
66     hash = "sha256-BOdXgA+z3sFE4ngAEhSbp1gDbsti1STJY2Yy6Hp+zTE=";
67   };
69   nativeBuildInputs = [ cmake pkg-config wrapGAppsHook3 ];
71   dontWrapGApps = true;
73   buildInputs = [
74     chromaprint
75     faad2
76     ffmpeg
77     fftw
78     flac
79     gbenchmark
80     glibcLocales
81     gtest
82     hidapi
83     lame
84     libebur128
85     libGLU
86     libid3tag
87     libdjinterop
88     libkeyfinder
89     libmad
90     libmodplug
91     libopus
92     libsecret
93     libshout
94     libsndfile
95     libusb1
96     libvorbis
97     libxcb
98     lilv
99     lv2
100     microsoft-gsl
101     mp4v2
102     opusfile
103     pcre
104     portaudio
105     portmidi
106     protobuf
107     qtbase
108     qtkeychain
109     qtscript
110     qtsvg
111     qtx11extras
112     rubberband
113     serd
114     sord
115     soundtouch
116     sratom
117     sqlite
118     taglib
119     upower
120     vamp-plugin-sdk
121     wavpack
122   ];
124   preFixup=''
125     qtWrapperArgs+=(--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive ''${gappsWrapperArgs[@]})
126   '';
128   # mixxx installs udev rules to DATADIR instead of SYSCONFDIR
129   # let's disable this and install udev rules manually via postInstall
130   # see https://github.com/mixxxdj/mixxx/blob/2.3.5/CMakeLists.txt#L1381-L1392
131   cmakeFlags = [
132     "-DINSTALL_USER_UDEV_RULES=OFF"
133   ];
135   postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
136     rules="$src/res/linux/mixxx-usb-uaccess.rules"
137     if [ ! -f "$rules" ]; then
138         echo "$rules is missing, must update the Nix file."
139         exit 1
140     fi
141     mkdir -p "$out/lib/udev/rules.d"
142     cp "$rules" "$out/lib/udev/rules.d/69-mixxx-usb-uaccess.rules"
143   '';
145   meta = with lib; {
146     homepage = "https://mixxx.org";
147     description = "Digital DJ mixing software";
148     mainProgram = "mixxx";
149     license = licenses.gpl2Plus;
150     maintainers = with maintainers; [ bfortz benley ];
151     platforms = platforms.linux;
152   };