nixpkgs-immich/pkgs/applications/networking/browsers/netsurf/browser.nix
2024-09-17 10:23:40 -06:00

148 lines
3.0 KiB
Nix

{ lib
, stdenv
, fetchurl
, SDL
, check
, curl
, expat
, gperf
, gtk2
, gtk3
, libXcursor
, libXrandr
, libidn
, libjpeg
, libjxl
, libpng
, libwebp
, libxml2
, makeWrapper
, openssl
, perlPackages
, pkg-config
, wrapGAppsHook3
, xxd
# Netsurf-specific dependencies
, buildsystem
, libcss
, libdom
, libhubbub
, libnsbmp
, libnsfb
, libnsgif
, libnslog
, libnspsl
, libnsutils
, libparserutils
, libsvgtiny
, libutf8proc
, libwapcaplet
, nsgenbind
# Configuration
, uilib
}:
stdenv.mkDerivation (finalAttrs: {
pname = "netsurf";
version = "3.11";
src = fetchurl {
url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${finalAttrs.version}-src.tar.gz";
hash = "sha256-wopiau/uQo0FOxP4i1xECSIkWXZSLRLq8TfP0y0gHLI=";
};
nativeBuildInputs = [
makeWrapper
perlPackages.HTMLParser
perlPackages.perl
pkg-config
xxd
]
++ lib.optional (uilib == "gtk2" || uilib == "gtk3") wrapGAppsHook3;
buildInputs = [
check
curl
gperf
libXcursor
libXrandr
libidn
libjpeg
libjxl
libpng
libwebp
libxml2
openssl
libcss
libdom
libhubbub
libnsbmp
libnsfb
libnsgif
libnslog
libnspsl
libnsutils
libparserutils
libsvgtiny
libutf8proc
libwapcaplet
nsgenbind
]
++ lib.optionals (uilib == "framebuffer") [ expat SDL ]
++ lib.optional (uilib == "gtk2") gtk2
++ lib.optional (uilib == "gtk3") gtk3
;
# Since at least 2018 AD, GCC and other compilers run in `-fno-common` mode as
# default, in order to comply with C standards and also get rid of some bad
# quality code. Because of this, many codebases that weren't updated need to
# be patched -- or the `-fcommon` flag should be explicitly passed to the
# compiler
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678
# https://github.com/NixOS/nixpkgs/issues/54506
env.NIX_CFLAGS_COMPILE = "-fcommon";
env.CFLAGS = lib.optionalString stdenv.isDarwin "-D_DARWIN_C_SOURCE";
patchPhase = lib.optionalString stdenv.cc.isClang ''
runHook prePatch
substituteInPlace Makefile \
--replace-warn '--trace' '-t' \
--replace-warn '-Wimplicit-fallthrough=3' '-Wimplicit-fallthrough'
runHook postPatch
'';
preConfigure = ''
cat <<EOF > Makefile.config
override NETSURF_GTK_RES_PATH := $out/share/
override NETSURF_USE_GRESOURCE := YES
EOF
'';
makeFlags = [
"PREFIX=${placeholder "out"}"
"TARGET=${uilib}"
];
meta = {
homepage = "https://www.netsurf-browser.org/";
description = "Free, open source, small web browser";
mainProgram = "netsurf-gtk3";
longDescription = ''
NetSurf is a free, open source web browser. It is written in C and
released under the GNU Public Licence version 2. NetSurf has its own
layout and rendering engine entirely written from scratch. It is small and
capable of handling many of the web standards in use today.
'';
license = lib.licenses.gpl2Only;
inherit (buildsystem.meta) maintainers platforms;
};
})