Multi-platform modpack manager for Minecraft: Java Edition
  • Rust 99.7%
  • Nix 0.3%
Find a file
NotAShelf da15ebf9bd
various: clean up multiplatform mod resolution; add lockfile management
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If1fed3ad9f9273266ae6e0e24d57b6996a6a6964
2026-05-03 22:12:05 +03:00
crates various: clean up multiplatform mod resolution; add lockfile management 2026-05-03 22:12:05 +03:00
docs docs: detail basic behaviour; cleanup wording 2026-05-03 13:06:13 +03:00
nix nix: initial tooling setup 2026-02-13 00:15:03 +03:00
pakker treewide: migrate to multi-crate layout 2026-05-03 03:44:54 +03:00
.envrc nix: initial tooling setup 2026-02-13 00:15:03 +03:00
.gitignore initial commit 2026-02-13 00:14:46 +03:00
.rustfmt.toml initial commit 2026-02-13 00:14:46 +03:00
.taplo.toml chore: remove unsupported key from taplo config per schema lint 2026-05-03 03:44:53 +03:00
Cargo.lock treewide: migrate to multi-crate layout 2026-05-03 03:44:54 +03:00
Cargo.toml treewide: migrate to multi-crate layout 2026-05-03 03:44:54 +03:00
flake.lock nix: bump nixpkgs 2026-04-21 19:27:32 +03:00
flake.nix nix: initial tooling setup 2026-02-13 00:15:03 +03:00

Pakker

Fast, reliable multiplatform modpack manager for Minecraft, written in Rust. Pakker manages Minecraft modpacks across CurseForge, Modrinth, and GitHub. It handles project resolution, dependency linking, lockfile updates, exports, and remote modpack workflows from a single CLI.

Core Features

  • Create and import modpacks
  • Add, remove, update, and inspect projects
  • Resolve dependencies across supported platforms with automatic cross-platform project merging
  • Manage pack configuration and per-project overrides
  • Export CurseForge, Modrinth, and serverpack layouts

New in Pakker

  • Work with forked packs and remote repositories
  • Interactively set, configure, and test API credentials

Quick Start

  1. Run pakker init to create a new modpack.
  2. Use pakker add or pakker add-prj to add projects.
  3. Run pakker export when you want distributable output.

How It Works

Pakker maintains two files in your modpack directory:

  • pakker.json: pack metadata, paths, overrides, and per-project settings
  • pakku-lock.json: resolved project state with platform IDs, file URLs, and dependency links

When you add a project, Pakker queries the supported platforms, merges results into a single project record with cross-platform identifiers, resolves dependencies recursively, and updates the lockfile. The resolver detects circular dependencies and links related projects via pakku_links.

Acknowledgments

Pakker is greatly inspired by Pakku, and commits to bringing similar functionality with improved performance and additional features through a Rust implementation. Pakku is by no means a bad project, but I found it difficult to work with the Kotlin code.

Many thanks to teksturepako for Pakku, as well as his infinite patience, code reviews and suggestions to bring Pakker to its current state.