aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/programs/mininet.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/programs/mininet.nix')
-rw-r--r--nixpkgs/nixos/modules/programs/mininet.nix39
1 files changed, 39 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/programs/mininet.nix b/nixpkgs/nixos/modules/programs/mininet.nix
new file mode 100644
index 00000000000..ecc924325e6
--- /dev/null
+++ b/nixpkgs/nixos/modules/programs/mininet.nix
@@ -0,0 +1,39 @@
+# Global configuration for mininet
+# kernel must have NETNS/VETH/SCHED
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.programs.mininet;
+
+ generatedPath = with pkgs; makeSearchPath "bin" [
+ iperf ethtool iproute socat
+ ];
+
+ pyEnv = pkgs.python.withPackages(ps: [ ps.mininet-python ]);
+
+ mnexecWrapped = pkgs.runCommand "mnexec-wrapper"
+ { buildInputs = [ pkgs.makeWrapper pkgs.pythonPackages.wrapPython ]; }
+ ''
+ makeWrapper ${pkgs.mininet}/bin/mnexec \
+ $out/bin/mnexec \
+ --prefix PATH : "${generatedPath}"
+
+ ln -s ${pyEnv}/bin/mn $out/bin/mn
+
+ # mn errors out without a telnet binary
+ # pkgs.telnet brings an undesired ifconfig into PATH see #43105
+ ln -s ${pkgs.telnet}/bin/telnet $out/bin/telnet
+ '';
+in
+{
+ options.programs.mininet.enable = mkEnableOption "Mininet";
+
+ config = mkIf cfg.enable {
+
+ virtualisation.vswitch.enable = true;
+
+ environment.systemPackages = [ mnexecWrapped ];
+ };
+}