54 lines
1.2 KiB
Nix
54 lines
1.2 KiB
Nix
{ pkgs, ... }:
|
|
let
|
|
json = pkgs.formats.json { };
|
|
in {
|
|
virtualisation = {
|
|
podman = {
|
|
enable = true;
|
|
dockerCompat = true;
|
|
defaultNetwork.settings.dns_enabled = true;
|
|
};
|
|
};
|
|
|
|
environment.etc."cni/net.d/servernet.conflist" = {
|
|
source = json.generate "servernet.conflist" ({
|
|
cniVersion = "0.4.0";
|
|
name = "servernet";
|
|
plugins = [
|
|
{
|
|
type = "macvlan";
|
|
master = "server";
|
|
pam = {
|
|
type = "dhcp";
|
|
};
|
|
}
|
|
];
|
|
});
|
|
};
|
|
|
|
|
|
systemd.sockets."io.podman.dhcp" = {
|
|
description = "DHCP Client for CNI";
|
|
socketConfig = {
|
|
ListenStream = "%t/cni/dhcp.sock";
|
|
SocketMode = 0600;
|
|
};
|
|
wantedBy = [ "sockets.target" ];
|
|
};
|
|
|
|
systemd.services."io.podman.dhcp" = {
|
|
description = "DHCP Client CNI Service";
|
|
after = [ "io.podman.dhcp.socket" ];
|
|
requires = [ "io.podman.dhcp.socket" ];
|
|
wantedBy = [ "multi-user.target" "io.podman.dhcp.socket" ];
|
|
path = [ pkgs.cni-plugins ];
|
|
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart= "${pkgs.cni-plugins}/bin/dhcp daemon";
|
|
TimeoutStopSec = 30;
|
|
KillMode = "process";
|
|
};
|
|
};
|
|
}
|