From de6e1cb16842b972c2805c91b6690fd2975a3503 Mon Sep 17 00:00:00 2001 From: ktkk Date: Mon, 20 Oct 2025 17:55:16 +0000 Subject: [PATCH] Add minecraft server config --- flake.nix | 2 ++ hosts/homelab/configuration.nix | 1 + modules/minecraft/default.nix | 55 +++++++++++++++++++++++++++++++++ modules/nginx/default.nix | 1 + 4 files changed, 59 insertions(+) create mode 100644 modules/minecraft/default.nix diff --git a/flake.nix b/flake.nix index 1b23f21..c7afbeb 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,8 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + + nix-minecraft.url = "github:Infinidoge/nix-minecraft"; }; outputs = diff --git a/hosts/homelab/configuration.nix b/hosts/homelab/configuration.nix index 25839a2..740bd92 100644 --- a/hosts/homelab/configuration.nix +++ b/hosts/homelab/configuration.nix @@ -12,6 +12,7 @@ ../../modules/forgejo ../../modules/nginx ../../modules/grafana + ../../modules/minecraft ]; boot.loader = { diff --git a/modules/minecraft/default.nix b/modules/minecraft/default.nix new file mode 100644 index 0000000..8aeb13f --- /dev/null +++ b/modules/minecraft/default.nix @@ -0,0 +1,55 @@ +{ pkgs, config, inputs, ... }: +{ + imports = [ + inputs.nix-minecraft.nixosModules.minecraft-servers + ]; + + nixpkgs.overlays = [ + inputs.nix-minecraft.overlay + ]; + + services.nginx.virtualHosts."minecraft.katkak.dev" = { + forceSSL = true; + enableACME = true; + + locations."/vanilla" = + let + serverProperties = config.services.minecraft-servers.servers.vanilla-server.serverProperties; + in + { + proxyPass = "http://${toString serverProperties.server-ip}:${serverProperties.server-port}"; + }; + + proxyWebsockets = true; + + extraConfig = '' + proxy_pass_header Authorization; + ''; + }; + + services.minecraft-servers = { + enable = true; + eula = true; + + servers = { + vanilla-server = { + enable = true; + + package = pkgs.vanillaServers.vanilla-1_21_10; + + serverProperties = { + motd = "KatKak's Vanilla Server"; + white-list = true; + max-players = 5; + enable-command-block = true; + + server-ip = "127.0.0.1"; + server-port = 43000; + }; + + jvmOpts = "-Xms4096M -Xmx4096M -XX:+UseG1GC"; + }; + }; + }; +} + diff --git a/modules/nginx/default.nix b/modules/nginx/default.nix index 8ce4f5b..802331f 100644 --- a/modules/nginx/default.nix +++ b/modules/nginx/default.nix @@ -4,6 +4,7 @@ networking.firewall.allowedTCPPorts = [ 80 443 + 25565 ]; services.nginx = {