From 7e1f66d3242e6f89d0431f86d5bd664bbaa95165 Mon Sep 17 00:00:00 2001 From: Jan-Bulthuis Date: Sun, 18 May 2025 06:08:02 +0200 Subject: [PATCH] Restructured flake --- flake.lock | 29 +++------ flake.nix | 37 +++++++++--- nix-modpack/flake.nix | 22 +++++-- nix-modpack/lib/default.nix | 97 ------------------------------- nix-modpack/packages/mkClient.nix | 67 +++++++++++++++++++++ nix-modpack/packages/mkServer.nix | 17 ++++++ 6 files changed, 140 insertions(+), 129 deletions(-) delete mode 100644 nix-modpack/lib/default.nix create mode 100644 nix-modpack/packages/mkClient.nix create mode 100644 nix-modpack/packages/mkServer.nix diff --git a/flake.lock b/flake.lock index f2312e7..f50b8b2 100644 --- a/flake.lock +++ b/flake.lock @@ -72,7 +72,9 @@ "inputs": { "flake-compat": "flake-compat", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1747526922, @@ -92,7 +94,7 @@ "inputs": { "flake-compat": "flake-compat_2", "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1747526922, @@ -111,7 +113,9 @@ "nix-modpack": { "inputs": { "nix-minecraft": "nix-minecraft_2", - "nixpkgs": "nixpkgs_3" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "path": "./nix-modpack", @@ -140,22 +144,6 @@ } }, "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": { "lastModified": 1747327360, "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", @@ -174,7 +162,8 @@ "root": { "inputs": { "nix-minecraft": "nix-minecraft", - "nix-modpack": "nix-modpack" + "nix-modpack": "nix-modpack", + "nixpkgs": "nixpkgs_2" } }, "systems": { diff --git a/flake.nix b/flake.nix index 81d5cb9..fb31368 100644 --- a/flake.nix +++ b/flake.nix @@ -2,17 +2,40 @@ description = "Minecraft Modpack"; inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nix-modpack.url = "./nix-modpack"; + nix-modpack.inputs.nixpkgs.follows = "nixpkgs"; nix-minecraft.url = "github:Jan-Bulthuis/nix-minecraft"; + nix-minecraft.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs: - inputs.nix-modpack (system: { - packUrl = "https://git.bulthuis.dev/Jan/Modpack/raw/branch/main/pack.toml"; - server = inputs.nix-minecraft.legacyPackages.${system}.neoForgeServers.neoforge-21_1_172; - clientGameVersion = "1.21.1"; - clientLoaderUid = "net.neoforged"; - clientLoaderVersion = "21.1.172"; - }); + 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"; + server = inputs.nix-minecraft.legacyPackages.${pkgs.system}.neoForgeServers.neoforge-21_1_172; + }; + client = inputs.nix-modpack.packages.${pkgs.system}.mkClient { + 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 + ]; + }; + }); + }; } diff --git a/nix-modpack/flake.nix b/nix-modpack/flake.nix index 7346574..42ef18b 100644 --- a/nix-modpack/flake.nix +++ b/nix-modpack/flake.nix @@ -6,13 +6,25 @@ }; outputs = - { nixpkgs, nix-minecraft, ... }: + inputs: let - lib = import ./lib { - inherit nixpkgs nix-minecraft; - }; + lib = inputs.nixpkgs.lib; + eachSystem = + fn: lib.genAttrs lib.systems.flakeExposed (system: fn (import inputs.nixpkgs { inherit system; })); in { - __functor = _: lib; + 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 + { + mkServer = pkgs.callPackage ./packages/mkServer.nix { inherit bootstrap; }; + mkClient = pkgs.callPackage ./packages/mkClient.nix { inherit bootstrap; }; + } + ); }; } diff --git a/nix-modpack/lib/default.nix b/nix-modpack/lib/default.nix deleted file mode 100644 index 0b3c8e1..0000000 --- a/nix-modpack/lib/default.nix +++ /dev/null @@ -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 diff --git a/nix-modpack/packages/mkClient.nix b/nix-modpack/packages/mkClient.nix new file mode 100644 index 0000000..d42b1ff --- /dev/null +++ b/nix-modpack/packages/mkClient.nix @@ -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/ + ''; +} diff --git a/nix-modpack/packages/mkServer.nix b/nix-modpack/packages/mkServer.nix new file mode 100644 index 0000000..6108d10 --- /dev/null +++ b/nix-modpack/packages/mkServer.nix @@ -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 +''