README 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. GNU Guix provides state-of-the-art package management features such as
  2. transactional upgrades and roll-backs, reproducible build environments,
  3. unprivileged package management, and per-user profiles. It uses low-level
  4. mechanisms from the Nix package manager, but packages are defined as
  5. native Guile modules, using extensions to the Scheme language -- which
  6. makes it nicely hackable.
  7. Guix may be run in single or multi-user mode (which requires the
  8. guix-daemon). To have the guix daemon start and stop with your host,
  9. add to /etc/rc.d/rc.local:
  10. if [ -x /etc/rc.d/rc.guix ]; then
  11. /etc/rc.d/rc.guix start
  12. fi
  13. and to /etc/rc.d/rc.local_shutdown (creating it if needed):
  14. if [ -x /etc/rc.d/rc.guix ]; then
  15. /etc/rc.d/rc.guix stop
  16. fi
  17. The daemon requires users for building the guix packages, which should
  18. be added under the 'guixbuild' group.
  19. groupadd -g 316 guixbuild
  20. for i in `seq -w 1 10`; do
  21. useradd -G guixbuild \
  22. -d /var/empty -s `which nologin` \
  23. -c "Guix build user $i" -u 316 -g 316 \
  24. guixbuilder$i;
  25. done
  26. Restricting access to the daemon to only users in the guixbuild group
  27. is acheived by setting file permissions for the daemon's socket's folder.
  28. chgrp guixbuild /var/guix/daemon-socket
  29. chmod ug=rwx,o= /var/guix/daemon-socket
  30. Correct permissions must also be set for /var/guix/profiles to give
  31. users access.
  32. By default guix will compile in /tmp, this can be changed by exporting
  33. $TMPDIR. Guix will also by default store its packages in /gnu/store, to
  34. save space in the root partition /gnu can be mounted on another partition.
  35. Guix can either be built with the nix-daemon instead of the default
  36. guix-daemon or along side nix sharing the same store, both require nix
  37. as an optional dependency. To build with the nix-daemon use NIX="yes"
  38. and to share the store with nix use SHARE="yes".
  39. guile-json is an optional dependency and will allow you to use the 'guix
  40. import pypi' command. It is of interest primarily for developers and
  41. not for casual users.