66 lines
1.5 KiB
Nix
66 lines
1.5 KiB
Nix
# Module: roles/minecraftserver
|
|
# Enables a Minecraft server
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
pkgsUnstable,
|
|
inputs,
|
|
...
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.minecraftserver;
|
|
in
|
|
{
|
|
options.minecraftserver = {
|
|
enable = mkEnableOption "Enables minecraftserver role";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
# TODO enable ddns-updater
|
|
# We want to make this available to the system
|
|
# so that borgmatic can call this to pause save on the minecraft server
|
|
environment.systemPackages = with pkgsUnstable; [
|
|
mcrcon
|
|
];
|
|
|
|
systemd.services.borgmatic = {
|
|
path = with pkgsUnstable; [
|
|
mcrcon
|
|
];
|
|
};
|
|
|
|
environment.etc."alloy/minecraft-server.alloy".text = ''
|
|
prometheus.scrape "minecraft_server" {
|
|
targets = [
|
|
{
|
|
"__address__" = "localhost:25585",
|
|
},
|
|
]
|
|
job_name = "minecraft-server-metrics"
|
|
forward_to = [prometheus.remote_write.default.receiver]
|
|
scrape_interval = "10s"
|
|
}
|
|
|
|
local.file_match "minecraft_server_logs" {
|
|
path_targets = [
|
|
{
|
|
__path__ = "/opt/minecraft/gms-01-mc_its-et_me/logs/*.log",
|
|
"job" = "minecraft-server-logs",
|
|
"instance" = "mc.its-et.me",
|
|
},
|
|
]
|
|
sync_period = "10s"
|
|
}
|
|
|
|
loki.source.file "minecraft_server_logs" {
|
|
targets = local.file_match.minecraft_server_logs.targets
|
|
forward_to = [loki.write.default.receiver]
|
|
}
|
|
'';
|
|
};
|
|
}
|