Skip to content

Commit

Permalink
Merge branch 'NixOS:master' into brave
Browse files Browse the repository at this point in the history
brave: add arm64 support

brave: 1.63.174 -> 1.64.109

brave: refactor update script

allow update script to update both amd64 and arm64 builds.

brave: refactor

remove the need for seperate `brave-*.nix` files by inlining them.

brave: refactor

using pname variable for `generic.nix` metadata

brave: refactor

checks for specific host platforms

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

superfluous use of pname #277994

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

create exception for unsupported platforms

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

remove superfluous rec

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

set platform metadata based on selected brave package.

brave: refactor

rename generic.nix to make-brave.nix for clarity.

brave: refactor

update references of `generic.nix` to `make-brave.nix`

brave: nit

add spacing

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

remove `with lib;` #208242

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

brave: refactor

create more elaborate update script

brave: 1.64.109 -> 1.64.113

brave: refactor

remove unneeded rec

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

change formatting to make more readble

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

remove unneeded rec and change formatting.

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

use the hash included in brave package files instead of downloading
installers.

brave: refactor

remove unneeded use of rec

brave: refactor

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

notify contributors not to update default.nix by themselves.

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

Co-authored-by: Anderson Torres <[email protected]>

brave: refactor

remove trailing lines

brave: refactor

update default.nix with update script

brave: refactor

use `echo` command instead of `cat`. `cat` command adds a new line
to the end of files

brave: refactor

save file using editorconfig settings

brave: refactor

switch to back to `cat` since it wasnt the issue
  • Loading branch information
thedaringdev committed Mar 31, 2024
1 parent 54f9e01 commit a8e2088
Show file tree
Hide file tree
Showing 3 changed files with 272 additions and 216 deletions.
230 changes: 17 additions & 213 deletions pkgs/applications/networking/browsers/brave/default.nix
Original file line number Diff line number Diff line change
@@ -1,214 +1,18 @@
{ lib, stdenv, fetchurl, wrapGAppsHook, makeWrapper
, alsa-lib
, at-spi2-atk
, at-spi2-core
, atk
, cairo
, cups
, dbus
, dpkg
, expat
, fontconfig
, freetype
, gdk-pixbuf
, glib
, gnome
, gsettings-desktop-schemas
, gtk3
, gtk4
, libX11
, libXScrnSaver
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
, libXrandr
, libXrender
, libXtst
, libdrm
, libkrb5
, libuuid
, libxkbcommon
, libxshmfence
, mesa
, nspr
, nss
, pango
, pipewire
, snappy
, udev
, wayland
, xdg-utils
, coreutils
, xorg
, zlib

# command line arguments which are always set e.g "--disable-gpu"
, commandLineArgs ? ""

# Necessary for USB audio devices.
, pulseSupport ? stdenv.isLinux
, libpulseaudio

# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
, libGL

# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
, libvaSupport ? stdenv.isLinux
, libva
, enableVideoAcceleration ? libvaSupport

# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
, vulkanSupport ? false
, addOpenGLRunpath
, enableVulkan ? vulkanSupport
}:

let
inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath
optionalString strings escapeShellArg;

deps = [
alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat
fontconfig freetype gdk-pixbuf glib gtk3 gtk4 libdrm libX11 libGL
libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage
libXext libXfixes libXi libXrandr libXrender libxshmfence
libXtst libuuid mesa nspr nss pango pipewire udev wayland
xorg.libxcb zlib snappy libkrb5
]
++ optional pulseSupport libpulseaudio
++ optional libvaSupport libva;

rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
binpath = makeBinPath deps;

enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ]
++ optional enableVulkan "Vulkan";

disableFeatures = [ "OutdatedBuildDetector" ] # disable automatic updates
# The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
++ optionals enableVideoAcceleration [ "UseChromeOSDirectVideoDecoder" ];
in

stdenv.mkDerivation rec {
pname = "brave";
version = "1.64.113";

src = fetchurl {
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
hash = "sha256-T0uVq1yxDXNi6x9ot5bs3NRaOQ+RwBThvULS6EZ+Bdg=";
};

dontConfigure = true;
dontBuild = true;
dontPatchELF = true;
doInstallCheck = true;

nativeBuildInputs = [
dpkg
(wrapGAppsHook.override { inherit makeWrapper; })
];

buildInputs = [
# needed for GSETTINGS_SCHEMAS_PATH
glib gsettings-desktop-schemas gtk3 gtk4

# needed for XDG_ICON_DIRS
gnome.adwaita-icon-theme
];

unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";

installPhase = ''
runHook preInstall
mkdir -p $out $out/bin
cp -R usr/share $out
cp -R opt/ $out/opt
export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
# Fix path to bash in $BINARYWRAPPER
substituteInPlace $BINARYWRAPPER \
--replace /bin/bash ${stdenv.shell}
ln -sf $BINARYWRAPPER $out/bin/brave
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
# 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
# Correct icons location
icon_sizes=("16" "24" "32" "48" "64" "128" "256")
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
# Replace xdg-settings and xdg-mime
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
runHook postInstall
'';

preFixup = ''
# Add command line args to wrapGApp.
gappsWrapperArgs+=(
--prefix LD_LIBRARY_PATH : ${rpath}
--prefix PATH : ${binpath}
--suffix PATH : ${lib.makeBinPath [ xdg-utils coreutils ]}
${optionalString (enableFeatures != []) ''
--add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}"
''}
${optionalString (disableFeatures != []) ''
--add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}"
''}
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
${optionalString vulkanSupport ''
--prefix XDG_DATA_DIRS : "${addOpenGLRunpath.driverLink}/share"
''}
--add-flags ${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#" + replaceStrings [ "." ] [ "" ] version;
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.
'';
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.mpl20;
maintainers = with maintainers; [ uskudnik rht jefflabonte nasirhm buckley310 ];
platforms = [ "x86_64-linux" ];
mainProgram = "brave";
};
# Expression generated by update.sh; do not edit it by hand!
{ hostPlatform, callPackage }: {
brave = if hostPlatform.isAarch64
then callPackage ./make-brave.nix { } {
pname = "brave";
version = "1.64.113";
url = "https://github.com/brave/brave-browser/releases/download/v1.64.113/brave-browser_1.64.113_arm64.deb";
hash = "sha256-zgekcm8KzFIBYAkblILuCXA3EvXU6fBYN7q75tqtrXk=";
platform = "aarch64-linux";
} else if hostPlatform.isx86_64
then callPackage ./make-brave.nix { } {
pname = "brave";
version = "1.64.113";
url = "https://github.com/brave/brave-browser/releases/download/v1.64.113/brave-browser_1.64.113_amd64.deb";
hash = "sha256-T0uVq1yxDXNi6x9ot5bs3NRaOQ+RwBThvULS6EZ+Bdg=";
platform = "x86_64-linux";
} else throw "Unsupported platform.";
}
Loading

0 comments on commit a8e2088

Please sign in to comment.