From 27b21f59c1e807d9c06f71cba8930cf9aae938db Mon Sep 17 00:00:00 2001 From: Gabor X Toth <*@tg-x.net> Date: Fri, 30 Sep 2016 15:30:07 +0000 Subject: [PATCH] nix package definition for development --- default.nix | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 000000000..c34ec1fff --- /dev/null +++ b/default.nix @@ -0,0 +1,120 @@ +# Nix package for GNUnet development +# +## INSTALL +# +# To build and install the package in the user environment, use: +# +# $ nix-env -f . -i +# +## BUILD ONLY +# +# To build the package and add it to the nix store, use: +# +# $ nix-build +# +## SHELL +# +# To launch a shell with all dependencies installed in the environment, use one of the following: +# $ nix-shell +# +# After entering nix-shell, build it: +# +# $ configurePhase +# $ buildPhase +# +## NIXPKGS +# +# For all of the above commands, nixpkgs to use can be set the following way: +# +# a) by default it uses nixpkgs pinned to a known working version +# +# b) use nixpkgs from the system: +# --arg pkgs 0 +# +# c) use nixpkgs at a given path +# --args pkgs /path/to/nixpkgs +# + +{ pkgs ? null }: + +let + syspkgs = import { }; + pinpkgs = syspkgs.fetchFromGitHub { + owner = "NixOS"; + repo = "nixpkgs"; + + # binary cache exists for revisions in https://nixos.org/releases/nixos///git-revision + rev = "c4469edac1fc1fa5e5b5aa2ceadeda8f3f92d30a"; # https://nixos.org/releases/nixos/16.09/nixos-16.09beta430.c4469ed/git-revision + sha256 = "1x6hmf815d5anfxrxl6iivfkk60q5qxa6waa9xnwhwkbc14rhvn9"; + }; + usepkgs = if null == pkgs then + import pinpkgs {} + else + if 0 == pkgs then + import { } + else + import pkgs {}; + +in with usepkgs; usepkgs.stdenv.mkDerivation rec { + src = ./.; + name = "gnunet-dev"; + + buildInputs = [ + makeWrapper pkgconfig + 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 + ''; + + configureFlags = [ + "--enable-gcc-hardening" + "--enable-linker-hardening" + + "--enable-experimental" + "--enable-logging=verbose" + "--enable-poisoning" + ]; + + preConfigure = '' + ./bootstrap + configureFlags="$configureFlags --with-nssdir=$out/lib" + ''; + + 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 = http://gnunet.org/; + + license = licenses.gpl3Plus; + platforms = platforms.gnu; + maintainers = with maintainers; [ ]; + }; +} -- 2.25.1