mirror of
git://git.savannah.gnu.org/guix/maintenance.git
synced 2023-12-14 03:33:04 +01:00
190 lines
5.6 KiB
TeX
190 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:
|