Restructured flake

This commit is contained in:
Jan-Bulthuis 2025-05-18 06:08:02 +02:00
parent 53096fdc3e
commit 7e1f66d324
6 changed files with 140 additions and 129 deletions

29
flake.lock generated
View File

@ -72,7 +72,9 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1747526922, "lastModified": 1747526922,
@ -92,7 +94,7 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1747526922, "lastModified": 1747526922,
@ -111,7 +113,9 @@
"nix-modpack": { "nix-modpack": {
"inputs": { "inputs": {
"nix-minecraft": "nix-minecraft_2", "nix-minecraft": "nix-minecraft_2",
"nixpkgs": "nixpkgs_3" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"path": "./nix-modpack", "path": "./nix-modpack",
@ -140,22 +144,6 @@
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": {
"lastModified": 1742889210,
"narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "698214a32beb4f4c8e3942372c694f40848b360d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1747327360, "lastModified": 1747327360,
"narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=",
@ -174,7 +162,8 @@
"root": { "root": {
"inputs": { "inputs": {
"nix-minecraft": "nix-minecraft", "nix-minecraft": "nix-minecraft",
"nix-modpack": "nix-modpack" "nix-modpack": "nix-modpack",
"nixpkgs": "nixpkgs_2"
} }
}, },
"systems": { "systems": {

View File

@ -2,17 +2,40 @@
description = "Minecraft Modpack"; description = "Minecraft Modpack";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nix-modpack.url = "./nix-modpack"; nix-modpack.url = "./nix-modpack";
nix-modpack.inputs.nixpkgs.follows = "nixpkgs";
nix-minecraft.url = "github:Jan-Bulthuis/nix-minecraft"; nix-minecraft.url = "github:Jan-Bulthuis/nix-minecraft";
nix-minecraft.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = outputs =
inputs: inputs:
inputs.nix-modpack (system: { let
lib = inputs.nixpkgs.lib;
eachSystem =
fn: lib.genAttrs lib.systems.flakeExposed (system: fn (import inputs.nixpkgs { inherit system; }));
in
{
packages = eachSystem (pkgs: {
server = inputs.nix-modpack.packages.${pkgs.system}.mkServer {
packUrl = "https://git.bulthuis.dev/Jan/Modpack/raw/branch/main/pack.toml"; packUrl = "https://git.bulthuis.dev/Jan/Modpack/raw/branch/main/pack.toml";
server = inputs.nix-minecraft.legacyPackages.${system}.neoForgeServers.neoforge-21_1_172; server = inputs.nix-minecraft.legacyPackages.${pkgs.system}.neoForgeServers.neoforge-21_1_172;
clientGameVersion = "1.21.1"; };
clientLoaderUid = "net.neoforged"; client = inputs.nix-modpack.packages.${pkgs.system}.mkClient {
clientLoaderVersion = "21.1.172"; packUrl = "https://git.bulthuis.dev/Jan/Modpack/raw/branch/main/pack.toml";
gameVersion = "1.21.1";
loaderUid = "net.neoforged";
loaderVersion = "21.1.172";
};
}); });
devShells = eachSystem (pkgs: {
default = pkgs.mkShell {
buildInputs = with pkgs; [
packwiz
];
};
});
};
} }

View File

@ -6,13 +6,25 @@
}; };
outputs = outputs =
{ nixpkgs, nix-minecraft, ... }: inputs:
let let
lib = import ./lib { lib = inputs.nixpkgs.lib;
inherit nixpkgs nix-minecraft; eachSystem =
fn: lib.genAttrs lib.systems.flakeExposed (system: fn (import inputs.nixpkgs { inherit system; }));
in
{
packages = eachSystem (
pkgs:
let
bootstrap = pkgs.fetchurl {
url = "https://github.com/packwiz/packwiz-installer-bootstrap/releases/download/v0.0.3/packwiz-installer-bootstrap.jar";
sha256 = "qPuyTcYEJ46X9GiOgtPZGjGLmO/AjV2/y8vKtkQ9EWw=";
}; };
in in
{ {
__functor = _: lib; mkServer = pkgs.callPackage ./packages/mkServer.nix { inherit bootstrap; };
mkClient = pkgs.callPackage ./packages/mkClient.nix { inherit bootstrap; };
}
);
}; };
} }

