Commit a6a7341f authored by Michael Hoang's avatar Michael Hoang
Browse files

nixos/podman: expose `virtualisation.podman.package`

parent 00a41a84
Loading
Loading
Loading
Loading
+18 −21
Original line number Diff line number Diff line
@@ -5,29 +5,18 @@ let

  inherit (lib) mkOption types;

  podmanPackage = pkgs.podman.override {
    extraPackages = cfg.extraPackages ++ [
        "/run/wrappers" # setuid shadow
        config.systemd.package # To allow systemd-based container healthchecks
      ] ++ lib.optional (config.boot.supportedFilesystems.zfs or false) config.boot.zfs.package;
    extraRuntimes = [ pkgs.runc ]
      ++ lib.optionals (config.virtualisation.containers.containersConf.settings.network.default_rootless_network_cmd or "" == "slirp4netns") (with pkgs; [
      slirp4netns
    ]);
  };

  # Provides a fake "docker" binary mapping to podman
  dockerCompat = pkgs.runCommand "${podmanPackage.pname}-docker-compat-${podmanPackage.version}"
  dockerCompat = pkgs.runCommand "${cfg.package.pname}-docker-compat-${cfg.package.version}"
    {
      outputs = [ "out" "man" ];
      inherit (podmanPackage) meta;
      inherit (cfg.package) meta;
      preferLocalBuild = true;
    } ''
    mkdir -p $out/bin
    ln -s ${podmanPackage}/bin/podman $out/bin/docker
    ln -s ${cfg.package}/bin/podman $out/bin/docker

    mkdir -p $man/share/man/man1
    for f in ${podmanPackage.man}/share/man/man1/*; do
    for f in ${cfg.package.man}/share/man/man1/*; do
      basename=$(basename $f | sed s/podman/docker/g)
      ln -s $f $man/share/man/man1/$basename
    done
@@ -137,13 +126,21 @@ in
      };
    };

    package = lib.mkOption {
      type = types.package;
      default = podmanPackage;
      internal = true;
      description = ''
        The final Podman package (including extra packages).
    package = (lib.mkPackageOption pkgs "podman" {
      extraDescription = ''
        This package will automatically include extra packages and runtimes.
      '';
    }) // {
      apply = pkg: pkg.override {
        extraPackages = cfg.extraPackages ++ [
            "/run/wrappers" # setuid shadow
            config.systemd.package # To allow systemd-based container healthchecks
          ] ++ lib.optional (config.boot.supportedFilesystems.zfs or false) config.boot.zfs.package;
        extraRuntimes = [ pkgs.runc ]
          ++ lib.optionals (config.virtualisation.containers.containersConf.settings.network.default_rootless_network_cmd or "" == "slirp4netns") (with pkgs; [
          slirp4netns
        ]);
      };
    };

    defaultNetwork.settings = lib.mkOption {