Commit 4c93cf0

HPCesia <me@hpcesia.com>
2026-07-02 11:20:59
Use Podman alias for dind
1 parent 548da67
Changed files (1)
package.nix
@@ -1,4 +1,5 @@
 {
+  lib,
   pkgs,
   nix2container,
   name,
@@ -111,6 +112,37 @@
     podman:1001:64535
     EOF
   '';
+
+  podmanDockerCompat =
+    pkgs.runCommand "${pkgs.podman.pname}-docker-compat-${pkgs.podman.version}"
+    {
+      nativeBuildInputs = [pkgs.installShellFiles];
+      outputs = [
+        "out"
+        "man"
+      ];
+      inherit (pkgs.podman) meta;
+      preferLocalBuild = true;
+    }
+    (
+      ''
+        mkdir -p $out/bin
+        ln -s ${pkgs.podman}/bin/podman $out/bin/docker
+
+        mkdir -p $man/share/man/man1
+        for f in ${pkgs.podman.man}/share/man/man1/*; do
+          basename=$(basename $f | sed s/podman/docker/g)
+          ln -s $f $man/share/man/man1/$basename
+        done
+      ''
+      + lib.optionalString (pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform) ''
+        export HOME=$(mktemp -d) # work around `docker <cmd>`
+        installShellCompletion --cmd docker \
+          --bash <($out/bin/docker completion bash) \
+          --zsh <($out/bin/docker completion zsh) \
+          --fish <($out/bin/docker completion fish)
+      ''
+    );
 in
   nix2container.buildImage {
     inherit name;
@@ -124,7 +156,6 @@ in
         paths = with pkgs; [
           bash
           coreutils
-          docker-client
           dockerTools.caCertificates
           dockerTools.usrBinEnv
           fakeNss
@@ -177,6 +208,7 @@ in
           fuse-overlayfs
           mkPodmanConfig
           podman
+          podmanDockerCompat
           shadow
         ];
       })
@@ -215,7 +247,7 @@ in
       Labels = {
         "org.opencontainers.image.source" = "https://codeberg.org/HPCesia/nix-act-image";
         "org.opencontainers.image.description" = "A Nix based container for Forgejo Actions";
-        "org.opencontainers.image.licenses" = pkgs.lib.licenses.mit.spdxId;
+        "org.opencontainers.image.licenses" = lib.licenses.mit.spdxId;
       };
     };
   }