diff --git a/pkgs/by-name/br/brave/make-brave.nix b/pkgs/by-name/br/brave/make-brave.nix index e902fe3c4da2..d0fe9afde4dc 100644 --- a/pkgs/by-name/br/brave/make-brave.nix +++ b/pkgs/by-name/br/brave/make-brave.nix @@ -1,103 +1,155 @@ -{ lib, stdenv, fetchurl, buildPackages -, alsa-lib -, at-spi2-atk -, at-spi2-core -, atk -, cairo -, cups -, dbus -, dpkg -, expat -, fontconfig -, freetype -, gdk-pixbuf -, glib -, adwaita-icon-theme -, gsettings-desktop-schemas -, gtk3 -, gtk4 -, qt6 -, 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 +{ + lib, + stdenv, + fetchurl, + buildPackages, + alsa-lib, + at-spi2-atk, + at-spi2-core, + atk, + cairo, + cups, + dbus, + dpkg, + expat, + fontconfig, + freetype, + gdk-pixbuf, + glib, + adwaita-icon-theme, + gsettings-desktop-schemas, + gtk3, + gtk4, + qt6, + 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 ? "" + # command line arguments which are always set e.g "--disable-gpu" + commandLineArgs ? "", -# Necessary for USB audio devices. -, pulseSupport ? stdenv.hostPlatform.isLinux -, libpulseaudio + # Necessary for USB audio devices. + pulseSupport ? stdenv.hostPlatform.isLinux, + libpulseaudio, -# For GPU acceleration support on Wayland (without the lib it doesn't seem to work) -, libGL + # 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.hostPlatform.isLinux -, libva -, enableVideoAcceleration ? libvaSupport + # For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder) + libvaSupport ? stdenv.hostPlatform.isLinux, + libva, + enableVideoAcceleration ? libvaSupport, -# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API -, vulkanSupport ? false -, addDriverRunpath -, enableVulkan ? vulkanSupport + # For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API + vulkanSupport ? false, + addDriverRunpath, + enableVulkan ? vulkanSupport, }: -{ pname -, version -, hash -, url -, platform +{ + pname, + version, + hash, + url, + platform, }: let - inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath - optionalString strings escapeShellArg; + 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 qt6.qtbase - ] - ++ optional pulseSupport libpulseaudio - ++ optional libvaSupport libva; + 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 + qt6.qtbase + ] ++ optional pulseSupport libpulseaudio ++ optional libvaSupport libva; rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps; binpath = makeBinPath deps; - enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ] + enableFeatures = + optionals enableVideoAcceleration [ + "VaapiVideoDecoder" + "VaapiVideoEncoder" + ] ++ optional enableVulkan "Vulkan"; - disableFeatures = [ "OutdatedBuildDetector" ] # disable automatic updates + 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" ]; + ++ optionals enableVideoAcceleration [ "UseChromeOSDirectVideoDecoder" ]; in stdenv.mkDerivation { inherit pname version; @@ -120,7 +172,10 @@ stdenv.mkDerivation { buildInputs = [ # needed for GSETTINGS_SCHEMAS_PATH - glib gsettings-desktop-schemas gtk3 gtk4 + glib + gsettings-desktop-schemas + gtk3 + gtk4 # needed for XDG_ICON_DIRS adwaita-icon-theme @@ -129,51 +184,51 @@ stdenv.mkDerivation { unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner"; installPhase = '' - runHook preInstall + runHook preInstall - mkdir -p $out $out/bin + mkdir -p $out $out/bin - cp -R usr/share $out - cp -R opt/ $out/opt + cp -R usr/share $out + cp -R opt/ $out/opt - export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser + export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser - # Fix path to bash in $BINARYWRAPPER - substituteInPlace $BINARYWRAPPER \ - --replace /bin/bash ${stdenv.shell} + # Fix path to bash in $BINARYWRAPPER + substituteInPlace $BINARYWRAPPER \ + --replace /bin/bash ${stdenv.shell} - ln -sf $BINARYWRAPPER $out/bin/brave + 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 + 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 + # 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") + # 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 + 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 + # 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 + runHook postInstall ''; preFixup = '' @@ -181,16 +236,25 @@ stdenv.mkDerivation { 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}\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+,WaylandWindowDecorations}}" - ''} - ${optionalString (disableFeatures != []) '' - --add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}" - ''} + --suffix PATH : ${ + lib.makeBinPath [ + xdg-utils + coreutils + ] + } + ${ + optionalString (enableFeatures != [ ]) '' + --add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+,WaylandWindowDecorations}}" + '' + } + ${ + optionalString (disableFeatures != [ ]) '' + --add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}" + '' + } --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto}}" ${optionalString vulkanSupport '' - --prefix XDG_DATA_DIRS : "${addDriverRunpath.driverLink}/share" + --prefix XDG_DATA_DIRS : "${addDriverRunpath.driverLink}/share" ''} --add-flags ${escapeShellArg commandLineArgs} ) @@ -206,7 +270,9 @@ stdenv.mkDerivation { meta = { 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#" + lib.replaceStrings [ "." ] [ "" ] version; + changelog = + "https://github.com/brave/brave-browser/blob/master/CHANGELOG_DESKTOP.md#" + + lib.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 @@ -214,8 +280,17 @@ stdenv.mkDerivation { ''; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; license = lib.licenses.mpl20; - maintainers = with lib.maintainers; [ uskudnik rht jefflabonte nasirhm buckley310 ]; - platforms = [ "aarch64-linux" "x86_64-linux" ]; + maintainers = with lib.maintainers; [ + uskudnik + rht + jefflabonte + nasirhm + buckley310 + ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; mainProgram = "brave"; }; } diff --git a/pkgs/by-name/br/brave/package.nix b/pkgs/by-name/br/brave/package.nix index 591496c8851b..79bc50213e4d 100644 --- a/pkgs/by-name/br/brave/package.nix +++ b/pkgs/by-name/br/brave/package.nix @@ -1,24 +1,32 @@ # Expression generated by update.sh; do not edit it by hand! { stdenv, callPackage, ... }@args: -callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ]) - ( - if stdenv.hostPlatform.isAarch64 then - rec { - pname = "brave"; - version = "1.71.121"; - url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb"; - hash = "sha256-+MBZXtgaEiTqEd63HpPbi4KjHOHPRRcf8q3QDe+YsKk="; - platform = "aarch64-linux"; - } - else if stdenv.hostPlatform.isx86_64 then - rec { - pname = "brave"; - version = "1.71.121"; - url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; - hash = "sha256-sc2FFSttm9+yh8atJQ6KS5ZL87Ov9vUXJeVKYTPNpy0="; - platform = "x86_64-linux"; - } +let + pname = "brave"; + version = "1.71.123"; + + allArchives = { + aarch64-linux = { + url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb"; + hash = "sha256-u3fme771Q5F00fYiLez9mhGQR2mORYdSabXovr0+OYE="; + }; + x86_64-linux = { + url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; + hash = "sha256-fJczTAra+j8+veicz4lIyKSNJyxJK4q9gpZoAyQwkxQ="; + }; + }; + + archive = + if builtins.hasAttr stdenv.system allArchives then + allArchives.${stdenv.system} else - throw "Unsupported platform." - ) + throw "Unsupported platform."; + +in +callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ]) ( + archive + // { + inherit pname version; + platform = stdenv.system; + } +) diff --git a/pkgs/by-name/br/brave/update.sh b/pkgs/by-name/br/brave/update.sh index aff0dd552102..306f4d12e53b 100755 --- a/pkgs/by-name/br/brave/update.sh +++ b/pkgs/by-name/br/brave/update.sh @@ -1,17 +1,15 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -p curl gnused nix +#!nix-shell -i bash -p curl gnused nix jq SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -latestVersionAarch64="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-arm64/Packages \ - | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)" +latestVersion="$(curl --fail -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/brave/brave-browser/releases/latest" | jq -r '.tag_name' | sed 's/^v//')" + hashAarch64="$(nix hash to-sri --type sha256 \ $(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-arm64/Packages \ | sed -r -n 's/^SHA256: (.*)/\1/p' | head -n1) )" -latestVersionAmd64="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages \ - | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)" hashAmd64="$(nix hash to-sri --type sha256 \ $(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages \ | sed -r -n 's/^SHA256: (.*)/\1/p' | head -n1) @@ -21,25 +19,33 @@ cat > $SCRIPT_DIR/package.nix << EOF # Expression generated by update.sh; do not edit it by hand! { stdenv, callPackage, ... }@args: -callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ]) - ( - if stdenv.hostPlatform.isAarch64 then - rec { - pname = "brave"; - version = "${latestVersionAarch64}"; - url = "https://github.com/brave/brave-browser/releases/download/v\${version}/brave-browser_\${version}_arm64.deb"; - hash = "${hashAarch64}"; - platform = "aarch64-linux"; - } - else if stdenv.hostPlatform.isx86_64 then - rec { - pname = "brave"; - version = "${latestVersionAmd64}"; - url = "https://github.com/brave/brave-browser/releases/download/v\${version}/brave-browser_\${version}_amd64.deb"; - hash = "${hashAmd64}"; - platform = "x86_64-linux"; - } +let + pname = "brave"; + version = "${latestVersion}"; + + allArchives = { + aarch64-linux = { + url = "https://github.com/brave/brave-browser/releases/download/v\${version}/brave-browser_\${version}_arm64.deb"; + hash = "${hashAarch64}"; + }; + x86_64-linux = { + url = "https://github.com/brave/brave-browser/releases/download/v\${version}/brave-browser_\${version}_amd64.deb"; + hash = "${hashAmd64}"; + }; + }; + + archive = + if builtins.hasAttr stdenv.system allArchives then + allArchives.\${stdenv.system} else - throw "Unsupported platform." - ) + throw "Unsupported platform."; + +in +callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ]) ( + archive + // { + inherit pname version; + platform = stdenv.system; + } +) EOF