|
| 1 | +# ███╗ ███╗██╗███╗ ██╗███████╗ ██████╗██████╗ █████╗ ███████╗████████╗ |
| 2 | +# ████╗ ████║██║████╗ ██║██╔════╝██╔════╝██╔══██╗██╔══██╗██╔════╝╚══██╔══╝ |
| 3 | +# ██╔████╔██║██║██╔██╗ ██║█████╗ ██║ ██████╔╝███████║█████╗ ██║ |
| 4 | +# ██║╚██╔╝██║██║██║╚██╗██║██╔══╝ ██║ ██╔══██╗██╔══██║██╔══╝ ██║ |
| 5 | +# ██║ ╚═╝ ██║██║██║ ╚████║███████╗╚██████╗██║ ██║██║ ██║██║ ██║ |
| 6 | +# ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ |
| 7 | +# ═════════════════════════════════════════════════════════════════════════ |
| 8 | +# A simple minecraft server module for hosting a local network server. |
| 9 | + |
| 10 | +{ pkgs, lib, config, ... }@args: |
| 11 | +let |
| 12 | + inherit (args) inputs; |
| 13 | + nmx = inputs.nix-minecraft; |
| 14 | + |
| 15 | + serverPack = pkgs.fetchzip { |
| 16 | + url = |
| 17 | + "https://mediafilez.forgecdn.net/files/6974/725/Prominence%20II%20Hasturian%20Era-v3.9.0.zip"; |
| 18 | + sha256 = "sha256-qa6Ma1LC/BnGF9yCSMb0hit3Sgx4bcgt7UAUo9aTeKM="; |
| 19 | + stripRoot = false; |
| 20 | + }; |
| 21 | + maybeCollect = dir: |
| 22 | + if builtins.pathExists "${serverPack}/${dir}" then |
| 23 | + nmx.lib.collectFilesAt serverPack dir |
| 24 | + else |
| 25 | + { }; |
| 26 | +in { |
| 27 | + imports = [ nmx.nixosModules.minecraft-servers ]; |
| 28 | + |
| 29 | + nixpkgs.overlays = [ nmx.overlay ]; |
| 30 | + |
| 31 | + nixpkgs.config.allowUnfreePredicate = pkg: |
| 32 | + builtins.elem (lib.getName pkg) [ "minecraft-server" ]; |
| 33 | + |
| 34 | + services.minecraft-servers = { |
| 35 | + enable = true; |
| 36 | + eula = true; |
| 37 | + openFirewall = true; |
| 38 | + |
| 39 | + servers = { |
| 40 | + rpg-server = { |
| 41 | + enable = true; |
| 42 | + autoStart = true; |
| 43 | + package = pkgs.fabricServers.fabric-1_20_1; |
| 44 | + |
| 45 | + jvmOpts = |
| 46 | + "-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled"; |
| 47 | + |
| 48 | + serverProperties = { motd = "Lukas' Epic Minecraft Server!"; }; |
| 49 | + |
| 50 | + files = maybeCollect "mods" // maybeCollect "overrides/mods" |
| 51 | + // maybeCollect "config" // maybeCollect "defaultconfigs" |
| 52 | + // maybeCollect "kubejs" // maybeCollect "scripts" |
| 53 | + // maybeCollect "config/ftbquests" |
| 54 | + // maybeCollect "overrides/config" # some CF packs use overrides/ |
| 55 | + // maybeCollect "overrides/defaultconfigs"; |
| 56 | + }; |
| 57 | + }; |
| 58 | + }; |
| 59 | +} |
0 commit comments