lol
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 18.03-beta 214 lines 7.7 kB view raw
1{ stdenv, fetchurl, fetchFromGitHub, fetchpatch, makeWrapper 2, docutils, perl, pkgconfig, python3, which, ffmpeg 3, freefont_ttf, freetype, libass, libpthreadstubs 4, lua, luasocket, libuchardet, libiconv ? null, darwin 5 6, x11Support ? true, 7 libGLU_combined ? null, 8 libX11 ? null, 9 libXext ? null, 10 libXxf86vm ? null 11 12, waylandSupport ? false, 13 wayland ? null, 14 libxkbcommon ? null 15 16, rubberbandSupport ? true, rubberband ? null 17, xineramaSupport ? true, libXinerama ? null 18, xvSupport ? true, libXv ? null 19, sdl2Support ? true, SDL2 ? null 20, alsaSupport ? true, alsaLib ? null 21, screenSaverSupport ? true, libXScrnSaver ? null 22, vdpauSupport ? true, libvdpau ? null 23, dvdreadSupport ? true, libdvdread ? null 24, dvdnavSupport ? true, libdvdnav ? null 25, bluraySupport ? true, libbluray ? null 26, speexSupport ? true, speex ? null 27, theoraSupport ? true, libtheora ? null 28, pulseSupport ? true, libpulseaudio ? null 29, bs2bSupport ? true, libbs2b ? null 30, cacaSupport ? true, libcaca ? null 31, libpngSupport ? true, libpng ? null 32, youtubeSupport ? true, youtube-dl ? null 33, vaapiSupport ? true, libva ? null 34, drmSupport ? true, libdrm ? null 35, vapoursynthSupport ? false, vapoursynth ? null 36, archiveSupport ? false, libarchive ? null 37, jackaudioSupport ? false, libjack2 ? null 38 39# scripts you want to be loaded by default 40, scripts ? [] 41}: 42 43with stdenv.lib; 44 45let 46 available = x: x != null; 47in 48assert x11Support -> all available [libGLU_combined libX11 libXext libXxf86vm]; 49assert waylandSupport -> all available [wayland libxkbcommon]; 50assert rubberbandSupport -> available rubberband; 51assert xineramaSupport -> x11Support && available libXinerama; 52assert xvSupport -> x11Support && available libXv; 53assert sdl2Support -> available SDL2; 54assert alsaSupport -> available alsaLib; 55assert screenSaverSupport -> available libXScrnSaver; 56assert vdpauSupport -> available libvdpau; 57assert dvdreadSupport -> available libdvdread; 58assert dvdnavSupport -> available libdvdnav; 59assert bluraySupport -> available libbluray; 60assert speexSupport -> available speex; 61assert theoraSupport -> available libtheora; 62assert pulseSupport -> available libpulseaudio; 63assert bs2bSupport -> available libbs2b; 64assert cacaSupport -> available libcaca; 65assert libpngSupport -> available libpng; 66assert youtubeSupport -> available youtube-dl; 67assert vapoursynthSupport -> available vapoursynth; 68assert jackaudioSupport -> available libjack2; 69assert archiveSupport -> available libarchive; 70assert vaapiSupport -> available libva; 71assert drmSupport -> available libdrm; 72 73let 74 # Purity: Waf is normally downloaded by bootstrap.py, but 75 # for purity reasons this behavior should be avoided. 76 wafVersion = "1.9.8"; 77 waf = fetchurl { 78 urls = [ "http://waf.io/waf-${wafVersion}" 79 "http://www.freehackers.org/~tnagy/release/waf-${wafVersion}" ]; 80 sha256 = "1gsd3zza1wixv2vhvq3inp4vb71i41a1kbwqnwixhnvdmcmw8z8n"; 81 }; 82in stdenv.mkDerivation rec { 83 name = "mpv-${version}"; 84 version = "0.27.0"; 85 86 src = fetchFromGitHub { 87 owner = "mpv-player"; 88 repo = "mpv"; 89 rev = "v${version}"; 90 sha256 = "0746kmsg69675y5c70vn8imcr9d1zpjz97f27xr1vx00yjpd518v"; 91 }; 92 93 patches = [ 94 (fetchpatch { 95 url = "https://github.com/mpv-player/mpv/commit/2ecf240b1cd20875991a5b18efafbe799864ff7f.patch"; 96 sha256 = "1sr0770rvhsgz8d7ysr9qqp4g9gwdhgj8g3rgnz90wl49lgrykhb"; 97 }) 98 (fetchpatch { 99 name = "CVE-2018-6360.patch"; 100 url = https://salsa.debian.org/multimedia-team/mpv/raw/ddface85a1adfdfe02ffb25b5ac7fac715213b97/debian/patches/09_ytdl-hook-whitelist-protocols.patch; 101 sha256 = "1gb1lkjbr8rv4v9ji6w5z97kbxbi16dbwk2255ajbvngjrc7vivv"; 102 }) 103 ]; 104 105 postPatch = '' 106 patchShebangs ./TOOLS/ 107 ''; 108 109 NIX_LDFLAGS = optionalString x11Support "-lX11 -lXext"; 110 111 configureFlags = [ 112 "--enable-libmpv-shared" 113 "--enable-manpage-build" 114 "--enable-zsh-comp" 115 "--disable-libmpv-static" 116 "--disable-static-build" 117 "--disable-build-date" # Purity 118 (enableFeature archiveSupport "libarchive") 119 (enableFeature dvdreadSupport "dvdread") 120 (enableFeature dvdnavSupport "dvdnav") 121 (enableFeature vaapiSupport "vaapi") 122 (enableFeature waylandSupport "wayland") 123 (enableFeature stdenv.isLinux "dvbin") 124 ]; 125 126 configurePhase = '' 127 python3 ${waf} configure --prefix=$out $configureFlags 128 ''; 129 130 nativeBuildInputs = [ 131 docutils makeWrapper perl 132 pkgconfig python3 which 133 ]; 134 135 buildInputs = [ 136 ffmpeg freetype libass libpthreadstubs 137 lua luasocket libuchardet 138 ] ++ optional alsaSupport alsaLib 139 ++ optional xvSupport libXv 140 ++ optional theoraSupport libtheora 141 ++ optional xineramaSupport libXinerama 142 ++ optional dvdreadSupport libdvdread 143 ++ optional bluraySupport libbluray 144 ++ optional jackaudioSupport libjack2 145 ++ optional pulseSupport libpulseaudio 146 ++ optional rubberbandSupport rubberband 147 ++ optional screenSaverSupport libXScrnSaver 148 ++ optional vdpauSupport libvdpau 149 ++ optional speexSupport speex 150 ++ optional bs2bSupport libbs2b 151 ++ optional libpngSupport libpng 152 ++ optional youtubeSupport youtube-dl 153 ++ optional sdl2Support SDL2 154 ++ optional cacaSupport libcaca 155 ++ optional vaapiSupport libva 156 ++ optional drmSupport libdrm 157 ++ optional vapoursynthSupport vapoursynth 158 ++ optional archiveSupport libarchive 159 ++ optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ] 160 ++ optionals x11Support [ libX11 libXext libGLU_combined libXxf86vm ] 161 ++ optionals waylandSupport [ wayland libxkbcommon ] 162 ++ optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ 163 libiconv Cocoa CoreAudio 164 ]); 165 166 enableParallelBuilding = true; 167 168 buildPhase = '' 169 python3 ${waf} build 170 ''; 171 172 installPhase = 173 let 174 getPath = type : "${luasocket}/lib/lua/${lua.luaversion}/?.${type};" + 175 "${luasocket}/share/lua/${lua.luaversion}/?.${type}"; 176 luaPath = getPath "lua"; 177 luaCPath = getPath "so"; 178 in 179 '' 180 python3 ${waf} install 181 182 # Use a standard font 183 mkdir -p $out/share/mpv 184 ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf 185 # Ensure youtube-dl is available in $PATH for MPV 186 wrapProgram $out/bin/mpv \ 187 --add-flags "--scripts=${concatStringsSep "," scripts}" \ 188 --prefix LUA_PATH : "${luaPath}" \ 189 --prefix LUA_CPATH : "${luaCPath}" \ 190 '' + optionalString youtubeSupport '' 191 --prefix PATH : "${youtube-dl}/bin" \ 192 '' + optionalString vapoursynthSupport '' 193 --prefix PYTHONPATH : "${vapoursynth}/lib/${python3.libPrefix}/site-packages:$PYTHONPATH" 194 '' + '' 195 196 cp TOOLS/umpv $out/bin 197 wrapProgram $out/bin/umpv \ 198 --set MPV "$out/bin/mpv" 199 ''; 200 201 meta = with stdenv.lib; { 202 description = "A media player that supports many video formats (MPlayer and mplayer2 fork)"; 203 homepage = http://mpv.io; 204 license = licenses.gpl2Plus; 205 maintainers = with maintainers; [ AndersonTorres fuuzetsu fpletz ]; 206 platforms = platforms.darwin ++ platforms.linux; 207 208 longDescription = '' 209 mpv is a free and open-source general-purpose video player, 210 based on the MPlayer and mplayer2 projects, with great 211 improvements above both. 212 ''; 213 }; 214}