1{ lib
2, stdenv
3, fetchFromGitHub
4, autoreconfHook
5, glib
6, libev
7, libevent
8, pkg-config
9, glibSupport ? true
10, libevSupport ? true
11, libeventSupport ? true
12}:
13
14let
15 inherit (lib) optional;
16in
17stdenv.mkDerivation (finalAttrs: {
18 pname = "libverto";
19 version = "0.3.2";
20
21 src = fetchFromGitHub {
22 owner = "latchset";
23 repo = "libverto";
24 rev = finalAttrs.version;
25 hash = "sha256-csoJ0WdKyrza8kBSMKoaItKvcbijI6Wl8nWCbywPScQ=";
26 };
27
28 nativeBuildInputs = [
29 autoreconfHook
30 pkg-config
31 ];
32
33 buildInputs =
34 optional glibSupport glib
35 ++ optional libevSupport libev
36 ++ optional libeventSupport libevent;
37
38 meta = with lib; {
39 homepage = "https://github.com/latchset/libverto";
40 description = "Asynchronous event loop abstraction library";
41 longDescription = ''
42 Libverto exists to solve an important problem: many applications and
43 libraries are unable to write asynchronous code because they are unable to
44 pick an event loop. This is particularly true of libraries who want to be
45 useful to many applications who use loops that do not integrate with one
46 another or which use home-grown loops. libverto provides a loop-neutral
47 async api which allows the library to expose asynchronous interfaces and
48 offload the choice of the main loop to the application.
49 '';
50 license = licenses.mit;
51 maintainers = with maintainers; [ AndersonTorres ];
52 platforms = platforms.unix;
53 };
54})