View File

@ -1,97 +0,0 @@
{ nixpkgs, ... }:
let
lib = nixpkgs.lib;
eachSystem =
fn: lib.genAttrs lib.systems.flakeExposed (system: fn (import nixpkgs { inherit system; }));
mkModpack =
builder:
let
mkPackages =
pkgs:
let
bootstrap = pkgs.fetchurl {
url = "https://github.com/packwiz/packwiz-installer-bootstrap/releases/download/v0.0.3/packwiz-installer-bootstrap.jar";
sha256 = "qPuyTcYEJ46X9GiOgtPZGjGLmO/AjV2/y8vKtkQ9EWw=";
};
buildInfo = builder pkgs.system;
in
rec {
default = server;
server = pkgs.writeShellScriptBin "minecraft-server" ''
${lib.getExe pkgs.jre} -jar ${bootstrap} -g -s server ${buildInfo.packUrl}
${buildInfo.server}/bin/minecraft-server
'';
client = pkgs.stdenvNoCC.mkDerivation {
name = "minecraft-client";
dontUnpack = true;
mmcpack = ''
{
"components": [
{
"important": true,
"uid": "net.minecraft",
"version": "${buildInfo.clientGameVersion}"
},
{
"uid": "${buildInfo.clientLoaderUid}",
"version": "${buildInfo.clientLoaderVersion}"
}
],
"formatVersion": 1
}
'';
instancecfg = pkgs.writeText "instance.cfg" ''
[General]
ConfigVersion=1.2
InstanceType=OneSix
OverrideCommands=true
PreLaunchCommand=\"$INST_JAVA\" -jar packwiz-installer-bootstrap.jar ${buildInfo.packUrl}
'';
buildPhase = ''
# Remove env-vars
rm env-vars
# Add the mmc-pack
echo $mmcpack > ./mmc-pack.json
# Add the instance-cfg
cp $instancecfg ./instance.cfg
# Add the bootstrap jar
mkdir ./minecraft
cp ${bootstrap} ./minecraft/packwiz-installer-bootstrap.jar
# Zip everything together
${pkgs.zip}/bin/zip -r modpack.zip ./*
'';
installPhase = ''
mkdir $out
mv modpack.zip $out/
'';
};
};
overlay = final: prev: mkPackages prev;
in
{
inherit overlay;
packages = eachSystem mkPackages;
devShells = eachSystem (pkgs: {
default = pkgs.mkShell {
buildInputs = with pkgs; [
packwiz
];
};
});
};
in
mkModpack

View File

@ -0,0 +1,67 @@
{
lib,
pkgs,
bootstrap,
...
}:
{
packUrl,
gameVersion,
loaderUid,
loaderVersion,
}:
pkgs.stdenvNoCC.mkDerivation {
name = "minecraft-client";
dontUnpack = true;
mmcpack = ''
{
"components": [
{
"important": true,
"uid": "net.minecraft",
"version": "${gameVersion}"
},
{
"uid": "${loaderUid}",
"version": "${loaderVersion}"
}
],
"formatVersion": 1
}
'';
instancecfg = pkgs.writeText "instance.cfg" ''
[General]
ConfigVersion=1.2
InstanceType=OneSix
OverrideCommands=true
PreLaunchCommand=\"$INST_JAVA\" -jar packwiz-installer-bootstrap.jar ${packUrl}
'';
buildPhase = ''
# Remove env-vars
rm env-vars
# Add the mmc-pack
echo $mmcpack > ./mmc-pack.json
# Add the instance-cfg
cp $instancecfg ./instance.cfg
# Add the bootstrap jar
mkdir ./minecraft
cp ${bootstrap} ./minecraft/packwiz-installer-bootstrap.jar
# Zip everything together
${pkgs.zip}/bin/zip -r modpack.zip ./*
'';
installPhase = ''
mkdir $out
mv modpack.zip $out/
'';
}

View File

@ -0,0 +1,17 @@
{
lib,
pkgs,
bootstrap,
...
}:
{
packUrl,
server,
jre ? pkgs.jre,
}:
pkgs.writeShellScriptBin "minecraft-server" ''
${lib.getExe jre} -jar ${bootstrap} -g -s server ${packUrl}
${server}/bin/minecraft-server
''