7. How does this look?
• No global variables (don’t mutate /usr)
• Purity (declare all inputs)
• Reproducible builds
• Immutable results without side effects
8. Package Definition
• y = f(x)
• hello = f(hello.c, make, gcc)
• gcc = g(make, gcc0)
• make = h(gcc)
• f is ./configure && make && make
install
9. hello
(define-public hello
(package
(name "hello")
(version "2.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/hello/hello-" version
".tar.gz"))
(sha256
(base32
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
(build-system gnu-build-system)
(synopsis "Hello, GNU world: An example GNU package")
(description
"GNU Hello prints the message "Hello, world!" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
(home-page "https://www.gnu.org/software/hello/")
(license gpl3+)))
10. GNU Guix
• Build daemon (runs as root)
• Isolated build
• Only declared inputs
• Reproducible verifiable builds
11. GNU Guix (continued)
• /gnu/store (immutable)
• Hash all build dependencies
• User level package management
• Virualenv (etc) for everything
• guix environment –container guile
–ad-hoc git autoconf automake gdb
12. GNU Guix (continued)
• Transactional upgrades (rollbacks)
• Per-user profiles
• System updates do not affect users
13. Gnu Guix (continued)
• Runs on top of standard distributions
• guix-daemon runs as root
• isolated builds
14. Gnu GuixSD
• Not your father’s distribution
• System configuration is declarative
• Built around Guix
• FSF endorsed/recommended
15. More Information
• Web: https://www.gnu.org/software/guix/
• IRC: #guix (freenode)
• Mailing List: https://lists.gnu.org/mailman/listinfo/help-guix
• Manual: https://www.gnu.org/software/guix/manual/