4 ms·
I use nixos, not GuixSD, but I can speak to "what would be the advantages and disadvantages", particularly since guix is a reimplementation of nix. The benefit
by rufugee 8y ago
I use nixos, not GuixSD, but I can speak to "what would be the advantages and disadvantages", particularly since guix is a reimplementation of nix.
The benefits to me are immense, because I travel between around six machines on a daily or weekly basis. Prior to moving to NixOS, I'd have to manually keep those machines in sync in terms of software installs, etc. However, after switching to NixOS, I have a set of files I version control which will declaratively build the system the way I want it.
So, if I install a new package and I'd like it be the same across all machines, I simply configure it, commit to git, and then pull down the config on the other machines and do "nixos-rebuild switch". Everything becomes exactly the same.
It's saved me so much time in terms of managing my computing life. I really couldn't see going back to a regular distro after using one which is declarative.
The drawbacks? Well, for one, Nix and Guix have various tricks with symlinking, etc, to make it appear to applications as if it's a typical Linux filesystem, but it's not. E.g. there's no /lib, etc. It's a little weird getting used to.
And with nix, there's the nix language, which isn't that difficult to learn but it's not my favorite. If the underlying language needs to be functional, I'd prefer a lisp over nix. Also, with nixos, there are too many different commands required to learn when you get deeper into it, but work is underway to improve that story.
At least for me...the benefits far outweigh the risks. I don't think I can ever go back. I think there's a real opportunity for a commercially-backed declarative Linux os...it really is a game changer and would do well in the enterprise.
- xfer 8y agoFor me, the problem isn't so much with the nix language(it's very similar to haskell), but the lack of discoverability for docs of library. The manual is mostly incomplete and i often have to look at sources. My most favourite thing is that i can just override the packages to compile and install a new version/extra configure flags of a package that's not yet upstream.
- rufugee 8y agoInteresting... I've found the manuals to be ok so far. Can you share what you've had problems finding?
- xfer 8y agoWell, a lot of common functions like fetch* , write*, makeWrapper that are used in packages are undocumented. I usually dig into source files using nix repl to find the location.