بنقرة واحدة
minecraft-mods
Minecraft Mod Management for NixOS (Packwiz)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Minecraft Mod Management for NixOS (Packwiz)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Bash Shell Script Development Guidelines
Go Project Planning Skill
Godot C# Game Development Skill
Godot Game Development Skill
Golang Development Guidelines
Grill Me - Relentless Design Interview
| name | minecraft-mods |
| description | Minecraft Mod Management for NixOS (Packwiz) |
This skill helps manage Minecraft server mods in the NixOS configuration using packwiz as the source of truth. The minecraft-server.nix module automatically parses packwiz .pw.toml files to build the server modpack.
/home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft/minecraft-server.nix/home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft/modpack/
pack.toml - Modpack metadata (Minecraft version, Fabric version)index.toml - Auto-generated index of all mods (managed by packwiz)mods/*.pw.toml - Individual mod metadata files with URLs and hashes/home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft/packwiz-update.sh/home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft/README.mdThe minecraft-server.nix module uses a functional approach to build the modpack:
parseModToml function reads each mod's .pw.toml fileside = "both" or side = "server"linkFarmFromDrvs with all server mods# Key components from minecraft-server.nix
parseModToml = tomlFile: let
tomlContent = builtins.fromTOML (builtins.readFile tomlFile);
isServerMod = tomlContent.side == "both" || tomlContent.side == "server";
# ... hash handling ...
in
if isServerMod
then pkgs.fetchurl { url = ...; sha512 = ...; name = ...; }
else null;
# All server mods automatically loaded
serverMods = builtins.filter (mod: mod != null) (
map (file: parseModToml (modpackPath + "/mods/${file}"))
(builtins.filter (file: lib.hasSuffix ".pw.toml" file) modFiles)
);
Packwiz manages mod metadata in .pw.toml files. Each file contains:
All packwiz commands should be run in the modpack directory:
cd /home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft/modpack
You can run packwiz via nix-shell:
nix-shell -p packwiz --run "packwiz <command>"
# or enter a shell
nix-shell -p packwiz
# Add from Modrinth (recommended)
packwiz modrinth add <mod-slug>
# Example: Add Sodium
packwiz modrinth add sodium
# Non-interactive mode (auto-accept dependencies)
packwiz modrinth add -y sodium
# Add from CurseForge
packwiz curseforge add <mod-name>
Packwiz will:
.pw.toml file in mods/index.toml automatically-y)packwiz remove <mod-name>
# Example
packwiz remove sodium
Update all mods:
# Using packwiz directly
packwiz update --all
# Using the update script (recommended - has better progress tracking)
cd /home/curtbushko/workspace/github.com/curtbushko/nixos-config/modules/nixos/services/minecraft
./packwiz-update.sh
Update a specific mod:
packwiz update <mod-name>
The packwiz-update.sh script:
DELAY_SECONDS=3 ./packwiz-update.sh
DRY_RUN=true ./packwiz-update.sh # See what would happen
# List all mods
packwiz list
# Count mods
packwiz list | wc -l
After manually editing .pw.toml files:
packwiz refresh
To upgrade to a new Minecraft version (e.g., 1.20.1 → 1.21.1):
1. Update pack.toml:
cd modpack
nano pack.toml
# Change:
# [versions]
# minecraft = "1.21.1"
2. Update all mods for new version:
# Refresh to pick up new Minecraft version
packwiz refresh
# Update all mods (they'll fetch versions for new MC version)
cd ..
./packwiz-update.sh
3. Update server package in minecraft-server.nix:
# Change from:
package = pkgs.fabricServers.fabric-1_20_1;
# To:
package = pkgs.fabricServers.fabric-1_21_1;
# Note: Use underscores, not dots!
4. Check for mods without 1.21.1 versions: The packwiz-update.sh script will report mods stuck on older versions. You may need to:
Example mod file (mods/sodium.pw.toml):
name = "Sodium"
filename = "sodium-fabric-0.6.5+mc1.21.1.jar"
side = "both"
[download]
url = "https://cdn.modrinth.com/data/AANobbMI/versions/abc123/sodium-fabric-0.6.5+mc1.21.1.jar"
hash-format = "sha512"
hash = "abc123..."
[update]
[update.modrinth]
mod-id = "AANobbMI"
version = "abc123"
Key fields:
side - Determines if mod loads on server: "both", "server", or "client"download.url - Direct download URL (usually Modrinth CDN)download.hash-format - Hash type (sha256, sha512, or sha1)download.hash - Hash for verificationupdate.modrinth.mod-id - Used by packwiz to check for updatesThe packwiz modpack can be shared with clients:
Option 1: Packwiz Installer (Recommended)
Clients run packwiz-installer in their .minecraft directory to auto-download all client-compatible mods.
Option 2: Export to modpack format
cd modpack
packwiz modrinth export # Creates .mrpack file
packwiz curseforge export # Creates .zip for CurseForge
Some mods may not support the target version yet:
# Search for alternatives
packwiz modrinth search <name>
# Check mod page manually
# https://modrinth.com/mod/<slug>
Packwiz prompts for dependencies automatically:
Mod X requires dependency Y. Install? [Y/n]
Use -y flag to auto-accept: packwiz modrinth add -y <mod>
If a mod should be server-only but packwiz marks it as "both":
.pw.toml file manuallyside = "both" to side = "server"packwiz refreshWhen you rebuild NixOS:
.pw.toml files in modpack/mods/side = "both" or side = "server")No manual hash management needed - packwiz handles all hashes automatically!
These are still manually configured in minecraft-server.nix:
Resource packs (lines 54-115):
resourcepacks = pkgs.linkFarmFromDrvs "resourcepacks" [
(pkgs.fetchurl { url = "..."; sha512 = "..."; name = "..."; })
];
Datapacks (lines 118-125):
datapacks = pkgs.linkFarmFromDrvs "datapacks" [
(pkgs.fetchurl { url = "..."; sha512 = "..."; name = "..."; })
];
These can be found on Modrinth but aren't managed by packwiz in this configuration.
When working with Minecraft server mods:
modpack/ directory for packwiz commandspackwiz modrinth add to add mods (not manual editing)packwiz-update.sh for bulk updates with progress trackingside field in .pw.toml - client-only mods won't load on serverpack.toml Minecraft version before migrating versions# Navigate to modpack
cd /home/curtbushko/.../nixos-config/modules/nixos/services/minecraft/modpack
# Add mod
nix-shell -p packwiz --run "packwiz modrinth add <slug>"
# Remove mod
nix-shell -p packwiz --run "packwiz remove <name>"
# Update all mods
cd .. && ./packwiz-update.sh
# List mods
nix-shell -p packwiz --run "packwiz list"
# Change Minecraft version
# 1. Edit modpack/pack.toml
# 2. Run ./packwiz-update.sh
# 3. Update minecraft-server.nix server package