[gobolinux-users] NixOS vs GoboLinux

Isaac Dupree isaacdupree at charter.net
Tue Oct 23 13:30:48 NZDT 2007


I haven't tried Nix/NixOS but I've heard and read about it and was 
thinking about how it compares to GoboLinux

http://nix.cs.uu.nl/nixos/

I think Nix and Gobo might have some things to learn from each other. 
So here are my thoughts in random order (some more interesting than 
others, and altogether more ignorant on Nix than Gobo) :

Nix is purely functional, so it doesn't like the idea of "Alien" package 
systems, but chooses to make its own as needed.  For example, it knows 
about and makes GHC package database files as needed.

Gobolinux uses ldd & friends to try to determine runtime dependencies; 
NixOS names each package directory like 
/nix/store/r8vvq9kq18pz08v249h8my6r9vs7s0n3-firefox-2.0.0.1/ 
(corresponding roughly to Gobo /Programs/Firefox/2.0.0.1) and searches 
for the hash string to find out if a program depends on firefox, for 
example (I think).

Gobolinux Rootless and Nix Package Manager correspond, both able to run 
on non-Linux systems.  Neither attempts chroot-type isolation mechanisms 
(of course a local user may or may not have root privilege access).

NixOS doesn't much like the idea of cross-compiling, since configure, 
gcc, etc. don't always produce the exact same results when cross 
compiling.  I think cross-compiling and then self-compiling a toolchain 
until it produces itself, using Qemu, makes a reasonable amount of sense 
(and if tried repeatedly from different starting systems, if it yields 
the exact same result eventually, could demonstrate somewhat the 
soundness/consistency of cross-compiling).

Gobolinux likes to use chroot and other OS mechanisms to ensure reliable 
(i.e. purely functional) package creation, and is going towards using it 
more throroughly; NixOS doesn't seem to bother (which works most of the 
time for it).

Nix uses a (Berkeley) database, with all the unreliability, reliability, 
and speed that that entails.

In theory the NixOS system is hard to break and easy to tell if it's 
broken.  It already has build-farms and some sort of theoretical 
security regarding them (not sure how much).  Gobolinux is easy to hack 
and have a system that runs but is arguably a little broken in some way.

GoboLinux currently has a participatory community for its recipe-store; 
all I know about Nix is that it's not currently dead.

Like zero-install's theory, NixOS allows multiple unprivileged users to 
install software without it being duplicated on disk, because 
installation is deterministic.

GoboLinux "recipe" are mostly declarative based on "bash".  Nix 
"expressions" are its own language, which is actually a pretty nice one 
IMO, but it also uses "bash" to imperatively describe installation 
instructions.  I think Nix could have installation-type-sharing similar 
to Gobo recipe_types, but I didn't see evidence of anything except the 
default customizable "configure - make - make install".

Nix is academically minded, generally (this has its pros and cons).


Isaac


More information about the gobolinux-users mailing list