curse this society, which has decided to gender shoe size specifically to irritate me
imagine a world, where there is one number, for shoes
curse this society, which has decided to gender shoe size specifically to irritate me
imagine a world, where there is one number, for shoes
Get your cohost iframes (chiframes even) here:
if block game you mean terraria and by terraria you mean the zoologist then absolutely. category 11 slime pussy event. minecraft has sadly fallen behind in sexual appeal.
i think i hauve wither
design adapted from this
Started developing a NixOS module to manage Minecraft instances. It's not nearly there yet but it's making me appreciate functional programming and Nix a lot. This is just such a nice way of doing things that offers a lot of flexibility while being resilient.
I'll probably post some updates on this as I reach "milestones", so far I'm downloading all the file indices (indexes?) correctly and that's a good first step.
You know you're winning when you hit that
error: executing '/nix/store/6payx2da66dbjl6vg15csxfb5hpf3df4-bash-5.2-p15/bin/bash': Argument list too long
Weirdly enough, despite the 3000 or so dependencies I'm trying to pass, even if each one had about 200 characters in it we still wouldn't hit the ARG_MAX of my kernel. Really unsure why this is happening now.
Alright, we are officially downloading assets and packaging them "correctly". We are also downloading the client jar correctly, the only remaining thing to download is the third party libraries and ooh boy I'm not fucking ready for this shit.
I can't believe NixOS tricked me intro learning functional programming.
Progress update on this, we now have everything downloading and packaging mostly well, though there appear to be some strange differences between the way my system is downloading stuff and how Prismlauncher does it even though I'm following the manifest to the letter. There'll probably be a lot of weird packaging requirements once I get to actually starting the game but for now I need to mount some directories with my packages so that I can point my game at them.
New issue, this can't be evaluated in pure mode because I have no easy way to convince nix that previous versions in the manifest won't magically become terrible. I'll run all my tests in impure mode for now since I trust that Mojang did the work for me but in the future I might have to maintain a flake which keeps track of links and hashes to previous game versions. I was trying to avoid exactly this situation with my system but a combination of Nix and Mojang have forced my hand.
we're getting close? Thanks to some admittedly iffy programming I am now producing all the data I need to turn the user's configuration (list of instances with a name and a Minecraft version) into all the derivations I need to let the user launch the game. I'm turning Nix into the world's most overcomplicated Minecraft launcher
Nevermind, we're at the next roadblock: Minecraft wants its libraries folder, the folder where the third party library jars that are downloaded and managed by the launcher, to be read-writable. The nix store is read-only for obvious reasons and copying several gigabytes of files to a temporary directory at activation time sounds like a terrible idea. No idea where to go from here, I guess we'll see.
Alright! We did it! Minecraft is now being downloaded and launched properly through nix directly. Now there isn't much to demo in something like a video, but with the module installed as it is, all it takes is to add something like
programs.minecraft = {
enable = true;
instances = [
{name = "Test Instance"; version = "1.20.4"; gameDir = "/tmp/minecraft-test";}
];
};
to your system config to create a script named minecraft-Test-Instance-launcher in your PATH. Running that script automatically starts up Minecraft!
Now there is still more to do before I can publish this, namely allowing you to log in with your real Minecraft account as well as allowing it to run in pure evaluation mode. I'd also like to add some extra features like declarative options, installing resource packs, and maybe even managing mods. There's also a whole lot of stuff to clean up because the design of this module wasn't really finalized before I got to work on it and I can probably make it a lot more efficient and compact if I put my mind to it. I am super happy we got this far though, this is great.
Celebrations were a bit too early, while the module does work for 1.20 and a few recent versions, older versions have a lot of jank and special cases that aren't handled yet and that will take a lot of time to hammer into the system. Oh well, at least it works for 1.20