Skip to content

Commit ec06d0d

Browse files
committed
add includeos-create-bridge to system PATH + formatting
1 parent 2ee152c commit ec06d0d

File tree

2 files changed

+38
-22
lines changed

2 files changed

+38
-22
lines changed

default.nix

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ pkgs.python3.pkgs.buildPythonPackage rec {
2929
license = pkgs.lib.licenses.asl20;
3030
};
3131

32+
installPhase = ''
33+
runHook preInstall
34+
mkdir -p $out/bin
35+
install -Dm755 ${create_bridge} $out/bin/${pname}-create-bridge
36+
runHook postInstall
37+
'';
38+
3239
nativeCheckInputs = [
3340
pkgs.shellcheck
3441
pkgs.pylint

nixos-module.nix

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,49 @@
22
{ config, lib, pkgs, ... }:
33
let
44
qemuPkg = config.services.vmrunner.qemuPackage or pkgs.qemu;
5+
vmrunnerPkg = config.services.vmrunner.package or (pkgs.callPackage ./default.nix { });
6+
57
qemuBridgeHelperPath = "/run/wrappers/bin/qemu-bridge-helper";
8+
bridge = "bridge43";
69
in
7-
{
10+
{
811
options.services.vmrunner.qemuPackage = lib.mkOption {
912
type = lib.types.package;
1013
default = pkgs.qemu;
1114
description = "QEMU with capabilities enabled for IncludeOS unikernels";
1215
};
1316

14-
config.security.wrappers = {
15-
# https://wiki.qemu.org/Features/HelperNetworking
16-
qemu-bridge-helper = {
17-
source = "${qemuPkg}/libexec/qemu-bridge-helper";
18-
owner = "root";
19-
group = "root";
20-
capabilities = "cap_net_admin+ep"; # required for attaching TAP devices to bridges
21-
};
17+
config = {
18+
security.wrappers = {
19+
# https://wiki.qemu.org/Features/HelperNetworking
20+
qemu-bridge-helper = {
21+
source = "${qemuPkg}/libexec/qemu-bridge-helper";
22+
owner = "root";
23+
group = "root";
24+
capabilities = "cap_net_admin+ep"; # required for attaching TAP devices to bridges
25+
};
2226

23-
ping = {
24-
source = "${pkgs.iputils}/bin/ping";
25-
owner = "root";
26-
group = "root";
27-
capabilities = "cap_net_raw+ep"; # required to send ICMP packets
27+
ping = {
28+
source = "${pkgs.iputils}/bin/ping";
29+
owner = "root";
30+
group = "root";
31+
capabilities = "cap_net_raw+ep"; # required to send ICMP packets
32+
};
2833
};
29-
};
3034

31-
config.environment.etc."qemu/bridge.conf".text = ''
32-
allow bridge43
33-
'';
35+
environment = {
36+
etc."qemu/bridge.conf".text = ''
37+
allow ${bridge}
38+
'';
3439

35-
config.networking.firewall = {
36-
trustedInterfaces = [ "bridge43" ];
37-
};
40+
systemPackages = [ vmrunnerPkg ];
3841

39-
config.environment.variables.QEMU_BRIDGE_HELPER = qemuBridgeHelperPath;
42+
variables.QEMU_BRIDGE_HELPER = qemuBridgeHelperPath;
43+
};
44+
45+
networking.firewall = {
46+
trustedInterfaces = [ bridge ];
47+
};
48+
};
4049
}
4150

0 commit comments

Comments
 (0)