summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2021-05-27 16:19:01 +0200
committerRobert Hensing <robert@roberthensing.nl>2021-06-02 10:20:11 +0200
commit9e4729617b0c2b47ca1ef8b256cd361e6cee5f04 (patch)
tree80db3ecacb68769304eb2c0e86552b3bd083874f
parentnixos/containers: Add virtualisation.containers.containersConf.cniPlugins (diff)
downloadnixpkgs-9e4729617b0c2b47ca1ef8b256cd361e6cee5f04.tar.gz
nixos/podman: Add defaultNetwork.extraPlugins
(cherry picked from commit d81631fb98ea35b107d86f5de287cf727d0dfc18)
-rw-r--r--nixos/modules/virtualisation/podman.nix23
1 files changed, 22 insertions, 1 deletions
diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix
index b16afb668949..ee9565abc24b 100644
--- a/nixos/modules/virtualisation/podman.nix
+++ b/nixos/modules/virtualisation/podman.nix
@@ -2,6 +2,7 @@
let
cfg = config.virtualisation.podman;
toml = pkgs.formats.toml { };
+ json = pkgs.formats.json { };
inherit (lib) mkOption types;
@@ -22,6 +23,19 @@ let
done
'';
+ net-conflist = pkgs.runCommand "87-podman-bridge.conflist" {
+ nativeBuildInputs = [ pkgs.jq ];
+ extraPlugins = builtins.toJSON cfg.defaultNetwork.extraPlugins;
+ jqScript = ''
+ . + { "plugins": (.plugins + $extraPlugins) }
+ '';
+ } ''
+ jq <${cfg.package}/etc/cni/net.d/87-podman-bridge.conflist \
+ --argjson extraPlugins "$extraPlugins" \
+ "$jqScript" \
+ >$out
+ '';
+
in
{
imports = [
@@ -99,6 +113,13 @@ in
'';
};
+ defaultNetwork.extraPlugins = lib.mkOption {
+ type = types.listOf json.type;
+ default = [];
+ description = ''
+ Extra CNI plugin configurations to add to podman's default network.
+ '';
+ };
};
@@ -107,7 +128,7 @@ in
environment.systemPackages = [ cfg.package ]
++ lib.optional cfg.dockerCompat dockerCompat;
- environment.etc."cni/net.d/87-podman-bridge.conflist".source = "${cfg.package}/etc/cni/net.d/87-podman-bridge.conflist";
+ environment.etc."cni/net.d/87-podman-bridge.conflist".source = net-conflist;
virtualisation.containers = {
enable = true; # Enable common /etc/containers configuration