initial commit
This commit is contained in:
commit
5fc6c380ca
|
@ -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
|
||||
];
|
||||
...
|
||||
}
|
||||
```
|
|
@ -0,0 +1,9 @@
|
|||
self: super:
|
||||
|
||||
{
|
||||
libgnurl = super.callPackage ./pkgs/libgnurl { };
|
||||
|
||||
gnunet = super.callPackage ./pkgs/gnunet {
|
||||
libgnurl = self.libgnurl;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue