{ lib, stdenv, fetchFromGitHub, ncurses, libX11, bzip2, zlib, brotli, zstd, xz, openssl, autoreconfHook, gettext, pkg-config, libev, gpm, libidn, tre, expat, # Incompatible licenses, LGPLv3 - GPLv2 enableGuile ? false, guile ? null, enablePython ? false, python ? null, enablePerl ? (!stdenv.hostPlatform.isDarwin) && (stdenv.hostPlatform == stdenv.buildPlatform), perl ? null, # re-add javascript support when upstream supports modern spidermonkey }: assert enableGuile -> guile != null; assert enablePython -> python != null; stdenv.mkDerivation rec { pname = "elinks"; version = "0.18.0"; src = fetchFromGitHub { owner = "rkd77"; repo = "elinks"; rev = "v${version}"; hash = "sha256-TTb/v24gIWKiCQCESHo0Pz6rvRtw5anoXK0b35dzfLM="; }; buildInputs = [ ncurses libX11 bzip2 zlib brotli zstd xz openssl libidn tre expat libev ] ++ lib.optional stdenv.hostPlatform.isLinux gpm ++ lib.optional enableGuile guile ++ lib.optional enablePython python ++ lib.optional enablePerl perl; nativeBuildInputs = [ autoreconfHook gettext pkg-config ]; configureFlags = [ "--enable-finger" "--enable-html-highlight" "--enable-gopher" "--enable-gemini" "--enable-cgi" "--enable-bittorrent" "--enable-nntp" "--enable-256-colors" "--enable-true-color" "--with-brotli" "--with-lzma" "--with-libev" "--with-terminfo" ] ++ lib.optional enableGuile "--with-guile" ++ lib.optional enablePython "--with-python" ++ lib.optional enablePerl "--with-perl"; meta = with lib; { description = "Full-featured text-mode web browser"; mainProgram = "elinks"; homepage = "https://github.com/rkd77/elinks"; license = licenses.gpl2; platforms = with platforms; linux ++ darwin; maintainers = with maintainers; [ iblech ]; }; }