PixelGuys / Cubyz

Voxel sandbox game with a large render distance, procedurally generated content and some cool graphical effects.
GNU General Public License v3.0
426 stars 52 forks source link

better build process for linux/nixos #658

Open paulfrische opened 2 weeks ago

paulfrische commented 2 weeks ago

Hello there, would love to test cubyz but I would need to write some nixos specific stuff and maybe it would be useful to merge it upstream because it would be totally reproducible and probably more robust than the current build scripts anyways. What are your thoughts on this?

archbirdplus commented 2 weeks ago

We haven't seen any complaints about the build scripts since I last updated them (besides randomly freezing :shrug:). Could you tell me what problems you're seeing? Does nixos not work by default? What changes are you proposing?

paulfrische commented 2 weeks ago

nixos can't use prebuilt binaries without some more work (debug_linux.sh downloads a precompiled zig compiler) for example. another problem is finding libraries because of how nixos stores them (non fhs-compliant). Putting some nix specific files into the repo wouldn't affect the original build scripts in any way

IntegratedQuantum commented 2 weeks ago

What kind of files are needed? How can we make this work for the launcher (#227)? The launcher is intended to replace the build scripts at some point.

paulfrische commented 2 weeks ago

I'm not a nix expert by any means but I think you'd only need a shell.nix (or devenv) which can be used to build a project local shell environment with all the necessary libraries and env-variables set. When done you could probably use the default build scripts (if the entire downloading-a-compiler-thing won't get triggered).

Bonus: when using devenv (or shell.nix with a flake, which is a little more complicated but doesn't require any external tools really) you get a lock file so you don't need the entire version checking stuff. All in all it's totally reproducible and should "just work" everywhere.

EDIT: I've no idea on how you would package the launcher compiler setup but I guess that it would work very similarly