87 lines
1.9 KiB
Nix
87 lines
1.9 KiB
Nix
{ lib, ... }:
|
|
{
|
|
setupSecrets =
|
|
_config:
|
|
{
|
|
secrets,
|
|
extra ? { },
|
|
}:
|
|
let
|
|
inherit (_config.networking) hostName;
|
|
in
|
|
{
|
|
generate = {
|
|
age.secrets = lib.genAttrs secrets (name: extra // { file = ../secrets/${hostName}/${name}.age; });
|
|
};
|
|
get = name: _config.age.secrets.${name}.path;
|
|
};
|
|
|
|
setupSingleSecret =
|
|
_config: name: extra:
|
|
let
|
|
inherit (_config.networking) hostName;
|
|
in
|
|
{
|
|
generate = {
|
|
age.secrets.${name} = extra // {
|
|
file = ../secrets/${hostName}/${name}.age;
|
|
};
|
|
};
|
|
inherit (_config.age.secrets.${name}) path;
|
|
};
|
|
|
|
setupSharedSecrets =
|
|
_config:
|
|
{
|
|
secrets,
|
|
extra ? { },
|
|
}:
|
|
{
|
|
generate = {
|
|
age.secrets = lib.genAttrs secrets (name: extra // { file = ../secrets/shared/${name}.age; });
|
|
};
|
|
get = name: _config.age.secrets.${name}.path;
|
|
};
|
|
|
|
mkMinecraftServer =
|
|
_config:
|
|
{
|
|
name,
|
|
port,
|
|
remotePort,
|
|
tag ? "java21",
|
|
dataDir ? "/var/lib/${name}",
|
|
memory ? "4G",
|
|
env ? { },
|
|
envFiles ? [ ],
|
|
extraPorts ? [ ],
|
|
}:
|
|
let
|
|
inherit (_config.virtualisation.oci-containers) backend;
|
|
in
|
|
{
|
|
virtualisation.oci-containers.containers."mc-${name}" = {
|
|
image = "itzg/minecraft-server:${tag}";
|
|
ports = [ "${builtins.toString port}:25565" ] ++ extraPorts;
|
|
volumes = [ "${dataDir}:/data" ];
|
|
environmentFiles = envFiles;
|
|
environment = {
|
|
EULA = "true";
|
|
MEMORY = memory;
|
|
} // env;
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [ port ];
|
|
|
|
services.frp.settings.proxies = [
|
|
{
|
|
inherit name remotePort;
|
|
type = "tcp";
|
|
localIp = "127.0.0.1";
|
|
localPort = port;
|
|
}
|
|
];
|
|
|
|
systemd.services."${backend}-mc-${name}".serviceConfig.TimeoutSec = "300";
|
|
};
|
|
}
|