81 lines
2.0 KiB
Nix
81 lines
2.0 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
{
|
|
imports = [ ];
|
|
|
|
options.me = {
|
|
podman.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
example = true;
|
|
description = "Whether we want to install podman.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.me.podman.enable (
|
|
lib.mkMerge [
|
|
{
|
|
assertions = [
|
|
{
|
|
assertion = !config.me.docker.enable;
|
|
message = "podman conflicts with docker";
|
|
}
|
|
];
|
|
}
|
|
{
|
|
environment.systemPackages = with pkgs; [
|
|
dive
|
|
podman-tui
|
|
podman-compose
|
|
];
|
|
|
|
# Write config files in /etc/containers
|
|
virtualisation.containers.enable = true;
|
|
# By default this includes "quay.io" which leads to prompting for which registry to download from.
|
|
virtualisation.containers.registries.search = [ "docker.io" ];
|
|
virtualisation = {
|
|
podman = {
|
|
enable = true;
|
|
# Install docker shim
|
|
dockerCompat = true;
|
|
# Support name resolution in podman-compose.
|
|
defaultNetwork.settings.dns_enabled = true;
|
|
};
|
|
};
|
|
|
|
environment.variables = {
|
|
# For compatibility with tools expecting a docker socket (like dive).
|
|
DOCKER_HOST = "unix://$XDG_RUNTIME_DIR/podman/podman.sock";
|
|
};
|
|
|
|
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
|
hideMounts = true;
|
|
directories = [
|
|
{
|
|
directory = "/var/lib/containers";
|
|
user = "root";
|
|
group = "root";
|
|
mode = "0755";
|
|
}
|
|
];
|
|
users.talexander = {
|
|
directories = [
|
|
{
|
|
directory = ".local/share/containers";
|
|
user = "talexander";
|
|
group = "talexander";
|
|
mode = "0700";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|
|
]
|
|
);
|
|
}
|