nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix
Will Dietz 855e0463ab tree-wide: platforms = platforms.gnu; -> platforms = gnu ++ linux
"platforms.gnu" has been linux-only since at least 17.03:

$ nix eval -f channel:nixos-17.03 lib.platforms.gnu
[ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux" ]

Unlike platforms.linux, platforms.gnu indicates "must use glibc"
which for the most part is not intended.

Replacing platforms.gnu with platforms.linux would be the same "today"
but let's err on preserving existing behavior and be optimistic
about platforms these packages work on.
2018-04-30 18:08:48 -05:00

79 lines
2.7 KiB
Nix

{ stdenv, fetchurl, adns, curl, gettext, gmp, gnutls, libextractor
, libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring
, makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib
, libpulseaudio, libopus, libogg }:
stdenv.mkDerivation rec {
name = "gnunet-0.10.1";
src = fetchurl {
url = "mirror://gnu/gnunet/${name}.tar.gz";
sha256 = "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n";
};
buildInputs = [
adns curl gettext gmp gnutls libextractor libgcrypt libgnurl libidn
libmicrohttpd libtool libunistring libxml2 makeWrapper ncurses
pkgconfig sqlite zlib libpulseaudio libopus libogg
];
preConfigure = ''
# Brute force: since nix-worker chroots don't provide
# /etc/{resolv.conf,hosts}, replace all references to `localhost'
# by their IPv4 equivalent.
find . \( -name \*.c -or -name \*.conf \) | \
xargs sed -ie 's|\<localhost\>|127.0.0.1|g'
# Make sure the tests don't rely on `/tmp', for the sake of chroot
# builds.
find . \( -iname \*test\*.c -or -name \*.conf \) | \
xargs sed -ie "s|/tmp|$TMPDIR|g"
# Ensure NSS installation works fine
configureFlags="$configureFlags --with-nssdir=$out/lib"
patchShebangs src/gns/nss/install-nss-plugin.sh
sed -ie 's|@LDFLAGS@|@LDFLAGS@ $(Z_LIBS)|g' \
src/regex/Makefile.in \
src/fs/Makefile.in
'';
doCheck = false;
/* FIXME: Tests must be run this way, but there are still a couple of
failures.
postInstall =
'' export GNUNET_PREFIX="$out"
export PATH="$out/bin:$PATH"
make -k check
'';
*/
meta = with stdenv.lib; {
description = "GNU's decentralized anonymous and censorship-resistant P2P framework";
longDescription = ''
GNUnet is a framework for secure peer-to-peer networking that
does not use any centralized or otherwise trusted services. A
first service implemented on top of the networking layer
allows anonymous censorship-resistant file-sharing. Anonymity
is provided by making messages originating from a peer
indistinguishable from messages that the peer is routing. All
peers act as routers and use link-encrypted connections with
stable bandwidth utilization to communicate with each other.
GNUnet uses a simple, excess-based economic model to allocate
resources. Peers in GNUnet monitor each others behavior with
respect to resource usage; peers that contribute to the
network are rewarded with better service.
'';
homepage = https://gnunet.org/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ viric vrthra ];
platforms = platforms.gnu ++ platforms.linux;
};
}