summaryrefslogtreecommitdiff
path: root/minecraft.nix
blob: d40d80a16cb8f49ea343343a0e411505c1dc76f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{lib, ...}:{
  # The Mojang server jar is unfreeRedistributable, so it has to be allowed by name.
  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
    "minecraft-server"
  ];

  services.minecraft-server = {
    enable = true;
    eula = true;
    openFirewall = true; # Opens the port the server is running on (25565)
    declarative = true;
    whitelist = {
      # This is a mapping of Minecraft usernames to to the players' UUIDs
      mr_5aturn = "2b811fad-e419-401e-9185-70ab279219b5";
    };
    serverProperties = {
      server-port = 25565;
      difficulty = "normal";
      gamemode = "survival";
      max-players = 5;
      motd = "NixOS Minecraft server!";
      white-list = true;
    };
    jvmOpts = "-Xms4096M -Xmx4096M";
  };

  systemd.services.minecraft-server = {
    startLimitBurst = 5;
    startLimitIntervalSec = 300;
    serviceConfig = {
      NoNewPrivileges = true;

      ProtectSystem = "full";

      MemoryMax = "6G";
      TasksMax = 512;
      RestartSec = "10s";
    };
  };
}