diff options
author | tg(x) <*@tg-x.net> | 2016-10-17 20:31:58 +0200 |
---|---|---|
committer | tg(x) <*@tg-x.net> | 2016-10-17 20:31:58 +0200 |
commit | d71d12594185a5fe476ac5951b3cc648ffdd5374 (patch) | |
tree | 646502d9562f1dbd94ac7a821e8a72f57f725e3a | |
parent | 59d9e5a190e661d36e53c8488646815422e08b62 (diff) |
nix pkg
-rw-r--r-- | default.nix | 84 | ||||
-rw-r--r-- | taler-exchange-dev.nix | 61 |
2 files changed, 145 insertions, 0 deletions
diff --git a/default.nix b/default.nix new file mode 100644 index 000000000..358538e8f --- /dev/null +++ b/default.nix @@ -0,0 +1,84 @@ +# 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 +# --arg pkgs /path/to/nixpkgs +# +## CCACHE +# +# To enable ccache, use the following: +# +# --argstr ccache_dir /var/cache/ccache + +# or when using nix-shell: +# --argstr ccache_dir ~/.ccache +# +# and make sure the given directory is writable by the nixpkgs group when using nix-build or nix-env -i, +# or the current user when using nix-shell +# + +{ + pkgs ? null, + ccache_dir ? "", +}: + +let + syspkgs = import <nixpkgs> { }; + pinpkgs = syspkgs.fetchFromGitHub { + owner = "NixOS"; + repo = "nixpkgs"; + + # binary cache exists for revisions in https://nixos.org/releases/nixos/<release>/<build>/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 <nixpkgs> { } + else + import pkgs {}; + stdenv = usepkgs.stdenvAdapters.keepDebugInfo usepkgs.stdenv; + +in { + gnunet-dev = usepkgs.callPackage ./gnunet/gnunet-dev.nix { + inherit ccache_dir; + }; + taler-exchange-dev = usepkgs.callPackage ./taler-exchange-dev.nix { + inherit ccache_dir; + gnunet-dev = usepkgs.callPackage ./gnunet/gnunet-dev.nix { + inherit ccache_dir; + }; + }; +} diff --git a/taler-exchange-dev.nix b/taler-exchange-dev.nix new file mode 100644 index 000000000..2e5e068e5 --- /dev/null +++ b/taler-exchange-dev.nix @@ -0,0 +1,61 @@ +{ stdenv, makeWrapper, pkgconfig, autoconf, automake, libtool, ccache, ccache_dir ? "" +, gnunet-dev, postgresql, jansson, libgcrypt, libgnurl, libmicrohttpd }: + +stdenv.mkDerivation rec { + src = ./.; + name = "taler-exchange-dev"; + + buildInputs = [ + makeWrapper pkgconfig autoconf automake libtool ccache + gnunet-dev postgresql jansson libgcrypt libgnurl libmicrohttpd + ]; + + patchPhase = '' + if [ -e Makefile ]; then + make distclean + fi + ''; + + NIX_CFLAGS_COMPILE = "-ggdb -O0"; + + configureFlags = [ + "--enable-gcc-hardening" + "--enable-linker-hardening" + + "--enable-logging=verbose" + "--enable-poisoning" + ]; + + preConfigure = '' + ./bootstrap + + 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 = "Exchange for GNU Taler"; + + longDescription = '' + ''; + + homepage = https://taler.net/; + + license = licenses.gpl3Plus; + platforms = platforms.gnu; + maintainers = with maintainers; [ ]; + }; +} |