nixpkgs/pkgs/by-name/ya/yandex-browser/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

177 lines
3.4 KiB
Nix

{ stdenv
, lib
, fetchurl
, autoPatchelfHook
, wrapGAppsHook3
, flac
, gnome2
, harfbuzzFull
, nss
, snappy
, xdg-utils
, xorg
, alsa-lib
, atk
, cairo
, cups
, curl
, dbus
, expat
, fontconfig
, freetype
, gdk-pixbuf
, glib
, gtk3
, libX11
, libxcb
, libXScrnSaver
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
, libXrandr
, libXrender
, libXtst
, libdrm
, libnotify
, libopus
, libpulseaudio
, libuuid
, libxshmfence
, mesa
, nspr
, pango
, systemd
, at-spi2-atk
, at-spi2-core
, libqt5pas
, qt6
, vivaldi-ffmpeg-codecs
, edition ? "stable"
}:
let
version = {
corporate = "24.7.1.1195-1";
beta = "24.7.1.1124-1";
stable = "24.7.1.1120-1";
}.${edition};
hash = {
corporate = "sha256-HPEUeIZl9nRhMzrMv4MzIOnbF8mJ789vCtTWf9TcCH4=";
beta = "sha256-vcX/9MWqeUd/YlczHivcL6+TignE8Nk6rO5DaCjf2SQ=";
stable = "sha256-wrYPQ8WrttF/tlafA0+e3eDZMq9SFmLk5NOIeHQr14U=";
}.${edition};
app = {
corporate = "";
beta = "-beta";
stable = "";
}.${edition};
in stdenv.mkDerivation rec {
pname = "yandex-browser-${edition}";
inherit version;
src = fetchurl {
url = "http://repo.yandex.ru/yandex-browser/deb/pool/main/y/${pname}/${pname}_${version}_amd64.deb";
inherit hash;
};
nativeBuildInputs = [
autoPatchelfHook
qt6.wrapQtAppsHook
wrapGAppsHook3
];
buildInputs = [
flac
harfbuzzFull
nss
snappy
xdg-utils
xorg.libxkbfile
alsa-lib
at-spi2-atk
at-spi2-core
atk
cairo
cups
curl
dbus
expat
fontconfig.lib
freetype
gdk-pixbuf
glib
gnome2.GConf
gtk3
libX11
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libdrm
libnotify
libopus
libuuid
libxcb
libxshmfence
mesa
nspr
nss
pango
(lib.getLib stdenv.cc.cc)
libqt5pas
qt6.qtbase
];
unpackPhase = ''
mkdir $TMP/ya/ $out/bin/ -p
ar vx $src
tar --no-overwrite-dir -xvf data.tar.xz -C $TMP/ya/
'';
installPhase = ''
cp $TMP/ya/{usr/share,opt} $out/ -R
cp $out/share/applications/yandex-browser${app}.desktop $out/share/applications/${pname}.desktop || true
rm -f $out/share/applications/yandex-browser.desktop
substituteInPlace $out/share/applications/${pname}.desktop --replace /usr/ $out/
substituteInPlace $out/share/menu/yandex-browser${app}.menu --replace /opt/ $out/opt/
substituteInPlace $out/share/gnome-control-center/default-apps/yandex-browser${app}.xml --replace /opt/ $out/opt/
ln -sf ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so $out/opt/yandex/browser${app}/libffmpeg.so
ln -sf $out/opt/yandex/browser${app}/yandex-browser${app} $out/bin/${pname}
'';
runtimeDependencies = map lib.getLib [
libpulseaudio
curl
systemd
vivaldi-ffmpeg-codecs
] ++ buildInputs;
meta = with lib; {
description = "Yandex Web Browser";
homepage = "https://browser.yandex.ru/";
license = licenses.unfree;
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ dan4ik605743 ionutnechita ];
platforms = [ "x86_64-linux" ];
knownVulnerabilities = [
''
Trusts a Russian government issued CA certificate for some websites.
See https://habr.com/en/company/yandex/blog/655185/ (Russian) for details.
''
];
};
}