\documentclass{beamer} \usepackage{fancyvrb} % for \Verb \title[GNU Guix]{A Brief Introduction to GNU Guix} \author{David Thompson\\\texttt{davet@gnu.org}} \date{\small{Codefest 2014\\Cambridge, MA}} \begin{document} \maketitle \begin{frame}[plain] \begin{itemize} \item Introduction \item What is GNU Guix? \item Packages \item Operating Systems \item Demo \end{itemize} \end{frame} \begin{frame}{Who am I?} \begin{itemize} \item My name is David Thompson \item I am the Web Developer at the Free Software Foundation \item I am a contributor to GNU Guix and GNU Guile \end{itemize} \end{frame} \begin{frame}{What is Guix?} \begin{itemize} \item A purely functional package manager for the GNU system, and a distribution thereof \item Dependable, hackable, and liberating \item Based on Nix \item Written in Guile Scheme \end{itemize} \end{frame} \begin{frame}{What is Guix?} \begin{centering} \Huge{\textbf{Dependable}} \end{centering} \vspace{1cm} In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. \end{frame} \begin{frame}{What is Guix?} \begin{centering} \Huge{\textbf{Hackable}} \end{centering} \vspace{1cm} It provides Guile Scheme APIs, including high-level embedded domain-specific languages (EDSLs), to describe how packages are built and composed. \end{frame} \begin{frame}{What is Guix?} \begin{centering} \Huge{\textbf{Liberating}} \end{centering} \vspace{1cm} A user-land free software distribution for GNU/Linux comes as part of Guix. \end{frame} \begin{frame}{Packages} \begin{itemize} \item The package build and installation process is seen as a function, in the mathematical sense \item That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package \item As a pure function, its result depends solely on its inputs \item Build processes are run in isolated environments, where only their explicit inputs are visible \end{itemize} \end{frame} \begin{frame}[fragile]{Packages} \scriptsize{\begin{semiverbatim} (define hello (package (name "hello") (version "2.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/\textrm{...}/hello-" version ".tar.gz")) (sha256 (base32 "0wqd\textrm{...}dz6")))) (build-system gnu-build-system) (synopsis "Hello, GNU world: An example GNU package") (description "Produce a friendly greeting.") (home-page "http://www.gnu.org/software/hello/") (license gpl3+))) \end{semiverbatim}} \end{frame} \begin{frame}[fragile]{Operating Systems} \scriptsize{\begin{semiverbatim} (operating-system (host-name "codefest-2014") (timezone "America/New_York") (locale "en_US.UTF-8") (bootloader (grub-configuration (device "/dev/sda"))) (file-systems (list (file-system (mount-point "/") (device "dummy") (type "dummy")) %binary-format-file-system)) (users (list (user-account (name "dave") (group "users") (supplementary-groups '("wheel")) ; allow use of sudo (password "P@ssw0rd") (comment "Guix is pretty neat") (home-directory "/home/dave")))) (issue "Hello, Codefest 2014!") (services (cons* (slim-service #:auto-login? #t #:default-user "dave") (static-networking-service "eth0" "10.0.2.10" #:gateway "10.0.2.2") (avahi-service) (dbus-service (list avahi)) %base-services)) (packages (cons* emacs xterm avahi %base-packages))) \end{semiverbatim}} \end{frame} \begin{frame}{Demo} \begin{itemize} \item Build VM image \item Install packages \item Rollback \end{itemize} \end{frame} \begin{frame}{Thanks!} \begin{itemize} \item Guix 0.7 to be released in the coming weeks with bootable USB disk image \item We need your help to package useful sofware! \item Join us in \texttt{\#guix} on freenode or the \texttt{guile-devel@gnu.org} mailing list \item Source code and documenation available at \texttt{https://gnu.org/s/guix} \end{itemize} \end{frame} \begin{frame}{Copyright} \tiny{ Copyright \copyright{} 2010, 2012, 2013, 2014 Ludovic Courtès \texttt{ludo@gnu.org} Copyright \copyright{} 2014 David Thompson \texttt{davet@gnu.org}\\[2.0mm] This work is licensed under the \alert{Creative Commons Attribution-Share Alike 3.0} License. To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-sa/3.0/} or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. \\[2.0mm] At your option, you may instead copy, distribute and/or modify this document under the terms of the \alert{GNU Free Documentation License, Version 1.3 or any later version} published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at \url{http://www.gnu.org/licenses/gfdl.html}. \\[2.0mm] % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL. The source of this document is available from \url{http://git.sv.gnu.org/cgit/guix/maintenance.git}. } \end{frame} \end{document} % Local Variables: % coding: utf-8 % comment-start: "%" % comment-end: "" % ispell-local-dictionary: "american" % compile-command: "rubber --pdf guix-codefest-2014.tex" % End: