1{ stdenv, lib, fetchFromGitHub
2, which
3, python3
4, help2man
5}:
6
7let
8 pyEnv = python3.withPackages(ps: [ ps.setuptools ]);
9in
10stdenv.mkDerivation rec {
11 pname = "mininet";
12 version = "2.3.0";
13
14 outputs = [ "out" "py" ];
15
16 src = fetchFromGitHub {
17 owner = "mininet";
18 repo = "mininet";
19 rev = version;
20 sha256 = "sha256-bCppmeB+zQMKTptnzhsXtl72XJXU3USo7cQgP1Z6SrY=";
21 };
22
23 buildFlags = [ "mnexec" ];
24 makeFlags = [ "PREFIX=$(out)" ];
25
26 pythonPath = [ python3.pkgs.setuptools ];
27 nativeBuildInputs = [ help2man ];
28
29 propagatedBuildInputs = [ python3 which ];
30
31 installTargets = [ "install-mnexec" "install-manpages" ];
32
33 preInstall = ''
34 mkdir -p $out $py
35 # without --root, install fails
36 ${pyEnv.interpreter} setup.py install --root="/" --prefix=$py
37 '';
38
39 doCheck = false;
40
41
42 meta = with lib; {
43 description = "Emulator for rapid prototyping of Software Defined Networks";
44 license = {
45 fullName = "Mininet 2.3.0 License";
46 };
47 platforms = platforms.linux;
48 homepage = "https://github.com/mininet/mininet";
49 maintainers = with maintainers; [ teto ];
50 };
51}