gnunet-dev.nix
authorGabor X Toth <*@tg-x.net>
Mon, 17 Oct 2016 15:47:14 +0000 (15:47 +0000)
committerGabor X Toth <*@tg-x.net>
Mon, 17 Oct 2016 15:47:14 +0000 (15:47 +0000)
gnunet-dev.nix [new file with mode: 0644]

diff --git a/gnunet-dev.nix b/gnunet-dev.nix
new file mode 100644 (file)
index 0000000..7ffc0d9
--- /dev/null
@@ -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; [ ];
+  };
+}