Files
nur-packages/pkgs/flow-browser-bin/default.nix
T
Olivier feff32f4c0
Build and populate cache / tests (chiasson, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-25.05.tar.gz, chiasson) (push) Successful in 1m55s
Build and populate cache / tests (chiasson, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixos-unstable.tar.gz, chiasson) (push) Successful in 1m47s
Build and populate cache / tests (chiasson, nixpkgs=https://github.com/NixOS/nixpkgs/archive/refs/heads/nixpkgs-unstable.tar.gz, chiasson) (push) Successful in 1m47s
Add flow-browser-bin package
2026-01-11 19:06:53 -04:00

81 lines
2.8 KiB
Nix

{ lib
, appimageTools
, fetchurl
, runCommand
, stdenv
, vips
}:
let
pname = "flow-browser-bin";
version = "0.8.6";
# Flow bundles `sharp`, which attempts to dlopen libvips with a filename that
# includes the libvips version (e.g. libvips-cpp.so.8.17.3). Nixpkgs provides
# libvips with a different SONAME-based filename (e.g. libvips-cpp.so.42.19.3),
# so we provide compatibility symlinks in the FHS env.
vipsSharpCompat = runCommand "flow-browser-vips-compat" { } ''
mkdir -p $out/lib
# Link to the SONAME symlinks provided by nixpkgs, so we don't hardcode the
# 42.x.y patchlevel.
ln -s ${vips.out}/lib/libvips-cpp.so.42 $out/lib/libvips-cpp.so.${vips.version}
ln -s ${vips.out}/lib/libvips.so.42 $out/lib/libvips.so.${vips.version}
'';
src =
if stdenv.hostPlatform.system == "x86_64-linux" then
fetchurl {
url = "https://github.com/MultiboxLabs/flow-browser/releases/download/v${version}/flow-browser-${version}-x86_64.AppImage";
sha256 = "1s4i419vlwgqzy8p73msb6djf6bbdk530inwc6hr7rwz611cf0gz";
}
else if stdenv.hostPlatform.system == "aarch64-linux" then
fetchurl {
url = "https://github.com/MultiboxLabs/flow-browser/releases/download/v${version}/flow-browser-${version}-arm64.AppImage";
sha256 = "0n2cp0519z43z5aa6mc7xzrhp6mpfjl7fkls29hk6db4mzv6sfsn";
}
else
throw "flow-browser-bin: unsupported system: ${stdenv.hostPlatform.system}";
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: [ vipsSharpCompat ];
# Ensure `sharp` can find libvips in the bubblewrapped FHS env.
# (Relying on /usr/lib64 + ld.so cache can be flaky depending on the env.)
profile = ''
export LD_LIBRARY_PATH="${vipsSharpCompat}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
'';
extraInstallCommands = ''
# Desktop entry
install -D -m 444 ${appimageContents}/Flow.desktop \
$out/share/applications/flow-browser.desktop
substituteInPlace $out/share/applications/flow-browser.desktop \
--replace-fail 'Exec=AppRun' 'Exec=${pname}'
# Icon
install -D -m 444 ${appimageContents}/usr/share/icons/hicolor/512x512/apps/Flow.png \
$out/share/icons/hicolor/512x512/apps/flow-browser.png
substituteInPlace $out/share/applications/flow-browser.desktop \
--replace-fail 'Icon=Flow' 'Icon=flow-browser'
'';
meta = {
description = "A modern, privacy-focused browser with a minimalistic design (binary AppImage)";
homepage = "https://github.com/multiboxlabs/flow-browser";
license = lib.licenses.gpl3Only;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = [ "x86_64-linux" "aarch64-linux" ];
mainProgram = "flow-browser-bin";
};
}