Files
nixos-server/modules/k3s.nix
2026-02-24 09:27:08 -05:00

54 lines
1015 B
Nix

{
config,
lib,
meta,
...
}:
with lib; let
cfg = config.k3s;
in {
options.k3s = {
init = mkOption {
type = types.bool;
default = false;
description = "Initialize cluster when set to true";
};
role = mkOption {
type = types.str;
default = "server";
};
};
config = {
services = {
k3s = {
enable = true;
role =
if cfg.init
then "server"
else cfg.role;
clusterInit = cfg.init;
serverAddr =
if cfg.init
then ""
else meta.serverAddr;
token =
if cfg.init
then ""
else meta.k3sToken;
disable =
if cfg.init
then ["traefik" "servicelb" "local-storage"]
else [];
extraFlags =
if cfg.init
then [
"--kubelet-arg=allowed-unsafe-sysctls=net.ipv4.*"
"--write-kubeconfig-mode \"0644\""
]
else [];
};
};
};
}