forked from mirrors/nixpkgs
38c77bb72c
This has been introduced by me in690a845
and discovered by @vcunat in his comment over at:690a845de9 (commitcomment-14209868)
It's really a bit ugly to have builds running during evaluation, but back when I made that commit the reason was to avoid having to shell quote the hell out of it (see the comment in mkPluginInfo for the reason). Now we propagate plugin flags and environment variables as a list of arguments in a plain file that's appended verbatim to makeWrapper, so it shouldn't do any builds anymore during instantiation. I have tested this with both just WideVine and just Flash enabled as well as both in combination and none of the plugins and the output seems correct. However I didn't test to run Chromium with the new implementation. Signed-off-by: aszlig <aszlig@redmoonstudios.org> Reported-by: Vladimír Čunát <vcunat@gmail.com>
90 lines
2.4 KiB
Nix
90 lines
2.4 KiB
Nix
{ newScope, stdenv, makeWrapper, makeDesktopItem
|
|
|
|
# package customization
|
|
, channel ? "stable"
|
|
, enableSELinux ? false
|
|
, enableNaCl ? false
|
|
, enableHotwording ? false
|
|
, gnomeSupport ? false
|
|
, gnomeKeyringSupport ? false
|
|
, proprietaryCodecs ? true
|
|
, enablePepperFlash ? false
|
|
, enableWideVine ? false
|
|
, cupsSupport ? true
|
|
, pulseSupport ? false
|
|
, hiDPISupport ? false
|
|
}:
|
|
|
|
let
|
|
callPackage = newScope chromium;
|
|
|
|
chromium = {
|
|
source = callPackage ./source {
|
|
inherit channel;
|
|
# XXX: common config
|
|
};
|
|
|
|
mkChromiumDerivation = callPackage ./common.nix {
|
|
inherit enableSELinux enableNaCl enableHotwording gnomeSupport
|
|
gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport
|
|
hiDPISupport;
|
|
};
|
|
|
|
browser = callPackage ./browser.nix { };
|
|
|
|
plugins = callPackage ./plugins.nix {
|
|
inherit enablePepperFlash enableWideVine;
|
|
};
|
|
};
|
|
|
|
desktopItem = makeDesktopItem {
|
|
name = "chromium";
|
|
exec = "chromium %U";
|
|
icon = "chromium";
|
|
comment = "An open source web browser from Google";
|
|
desktopName = "Chromium";
|
|
genericName = "Web browser";
|
|
mimeType = stdenv.lib.concatStringsSep ";" [
|
|
"text/html"
|
|
"text/xml"
|
|
"application/xhtml+xml"
|
|
"x-scheme-handler/http"
|
|
"x-scheme-handler/https"
|
|
"x-scheme-handler/ftp"
|
|
"x-scheme-handler/mailto"
|
|
"x-scheme-handler/webcal"
|
|
"x-scheme-handler/about"
|
|
"x-scheme-handler/unknown"
|
|
];
|
|
categories = "Network;WebBrowser";
|
|
};
|
|
|
|
suffix = if channel != "stable" then "-" + channel else "";
|
|
|
|
in stdenv.mkDerivation {
|
|
name = "chromium${suffix}-${chromium.browser.version}";
|
|
|
|
buildInputs = [ makeWrapper ];
|
|
|
|
buildCommand = let
|
|
browserBinary = "${chromium.browser}/libexec/chromium/chromium";
|
|
getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
|
|
in with stdenv.lib; ''
|
|
mkdir -p "$out/bin" "$out/share/applications"
|
|
|
|
ln -s "${chromium.browser}/share" "$out/share"
|
|
eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
|
|
${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
|
|
|
|
ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
|
|
ln -s "${chromium.browser}/share/icons" "$out/share/icons"
|
|
cp -v "${desktopItem}/share/applications/"* "$out/share/applications"
|
|
'';
|
|
|
|
inherit (chromium.browser) meta packageName;
|
|
|
|
passthru = {
|
|
mkDerivation = chromium.mkChromiumDerivation;
|
|
};
|
|
}
|