nixpkgs-suyu/pkgs/applications/audio/mixxx/default.nix
2022-02-13 09:56:42 -08:00

142 lines
2.3 KiB
Nix

{ lib
, stdenv
, mkDerivation
, fetchurl
, fetchFromGitHub
, chromaprint
, cmake
, faad2
, ffmpeg
, fftw
, flac
, glibcLocales
, hidapi
, lame
, libebur128
, libGLU
, libid3tag
, libkeyfinder
, libmad
, libmodplug
, libopus
, libsecret
, libshout
, libsndfile
, libusb1
, libvorbis
, libxcb
, lilv
, lv2
, 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
}:
mkDerivation rec {
pname = "mixxx";
version = "2.3.2";
src = fetchFromGitHub {
owner = "mixxxdj";
repo = "mixxx";
rev = version;
sha256 = "sha256-EnOO5OGcaIITqfF9gpGktarzYOx128C1M2VmYNzdRsA=";
};
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [
chromaprint
faad2
ffmpeg
fftw
flac
glibcLocales
hidapi
lame
libebur128
libGLU
libid3tag
libkeyfinder
libmad
libmodplug
libopus
libsecret
libshout
libsndfile
libusb1
libvorbis
libxcb
lilv
lv2
mp4v2
opusfile
pcre
portaudio
portmidi
protobuf
qtbase
qtkeychain
qtscript
qtsvg
qtx11extras
rubberband
serd
sord
soundtouch
sratom
sqlite
taglib
upower
vamp-plugin-sdk
wavpack
];
qtWrapperArgs = [
"--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive"
];
# 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.2/CMakeLists.txt#L1381-L1392
cmakeFlags = [
"-DINSTALL_USER_UDEV_RULES=OFF"
];
postInstall = lib.optionalString stdenv.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";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ goibhniu bfortz ];
platforms = platforms.linux;
};
}