3

nix vs guix.org

 2 years ago
source link: https://gist.github.com/abcdw/e54807b0a25e61fe2cf1bf8991410f83
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Nix vs Guix

Some notes

  • We are not aware of a lot of GNU software available to us.
  • Seems that Guix more hacker-friendly/explorable.

General comparsion

DescriptionNixGuixComment
Established20032013
Poprietary SoftwareYesNo
Other OSeMacOS, GNU/LinuxGNU/Linux, Hurd
Packagesnixpkgs (53000)guix (15000+)https://repology.org/
Nix vs GuileNixGNU Guile
DocumentationDocbookGNU Texinfo
Branching modelCombinedRolling-release
Service managersystemdGNU Shepherd
Build scriptsBashG-exps
Version lockFlakesChannels
ConsistencyMediumHigh
cli implementationc++guile
Bootstrapping?YesGNU Mes
Module SystemYesNo
ImplicityFrequentOKeish

Version lock

Flakes seems to provide more hermetic builds than guix channels. Guix still can access different values on host, maybe I’m not yet aware of some features like pure evaluation mode or something similiar.

Nix vs Guile

Nix isn’t bad, but feels like DSL and it’s necessary to learn/invent new patterns, the tooling is kinda lacking. There are some goodies: you can have few versions of nixpkgs in one profile at the same time, nix doesn’t have namespaces and it won’t fail with name collision.

Guile is full-fledged scheme with good tooling.

Packages

Nix has much more packaged.

Guix has only free software in main repo, definitions looks more consistent and less hacky.

Documentation

Guix has centralaized and well-organized documentation in html/pdf/info format. Moreover info format has links to related topics like guile, different gnu utilities and so on.

For example info:guix#Build Systems refers to info:guile#Optional Arguments.

Branching model

NixOS has a release twice an year. Guix doesn’t have stable branch, all fixes goes straight to master. Is it bad or good is debatable, because it’s possible to freeze versions of specific packages or even whole development environments. That’s mean that we can keep as less system packages as possible to reduce attack surface and possible breakage on pulling updates from master, everything else will be managed per-user or per-project inside profiles.

Guix problems

  • You can’t use few channels with different version of guix in one profile

Nix problems

  • Inconsistent nix cli
  • Tooling kinda lacking for nix language
  • Glued together different parts not so well integrated

Resources


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK