Files
zen-browser-flake/package.nix
Luis Quiñones 6a9daeae2f fix: manually install .desktop file(#46)
Might fix: https://github.com/0xc000022070/zen-browser-flake/issues/45

This commit addresses the problem where the .desktop file was not being installed properly. 

In my case, since the rewrite the URLs sent me to Brave instead of Zen.

Are you dumb, sir?
2025-04-14 21:03:55 -05:00

127 lines
3.5 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 = ./assets/desktop;
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"];
preFixup = ''
gappsWrapperArgs+=(
--add-flags '--name "''${MOZ_APP_LAUNCHER:-${binaryName}}"'
)
'';
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 "$out/bin/${binaryName}" "$out/bin/zen"
install -D $desktopSrc/${desktopFile} $out/share/applications/${desktopFile}
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;
};
}