PlutoLang / Pluto

A superset of Lua 5.4 with a focus on general-purpose programming.
https://pluto-lang.org
MIT License
362 stars 22 forks source link

[Deferred] Add `flake.nix` #936

Closed cattokomo closed 3 weeks ago

cattokomo commented 3 weeks ago

Building on NixOS requires a flake.nix.

Tagging this as "deferred" as it's not an important issue

Sainan commented 3 weeks ago

What?

cattokomo commented 3 weeks ago

Context: NixOS doesn't follow FHS standard unlike any other Linux distros, instead it stores in /nix directory which where all the headers, libraries, etc. are stored. This makes building everything on NixOS quite impossible, unless there's flake.nix which handles all the headers and libraries to be available.

One of example that do this is Helix editor (flake.nix).

Sainan commented 3 weeks ago

You are free to contribute this yourself, but we aim for UNIX support by using POSIX APIs and such. How exactly you compile and store the binary is a bit out-of-scope.

cattokomo commented 3 weeks ago

You are free to contribute this yourself, but we aim for UNIX support by using POSIX APIs and such. How exactly you compile and store the binary is a bit out-of-scope.

It's only a feature for NixOS and Nix, Nix itself support variety of POSIX-compliant OSes. But if you don't want to, that's alright.

Sainan commented 3 weeks ago

Well, if Nix is POSIX compliant, and Pluto is POSIX compliant, then I think all is good. :)

alerque commented 3 weeks ago

Having a Nix Flake or not is totally unrelated to POSIX compliance! I don't know what either of you are going on about but that's completely unrelated. Having a flake.nix serves the purpose of being able to use the repository (at any arbitrary tag/branch/commit) as a Nix project (package, user config, project) dependency, to execute it directly without needing to download/configure/make/install anything at all. Additionally it can provide a consistent developer environment for anybody that wants one without getting in the way of the project development at all. This various functions can be quite handy for projects, CI runners, etc. To work it needs to be in this repository so that it's versioned along with the code it is building. Separately the Nix packages project can package Pluto as well at fixed versions (typically when the project is tagged), but that's also orthogonal to having a flake or not.

Sainan commented 3 weeks ago

I don't quite see how you are going to execute Pluto given only C/C++ source files and seemingly no requirement to "make" it.

And, again, I would be perfectly happy accepting a PR to upstream a flake.nix file if you did want it in this repository.