nixpkgs/pkgs/applications/networking/browsers/brave/default.nix

188 lines
4.1 KiB
Nix
Raw Normal View History

{ stdenv, lib, fetchurl
, dpkg
, alsa-lib
, at-spi2-atk
, at-spi2-core
, atk
, cairo
, cups
, dbus
, expat
, fontconfig
, freetype
2019-05-22 11:03:39 +00:00
, gdk-pixbuf
, glib
, gnome2
, gnome
, gsettings-desktop-schemas
, gtk3
2019-07-05 08:54:33 +00:00
, libpulseaudio
, libuuid
2020-05-08 16:16:17 +00:00
, libdrm
, libX11
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
2020-11-23 01:42:20 +00:00
, libxkbcommon
, libXrandr
, libXrender
, libXScrnSaver
2021-03-04 00:26:15 +00:00
, libxshmfence
, libXtst
2020-05-08 16:16:17 +00:00
, mesa
, nspr
, nss
, pango
2021-03-11 14:50:17 +00:00
, pipewire
, udev
, xorg
, zlib
2021-02-01 08:05:09 +00:00
, xdg-utils
, wrapGAppsHook
, commandLineArgs ? ""
2018-10-04 11:52:14 +00:00
}:
let
rpath = lib.makeLibraryPath [
alsa-lib
at-spi2-atk
at-spi2-core
atk
cairo
cups
dbus
expat
fontconfig
freetype
2019-05-22 11:03:39 +00:00
gdk-pixbuf
glib
gnome2.GConf
gtk3
2020-05-08 16:16:17 +00:00
libdrm
2019-07-05 08:54:33 +00:00
libpulseaudio
libX11
libxkbcommon
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
2021-03-04 00:26:15 +00:00
libxshmfence
libXtst
libuuid
2020-05-08 16:16:17 +00:00
mesa
nspr
nss
pango
2021-03-11 14:50:17 +00:00
pipewire
udev
2021-02-01 08:05:09 +00:00
xdg-utils
xorg.libxcb
zlib
2018-10-04 11:52:14 +00:00
];
in
2018-10-04 11:52:14 +00:00
stdenv.mkDerivation rec {
pname = "brave";
2021-12-15 04:14:27 +00:00
version = "1.33.106";
2018-10-04 11:52:14 +00:00
src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
2021-12-15 04:14:27 +00:00
sha256 = "XSqlQyc6gJthchfmq29d5+OVVSaxYG7zpVZNFZpl67s=";
};
2018-10-04 11:52:14 +00:00
dontConfigure = true;
dontBuild = true;
dontPatchELF = true;
doInstallCheck = true;
2018-10-04 11:52:14 +00:00
nativeBuildInputs = [ dpkg wrapGAppsHook ];
buildInputs = [ glib gsettings-desktop-schemas gnome.adwaita-icon-theme ];
2018-10-04 11:52:14 +00:00
unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
2018-10-04 11:52:14 +00:00
installPhase = ''
2021-05-06 08:01:48 +00:00
runHook preInstall
mkdir -p $out $out/bin
2018-10-04 11:52:14 +00:00
cp -R usr/share $out
cp -R opt/ $out/opt
2018-11-03 12:01:27 +00:00
export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
2018-11-03 12:01:27 +00:00
# Fix path to bash in $BINARYWRAPPER
substituteInPlace $BINARYWRAPPER \
--replace /bin/bash ${stdenv.shell}
2018-11-03 12:01:27 +00:00
ln -sf $BINARYWRAPPER $out/bin/brave
2018-10-04 11:52:14 +00:00
2021-09-29 05:50:05 +00:00
for exe in $out/opt/brave.com/brave/{brave,chrome_crashpad_handler}; do
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${rpath}" $exe
done
2018-11-03 12:01:27 +00:00
# Fix paths
substituteInPlace $out/share/applications/brave-browser.desktop \
--replace /usr/bin/brave-browser-stable $out/bin/brave
substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \
--replace /opt/brave.com $out/opt/brave.com
substituteInPlace $out/share/menu/brave-browser.menu \
--replace /opt/brave.com $out/opt/brave.com
substituteInPlace $out/opt/brave.com/brave/default-app-block \
--replace /opt/brave.com $out/opt/brave.com
2018-11-03 12:01:27 +00:00
# Correct icons location
icon_sizes=("16" "22" "24" "32" "48" "64" "128" "256")
2018-11-03 12:01:27 +00:00
for icon in ''${icon_sizes[*]}
do
mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps
ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png
done
2018-11-03 12:01:27 +00:00
# Replace xdg-settings and xdg-mime
2021-02-01 08:05:09 +00:00
ln -sf ${xdg-utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings
ln -sf ${xdg-utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime
2021-05-06 08:01:48 +00:00
runHook postInstall
'';
2018-10-04 11:52:14 +00:00
preFixup = ''
# Add command line args to wrapGApp.
gappsWrapperArgs+=(--add-flags ${lib.escapeShellArg commandLineArgs})
'';
installCheckPhase = ''
# Bypass upstream wrapper which suppresses errors
$out/opt/brave.com/brave/brave --version
'';
passthru.updateScript = ./update.sh;
meta = with lib; {
homepage = "https://brave.com/";
description = "Privacy-oriented browser for Desktop and Laptop computers";
changelog = "https://github.com/brave/brave-browser/blob/master/CHANGELOG_DESKTOP.md";
longDescription = ''
Brave browser blocks the ads and trackers that slow you down,
chew up your bandwidth, and invade your privacy. Brave lets you
contribute to your favorite creators automatically.
'';
license = licenses.mpl20;
maintainers = with maintainers; [ uskudnik rht jefflabonte nasirhm ];
platforms = [ "x86_64-linux" ];
};
2018-10-04 11:52:14 +00:00
}