[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