54 lines
1.1 KiB
Nix
54 lines
1.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
{
|
|
options = {
|
|
services.kubernetes = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = "Whether to enable Kubernetes services";
|
|
};
|
|
|
|
version = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "1.28.0";
|
|
description = "Kubernetes version to use";
|
|
};
|
|
|
|
clusterName = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "palatine-hill-cluster";
|
|
description = "Name of the Kubernetes cluster";
|
|
};
|
|
|
|
controlPlaneEndpoint = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "localhost:6443";
|
|
description = "Control plane endpoint";
|
|
};
|
|
|
|
networking = lib.mkOption {
|
|
type = lib.types.attrs;
|
|
default = { };
|
|
description = "Kubernetes networking configuration";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.services.kubernetes.enable {
|
|
environment.systemPackages = with pkgs; [
|
|
kubectl
|
|
kubernetes
|
|
];
|
|
|
|
# Enable containerd for Kubernetes
|
|
virtualisation.containerd.enable = true;
|
|
|
|
};
|
|
}
|