···
, enablePepperFlash ? false
, enablePepperPDF ? false
4
+
, enableWideVine ? false
···
# XXX: Only temporary and has to be version-specific
17
-
phases = [ "unpackPhase" "patchPhase" "checkPhase" "installPhase" ];
18
-
outputs = [ "pdf" "flash" ];
18
+
phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
19
+
outputs = [ "pdf" "flash" "widevine" ];
chan = if source.channel == "dev" then "chrome-unstable"
···
ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \
./opt/google/${chan}/PepperFlash \
28
-
./opt/google/${chan}/libpdf.so
29
+
./opt/google/${chan}/libpdf.so \
30
+
./opt/google/${chan}/libwidevinecdm.so \
31
+
./opt/google/${chan}/libwidevinecdmadapter.so
···
rpaths = [ stdenv.gcc.gcc ];
mkrpath = p: "${makeSearchPath "lib64" p}:${makeSearchPath "lib" p}";
40
-
for sofile in PepperFlash/libpepflashplayer.so libpdf.so; do
43
+
for sofile in PepperFlash/libpepflashplayer.so libpdf.so \
44
+
libwidevinecdm.so libwidevinecdmadapter.so; do
patchelf --set-rpath "${mkrpath rpaths}" "$sofile"
49
+
patchelf --set-rpath "$widevine/lib:${mkrpath rpaths}" \
50
+
libwidevinecdmadapter.so
···
"application/x-google-chrome-print-preview-pdf"
pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}";
62
+
wvName = "Widevine Content Decryption Module";
63
+
wvDescription = "Playback of encrypted HTML audio/video content";
64
+
wvMimeTypes = "application/x-ppapi-widevine-cdm";
65
+
wvModule = "$widevine/lib/libwidevinecdmadapter.so";
66
+
wvInfo = "#${wvName}#${wvDescription}:${wvMimeTypes}";
install -vD libpdf.so "$pdf/lib/libpdf.so"
mkdir -p "$pdf/nix-support"
···
echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \
"--ppapi-flash-version=$flashVersion" \
> "$flash/nix-support/chromium-flags"
84
+
install -vD libwidevinecdm.so \
85
+
"$widevine/lib/libwidevinecdm.so"
86
+
install -vD libwidevinecdmadapter.so \
87
+
"$widevine/lib/libwidevinecdmadapter.so"
88
+
mkdir -p "$widevine/nix-support"
89
+
echo "--register-pepper-plugins='${wvModule}${wvInfo}'" \
90
+
> "$widevine/nix-support/chromium-flags"
passthru.flagsEnabled = let
enabledPlugins = optional enablePepperFlash plugins.flash
74
-
++ optional enablePepperPDF plugins.pdf;
95
+
++ optional enablePepperPDF plugins.pdf
96
+
++ optional enableWideVine plugins.widevine;
getFlags = plugin: "$(< ${plugin}/nix-support/chromium-flags)";
in concatStringsSep " " (map getFlags enabledPlugins);