From 2e184b54333000c61b19bbcb92207cabce959681 Mon Sep 17 00:00:00 2001 From: Roy Dumblauskas Date: Sat, 21 Jun 2025 15:45:34 -0500 Subject: [PATCH] separate out mc service --- homelab-services/mc-service/flake.nix | 56 ++++++++++++++++++++++++++- nixos/configuration.nix | 6 +++ nixos/flake.nix | 4 +- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/homelab-services/mc-service/flake.nix b/homelab-services/mc-service/flake.nix index 4973592..100f080 100644 --- a/homelab-services/mc-service/flake.nix +++ b/homelab-services/mc-service/flake.nix @@ -1,10 +1,64 @@ { + description = "Declarative MC config"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + nix-minecraft.url = "github:Infinidoge/nix-minecraft"; + }; + outputs = { self, nixpkgs, nix-minecraft }@inputs: { + nixosModules.mc-service = { config, lib, pkgs, ... }: + let + opts = config.services.mc-service; + in { + 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"; + + }; + }; + 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"; + servers.vanilla = { + 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; + }; - + # Specify the custom minecraft server package + package = pkgs.minecraftServers.fabric-server; + }; + }; + }; + }; + }; } diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 4f6579f..6b17397 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -95,6 +95,12 @@ # ================================ # # MINECRAFT # # ================================ # + + services.mc-service = { + enable = true; + storeDir = "/persist/srv/minecraft"; + }; + services.minecraft-server = { enable = true; eula = true; diff --git a/nixos/flake.nix b/nixos/flake.nix index 0b35fa9..2b3ad16 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -22,9 +22,10 @@ # but could well be a separate repository tests-service.url = "github:RoyDumblauskas/tests-service?shallow=1"; minio-service.url = "path:../homelab-services/minio-service"; + mc-service.url = "path:../homelab-services/mc-service"; }; - outputs = { self, nixpkgs, home-manager, disko, sops-nix, quasiSecrets, impermanence, tests-service, minio-service }@inputs: + outputs = { self, nixpkgs, home-manager, disko, sops-nix, quasiSecrets, impermanence, tests-service, minio-service, mc-service }@inputs: let nodes = [ { @@ -54,6 +55,7 @@ impermanence.nixosModules.impermanence tests-service.nixosModules.default minio-service.nixosModules.minio-service + mc-service.nixosModules.mc-service home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true;