about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/mpd/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/mpd/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/mpd/default.nix148
1 files changed, 148 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/mpd/default.nix b/nixpkgs/pkgs/servers/mpd/default.nix
new file mode 100644
index 000000000000..740fd4739ab7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/mpd/default.nix
@@ -0,0 +1,148 @@
+{ 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;
+
+let
+  opt = stdenv.lib.optional;
+  mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}";
+  major = "0.20";
+  minor = "23";
+
+in stdenv.mkDerivation rec {
+  name = "mpd-${version}";
+  version = "${major}${if minor == "" then "" else "." + minor}";
+
+  src = fetchFromGitHub {
+    owner  = "MusicPlayerDaemon";
+    repo   = "MPD";
+    rev    = "v${version}";
+    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 icuSupport icu
+    ++ 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;
+
+  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")
+      (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")
+      "--enable-debug"
+      "--with-zeroconf=avahi"
+    ]
+    ++ opt stdenv.isLinux
+      "--with-systemdsystemunitdir=$(out)/etc/systemd/system";
+
+  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 ehmry fpletz ];
+    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.
+    '';
+  };
+}