maintenance/talks/codefest-2014/guix-codefest-2014.tex

191 lines
5.6 KiB
TeX

\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: