nixpkgs/pkgs/applications/networking/browsers/netsurf/browser.nix

95 lines
2.7 KiB
Nix

{ lib, stdenv, fetchurl, makeWrapper, wrapGAppsHook
# Buildtime dependencies.
, check, pkg-config, xxd
# Runtime dependencies.
, curl, expat, libXcursor, libXrandr, libidn, libjpeg, libpng, libwebp, libxml2
, openssl, perl, perlPackages
# uilib-specific dependencies
, gtk2 # GTK 2
, gtk3 # GTK 3
, SDL # Framebuffer
# Configuration
, uilib
# Netsurf-specific dependencies
, libcss, libdom, libhubbub, libnsbmp, libnsfb, libnsgif
, libnslog, libnspsl, libnsutils, libparserutils, libsvgtiny, libutf8proc
, libwapcaplet, nsgenbind
}:
let
inherit (lib) optional optionals;
in
stdenv.mkDerivation rec {
pname = "netsurf";
version = "3.10";
src = fetchurl {
url = "http://download.netsurf-browser.org/netsurf/releases/source/${pname}-${version}-src.tar.gz";
sha256 = "sha256-NkhEKeGTYUaFwv8kb1W9Cm3d8xoBi+5F4NH3wohRmV4=";
};
nativeBuildInputs = [
makeWrapper
perl
perlPackages.HTMLParser
pkg-config
xxd
]
++ optional (uilib == "gtk2" || uilib == "gtk3") wrapGAppsHook
;
buildInputs = [
check curl libXcursor libXrandr libidn libjpeg libpng libwebp libxml2 openssl
# Netsurf-specific libraries
nsgenbind libnsfb libwapcaplet libparserutils libnslog libcss
libhubbub libdom libnsbmp libnsgif libsvgtiny libnsutils libnspsl
libutf8proc
]
++ optionals (uilib == "framebuffer") [ expat SDL ]
++ optional (uilib == "gtk2") gtk2
++ 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";
preConfigure = ''
cat <<EOF > Makefile.conf
override NETSURF_GTK_RES_PATH := $out/share/
override NETSURF_USE_GRESOURCE := YES
EOF
'';
makeFlags = [
"PREFIX=${placeholder "out"}"
"TARGET=${uilib}"
];
meta = with lib; {
homepage = "https://www.netsurf-browser.org/";
description = "A free, open source, small web browser";
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 = licenses.gpl2Only;
maintainers = [ maintainers.vrthra maintainers.AndersonTorres ];
platforms = platforms.linux;
};
}