Skip to content

Instantly share code, notes, and snippets.

@abcdw
Last active Nov 28, 2022
Embed
What would you like to do?
nix vs guix.org

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

@shegeley
Copy link

shegeley commented Nov 6, 2021

Thnx! 👏

@michael-nhat
Copy link

michael-nhat commented Nov 14, 2021

Thank you! Someone gonna need this!

@iwinux
Copy link

iwinux commented May 3, 2022

So....no luck to use Guix on macOS as of today (2022-05)?

@abcdw
Copy link
Author

abcdw commented May 7, 2022

@rekado
Copy link

rekado commented Sep 21, 2022

re macos: perhaps it runs in lima.

@rekado
Copy link

rekado commented Sep 21, 2022

re package count: nixpkgs has a lot of automatically generated R packages that are unlikely to work correctly. The package count is quite inflated.

@rekado
Copy link

rekado commented Sep 23, 2022

@iwinux the problem with macos is that glibc doesn't exist for macos. To build it (or a drop-in replacement) would require the use of the proprietary Xcode toolchain, which we as the Guix project cannot use to transparently build glibc for macos.

Nix people just accept that they put their system on top of proprietary foundations with an arbitrary cut-off for the binary base. Guix goes the opposite way on GNU+Linux aiming to dramatically reduce the "binary seed" with Mes. To use Guix on top of macos would require a huge binary blob that can only be built with proprietary tools.

Given these circumstances it would not be much uglier to run Guix in a virtual GNU+Linux system on top of macos.

@iwinux
Copy link

iwinux commented Sep 26, 2022

@rekado Thanks for the detailed explanation :)

@abcdw
Copy link
Author

abcdw commented Oct 6, 2022

@rekado Very nice explanation indeed!

The gist and information here is a little outdated and incomplete/incorrect, so, maybe it's a good idea to revisit and make an updated summary of the current state of nix vs guix question. Just thinking out loud.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment