···
-
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, glib, systemd, boost, darwin
-
, alsaSupport ? true, alsaLib
-
, avahiSupport ? true, avahi, dbus
-
, flacSupport ? true, flac
-
, vorbisSupport ? true, libvorbis
-
, madSupport ? true, libmad
-
, id3tagSupport ? true, libid3tag
-
, mikmodSupport ? true, libmikmod
-
, shoutSupport ? true, libshout
-
, sqliteSupport ? true, sqlite
-
, curlSupport ? true, curl
-
, audiofileSupport ? true, audiofile
-
, bzip2Support ? true, bzip2
-
, ffmpegSupport ? true, ffmpeg
-
, fluidsynthSupport ? true, fluidsynth
-
, zipSupport ? true, zziplib
-
, samplerateSupport ? true, libsamplerate
-
, mmsSupport ? true, libmms
-
, mpg123Support ? true, mpg123
-
, aacSupport ? true, faad2
-
, lameSupport ? true, lame
-
, pulseaudioSupport ? true, libpulseaudio
-
, jackSupport ? true, libjack2
-
, gmeSupport ? true, game-music-emu
-
, icuSupport ? true, icu
-
, clientSupport ? true, mpd_clientlib
-
, opusSupport ? true, libopus
-
, soundcloudSupport ? true, yajl
-
, nfsSupport ? true, libnfs
-
, smbSupport ? true, samba
-
assert avahiSupport -> avahi != null && dbus != null;
-
opt = stdenv.lib.optional;
-
mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}";
-
in stdenv.mkDerivation rec {
-
version = "${major}${if minor == "" then "" else "." + minor}";
-
src = fetchFromGitHub {
-
owner = "MusicPlayerDaemon";
-
sha256 = "1z1pdgiddimnmck0ardrpxkvgk1wn9zxri5wfv5ppasbb7kfm350";
-
patches = [ ./x86.patch ];
-
buildInputs = [ glib boost ]
-
++ opt stdenv.isDarwin darwin.apple_sdk.frameworks.CoreAudioKit
-
++ opt stdenv.isLinux systemd
-
++ opt (stdenv.isLinux && alsaSupport) alsaLib
-
++ opt avahiSupport avahi
-
++ opt avahiSupport dbus
-
++ opt flacSupport flac
-
++ opt vorbisSupport libvorbis
-
# using libmad to decode mp3 files on darwin is causing a segfault -- there
-
# is probably a solution, but I'm disabling it for now
-
++ opt (!stdenv.isDarwin && madSupport) libmad
-
++ opt id3tagSupport libid3tag
-
++ opt mikmodSupport libmikmod
-
++ opt shoutSupport libshout
-
++ opt sqliteSupport sqlite
-
++ opt curlSupport curl
-
++ opt bzip2Support bzip2
-
++ opt audiofileSupport audiofile
-
++ opt ffmpegSupport ffmpeg
-
++ opt fluidsynthSupport fluidsynth
-
++ opt samplerateSupport libsamplerate
-
++ opt mmsSupport libmms
-
++ opt mpg123Support mpg123
-
++ opt aacSupport faad2
-
++ opt lameSupport lame
-
++ opt zipSupport zziplib
-
++ opt (!stdenv.isDarwin && pulseaudioSupport) libpulseaudio
-
++ opt (!stdenv.isDarwin && jackSupport) libjack2
-
++ opt gmeSupport game-music-emu
-
++ opt clientSupport mpd_clientlib
-
++ opt opusSupport libopus
-
++ opt soundcloudSupport yajl
-
++ opt (!stdenv.isDarwin && nfsSupport) libnfs
-
++ opt (!stdenv.isDarwin && smbSupport) samba;
-
nativeBuildInputs = [ autoreconfHook pkgconfig ];
-
enableParallelBuilding = true;
-
[ (mkFlag (!stdenv.isDarwin && alsaSupport) "alsa")
-
(mkFlag flacSupport "flac")
-
(mkFlag vorbisSupport "vorbis")
-
(mkFlag vorbisSupport "vorbis-encoder")
-
(mkFlag (!stdenv.isDarwin && madSupport) "mad")
-
(mkFlag mikmodSupport "mikmod")
-
(mkFlag id3tagSupport "id3")
-
(mkFlag shoutSupport "shout")
-
(mkFlag sqliteSupport "sqlite")
-
(mkFlag curlSupport "curl")
-
(mkFlag audiofileSupport "audiofile")
-
(mkFlag bzip2Support "bzip2")
-
(mkFlag ffmpegSupport "ffmpeg")
-
(mkFlag fluidsynthSupport "fluidsynth")
-
(mkFlag zipSupport "zzip")
-
(mkFlag samplerateSupport "lsr")
-
(mkFlag mmsSupport "mms")
-
(mkFlag mpg123Support "mpg123")
-
(mkFlag aacSupport "aac")
-
(mkFlag lameSupport "lame-encoder")
-
(mkFlag (!stdenv.isDarwin && pulseaudioSupport) "pulse")
-
(mkFlag (!stdenv.isDarwin && jackSupport) "jack")
-
(mkFlag stdenv.isDarwin "osx")
-
(mkFlag icuSupport "icu")
-
(mkFlag gmeSupport "gme")
-
(mkFlag clientSupport "libmpdclient")
-
(mkFlag opusSupport "opus")
-
(mkFlag soundcloudSupport "soundcloud")
-
(mkFlag (!stdenv.isDarwin && nfsSupport) "libnfs")
-
(mkFlag (!stdenv.isDarwin && smbSupport) "smbclient")
-
"--with-zeroconf=avahi"
-
"--with-systemdsystemunitdir=$(out)/etc/systemd/system";
-
${if shoutSupport then "-lshout" else ""}
-
meta = with stdenv.lib; {
-
description = "A flexible, powerful daemon for playing music";
-
homepage = http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki;
-
license = licenses.gpl2;
-
maintainers = with maintainers; [ astsmtl fuuzetsu ehmry fpletz ];
-
platforms = platforms.unix;
-
Music Player Daemon (MPD) is a flexible, powerful daemon for playing
-
music. Through plugins and libraries it can play a variety of sound
-
files while being controlled by its network protocol.