2025-06-21 14:43:54 -05:00
|
|
|
{
|
|
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
description = "Declarative MC config";
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
|
|
|
|
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
|
|
|
|
};
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
outputs = { self, nixpkgs, nix-minecraft }@inputs: {
|
2025-06-21 16:11:19 -05:00
|
|
|
|
|
|
|
|
nixosModules.mc-service =
|
|
|
|
|
let
|
2025-06-21 16:01:50 -05:00
|
|
|
pkgs = import nixpkgs {
|
2025-06-21 16:05:19 -05:00
|
|
|
system = "x86_64-linux";
|
2025-06-21 16:01:50 -05:00
|
|
|
overlays = [ nix-minecraft.overlays.default ];
|
|
|
|
|
};
|
2025-06-21 16:11:19 -05:00
|
|
|
in
|
|
|
|
|
{ config, lib, ... }:
|
|
|
|
|
let
|
2025-06-21 15:45:34 -05:00
|
|
|
opts = config.services.mc-service;
|
|
|
|
|
in {
|
|
|
|
|
options.services.mc-service = {
|
|
|
|
|
enable = lib.mkEnableOption "Enable Minecraft Server";
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
storeDir = lib.mkOption {
|
|
|
|
|
type = lib.types.path;
|
|
|
|
|
default = "/persist/srv/minecraft";
|
|
|
|
|
description = "Minecraft files locations";
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
config = lib.mkIf opts.enable {
|
|
|
|
|
users.groups.mc-service = {};
|
|
|
|
|
users.users.mc-service = {
|
|
|
|
|
isSystemUser = true;
|
|
|
|
|
createHome = true;
|
|
|
|
|
home = "${opts.storeDir}";
|
|
|
|
|
group = "mc-service";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
nix-minecraft.nixosModules.minecraft-servers = {
|
|
|
|
|
enable = true;
|
|
|
|
|
eula = true;
|
|
|
|
|
openFirewall = true;
|
|
|
|
|
dataDir = "${opts.storeDir}";
|
|
|
|
|
users = "mc-service";
|
|
|
|
|
group = "mc-service";
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 16:01:50 -05:00
|
|
|
servers.homeServer = {
|
2025-06-21 15:45:34 -05:00
|
|
|
enable = true;
|
|
|
|
|
restart = "always";
|
|
|
|
|
jvmOpts = "-Xmx16G -Xms8G";
|
|
|
|
|
serverProperties = {
|
|
|
|
|
server-port = 25565;
|
|
|
|
|
difficulty = 3;
|
|
|
|
|
gamemode = 0;
|
|
|
|
|
force-gamemode = true;
|
|
|
|
|
max-players = 10;
|
|
|
|
|
motd = "Home MC Server";
|
|
|
|
|
white-list = false;
|
|
|
|
|
};
|
2025-06-21 14:43:54 -05:00
|
|
|
|
2025-06-21 15:45:34 -05:00
|
|
|
# Specify the custom minecraft server package
|
2025-06-21 15:53:35 -05:00
|
|
|
package = pkgs.fabricServers.fabric;
|
2025-06-21 15:45:34 -05:00
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-06-21 14:43:54 -05:00
|
|
|
}
|