{ config, lib, pkgs, ... }: with lib; let cfg = config.fudo.minecraft-server; in { options.fudo.minecraft-server = { enable = mkEnableOption "Start a minecraft server."; package = mkOption { type = types.package; description = "Minecraft package to use."; default = pkgs.minecraft-server_1_15_1; }; data-dir = mkOption { type = types.path; description = "Path at which to store minecraft data."; }; world-name = mkOption { type = types.str; description = "Name of the server world (used in saves etc)."; }; motd = mkOption { type = types.str; description = "Welcome message for newcomers."; }; game-mode = mkOption { type = types.enum ["survival" "creative" "adventure" "spectator"]; description = "Game mode of the server."; default = "survival"; }; difficulty = mkOption { type = types.int; description = "Difficulty level, where 0 is peaceful and 3 is hard."; default = 2; }; }; config = mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; services.minecraft-server = { enable = true; package = cfg.package; dataDir = cfg.data-dir; eula = true; declarative = true; serverProperties = { level-name = cfg.world-name; motd = cfg.motd; difficulty = cfg.difficulty; gamemode = cfg.game-mode; }; }; }; }