56 lines
1.4 KiB
Nix
56 lines
1.4 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;
|
|
};
|
|
|
|
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.${name} = {
|
|
image = "itzg/minecraft-server:${tag}";
|
|
ports = ["${builtins.toString port}:25565"] ++ extraPorts;
|
|
volumes = ["${dataDir}:/data"];
|
|
environmentFiles = envFiles;
|
|
environment =
|
|
{
|
|
EULA = "true";
|
|
MEMORY = memory;
|
|
}
|
|
// env;
|
|
};
|
|
|
|
services.frp.settings.proxies = [
|
|
{
|
|
inherit name remotePort;
|
|
type = "tcp";
|
|
localIp = "127.0.0.1";
|
|
localPort = port;
|
|
}
|
|
];
|
|
|
|
systemd.services."${backend}-${name}".serviceConfig.TimeoutSec = "300";
|
|
};
|
|
}
|