{ alsaSupport ? true, xvSupport ? true, theoraSupport ? true, cacaSupport ? true , xineramaSupport ? true, randrSupport ? true, dvdnavSupport ? true , stdenv, fetchurl, fetchsvn, fetchgit, x11, freetype, fontconfig, zlib , alsaLib ? null, libXv ? null, libtheora ? null, libcaca ? null , libXinerama ? null, libXrandr ? null, libdvdnav ? null , cdparanoia ? null, cddaSupport ? true , amrnb ? null, amrwb ? null, amrSupport ? false , x11Support ? true, libX11 ? null, libXext ? null , jackaudioSupport ? false, jackaudio ? null , x264Support ? false, x264 ? null , xvidSupport ? false, xvidcore ? null , lameSupport ? true, lame ? null , speexSupport ? true, speex ? null , screenSaverSupport ? true, libXScrnSaver , pulseSupport ? false, pulseaudio , mesa, pkgconfig, unzip, yasm, freefont_ttf , vdpauSupport ? false, libvdpau ? null }: assert alsaSupport -> alsaLib != null; assert x11Support -> libX11 != null; assert xvSupport -> (libXv != null && x11Support); assert theoraSupport -> libtheora != null; assert cacaSupport -> libcaca != null; assert xineramaSupport -> (libXinerama != null && x11Support); assert randrSupport -> (libXrandr != null && x11Support); assert dvdnavSupport -> libdvdnav != null; assert cddaSupport -> cdparanoia != null; assert jackaudioSupport -> jackaudio != null; assert amrSupport -> (amrnb != null && amrwb != null); assert screenSaverSupport -> libXScrnSaver != null; assert vdpauSupport -> libvdpau != null; assert speexSupport -> speex != null; let codecs_src = let dir = http://www.mplayerhq.hu/MPlayer/releases/codecs/; in if stdenv.system == "i686-linux" then fetchurl { url = "${dir}/essential-20071007.tar.bz2"; sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic"; } else if stdenv.system == "x86_64-linux" then fetchurl { url = "${dir}/essential-amd64-20071007.tar.bz2"; sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x"; } else if stdenv.system == "powerpc-linux" then fetchurl { url = "${dir}/essential-ppc-20071007.tar.bz2"; sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z"; } else null; codecs = if codecs_src != null then stdenv.mkDerivation { name = "MPlayer-codecs-essential-20071007"; src = codecs_src; installPhase = '' mkdir $out cp -prv * $out ''; meta = { license = "unfree"; }; } else null; ffmpegGit = fetchgit { url = "git://git.videolan.org/ffmpeg.git"; rev = "9e53f62be1a171eaf9620958c225d42cf5142a30"; sha256 = "be0ef2a394c82a0eee0be66bc0b943d37efb90f74ce1030aa89606109434c943"; }; mplayerRev = "34586"; in stdenv.mkDerivation rec { name = "mplayer-${mplayerRev}"; src = fetchsvn { # Old kind of URL: # url = http://nixos.org/tarballs/mplayer-snapshot-20101227.tar.bz2; # Snapshot I took on 20110423 #Transient #url = http://www.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2; #sha256 = "cc1b3fda75b172f02c3f46581cfb2c17f4090997fe9314ad046e464a76b858bb"; url = "svn://svn.mplayerhq.hu/mplayer/trunk"; rev = "${mplayerRev}"; sha256 = "5688add3256b5de8e0410194232aaaeb01531bb507459ffe4f07e69cb2d81bd7"; }; prePatch = '' sed -i /^_install_strip/d configure ''; buildInputs = [ freetype zlib pkgconfig ] ++ stdenv.lib.optionals x11Support [ libX11 libXext mesa ] ++ stdenv.lib.optional alsaSupport alsaLib ++ stdenv.lib.optional xvSupport libXv ++ stdenv.lib.optional theoraSupport libtheora ++ stdenv.lib.optional cacaSupport libcaca ++ stdenv.lib.optional xineramaSupport libXinerama ++ stdenv.lib.optional randrSupport libXrandr ++ stdenv.lib.optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ] ++ stdenv.lib.optional cddaSupport cdparanoia ++ stdenv.lib.optional jackaudioSupport jackaudio ++ stdenv.lib.optionals amrSupport [ amrnb amrwb ] ++ stdenv.lib.optional x264Support x264 ++ stdenv.lib.optional xvidSupport xvidcore ++ stdenv.lib.optional pulseSupport pulseaudio ++ stdenv.lib.optional screenSaverSupport libXScrnSaver ++ stdenv.lib.optional lameSupport lame ++ stdenv.lib.optional vdpauSupport libvdpau ++ stdenv.lib.optional speexSupport speex; buildNativeInputs = [ yasm ]; preConfigure = '' cp -r ${ffmpegGit} ffmpeg chmod u+w -R ffmpeg sed -ie '1i#include "libavutil/intreadwrite.h"' ffmpeg/libavcodec/libmp3lame.c ''; postConfigure = '' echo CONFIG_MPEGAUDIODSP=yes >> config.mak ''; configureFlags = '' ${if cacaSupport then "--enable-caca" else "--disable-caca"} ${if dvdnavSupport then "--enable-dvdnav --enable-dvdread --disable-dvdread-internal" else ""} ${if x264Support then "--enable-x264 --extra-libs=-lx264" else ""} ${if codecs != null then "--codecsdir=${codecs}" else ""} ${if (stdenv.isi686 || stdenv.isx86_64) then "--enable-runtime-cpudetection" else ""} ${if x11Support then "--enable-x11" else ""} ${stdenv.lib.optionalString speexSupport "--enable-speex"} --disable-xanim --disable-ivtv --enable-vidix --enable-fbdev --disable-ossaudio ''; NIX_LDFLAGS = if x11Support then "-lX11 -lXext" else ""; # Provide a reasonable standard font. Maybe we should symlink here. postInstall = '' mkdir -p $out/share/mplayer cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf ''; crossAttrs = { dontSetConfigureCross = true; # Some things (vidix) are nanonote specific. Once someone cares, we can make options from them. preConfigure = preConfigure + '' configureFlags="`echo $configureFlags | sed -e 's/--codecsdir[^ ]\+//' \ -e 's/--enable-runtime-cpudetection//' `" configureFlags="$configureFlags --target=${stdenv.cross.arch}-linux --enable-cross-compile --cc=$crossConfig-gcc --as=$crossConfig-as --disable-vidix-pcidb --with-vidix-drivers=no --host-cc=gcc" ''; }; meta = { description = "A movie player that supports many video formats"; homepage = "http://mplayerhq.hu"; license = "GPL"; maintainers = [ stdenv.lib.maintainers.eelco stdenv.lib.maintainers.urkud ]; platforms = stdenv.lib.platforms.linux; }; }