This repository has been archived on 2026-05-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
zen-browser-flake/package.nix
Luis Quiñones 05274a63b9 fix(package): create symlink to expose binary as "zen"
This change might fix the issue mentioned here:
https://github.com/0xc000022070/zen-browser-flake/issues/36

But the problem with this is that if both zen flavors are installed
then one of them will have more priority than the other so they should
use complete binary name like "zen-twilight" or "zen-beta" instead of
only "zen"
2025-04-03 18:24:29 -05:00

119 lines
3.3 KiB
Nix

{
name,
variant,
desktopFile,
lib,
stdenv,
config,
wrapGAppsHook3,
autoPatchelfHook,
alsa-lib,
curl,
dbus-glib,
gtk3,
libXtst,
libva,
pciutils,
pipewire,
adwaita-icon-theme,
writeText,
patchelfUnstable, # have to use patchelfUnstable to support --no-clobber-old-sections
applicationName ?
"Zen Browser"
+ (
if name == "beta"
then " (Beta)"
else if name == "twilight"
then " (Twilight)"
else if name == "twilight-official"
then " (Twilight)"
else ""
),
}: let
binaryName = "zen-${name}";
mozillaPlatforms = {
x86_64-linux = "linux-x86_64";
aarch64-linux = "linux-aarch64";
};
policies =
{
DisableAppUpdate = true;
}
// config.firefox.policies or {};
policiesJson = writeText "firefox-policies.json" (builtins.toJSON {inherit policies;});
pname = "zen-${name}-bin-unwrapped";
in
stdenv.mkDerivation {
inherit pname;
inherit (variant) version;
src = builtins.fetchTarball {inherit (variant) url sha256;};
desktopSrc = ./.;
nativeBuildInputs = [
wrapGAppsHook3
autoPatchelfHook
patchelfUnstable
];
buildInputs = [
gtk3
adwaita-icon-theme
alsa-lib
dbus-glib
libXtst
];
runtimeDependencies = [
curl
libva.out
pciutils
];
appendRunpaths = [
"${pipewire}/lib"
];
# Firefox uses "relrhack" to manually process relocations from a fixed offset
patchelfFlags = ["--no-clobber-old-sections"];
installPhase = ''
mkdir -p "$prefix/lib/zen-bin-${variant.version}"
cp -r "$src"/* "$prefix/lib/zen-bin-${variant.version}"
mkdir -p "$out/bin"
ln -s "$prefix/lib/zen-bin-${variant.version}/zen" "$out/bin/${binaryName}"
# ! twilight and beta could collide if both are installed
ln -s "$prefix/lib/zen-bin-${variant.version}/zen" "$out/bin/zen"
mkdir -p "$out/lib/zen-${variant.version}/distribution"
ln -s ${policiesJson} "$out/lib/zen-${variant.version}/distribution/policies.json"
install -D $src/browser/chrome/icons/default/default16.png $out/share/icons/hicolor/16x16/apps/zen-${name}.png
install -D $src/browser/chrome/icons/default/default32.png $out/share/icons/hicolor/32x32/apps/zen-${name}.png
install -D $src/browser/chrome/icons/default/default48.png $out/share/icons/hicolor/48x48/apps/zen-${name}.png
install -D $src/browser/chrome/icons/default/default64.png $out/share/icons/hicolor/64x64/apps/zen-${name}.png
install -D $src/browser/chrome/icons/default/default128.png $out/share/icons/hicolor/128x128/apps/zen-${name}.png
'';
passthru = {
inherit applicationName binaryName;
libName = "zen-bin-${variant.version}";
ffmpegSupport = true;
gssSupport = true;
gtk3 = gtk3;
};
meta = {
inherit desktopFile;
description = "Experience tranquillity while browsing the web without people tracking you!";
homepage = "https://zen-browser.app";
downloadPage = "https://zen-browser.app/download/";
changelog = "https://github.com/zen-browser/desktop/releases";
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
platforms = builtins.attrNames mozillaPlatforms;
hydraPlatforms = [];
mainProgram = binaryName;
};
}