nixpkgs/pkgs/by-name/mi/mininet/package.nix
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

93 lines
1.9 KiB
Nix

{ stdenv, lib, fetchFromGitHub
, runCommand
, which
, python3
, help2man
, makeWrapper
, ethtool
, inetutils
, iperf
, iproute2
, nettools
, socat
}:
let
pyEnv = python3.withPackages(ps: [
ps.setuptools
ps.packaging
ps.distutils
]);
telnet = runCommand "inetutils-telnet"
{ }
''
mkdir -p "$out/bin"
ln -s "${inetutils}"/bin/telnet "$out/bin"
'';
generatedPath = lib.makeSearchPath "bin" [
iperf
ethtool
iproute2
socat
# mn errors out without a telnet binary
# pkgs.inetutils brings an undesired ifconfig into PATH see #43105
nettools
telnet
];
in
stdenv.mkDerivation rec {
pname = "mininet";
version = "2.3.1b4";
outputs = [ "out" "py" ];
src = fetchFromGitHub {
owner = "mininet";
repo = "mininet";
rev = version;
hash = "sha256-Z7Vbfu0EJ4+rCpckXrt3hgxeB9N2nnyPIXgPBnpV4uw=";
};
buildFlags = [ "mnexec" ];
makeFlags = [ "PREFIX=$(out)" ];
pythonPath = [ python3.pkgs.setuptools ];
nativeBuildInputs = [ help2man makeWrapper python3.pkgs.wrapPython ];
propagatedBuildInputs = [ pyEnv which ];
installTargets = [ "install-mnexec" "install-manpages" ];
preInstall = ''
mkdir -p $out $py
# without --root, install fails
"${pyEnv.interpreter}" setup.py install \
--root="/" \
--prefix="$py" \
--install-scripts="$out/bin"
'';
postFixup = ''
wrapPythonProgramsIn "$out/bin" "$py $pythonPath"
wrapProgram "$out/bin/mnexec" \
--prefix PATH : "${generatedPath}"
wrapProgram "$out/bin/mn" \
--prefix PATH : "${generatedPath}"
'';
doCheck = false;
meta = with lib; {
description = "Emulator for rapid prototyping of Software Defined Networks";
license = licenses.bsd3;
platforms = platforms.linux;
homepage = "https://github.com/mininet/mininet";
maintainers = with maintainers; [ teto ];
mainProgram = "mnexec";
};
}