diff options
author | Frederik Rietdijk <fridh@fridh.nl> | 2020-05-01 08:57:10 +0200 |
---|---|---|
committer | Frederik Rietdijk <fridh@fridh.nl> | 2020-05-01 08:57:10 +0200 |
commit | 484ee79050976cf1d234b4056d16e5bdc152bed6 (patch) | |
tree | c38b8141426c5714ed7bc5f9e1ffe008c813507f /nixos/modules/virtualisation | |
parent | b6474577b04a86a27a555dafa676670fb3902ec8 (diff) | |
parent | 2111240b9f7e5704045763fbdc66534609a62a65 (diff) | |
download | nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar.gz nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar.bz2 nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar.lz nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar.xz nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.tar.zst nixlib-484ee79050976cf1d234b4056d16e5bdc152bed6.zip |
Merge staging-next into staging
Diffstat (limited to 'nixos/modules/virtualisation')
-rw-r--r-- | nixos/modules/virtualisation/podman.nix | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix index 35f879840dd9..1dc79272ccb6 100644 --- a/nixos/modules/virtualisation/podman.nix +++ b/nixos/modules/virtualisation/podman.nix @@ -4,16 +4,20 @@ let inherit (lib) mkOption types; + podmanPackage = (pkgs.podman.override { inherit (cfg) extraPackages; }); + # Provides a fake "docker" binary mapping to podman - dockerCompat = pkgs.runCommandNoCC "${pkgs.podman.pname}-docker-compat-${pkgs.podman.version}" { - outputs = [ "out" "man" ]; - inherit (pkgs.podman) meta; + dockerCompat = pkgs.runCommandNoCC "${podmanPackage.pname}-docker-compat-${podmanPackage.version}" { + outputs = [ "out" "bin" "man" ]; + inherit (podmanPackage) meta; } '' - mkdir -p $out/bin - ln -s ${pkgs.podman}/bin/podman $out/bin/docker + mkdir $out + + mkdir -p $bin/bin + ln -s ${podmanPackage.bin}/bin/podman $bin/bin/docker mkdir -p $man/share/man/man1 - for f in ${pkgs.podman.man}/share/man/man1/*; do + for f in ${podmanPackage.man}/share/man/man1/*; do basename=$(basename $f | sed s/podman/docker/g) ln -s $f $man/share/man/man1/$basename done @@ -52,6 +56,19 @@ in ''; }; + extraPackages = mkOption { + type = with types; listOf package; + default = [ ]; + example = lib.literalExample '' + [ + pkgs.gvisor + ] + ''; + description = '' + Extra packages to be installed in the Podman wrapper. + ''; + }; + libpod = mkOption { default = {}; description = "Libpod configuration"; @@ -75,29 +92,24 @@ in config = lib.mkIf cfg.enable { - environment.systemPackages = [ - pkgs.podman # Docker compat - pkgs.runc # Default container runtime - pkgs.crun # Default container runtime (cgroups v2) - pkgs.conmon # Container runtime monitor - pkgs.slirp4netns # User-mode networking for unprivileged namespaces - pkgs.fuse-overlayfs # CoW for images, much faster than default vfs - pkgs.utillinux # nsenter - pkgs.iptables - ] - ++ lib.optional cfg.dockerCompat dockerCompat; + environment.systemPackages = [ podmanPackage ] + ++ lib.optional cfg.dockerCompat dockerCompat; environment.etc."containers/libpod.conf".text = '' cni_plugin_dir = ["${pkgs.cni-plugins}/bin/"] - cni_config_dir = "/etc/cni/net.d/" '' + cfg.libpod.extraConfig; - environment.etc."cni/net.d/87-podman-bridge.conflist".source = copyFile "${pkgs.podman.src}/cni/87-podman-bridge.conflist"; + environment.etc."cni/net.d/87-podman-bridge.conflist".source = copyFile "${pkgs.podman-unwrapped.src}/cni/87-podman-bridge.conflist"; # Enable common /etc/containers configuration virtualisation.containers.enable = true; + assertions = [{ + assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable; + message = "Option dockerCompat conflicts with docker"; + }]; + }; } |