In Nixpkgs there are quite a few generated packages, some of which cannot be built. I'm maintaining R packages (from CRAN and Bioconductor) in Guix and I see that the equivalent packages in Nixpkgs do not accommodate some of their quirks, so they cannot actually be built.
Another example where Nixpkgs does not build packages from source is TeX Live. The SVN repository of TeX Live contains countless generated files, and all of the TeX Live packages in Nixpkgs merely copy the generated files from SVN instead of building them from source.
Java packages in Nixpkgs often seem to include pre-built jars whereas in Guix we're going to great lengths to build everything from source. This comes at a cost, of course: Guix has fever Java packages because of that, but those that it has are actually built from source.
Of course, I'm biased towards Guix, but I must say that I'm very fond of the level of integration that Guix achieves. When I look at Nix I see a bunch of seemingly separately developed tools that are written in a mix of languages (with Shell code being rather common). In Guix all tools are written in Scheme, use the same API, behave similarly, etc. It just feels much more polished to me.
That said, there is no animosity between these communities, and I think we would all be better off avoiding the mental pitfall of competition; we work on the same problems with different values and thus our approach differs. This leads to diversity rather than duplication of work.
Here are some more things I wrote comparing Nix and Guix in the past: https://news.ycombinator.com/item?id=19807042
Truly this is much more valuable than actually being able to use the software.
While freedom zero (the most important!) is the ability "to use the software" - being able to improve, patch and adapt the software is also very important!
If it were that simple, why would we need package managers at all? Sadly, the Linux community as a whole have dedicated themselves to a structure that makes this seemingly simple task remarkably difficult.
It is that simple.
> why would we need package managers at all? Sadly, the Linux community as a whole have dedicated themselves to a structure that makes this seemingly simple task remarkably difficult.
Because there's a huge difference between a user downloading/running a binary, and software package management in an OS. The former is not maintainable, your binaries will be out of date soon, etc. But, if you insist on wanting to do this, there's absolutely nothing preventing you from doing it. Have fun.
I really do want to do this, precisely because the software in the repo is often out of date, if it is even there at all! I really don't like the idea of a mandatory middleman between the developer and the user.
And since I really do want to do this, and do it often, I can say with quite a bit of certainty that
> It is that simple.
Is complete and utter bullshit! Sometimes you get lucky and the developer produces AppImages or a static binary, sometimes you're less lucky and have to grab the binary and its dependencies and write a startup script that sets LD_LIBRARY_PATH, sometimes you're even less lucky than that and get to use patchelf to force it to use a compatible ld.so, but most of the time you end up having to compile the damn thing from source like it is 1975.
And if package managers really solved the problem, why do so many projects deploy with Docker? Why do FlatPak and Snap exist, let alone my preferred AppImage?
Guix allows you to easily write own package definitions which are treated as part of the whole system. If you submit them and they are accepted, they simply become part of Guix.
> why must said repo prevent me from installing older versions,
Precisely this is a case that Guix solves extremely well: One can start environments with specific versions of packages, like in Pyhon's virtualenv.
And by the way, the complexity is caused by the issue that many many components need to fit together. That does not happen by chance, it is a massive amount of work to make it fit in a manageable way, and check that it works. That's what distributions do.
That depends much on the distribution you use (if recentness is most important, why do you don't use Arch), and being out of date is definitely not the case for Guix System:
http://distrowatch.org/dwres.php?firstlist=guixsd&firstversi...
Sp, why are you bringing an argument that does not apply to Guix?
Also for clojure heads the Nonguix[1] repository includes a leiningen package.
I think as time goes on and guix matures we will start to see more third party repositories that provide convenient builds of things. For instance I run guix system on a 2015 Chromebook Pixel and to do that I used the installation image provided at Nonguix to make sure I had all of the nonfree drivers I needed.
That's right, but 13,800 packages is not exactly bad. I believe that is more packages than Ubuntu had a few years ago.
I believe a higher proportion of Nixpkgs don't build all or some of the software/artifacts from source. I picked a random example, JOSM. The nixpkgs package definition is quite short [1], but I don't think it's actually building the software? The Guix package definition is much longer [2] but I think that's because it's actually building the software from source.
1: https://github.com/NixOS/nixpkgs/blob/master/pkgs/applicatio... 2: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages...
Personally, I like binary packages, which is why I use Guix, but I also value the security and flexibility of having these packages actually build the software from source.
Nixpkgs also contains non-free software. This is sort of related to the previous point, as it's much harder to tell if software is free or not if you're not building it from source, but Guix everything should be free software which takes away a worry when using it. With nixpkgs, I believe there are some bits of non-free software that are marked as such, but not taking a strong stance on attempting to build everything from source makes me generally unsure about the quality assurance in this area.
That said, downloading a jar instead of compiling the jar from source is definitely a notable difference and potentially is unfree software despite the license stating otherwise and the flag previously mentioned set.
While there is nothing inherent about NixOS To prevent non-free software from entering the ecosystem, there is also nothing inherent to Guix either that would prevent any non-free software. Ultimately it comes down to community curation of the packages and while Guix almost definitely is more vigilant about free software both have focus on free-software
NixOS has the option to install non-free (which you need to explicitly enable to install non-software) and Guix is more strict where their official packages don’t intentionally support any non-free software and they employ practices that are more likely to catch oversights.
Another feature that is very nice is that there is no difference between a package definition in a local development environment, and a definition in the official channel. What you put together as a build recipe of a tool that is useful for your quirky local project will also work as part of the distribution.