Hacker News new | ask | show | jobs
by lil1729 3584 days ago
I used nixos for a few weeks and then went back to Debian.

* I share the concern of the author on symlinks farm. It is scary! I would like it to be dealt with in the filesystem layer (Plan 9 had a snapshot based filesystem - fossil - years ago). Symlinks have all sorts of weird semantics on different Unix machines.

* Another of my gripe with nixos is that it makes Unix, a single user machine! Sure, packages need not be installed in a user-local way. I may be ignorant of other possibilities here.

* More care for licenses. I still use Debian because they really care for licenses. Last I looked, nixos was in no way close to Debian in terms of documenting the various copyrights and licenses of files pertaining to a package.

Otherwise, Nixos is a great idea and a huge step forward.

3 comments

Regarding licenses, most (all?) packages in the official nixpkgs repo have license metadata, and you can set your configuration to forbid/allow proprietary packages (the "allowUnfree" option), or use a whitelist (e.g. forbid everything except Flash).

Guix is a GNU project, and doesn't allow proprietary packages in their collection at all.

Yes. But the amount of information in the debian/copyright file is a lot more than just one scalar flag. I think that level of detail on the licenses is extremely important.
Why do you believe it makes Unix a single user machine??? I'm not aware of any reason for such statement, can you elaborate?
I think I should have been clear. It does not make Unix single user machine but it is more useful for cases where a single user is the main user of a machine like the laptop user.

My reasoning was very simple. Nixos makes it easy to install packages on a per user basis. This would mean there is a lot of redundancy if another user also needs the same package. A snapshot/dedup filesystem will easily solve the problem.

Multi-user Nix systems use a "nix daemon", which user's commands send requests to ("please build this version of Firefox with this version of GCC, etc."); all of the results go in the main "nix store" (usually /nix/store).

Nix doesn't store duplicates; a hash is calculated, based on the inputs (source code, compilers, libraries, etc.) and if an output with that hash already exists, it will be used. If not, the configured binary caches will be queried, to see if a pre-built binary can be downloaded. If not, the inputs are fetched (following the same process) and the build is performed.

Thanks for educating me. I was totally mistaken. Thanks.
When a user installs a package, it goes into the system-global package store, and the user's symlinks are updated. When a second user installs the same package, they just get a symlink to the original. There isn't any duplication.
Thank you.
Nix profiles link to the same global store, so user packages are not duplicated.
Thanks.
> Symlinks have all sorts of weird semantics on different Unix machines.

Is there any other implementation than posix in the wild these days?

Well, are there any advanced filesystems that provide better functionality and which work on Linux and OS X? Or what would be the alternative?
btrfs perhaps? or zfs?