{ pkgs, lib, config, inputs, sources, ... }: let inherit (inputs.nix-minecraft.lib) collectFilesAt; modpack = pkgs.fetchPackwizModpack { # version = "main"; url = "https://github.com/nix-astral/statech/raw/modrinth/pack.toml"; packHash = "sha256-osXcGvsoaTgu7z4eamDL/wiDewM+rge4gdu54I7wxXc="; manifestHash = "sha256:081s5qzx3v1cpb8a8ns77z3hqcd7df52b55cr0xmqr2ziir8ml07"; }; mcVersion = modpack.manifest.versions.minecraft; fabricVersion = modpack.manifest.versions.fabric; serverVersion = lib.replaceStrings [ "." ] [ "_" ] "fabric-${mcVersion}"; in { options.mods.server.statech = { enable = lib.mkEnableOption { default = false; description = "enables minecraft statech server"; }; memory = lib.mkOption { default = "6G"; description = "server detitated wam"; }; autoStart = lib.mkEnableOption { default = true; description = "start server on boot"; }; }; config = lib.mkIf config.mods.server.statech.enable { services.minecraft-servers.servers.statech = { enable = true; serverProperties = { online-mode = true; }; autoStart = config.mods.server.statech.autoStart; jvmOpts = (import ./aikar-flags.nix) config.mods.server.statech.memory; package = pkgs.fabricServers.${serverVersion}.override { loaderVersion = fabricVersion; }; symlinks = { # "global_packs" = "${modpack}/global_packs"; "kubejs" = "${modpack}/kubejs"; "config" = "${modpack}/config"; "mods" = "${modpack}/mods"; "resourcepacks" = "${modpack}/resourcepacks"; }; # symlinks = # # collectFilesAt modpack "global_packs" // # collectFilesAt modpack "kubejs" // collectFilesAt modpack "config" # // collectFilesAt modpack "resourcepacks" # // collectFilesAt modpack "mods" // { # } // (lib.attrsets.mapAttrs' (n: v: # lib.attrsets.nameValuePair # ("mods/" + lib.strings.removePrefix "statech." n) v.src) # (lib.attrsets.filterAttrs (n: v: lib.strings.hasPrefix "statech." n) # sources)); }; }; }