summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2014-03-19 12:21:10 +0100
committeraszlig <aszlig@redmoonstudios.org>2014-04-19 03:58:41 +0200
commit88a939c2d116236fbfb48d9a27741584b6a6e055 (patch)
treedf59a16c419cdcca1c5c5bc951e554e35e3b17e9 /pkgs/applications
parentc2abe4da6c0e19358d46e6fdd4d5ff5bfddfff82 (diff)
downloadnixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar.gz
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar.bz2
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar.lz
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar.xz
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.tar.zst
nixlib-88a939c2d116236fbfb48d9a27741584b6a6e055.zip
chromium: Decouple browser from default.nix.
This currently only passes through the arguments and is nothing more
than the foundation of the new structure. In essence, I want to have a
really small default.nix which is then going down into the respective
subparts that are isolated from each other.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix361
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix358
2 files changed, 374 insertions, 345 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
new file mode 100644
index 000000000000..e98c47d8cdd8
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -0,0 +1,361 @@
+{ stdenv, fetchurl, makeWrapper, ninja, which
+
+# default dependencies
+, bzip2, flac, speex, icu, libopus
+, libevent, expat, libjpeg, snappy
+, libpng, libxml2, libxslt, v8
+, xdg_utils, yasm, minizip, libwebp
+, libusb1, libexif, pciutils
+
+, python, pythonPackages, perl, pkgconfig
+, nspr, udev, krb5
+, utillinux, alsaLib
+, gcc, bison, gperf
+, glib, gtk, dbus_glib
+, libXScrnSaver, libXcursor, libXtst, mesa
+, protobuf, speechd, libXdamage
+
+# optional dependencies
+, libgcrypt ? null # gnomeSupport || cupsSupport
+
+# package customization
+, channel ? "stable"
+, enableSELinux ? false, libselinux ? null
+, enableNaCl ? false
+, useOpenSSL ? false, nss ? null, openssl ? null
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false, libgnome_keyring3 ? null
+, proprietaryCodecs ? true
+, enablePepperFlash ? false
+, enablePepperPDF ? false
+, cupsSupport ? false
+, pulseSupport ? false, pulseaudio ? null
+}:
+
+with stdenv.lib;
+
+let
+  src = with getAttr channel (import ./sources.nix); stdenv.mkDerivation {
+    name = "chromium-source-${version}";
+
+    src = fetchurl {
+      inherit url sha256;
+    };
+
+    buildInputs = [ python ]; # cannot patch shebangs otherwise
+
+    phases = [ "unpackPhase" "patchPhase" "installPhase" ];
+
+    opensslPatches = optional useOpenSSL openssl.patches;
+
+    prePatch = "patchShebangs .";
+
+    patches = singleton ./sandbox_userns_31.patch;
+
+    postPatch = ''
+      sed -i -r \
+        -e 's/-f(stack-protector)(-all)?/-fno-\1/' \
+        -e 's|/bin/echo|echo|' \
+        -e "/python_arch/s/: *'[^']*'/: '""'/" \
+        build/common.gypi chrome/chrome_tests.gypi
+      sed -i '/not RunGN/,+1d' build/gyp_chromium
+      sed -i -e 's|/usr/bin/gcc|gcc|' \
+        third_party/WebKit/Source/build/scripts/scripts.gypi \
+        third_party/WebKit/Source/build/scripts/preprocessor.pm
+    '' + optionalString useOpenSSL ''
+      cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
+    '' + optionalString (!versionOlder version "34.0.0.0") ''
+      sed -i '/import.*depot/d' build/gyp_chromium
+    '';
+
+    outputs = [ "out" "sandbox" "bundled" "main" ];
+    installPhase = ''
+      ensureDir "$out" "$sandbox" "$bundled" "$main"
+
+      header "copying browser main sources to $main"
+      find . -mindepth 1 -maxdepth 1 \
+        \! -path ./sandbox \
+        \! -path ./third_party \
+        \! -path ./build \
+        \! -path ./tools \
+        \! -name '.*' \
+        -print | xargs cp -rt "$main"
+      stopNest
+
+      header "copying sandbox components to $sandbox"
+      cp -rt "$sandbox" sandbox/*
+      stopNest
+
+      header "copying third party sources to $bundled"
+      cp -rt "$bundled" third_party/*
+      stopNest
+
+      header "copying build requisites to $out"
+      cp -rt "$out" build tools
+      stopNest
+
+      rm -rf "$out/tools/gyp" # XXX: Don't even copy it in the first place.
+    '';
+
+    passthru = {
+      inherit version;
+    };
+  };
+
+  mkGypFlags =
+    let
+      sanitize = value:
+        if value == true then "1"
+        else if value == false then "0"
+        else "${value}";
+      toFlag = key: value: "-D${key}=${sanitize value}";
+    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
+
+  gypFlagsUseSystemLibs = {
+    use_system_bzip2 = true;
+    use_system_flac = true;
+    use_system_libevent = true;
+    use_system_libexpat = true;
+    use_system_libexif = true;
+    use_system_libjpeg = true;
+    use_system_libpng = true;
+    use_system_libwebp = true;
+    use_system_libxml = true;
+    use_system_opus = true;
+    use_system_snappy = true;
+    use_system_speex = true;
+    use_system_ssl = useOpenSSL;
+    use_system_stlport = true;
+    use_system_xdg_utils = true;
+    use_system_yasm = true;
+    use_system_zlib = true;
+    use_system_protobuf = true;
+
+    use_system_harfbuzz = false;
+    use_system_icu = false; # Doesn't support ICU 52 yet.
+    use_system_libusb = false; # http://crbug.com/266149
+    use_system_skia = false;
+    use_system_sqlite = false; # http://crbug.com/22208
+    use_system_v8 = !versionOlder src.version "34.0.0.0";
+  };
+
+  defaultDependencies = [
+    bzip2 flac speex icu libopus
+    libevent expat libjpeg snappy
+    libpng libxml2 libxslt v8
+    xdg_utils yasm minizip libwebp
+    libusb1 libexif
+  ];
+
+  sandbox = import ./sandbox.nix {
+    inherit stdenv;
+    src = src.sandbox;
+    binary = "${packageName}_sandbox";
+  };
+
+  binaryPlugins = stdenv.mkDerivation {
+    name = "chromium-binary-plugins";
+
+    # XXX: Only temporary and has to be version-specific
+    src = fetchurl {
+      url = "https://dl.google.com/linux/chrome/deb/pool/main/g/"
+          + "google-chrome-unstable/google-chrome-unstable_"
+          + "35.0.1897.2-1_amd64.deb";
+      sha1 = "b68683fc5321d10536e4135c266b14894b7668ed";
+    };
+
+    phases = [ "unpackPhase" "patchPhase" "checkPhase" "installPhase" ];
+    outputs = [ "pdf" "flash" ];
+
+    unpackCmd = ''
+      ensureDir plugins
+      ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \
+        ./opt/google/chrome-unstable/PepperFlash \
+        ./opt/google/chrome-unstable/libpdf.so
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    patchPhase = let
+      rpaths = [ stdenv.gcc.gcc ];
+      mkrpath = p: "${makeSearchPath "lib64" p}:${makeSearchPath "lib" p}";
+    in ''
+      for sofile in PepperFlash/libpepflashplayer.so libpdf.so; do
+        chmod +x "$sofile"
+        patchelf --set-rpath "${mkrpath rpaths}" "$sofile"
+      done
+    '';
+
+    installPhase = let
+      pdfName = "Chrome PDF Viewer";
+      pdfDescription = "Portable Document Format";
+      pdfMimeTypes = concatStringsSep ";" [
+        "application/pdf"
+        "application/x-google-chrome-print-preview-pdf"
+      ];
+      pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}";
+    in ''
+      install -vD libpdf.so "$pdf/lib/libpdf.so"
+      ensureDir "$pdf/nix-support"
+      echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \
+        > "$pdf/nix-support/chromium-flags"
+
+      flashVersion="$(
+        sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json
+      )"
+
+      install -vD libpepflashplayer.so "$flash/lib/libpepflashplayer.so"
+      ensureDir "$flash/nix-support"
+      echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \
+           "--ppapi-flash-version=$flashVersion" \
+           > "$flash/nix-support/chromium-flags"
+    '';
+  };
+
+  # build paths and release info
+  packageName = "chromium";
+  buildType = "Release";
+  buildPath = "out/${buildType}";
+  libExecPath = "$out/libexec/${packageName}";
+  sandboxPath = "${sandbox}/bin/${packageName}_sandbox";
+
+in stdenv.mkDerivation rec {
+  name = "${packageName}-${src.version}";
+  inherit packageName src;
+
+  buildInputs = defaultDependencies ++ [
+    which makeWrapper
+    python perl pkgconfig
+    nspr udev
+    (if useOpenSSL then openssl else nss)
+    utillinux alsaLib
+    gcc bison gperf
+    gcc bison gperf krb5
+    glib gtk dbus_glib
+    libXScrnSaver libXcursor libXtst mesa
+    pciutils protobuf speechd libXdamage
+    pythonPackages.gyp
+  ] ++ optional gnomeKeyringSupport libgnome_keyring3
+    ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
+    ++ optional enableSELinux libselinux
+    ++ optional cupsSupport libgcrypt
+    ++ optional pulseSupport pulseaudio;
+
+  prePatch = ''
+    # XXX: Figure out a way how to split these properly.
+    #cpflags="-dsr --no-preserve=mode"
+    cpflags="-dr"
+    cp $cpflags "${src.main}"/* .
+    cp $cpflags "${src.bundled}" third_party
+    cp $cpflags "${src.sandbox}" sandbox
+    chmod -R u+w . # XXX!
+  '';
+
+  postPatch = ''
+    sed -i -e '/base::FilePath exe_dir/,/^ *} *$/c \
+      sandbox_binary = \
+        base::FilePath("'"${sandboxPath}"'");
+    ' content/browser/browser_main_loop.cc
+  '';
+
+  gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
+    linux_use_gold_binary = false;
+    linux_use_gold_flags = false;
+    proprietary_codecs = false;
+    use_gnome_keyring = gnomeKeyringSupport;
+    use_gconf = gnomeSupport;
+    use_gio = gnomeSupport;
+    use_pulseaudio = pulseSupport;
+    disable_nacl = !enableNaCl;
+    use_openssl = useOpenSSL;
+    selinux = enableSELinux;
+    use_cups = cupsSupport;
+    linux_sandbox_path="${sandboxPath}";
+    linux_sandbox_chrome_path="${libExecPath}/${packageName}";
+    werror = "";
+
+    # Google API keys, see http://www.chromium.org/developers/how-tos/api-keys.
+    # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+    # please get your own set of keys.
+    google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
+    google_default_client_id = "404761575300.apps.googleusercontent.com";
+    google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
+
+  } // optionalAttrs proprietaryCodecs {
+    # enable support for the H.264 codec
+    proprietary_codecs = true;
+    ffmpeg_branding = "Chrome";
+  } // optionalAttrs (stdenv.system == "x86_64-linux") {
+    target_arch = "x64";
+    python_arch = "x86-64";
+  } // optionalAttrs (stdenv.system == "i686-linux") {
+    target_arch = "ia32";
+    python_arch = "ia32";
+  });
+
+  configurePhase = ''
+    python build/linux/unbundle/replace_gyp_files.py ${gypFlags}
+    python build/gyp_chromium -f ninja --depth "$(pwd)" ${gypFlags}
+  '';
+
+  buildPhase = let
+    CC = "${gcc}/bin/gcc";
+    CXX = "${gcc}/bin/g++";
+  in ''
+    CC="${CC}" CC_host="${CC}"     \
+    CXX="${CXX}" CXX_host="${CXX}" \
+    LINK_host="${CXX}"             \
+      "${ninja}/bin/ninja" -C "${buildPath}"  \
+        -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \
+        chrome ${optionalString (!enableSELinux) "chrome_sandbox"}
+  '';
+
+  installPhase = let
+    enabledPlugins = optional enablePepperFlash binaryPlugins.flash
+                  ++ optional enablePepperPDF   binaryPlugins.pdf;
+    getFlags = plugin: "$(< ${plugin}/nix-support/chromium-flags)";
+    pluginArgs = concatStringsSep " " (map getFlags enabledPlugins);
+  in ''
+    ensureDir "${libExecPath}"
+    cp -v "${buildPath}/"*.pak "${libExecPath}/"
+    ${optionalString (!versionOlder src.version "34.0.0.0") ''
+    cp -v "${buildPath}/icudtl.dat" "${libExecPath}/"
+    ''}
+    cp -vR "${buildPath}/locales" "${buildPath}/resources" "${libExecPath}/"
+    cp -v ${buildPath}/libffmpegsumo.so "${libExecPath}/"
+
+    cp -v "${buildPath}/chrome" "${libExecPath}/${packageName}"
+
+    mkdir -vp "$out/bin"
+    makeWrapper "${libExecPath}/${packageName}" "$out/bin/${packageName}" \
+      --add-flags "${pluginArgs}"
+
+    mkdir -vp "$out/share/man/man1"
+    cp -v "${buildPath}/chrome.1" "$out/share/man/man1/${packageName}.1"
+
+    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      expr "$icon_size" : "^[0-9][0-9]*$" || continue
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -vp "$logo_output_path"
+      cp -v "$icon_file" "$logo_output_path/${packageName}.png"
+    done
+  '';
+
+  passthru = {
+    inherit sandbox;
+  };
+
+  meta = {
+    description = "An open source web browser from Google";
+    homepage = http://www.chromium.org/;
+    maintainers = with maintainers; [ goibhniu chaoflow aszlig wizeman ];
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index b70825670156..bb6f530309ff 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -1,360 +1,28 @@
-{ stdenv, fetchurl, makeWrapper, ninja, which
-
-# default dependencies
-, bzip2, flac, speex, icu, libopus
-, libevent, expat, libjpeg, snappy
-, libpng, libxml2, libxslt, v8
-, xdg_utils, yasm, minizip, libwebp
-, libusb1, libexif, pciutils
-
-, python, pythonPackages, perl, pkgconfig
-, nspr, udev, krb5
-, utillinux, alsaLib
-, gcc, bison, gperf
-, glib, gtk, dbus_glib
-, libXScrnSaver, libXcursor, libXtst, mesa
-, protobuf, speechd, libXdamage
-
-# optional dependencies
-, libgcrypt ? null # gnomeSupport || cupsSupport
+{ newScope
 
 # package customization
 , channel ? "stable"
-, enableSELinux ? false, libselinux ? null
+, enableSELinux ? false
 , enableNaCl ? false
-, useOpenSSL ? false, nss ? null, openssl ? null
-, gnomeSupport ? false, gconf ? null
-, gnomeKeyringSupport ? false, libgnome_keyring3 ? null
+, useOpenSSL ? false
+, gnomeSupport ? false
+, gnomeKeyringSupport ? false
 , proprietaryCodecs ? true
 , enablePepperFlash ? false
 , enablePepperPDF ? false
 , cupsSupport ? false
-, pulseSupport ? false, pulseaudio ? null
+, pulseSupport ? false
 }:
 
-with stdenv.lib;
-
 let
-  src = with getAttr channel (import ./sources.nix); stdenv.mkDerivation {
-    name = "chromium-source-${version}";
-
-    src = fetchurl {
-      inherit url sha256;
-    };
-
-    buildInputs = [ python ]; # cannot patch shebangs otherwise
-
-    phases = [ "unpackPhase" "patchPhase" "installPhase" ];
-
-    opensslPatches = optional useOpenSSL openssl.patches;
-
-    prePatch = "patchShebangs .";
-
-    patches = singleton ./sandbox_userns_31.patch;
-
-    postPatch = ''
-      sed -i -r \
-        -e 's/-f(stack-protector)(-all)?/-fno-\1/' \
-        -e 's|/bin/echo|echo|' \
-        -e "/python_arch/s/: *'[^']*'/: '""'/" \
-        build/common.gypi chrome/chrome_tests.gypi
-      sed -i '/not RunGN/,+1d' build/gyp_chromium
-      sed -i -e 's|/usr/bin/gcc|gcc|' \
-        third_party/WebKit/Source/build/scripts/scripts.gypi \
-        third_party/WebKit/Source/build/scripts/preprocessor.pm
-    '' + optionalString useOpenSSL ''
-      cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
-    '' + optionalString (!versionOlder version "34.0.0.0") ''
-      sed -i '/import.*depot/d' build/gyp_chromium
-    '';
-
-    outputs = [ "out" "sandbox" "bundled" "main" ];
-    installPhase = ''
-      ensureDir "$out" "$sandbox" "$bundled" "$main"
-
-      header "copying browser main sources to $main"
-      find . -mindepth 1 -maxdepth 1 \
-        \! -path ./sandbox \
-        \! -path ./third_party \
-        \! -path ./build \
-        \! -path ./tools \
-        \! -name '.*' \
-        -print | xargs cp -rt "$main"
-      stopNest
-
-      header "copying sandbox components to $sandbox"
-      cp -rt "$sandbox" sandbox/*
-      stopNest
-
-      header "copying third party sources to $bundled"
-      cp -rt "$bundled" third_party/*
-      stopNest
-
-      header "copying build requisites to $out"
-      cp -rt "$out" build tools
-      stopNest
-
-      rm -rf "$out/tools/gyp" # XXX: Don't even copy it in the first place.
-    '';
-
-    passthru = {
-      inherit version;
-    };
-  };
-
-  mkGypFlags =
-    let
-      sanitize = value:
-        if value == true then "1"
-        else if value == false then "0"
-        else "${value}";
-      toFlag = key: value: "-D${key}=${sanitize value}";
-    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
-
-  gypFlagsUseSystemLibs = {
-    use_system_bzip2 = true;
-    use_system_flac = true;
-    use_system_libevent = true;
-    use_system_libexpat = true;
-    use_system_libexif = true;
-    use_system_libjpeg = true;
-    use_system_libpng = true;
-    use_system_libwebp = true;
-    use_system_libxml = true;
-    use_system_opus = true;
-    use_system_snappy = true;
-    use_system_speex = true;
-    use_system_ssl = useOpenSSL;
-    use_system_stlport = true;
-    use_system_xdg_utils = true;
-    use_system_yasm = true;
-    use_system_zlib = true;
-    use_system_protobuf = true;
-
-    use_system_harfbuzz = false;
-    use_system_icu = false; # Doesn't support ICU 52 yet.
-    use_system_libusb = false; # http://crbug.com/266149
-    use_system_skia = false;
-    use_system_sqlite = false; # http://crbug.com/22208
-    use_system_v8 = !versionOlder src.version "34.0.0.0";
-  };
-
-  defaultDependencies = [
-    bzip2 flac speex icu libopus
-    libevent expat libjpeg snappy
-    libpng libxml2 libxslt v8
-    xdg_utils yasm minizip libwebp
-    libusb1 libexif
-  ];
-
-  sandbox = import ./sandbox.nix {
-    inherit stdenv;
-    src = src.sandbox;
-    binary = "${packageName}_sandbox";
-  };
-
-  binaryPlugins = stdenv.mkDerivation {
-    name = "chromium-binary-plugins";
+  callPackage = newScope chromium;
 
-    # XXX: Only temporary and has to be version-specific
-    src = fetchurl {
-      url = "https://dl.google.com/linux/chrome/deb/pool/main/g/"
-          + "google-chrome-unstable/google-chrome-unstable_"
-          + "35.0.1897.2-1_amd64.deb";
-      sha1 = "b68683fc5321d10536e4135c266b14894b7668ed";
+  chromium = {
+    browser = callPackage ./browser.nix {
+      inherit channel enableSELinux enableNaCl useOpenSSL gnomeSupport
+              gnomeKeyringSupport proprietaryCodecs enablePepperFlash
+              enablePepperPDF cupsSupport pulseSupport;
     };
-
-    phases = [ "unpackPhase" "patchPhase" "checkPhase" "installPhase" ];
-    outputs = [ "pdf" "flash" ];
-
-    unpackCmd = ''
-      ensureDir plugins
-      ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \
-        ./opt/google/chrome-unstable/PepperFlash \
-        ./opt/google/chrome-unstable/libpdf.so
-    '';
-
-    doCheck = true;
-    checkPhase = ''
-      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
-    '';
-
-    patchPhase = let
-      rpaths = [ stdenv.gcc.gcc ];
-      mkrpath = p: "${makeSearchPath "lib64" p}:${makeSearchPath "lib" p}";
-    in ''
-      for sofile in PepperFlash/libpepflashplayer.so libpdf.so; do
-        chmod +x "$sofile"
-        patchelf --set-rpath "${mkrpath rpaths}" "$sofile"
-      done
-    '';
-
-    installPhase = let
-      pdfName = "Chrome PDF Viewer";
-      pdfDescription = "Portable Document Format";
-      pdfMimeTypes = concatStringsSep ";" [
-        "application/pdf"
-        "application/x-google-chrome-print-preview-pdf"
-      ];
-      pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}";
-    in ''
-      install -vD libpdf.so "$pdf/lib/libpdf.so"
-      ensureDir "$pdf/nix-support"
-      echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \
-        > "$pdf/nix-support/chromium-flags"
-
-      flashVersion="$(
-        sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json
-      )"
-
-      install -vD libpepflashplayer.so "$flash/lib/libpepflashplayer.so"
-      ensureDir "$flash/nix-support"
-      echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \
-           "--ppapi-flash-version=$flashVersion" \
-           > "$flash/nix-support/chromium-flags"
-    '';
   };
 
-  # build paths and release info
-  packageName = "chromium";
-  buildType = "Release";
-  buildPath = "out/${buildType}";
-  libExecPath = "$out/libexec/${packageName}";
-  sandboxPath = "${sandbox}/bin/${packageName}_sandbox";
-
-in stdenv.mkDerivation rec {
-  name = "${packageName}-${src.version}";
-  inherit packageName src;
-
-  buildInputs = defaultDependencies ++ [
-    which makeWrapper
-    python perl pkgconfig
-    nspr udev
-    (if useOpenSSL then openssl else nss)
-    utillinux alsaLib
-    gcc bison gperf krb5
-    glib gtk dbus_glib
-    libXScrnSaver libXcursor libXtst mesa
-    pciutils protobuf speechd libXdamage
-    pythonPackages.gyp
-  ] ++ optional gnomeKeyringSupport libgnome_keyring3
-    ++ optionals gnomeSupport [ gconf libgcrypt ]
-    ++ optional enableSELinux libselinux
-    ++ optional cupsSupport libgcrypt
-    ++ optional pulseSupport pulseaudio;
-
-  prePatch = ''
-    # XXX: Figure out a way how to split these properly.
-    #cpflags="-dsr --no-preserve=mode"
-    cpflags="-dr"
-    cp $cpflags "${src.main}"/* .
-    cp $cpflags "${src.bundled}" third_party
-    cp $cpflags "${src.sandbox}" sandbox
-    chmod -R u+w . # XXX!
-  '';
-
-  postPatch = ''
-    sed -i -e '/base::FilePath exe_dir/,/^ *} *$/c \
-      sandbox_binary = \
-        base::FilePath("'"${sandboxPath}"'");
-    ' content/browser/browser_main_loop.cc
-  '';
-
-  gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
-    linux_use_gold_binary = false;
-    linux_use_gold_flags = false;
-    proprietary_codecs = false;
-    use_gnome_keyring = gnomeKeyringSupport;
-    use_gconf = gnomeSupport;
-    use_gio = gnomeSupport;
-    use_pulseaudio = pulseSupport;
-    disable_nacl = !enableNaCl;
-    use_openssl = useOpenSSL;
-    selinux = enableSELinux;
-    use_cups = cupsSupport;
-    linux_sandbox_path="${sandboxPath}";
-    linux_sandbox_chrome_path="${libExecPath}/${packageName}";
-    werror = "";
-
-    # Google API keys, see http://www.chromium.org/developers/how-tos/api-keys.
-    # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
-    # please get your own set of keys.
-    google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
-    google_default_client_id = "404761575300.apps.googleusercontent.com";
-    google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
-
-  } // optionalAttrs proprietaryCodecs {
-    # enable support for the H.264 codec
-    proprietary_codecs = true;
-    ffmpeg_branding = "Chrome";
-  } // optionalAttrs (stdenv.system == "x86_64-linux") {
-    target_arch = "x64";
-    python_arch = "x86-64";
-  } // optionalAttrs (stdenv.system == "i686-linux") {
-    target_arch = "ia32";
-    python_arch = "ia32";
-  });
-
-  configurePhase = ''
-    python build/linux/unbundle/replace_gyp_files.py ${gypFlags}
-    python build/gyp_chromium -f ninja --depth "$(pwd)" ${gypFlags}
-  '';
-
-  buildPhase = let
-    CC = "${gcc}/bin/gcc";
-    CXX = "${gcc}/bin/g++";
-  in ''
-    CC="${CC}" CC_host="${CC}"     \
-    CXX="${CXX}" CXX_host="${CXX}" \
-    LINK_host="${CXX}"             \
-      "${ninja}/bin/ninja" -C "${buildPath}"  \
-        -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \
-        chrome ${optionalString (!enableSELinux) "chrome_sandbox"}
-  '';
-
-  installPhase = let
-    enabledPlugins = optional enablePepperFlash binaryPlugins.flash
-                  ++ optional enablePepperPDF   binaryPlugins.pdf;
-    getFlags = plugin: "$(< ${plugin}/nix-support/chromium-flags)";
-    pluginArgs = concatStringsSep " " (map getFlags enabledPlugins);
-  in ''
-    ensureDir "${libExecPath}"
-    cp -v "${buildPath}/"*.pak "${libExecPath}/"
-    ${optionalString (!versionOlder src.version "34.0.0.0") ''
-    cp -v "${buildPath}/icudtl.dat" "${libExecPath}/"
-    ''}
-    cp -vR "${buildPath}/locales" "${buildPath}/resources" "${libExecPath}/"
-    cp -v ${buildPath}/libffmpegsumo.so "${libExecPath}/"
-
-    cp -v "${buildPath}/chrome" "${libExecPath}/${packageName}"
-
-    mkdir -vp "$out/bin"
-    makeWrapper "${libExecPath}/${packageName}" "$out/bin/${packageName}" \
-      --add-flags "${pluginArgs}"
-
-    mkdir -vp "$out/share/man/man1"
-    cp -v "${buildPath}/chrome.1" "$out/share/man/man1/${packageName}.1"
-
-    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
-      num_and_suffix="''${icon_file##*logo_}"
-      icon_size="''${num_and_suffix%.*}"
-      expr "$icon_size" : "^[0-9][0-9]*$" || continue
-      logo_output_prefix="$out/share/icons/hicolor"
-      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
-      mkdir -vp "$logo_output_path"
-      cp -v "$icon_file" "$logo_output_path/${packageName}.png"
-    done
-  '';
-
-  passthru = {
-    inherit sandbox;
-  };
-
-  meta = {
-    description = "An open source web browser from Google";
-    homepage = http://www.chromium.org/;
-    maintainers = with maintainers; [ goibhniu chaoflow aszlig wizeman ];
-    license = licenses.bsd3;
-    platforms = platforms.linux;
-  };
-}
+in chromium.browser