65 lines
2.1 KiB
Nix
65 lines
2.1 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
let
|
|
# Provides a fake "docker" binary mapping to podman
|
|
cfg = config.services.podman;
|
|
podmanPackage = cfg.package;
|
|
docker_host = "unix:///run/user/$UID/podman/podman.sock";
|
|
|
|
fakeDockerBinary = pkgs.runCommandNoCC "${podmanPackage.pname}-docker-compat-${podmanPackage.version}"
|
|
{
|
|
outputs = [ "out" "man" ];
|
|
inherit (podmanPackage) meta;
|
|
} ''
|
|
mkdir -p $out/bin
|
|
ln -s ${podmanPackage}/bin/podman $out/bin/docker
|
|
|
|
mkdir -p $man/share/man/man1
|
|
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
|
|
'';
|
|
dockerComposeCompat = pkgs.runCommandNoCC "docker-compose-podman-compat"
|
|
{
|
|
buildInputs = [ pkgs.makeWrapper ];
|
|
} ''
|
|
mkdir -p $out/bin
|
|
makeWrapper '${pkgs.docker-compose_2}/libexec/docker/cli-plugins/docker-compose' "$out/bin/docker-compose" \
|
|
--set-default "DOCKER_HOST" 'unix:///run/user/$UID/podman/podman.sock' \
|
|
--set-default DOCKER_BUILDKIT 0
|
|
'';
|
|
in
|
|
with lib; {
|
|
options.services.podman = {
|
|
dockerCompat =
|
|
{
|
|
fakeDockerBinary.enable = mkEnableOption {
|
|
description = ''
|
|
Create an alias mapping <command>docker</command> to <command>podman</command>.
|
|
'';
|
|
};
|
|
dockerSocket.enable = mkEnableOption {
|
|
description = ''
|
|
Set the DOCKER_HOST environment variable to make docker tools use the podman docker
|
|
'';
|
|
};
|
|
dockerCompose.enable = mkEnableOption {
|
|
description = ''
|
|
Install a docker-compose binary that uses the podman socket
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
|
(lib.mkIf cfg.dockerCompat.fakeDockerBinary.enable {
|
|
home.packages = [ fakeDockerBinary ];
|
|
})
|
|
(lib.mkIf cfg.dockerCompat.dockerCompose.enable {
|
|
home.packages = [ dockerComposeCompat ];
|
|
})
|
|
(lib.mkIf cfg.dockerCompat.dockerSocket.enable {
|
|
home.sessionVariables."DOCKER_HOST" = "unix:///run/user/$UID/podman/podman.sock";
|
|
})
|
|
|
|
]);
|
|
}
|