modularized all the things
part one (?)
This commit is contained in:
51
modules/virtualization/README.md
Normal file
51
modules/virtualization/README.md
Normal file
@ -0,0 +1,51 @@
|
||||
# Virtualization modules
|
||||
|
||||
This directory houses all virtualization and container related enablement. Cloud native anyone??
|
||||
|
||||
## Hardware virtualization
|
||||
|
||||
This is for running virtual machines on the bare metal.
|
||||
|
||||
All that's needed to get this working to import the `./hardware.nix` into your machine's configuration.
|
||||
|
||||
## Docker (OCI containers)
|
||||
|
||||
This is for running the Docker runtime (rootful or rootless, rootful by default) to run OCI containers.
|
||||
|
||||
All that's needed to get this working to import the `./docker.nix` into your machine's configuration.
|
||||
|
||||
Note: I don't use Docker too much as I use Podman for development. I'd check the Podman documentation.
|
||||
|
||||
## Podman/Buildah (OCI containers)
|
||||
|
||||
This is for running the Podman runtime (rootless) to run OCI containers.
|
||||
|
||||
You will need to import `./podman.nix` into your machine configuration. Additionally, there's some added configuration to suit your needs.
|
||||
|
||||
Example:
|
||||
|
||||
```nix
|
||||
podman = {
|
||||
podman = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
docker-credential-helpers
|
||||
toolbox
|
||||
cosign
|
||||
crane
|
||||
podman-tui
|
||||
podman-desktop
|
||||
];
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
To get a full, comprehensive list of what you can do with the podman module, please check out (podman.nix)[./podman.nix]!
|
||||
|
||||
## Kubernetes
|
||||
|
||||
Coming soon!
|
||||
|
||||
## LXC/LXD
|
||||
|
||||
I don't have anything in the way of a nix configuration for LXC/LXD as I don't have a use-case for them. Come back later!
|
@ -2,5 +2,6 @@
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
enableOnBoot = true;
|
||||
rootless = false;
|
||||
};
|
||||
}
|
||||
|
@ -1,7 +1,39 @@
|
||||
{...}: {
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
dockerSocket.enable = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.containers;
|
||||
in {
|
||||
options.containers = {
|
||||
podman = {
|
||||
enable = lib.mkEnableOption "Podman container runtime";
|
||||
dockerCompat = lib.mkEnableOption "Enable Docker compatibility";
|
||||
extraPackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
description = "Additional packages to install when Podman is enabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.podman.enable {
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
dockerCompat = cfg.podman.dockerCompat;
|
||||
enableOnBoot = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
|
||||
environment.systemPackages =
|
||||
[
|
||||
pkgs.podman-compose
|
||||
pkgs.buildah
|
||||
pkgs.skopeo
|
||||
pkgs.dive
|
||||
pkgs.container-diff
|
||||
]
|
||||
++ cfg.podman.extraPackages;
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user