Files
homelab-config/homelab-services/mc-service/flake.nix
T

99 lines
2.7 KiB
Nix
Raw Normal View History

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 = {
2026-06-20 16:34:54 -05:00
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
2025-06-21 15:45:34 -05:00
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
};
2025-06-21 14:43:54 -05:00
2026-06-20 16:34:54 -05:00
outputs =
{
self,
nixpkgs,
nix-minecraft,
}:
{
2025-06-21 16:11:19 -05:00
2026-06-20 16:34:54 -05:00
nixosModules.mc-service =
{
config,
lib,
pkgs,
...
}:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [ nix-minecraft.overlay ];
config = {
allowUnfree = true;
2025-06-21 15:45:34 -05:00
};
2026-06-20 16:34:54 -05:00
};
opts = config.services.mc-service;
in
{
2025-06-21 14:43:54 -05:00
2026-06-20 16:34:54 -05:00
imports = [ nix-minecraft.nixosModules.minecraft-servers ];
options.services.mc-service = {
enable = lib.mkEnableOption "Enable Minecraft Server";
storeDir = lib.mkOption {
type = lib.types.path;
default = "/persist/srv/minecraft";
description = "Minecraft files locations";
2025-06-26 18:40:53 -05:00
};
2025-06-21 15:45:34 -05:00
};
2025-06-26 18:14:52 -05:00
2026-06-20 16:34:54 -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";
2025-06-26 18:14:52 -05:00
};
2026-06-20 16:34:54 -05:00
services.minecraft-servers = {
enable = true;
eula = true;
openFirewall = true;
dataDir = "${opts.storeDir}";
user = "mc-service";
group = "mc-service";
2025-06-26 18:14:52 -05:00
2026-06-20 16:34:54 -05:00
servers.homeServer = {
enable = true;
restart = "always";
jvmOpts = "-Xmx16G -Xms16G";
whitelist = {
SquidMcJiggles = "7ae4f5a9-dc2b-4b42-ab30-f8d10d38fa83";
Baloneyjohn = "aa33ea9c-05ce-46d4-9ae3-715c80f618da";
Beankurd = "4bdd135f-e9a6-4830-9755-6282ec71e338";
couchdomination = "6272ebe9-6191-43fa-adbd-9d1a9ca36a8c";
Grutkoek = "bb1b7067-18d8-4d63-92fa-49b003d39826";
2025-06-26 18:14:52 -05:00
};
2026-06-20 16:34:54 -05:00
serverProperties = {
server-port = 25565;
difficulty = 3;
gamemode = 0;
force-gamemode = true;
max-players = 10;
motd = "Home MC Server";
white-list = true;
spawn-protection = 0;
2025-06-26 18:14:52 -05:00
};
2026-06-20 16:34:54 -05:00
2026-06-22 20:52:45 -05:00
package = pkgs.fabricServers.fabric-26_1_2.override {
jre_headless = pkgs.openjdk25_headless;
2026-06-22 20:46:41 -05:00
};
2026-06-20 16:34:54 -05:00
};
2025-06-26 18:14:52 -05:00
};
};
2025-06-21 15:45:34 -05:00
};
};
2025-06-21 14:43:54 -05:00
}