initial commit

This commit is contained in:
lurchi 2018-11-14 18:02:43 +01:00
commit 5fc6c380ca
4 changed files with 169 additions and 0 deletions

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# Nixpgs overlay with GNUnet-related packages
This repository contains experimental packages related to [GNUnet](https://gnunet.org) for the Nix package manager. There exists a GNUnet package in the official nixpkgs repository but as GNUnet is still under heavy development, it is recommended to use a fairly recent version from the master branch of GNUnet's git repository.
# Installation
We can install the overlay into the user environment like this:
```shell
$ ln -s ~/.config/nixpkgs/overlays/gnunet-overlay.nix gnunet-overlay
```
Now we can install the packages using
```shell
$ nix-env -f '<nixpkgs>' -iA gnunet
```
To use the packages from the overlay system-wide (on NixOS) we can add this to our ``/etc/nixos/configuration.nix``:
```
{ config, pkgs, ... }:
{
...
nixpkgs.overlays = [
(import (fetchGit https://ulrich.earth/code/nixpkgs-gnunet))
];
environment.systemPackages = with pkgs; [
...
gnunet
];
...
}
```

9
default.nix Normal file
View File

@ -0,0 +1,9 @@
self: super:
{
libgnurl = super.callPackage ./pkgs/libgnurl { };
gnunet = super.callPackage ./pkgs/gnunet {
libgnurl = self.libgnurl;
};
}

96
pkgs/gnunet/default.nix Normal file
View File

@ -0,0 +1,96 @@
{ stdenv, fetchgit, libtool, pkgconfig, autoconf, automake, gettext, libgcrypt
, libidn2, zlib, libunistring, glpk, miniupnpc, libextractor, jansson, libgnurl
, sqlite, postgresql, mariadb, libmicrohttpd, iptables, nettools, gnutls
, unbound, coreutils, file, python3, texinfo
, makeWrapper
, withVerbose ? true
, withDocumentation ? false
, withSqlite ? true
, withPostgres ? false
, withMariadb ? false}:
with stdenv.lib;
let
rev = "75c351e315e2e8578ed7eaec4323d66d3db901d8";
in
stdenv.mkDerivation rec {
name = "gnunet-${rev}";
src = fetchgit {
url = https://gnunet.org/git/gnunet.git;
inherit rev;
sha256 = "013sxqwffdj95a1dxbij71vmf642mn71z20gj044z3w9bznfnay4";
};
phases = [
"unpackPhase" "preConfigure" "configurePhase" "buildPhase" "installPhase"
"checkPhase"
];
enableParallelBuilding = true;
#doCheck = true;
nativeBuildInputs = [
makeWrapper libtool pkgconfig autoconf automake gettext coreutils file
python3
]
++ optional withDocumentation texinfo;
buildInputs = [
libgcrypt libidn2 zlib libunistring glpk miniupnpc libextractor jansson
libgnurl libmicrohttpd iptables nettools gnutls unbound
]
++ optional withSqlite sqlite
++ optional withPostgres postgresql
++ optional withMariadb mariadb;
configureFlags =
optional withVerbose "--enable-logging=verbose"
++ optional (!withDocumentation) "--disable-documentation";
preConfigure = ''
substituteInPlace configure.ac --replace "/usr/sbin/iptables" "iptables"
substituteInPlace configure.ac --replace "/sbin/ifconfig" "ifconfig"
sh bootstrap
substituteInPlace configure --replace "/usr/bin/file" "file"
substituteInPlace configure --replace "/usr/bin/objformat" "objformat"
'';
/* FIXME: Tests must be run this way, but there are still a couple of
failures. */
checkPhase =
'' export GNUNET_PREFIX="$out"
export GNUNET_TMP="$TMPDIR"
export PATH="$out/bin:$PATH"
make -k check
'';
meta = with stdenv.lib; {
description = "GNUnet, 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.agpl3;
maintainers = with maintainers; [ ];
platforms = platforms.gnu ++ platforms.linux;
};
}

31
pkgs/libgnurl/default.nix Normal file
View File

@ -0,0 +1,31 @@
{ stdenv, fetchurl, libtool, groff, perl, pkgconfig, python2, zlib, gnutls,
libidn2, libunistring, nghttp2, autoreconfHook }:
stdenv.mkDerivation rec {
version = "7.61.1";
name = "libgnurl-${version}";
src = fetchurl {
url = "mirror://gnu/gnunet/gnurl-${version}.tar.gz";
sha256 = "0y56k15vp3m2r8q6mnc6ivflwq9lv6npdhbbvxxcf4r8vwjhv91q";
};
nativeBuildInputs = [ libtool groff perl pkgconfig python2 autoreconfHook ];
propagatedBuildInputs = [ gnutls zlib libidn2 libunistring nghttp2 ];
configureFlags = [
"--disable-ntlm-wb"
"--without-ca-bundle"
"--with-ca-fallback"
];
meta = with stdenv.lib; {
description = "A fork of libcurl used by GNUnet";
homepage = https://gnunet.org/gnurl;
maintainers = with maintainers; [ falsifian vrthra ];
platforms = platforms.linux;
license = licenses.curl;
};
}