From 7c36ce8d3a9460aa59449f11fe60bba13ea4d222 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 3 Apr 2021 10:09:40 -0400 Subject: [PATCH] nixos/containers: move extraConfig to settings model --- nixos/modules/virtualisation/containers.nix | 58 +++++++-------------- nixos/modules/virtualisation/podman.nix | 13 +++-- 2 files changed, 26 insertions(+), 45 deletions(-) diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index 148d0221998f..3974caf2233b 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -4,15 +4,7 @@ let inherit (lib) mkOption types; - # Once https://github.com/NixOS/nixpkgs/pull/75584 is merged we can use the TOML generator - toTOML = name: value: pkgs.runCommandNoCC name { - nativeBuildInputs = [ pkgs.remarshal ]; - value = builtins.toJSON value; - passAsFile = [ "value" ]; - } '' - json2toml "$valuePath" "$out" - ''; - + toml = pkgs.formats.toml { }; in { meta = { @@ -26,6 +18,11 @@ in [ "virtualisation" "containers" "users" ] "All users with `isNormalUser = true` set now get appropriate subuid/subgid mappings." ) + ( + lib.mkRemovedOptionModule + [ "virtualisation" "containers" "containersConf" "extraConfig" ] + "Use virtualisation.containers.containersConf.settings instead." + ) ]; options.virtualisation.containers = { @@ -45,23 +42,10 @@ in description = "Enable the OCI seccomp BPF hook"; }; - containersConf = mkOption { - default = {}; + containersConf.settings = mkOption { + type = toml.type; + default = { }; description = "containers.conf configuration"; - type = types.submodule { - options = { - - extraConfig = mkOption { - type = types.lines; - default = ""; - description = '' - Extra configuration that should be put in the containers.conf - configuration file - ''; - - }; - }; - }; }; registries = { @@ -113,21 +97,19 @@ in }; config = lib.mkIf cfg.enable { + virtualisation.containers.containersConf.settings = { + network.cni_plugin_dirs = [ "${pkgs.cni-plugins}/bin/" ]; + engine = { + init_path = "${pkgs.catatonit}/bin/catatonit"; + } // lib.optionalAttrs cfg.ociSeccompBpfHook.enable { + hooks_dir = [ config.boot.kernelPackages.oci-seccomp-bpf-hook ]; + }; + }; - environment.etc."containers/containers.conf".text = '' - [network] - cni_plugin_dirs = ["${pkgs.cni-plugins}/bin/"] + environment.etc."containers/containers.conf".source = + toml.generate "containers.conf" cfg.containersConf.settings; - [engine] - init_path = "${pkgs.catatonit}/bin/catatonit" - ${lib.optionalString (cfg.ociSeccompBpfHook.enable) '' - hooks_dir = [ - "${config.boot.kernelPackages.oci-seccomp-bpf-hook}", - ] - ''} - '' + cfg.containersConf.extraConfig; - - environment.etc."containers/registries.conf".source = toTOML "registries.conf" { + environment.etc."containers/registries.conf".source = toml.generate "registries.conf" { registries = lib.mapAttrs (n: v: { registries = v; }) cfg.registries; }; diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix index 0223c0df1f22..d6421d488b8b 100644 --- a/nixos/modules/virtualisation/podman.nix +++ b/nixos/modules/virtualisation/podman.nix @@ -96,13 +96,12 @@ in virtualisation.containers = { enable = true; # Enable common /etc/containers configuration - containersConf.extraConfig = lib.optionalString cfg.enableNvidia - (builtins.readFile (toml.generate "podman.nvidia.containers.conf" { - engine = { - conmon_env_vars = [ "PATH=${lib.makeBinPath [ pkgs.nvidia-podman ]}" ]; - runtimes.nvidia = [ "${pkgs.nvidia-podman}/bin/nvidia-container-runtime" ]; - }; - })); + containersConf.settings = lib.optionalAttrs cfg.enableNvidia { + engine = { + conmon_env_vars = [ "PATH=${lib.makeBinPath [ pkgs.nvidia-podman ]}" ]; + runtimes.nvidia = [ "${pkgs.nvidia-podman}/bin/nvidia-container-runtime" ]; + }; + }; }; systemd.packages = [ cfg.package ];