From 73515c3ba4c4e34e5d86d8342c8763a7c2782d7e Mon Sep 17 00:00:00 2001 From: Gabor X Toth <*@tg-x.net> Date: Mon, 17 Oct 2016 15:47:14 +0000 Subject: [PATCH] gnunet-dev.nix --- gnunet-dev.nix | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 gnunet-dev.nix diff --git a/gnunet-dev.nix b/gnunet-dev.nix new file mode 100644 index 000000000..7ffc0d94c --- /dev/null +++ b/gnunet-dev.nix @@ -0,0 +1,78 @@ +{ stdenv, makeWrapper, pkgconfig, autoconf, automake, ccache, ccache_dir ? "" +, adns, curl, gettext, gmp, gnutls, gss, ncurses, openldap, zlib, sqlite, mariadb, postgresql +, libextractor, libgcrypt, libgnurl, libidn, libmicrohttpd +, libpsl, libtool, libunistring, libxml2 +}: + +stdenv.mkDerivation rec { + src = ./.; + name = "gnunet-dev"; + + buildInputs = [ + makeWrapper pkgconfig autoconf automake ccache + adns curl gettext gmp gnutls gss ncurses openldap zlib sqlite mariadb postgresql + libextractor libgcrypt libgnurl libidn libmicrohttpd + libpsl libtool libunistring libxml2 + ]; + + patchPhase = '' + test -e Makefile && make distclean + ''; + + NIX_CFLAGS_COMPILE = "-ggdb -O0"; + + configureFlags = [ + "--enable-gcc-hardening" + "--enable-linker-hardening" + + "--enable-experimental" + "--enable-logging=verbose" + "--enable-poisoning" + ]; + + preConfigure = '' + ./bootstrap + configureFlags="$configureFlags --with-nssdir=$out/lib" + + if [ -n "${ccache_dir}" ]; then + export CC='ccache gcc' + export CCACHE_COMPRESS=1 + export CCACHE_DIR="${ccache_dir}" + export CCACHE_UMASK=007 + fi + ''; + + doCheck = false; + + postInstall = '' + # Tests can be run this way + #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.gpl3Plus; + platforms = platforms.gnu; + maintainers = with maintainers; [ ]; + }; +} -- 2.25.1