nixpkgs/pkgs/servers/mpd/default.nix

114 lines
3.7 KiB
Nix
Raw Normal View History

2014-10-19 16:34:03 +00:00
{ stdenv, fetchurl, pkgconfig, glib, systemd, boost
, alsaSupport ? true, alsaLib
, flacSupport ? true, flac
, vorbisSupport ? true, libvorbis
, madSupport ? true, libmad
, id3tagSupport ? true, libid3tag
, mikmodSupport ? true, libmikmod
2012-10-25 01:15:48 +00:00
, 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
2014-06-01 15:07:46 +00:00
, aacSupport ? true, faad2
, pulseaudioSupport ? true, pulseaudio
2015-01-01 19:45:23 +00:00
, jackSupport ? true, jack2
, gmeSupport ? true, game-music-emu
2014-10-19 16:34:03 +00:00
, icuSupport ? true, icu
2014-06-01 15:07:46 +00:00
}:
let
opt = stdenv.lib.optional;
mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}";
2014-10-19 16:34:03 +00:00
major = "0.19";
2014-12-10 07:35:50 +00:00
minor = "6";
in stdenv.mkDerivation rec {
2014-10-19 16:34:03 +00:00
name = "mpd-${major}.${minor}";
src = fetchurl {
2014-10-19 16:34:03 +00:00
url = "http://www.musicpd.org/download/mpd/${major}/${name}.tar.gz";
2014-12-10 07:35:50 +00:00
sha256 = "023h2d9x4yg1z2glnwf8h2j0p1xhn1hb0wf02mg70j3p0bz63imj";
};
2012-10-25 01:15:48 +00:00
2014-10-19 16:34:03 +00:00
buildInputs = [ pkgconfig glib boost ]
2013-10-08 09:05:19 +00:00
++ opt stdenv.isLinux systemd
++ opt (stdenv.isLinux && alsaSupport) alsaLib
++ 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
2014-06-01 15:07:46 +00:00
++ opt zipSupport zziplib
2014-10-19 16:34:03 +00:00
++ opt pulseaudioSupport pulseaudio
2015-01-01 19:45:23 +00:00
++ opt jackSupport jack2
++ opt gmeSupport game-music-emu
2014-10-19 16:34:03 +00:00
++ opt icuSupport icu;
configureFlags =
[ (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")
2014-06-01 15:07:46 +00:00
(mkFlag pulseaudioSupport "pulse")
2015-01-01 19:45:23 +00:00
(mkFlag jackSupport "jack")
2014-05-21 05:37:34 +00:00
(mkFlag stdenv.isDarwin "osx")
2014-10-19 16:34:03 +00:00
(mkFlag icuSupport "icu")
(mkFlag gmeSupport "gme")
"--enable-debug"
]
2013-10-08 09:05:19 +00:00
++ opt stdenv.isLinux
"--with-systemdsystemunitdir=$(out)/etc/systemd/system";
2012-10-25 01:15:48 +00:00
NIX_LDFLAGS = ''
${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 ];
platforms = platforms.unix;
longDescription = ''
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.
'';
};
}