{ pkgs, config, lib, ...}:
# idk, dont need this
with lib;
let
  cfg = config.custom.services.kubernetes;
in
{
  options.custom.services.kubernetes = {
      enable = mkEnableOption "Enables kubernetes";
  };
  config = let
    kubeMasterIP = "localhost";
    kubeMasterHostname = "localhost";
  in lib.mkIf cfg.enable {

    networking.firewall.allowedTCPPorts = [
      6443 # k3s: required so that pods can reach the API server (running on port 6443 by default)
      # 2379 # k3s, etcd clients: required if using a "High Availability Embedded etcd" configuration
      # 2380 # k3s, etcd peers: required if using a "High Availability Embedded etcd" configuration
    ];
    networking.firewall.allowedUDPPorts = [
      # 8472 # k3s, flannel: required if using multi-node for inter-node networking
    ];
    services.k3s.enable = true;
    services.k3s.role = "server";
    services.k3s.extraFlags = toString [
      # "--kubelet-arg=v=4" # Optionally add additional args to k3s
    ];
    environment.systemPackages = with pkgs; [
      k3s
    ];
    #services.kubernetes = {
    #  roles = ["master" "node"];
    #  masterAddress = "localhost";
    #  apiserverAddress = "https://localhost:6443";
    #  apiserver = {
    #    advertiseAddress = "127.0.0.1";
    #    securePort = 6443;
    #    allowPrivileged = true;
    #  };
    #};
  };
}
