about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2020-04-29 17:05:41 +0200
committerGitHub <noreply@github.com>2020-04-29 17:05:41 +0200
commitf0c83319a6db4a4d936a50687090d173f3230495 (patch)
treef1562a278c1045c0c45534dfb1c46db805daa650 /pkgs
parentc2c30d926c39cd82b88a3e0c68bc980cd374c72c (diff)
parent78cba5ac1e0883f939766523927205f7a722fa5c (diff)
downloadnixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar.gz
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar.bz2
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar.lz
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar.xz
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.tar.zst
nixlib-f0c83319a6db4a4d936a50687090d173f3230495.zip
Merge pull request #86249 from adisbladis/podman-wrapper
podman: Wrap packages required to run containers
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/virtualization/podman/wrapper.nix48
-rw-r--r--pkgs/top-level/all-packages.nix3
2 files changed, 50 insertions, 1 deletions
diff --git a/pkgs/applications/virtualization/podman/wrapper.nix b/pkgs/applications/virtualization/podman/wrapper.nix
new file mode 100644
index 000000000000..0b905c0c709e
--- /dev/null
+++ b/pkgs/applications/virtualization/podman/wrapper.nix
@@ -0,0 +1,48 @@
+{ podman-unwrapped
+, runCommand
+, makeWrapper
+, lib
+, extraPackages ? []
+, podman # Docker compat
+, runc # Default container runtime
+, crun # Default container runtime (cgroups v2)
+, conmon # Container runtime monitor
+, slirp4netns # User-mode networking for unprivileged namespaces
+, fuse-overlayfs # CoW for images, much faster than default vfs
+, utillinux # nsenter
+, cni-plugins
+, iptables
+}:
+
+let
+  podman = podman-unwrapped;
+
+  binPath = lib.makeBinPath ([
+    runc
+    crun
+    conmon
+    slirp4netns
+    fuse-overlayfs
+    utillinux
+    iptables
+  ] ++ extraPackages);
+
+in runCommand podman.name {
+  inherit (podman) name pname version meta outputs;
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+} ''
+  # Symlink everything but $bin from podman-unwrapped
+  ${
+    lib.concatMapStringsSep "\n"
+    (o: "ln -s ${podman.${o}} ${placeholder o}")
+    (builtins.filter (o: o != "bin")
+    podman.outputs)}
+
+  mkdir -p $bin/bin
+  ln -s ${podman-unwrapped}/share $bin/share
+  makeWrapper ${podman-unwrapped}/bin/podman $bin/bin/podman \
+    --prefix PATH : ${binPath}
+''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a4a88ffc1c2d..51f1a6a1db66 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5966,7 +5966,8 @@ in
 
   podiff = callPackage ../tools/text/podiff { };
 
-  podman = callPackage ../applications/virtualization/podman { };
+  podman = callPackage ../applications/virtualization/podman/wrapper.nix { };
+  podman-unwrapped = callPackage ../applications/virtualization/podman { };
 
   podman-compose = python3Packages.callPackage ../applications/virtualization/podman-compose {};