[Nix-dev] NiJS package manager

Shell Turner cam.turn at gmail.com
Tue Apr 1 13:18:15 CEST 2014


> http://sandervanderburg.blogspot.com/2014/04/asynchronous-package-management-with.html

> I have discovered that the Nix expression language is complicated and
> difficult to learn. Like Haskell, it has a solid theoretical foundation
> and powerful features (such as laziness), but it's too hard to learn by
> developers without an academic background.

I entirely disagree with this. From my perspective, Nix is a great
language which covers the simple cases simply. I've been building an
OpenVPN+VNC server (the equivalent of Terminal Services in the Windows
world) with Nix, with no prior experience of either Nix or functional
programming past the more functional bits of Python. It's been
remarkably easy to define my own extensible services and extend
packages when I need to, and I've had no problem doing so.

Perhaps more complicated use cases are significantly more complicated
to implement, but I'm not sure optimizing for them at the expense of
the simplicity of Nix is a good idea. Part of what attracted me to
NixOS in the first place was the simplicity of configuring it.

> But anyway: We have 3 solutions for describing packages:
> nix, guix, nixjs
>
> Thus eventually its time to think about which information could be
> shared. Who would join a "software version documentation" project
> allowing people to upload "the most recent version of my software is X,
> and it requires Z, FOO, BAR" ?
>
> Then some nix, nijs, guix packages could be derived automatically (like
> haskell, ruby, xorg, .. packages). And all the other package systems
> such as debian could benefit eventually, too.

I would prefer that we simply work on making these interoperable. That
is, define an API - packages can include each other, have things like
mkDerivation, etc - build a library that implements that API, and
allow languages to plug into that library. You would then be able to
write in whichever language you chose, and include expressions from
other languages. The system could even automatically build the runtime
for whichever languages I use.

Then, Disnix could be written in NiJS, and some packages I want could
be written in Guix, some interesting library could be written in
something else entirely, but I could write my configuration in Nix.

Shell


More information about the nix-dev mailing list