From ae9a9d507bc665423230cd962e248c2ca5327d47 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 22 Mar 2018 22:50:25 -0400 Subject: Update libreplanet talk some more. --- 2018-03-25-guix-libreplanet/graph.png | Bin 0 -> 75173 bytes 2018-03-25-guix-libreplanet/guix-libreplanet.org | 167 ++++++++++++++++++----- 2018-03-25-guix-libreplanet/guix-libreplanet.pdf | Bin 169367 -> 315346 bytes 2018-03-25-guix-libreplanet/guix-logo.png | Bin 0 -> 28661 bytes 2018-03-25-guix-libreplanet/guixsd-logo.png | Bin 0 -> 25317 bytes 5 files changed, 133 insertions(+), 34 deletions(-) create mode 100644 2018-03-25-guix-libreplanet/graph.png create mode 100644 2018-03-25-guix-libreplanet/guix-logo.png create mode 100644 2018-03-25-guix-libreplanet/guixsd-logo.png diff --git a/2018-03-25-guix-libreplanet/graph.png b/2018-03-25-guix-libreplanet/graph.png new file mode 100644 index 0000000..4be0abb Binary files /dev/null and b/2018-03-25-guix-libreplanet/graph.png differ diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.org b/2018-03-25-guix-libreplanet/guix-libreplanet.org index d6958bc..10a4594 100644 --- a/2018-03-25-guix-libreplanet/guix-libreplanet.org +++ b/2018-03-25-guix-libreplanet/guix-libreplanet.org @@ -52,7 +52,7 @@ figuring out how to view the exact source for a running program is tricky - - ?? + - * common issues @@ -71,9 +71,10 @@ * common issues - trying out new stuff can lead to sadness + major system upgrades can lead to sadness - - ever upgrade your distro, reboot, and get an unusable system? + ever upgrade your system, reboot, and find yourself in a completely + broken state? * freedom: embedded @@ -82,37 +83,48 @@ * what is guixsd? - + \begin{center} + \includegraphics{guixsd-logo.png} + \end{center} - fully-free GNU/Linux distribution with an advanced package - manager and system upgrade mechanism + GuixSD is a fully-free GNU/Linux distribution with an advanced + package manager and system upgrade mechanism * what is guix? - GuixSD's package manager + \begin{center} + \includegraphics[width=8cm]{guix-logo.png} + \end{center} - “functional” package manager + Guix is GuixSD's package manager (like apt, yum, pacman, etc.) - atomic updates and rollbacks + - unpriviliged package management + - per-user profiles + - atomic updates and rollbacks + - reproducible builds + - tools for many use-cases * unprivileged package management - Users can build and install software *without root privileges* + users can build and install software *without root privileges* tired: =sudo apt install emacs= wired: =guix package -i emacs= -* unprivileged package management +* per-user profiles - Each user may have one or more “profiles”, a union of many packages. + each user may have one or more “profiles”, a union of many packages, + *without clobbering another user’s environment* - Use cases: + use cases: - Alyssa and Ben use different versions of Emacs - Alyssa hacks on 2 Ruby projects that require different versions -* experiment without fear +* transactional upgrades and rollbacks + + experiment without fear! =guix package --upgrade emacs= @@ -120,29 +132,34 @@ =guix package --roll-back= -* experiment without fear +* transactional upgrades and rollbacks - =guix system reconfigure= + system upgrades are transactional, too! + + =sudo guix system reconfigure my-machine.scm= oh no, the latest GuixSD updates broke my system! - + no worries, just reboot and select the previous, working version + from the bootloader menu * inspecting source code - quickly grab the source code for a package - - =guix build --source gimp= - -* inspecting dependency graph + quickly grab the source code for a package: - =guix graph= + #+BEGIN_SRC sh + tar xf $(guix build --source gimp) + #+END_SRC - +* visualizing dependencies -* sharing system configurations + #+BEGIN_SRC sh + guix graph haunt | dot -Tpng > graph.png + #+END_SRC - + \begin{center} + \includegraphics[width=11cm]{graph.png} + \end{center} * sharing packages @@ -168,6 +185,44 @@ =guix environment --manifest=guix.scm= +* experimenting in isolated environments + + how about a container? + + =guix environment –-container --ad-hoc ruby -- irb= + +* sharing system configurations + + #+latex: \tiny{ + #+BEGIN_SRC scheme + (operating-system + (host-name "izanagi") + (timezone "America/New_York") + (locale "en_US.UTF-8") + (bootloader (grub-configuration (target "/dev/sda"))) + (file-systems (cons (file-system + (device "root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + (users (list (user-account + (name "dave") + (comment "David Thompson") + (group "users") + (supplementary-groups '("wheel" "netdev" "audio" "video" + "cdrom" "kvm" "input" "dialout") + (home-directory "/home/dave")))) + (packages (cons* arc-theme arc-icon-theme + htop less man-db ncurses nss-certs openssh unzip rsync + gnome-shell-extensions gnome-tweak-tool + %base-packages)) + (services (cons* (gnome-desktop-service) + %desktop-services)) + (name-service-switch %mdns-host-lookup-nss)) + #+END_SRC + #+latex: } + * sharing binaries start a server to share your builds: @@ -197,8 +252,8 @@ this is a *cross-distro effort*, but Guix facilitates reproducibility more than others - see Chris Lamb's talk /You think you're not a target? A tale of - three developers.../ from yesterday for more perspective + see Chris Lamb's talk /“You think you're not a target? A tale of + three developers...”/ from yesterday for more perspective * reproducible builds @@ -225,7 +280,15 @@ * customize packages - let's make some changes! + build Ruby using different source code: + + #+BEGIN_SRC sh + guix build ruby --with-source=ruby-2.5.0.tar.gz + #+END_SRC + +* customize packages + + let's make some changes to the source code itself! #+BEGIN_SRC sh git clone https://git.savannah.gnu.org/git/guix.git @@ -233,6 +296,7 @@ guix environment guix ./configure make + ./pre-inst-env guix edit ruby guix build ruby #+END_SRC @@ -245,17 +309,52 @@ \tiny(see /Solving the deployment crisis with GNU Guix/ from LibrePlanet 2016 for reasons why Docker may not be so great) -* extending guix +* interoperate with other systems - GuixSD is essentially a big Scheme library + or maybe you want something like snap or flatpak? + + make a tarball bundle that anyone can extract on their GNU/Linux + system: - easy to write new tools that use the exact same APIs that the core - Guix tools use + =guix pack guile emacs geiser= + +* interoperate with other systems + + or maybe you want assistance translating foreign packages into Guix + packages: + + =guix import pypi flask= * literally: embedded GuixSD now runs on the Beaglebone Black single-board computer! + #+latex: \scriptsize{ + #+BEGIN_SRC scheme + (operating-system + (bootloader (bootloader-configuration + (bootloader u-boot-beaglebone-black-bootloader) + (target "/dev/mmcblk1"))) + (initrd-modules (cons "omap_hsmmc" %base-initrd-modules)) + (services (cons* (dhcp-client-service) + (agetty-service + (agetty-configuration + (extra-options '("-L")) + (baud-rate "115200") + (term "vt100") + (tty "ttyO0"))) + %base-services)) + ...) + #+END_SRC + #+latex: } + +* extending guix + + GuixSD is essentially a big Scheme library + + with a little Scheme know-how its easy to write new tools that use + the exact same APIs that the core Guix tools use + * the freedom to contribute GNU Guix is a welcoming community: @@ -276,6 +375,6 @@ * credits - Copyright 2018 David Thompson + © 2018 David Thompson Licensed under Creative Commons Attribution Share-Alike 4.0 diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf index 09b3615..d7a49e0 100644 Binary files a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf and b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf differ diff --git a/2018-03-25-guix-libreplanet/guix-logo.png b/2018-03-25-guix-libreplanet/guix-logo.png new file mode 100644 index 0000000..cadfc65 Binary files /dev/null and b/2018-03-25-guix-libreplanet/guix-logo.png differ diff --git a/2018-03-25-guix-libreplanet/guixsd-logo.png b/2018-03-25-guix-libreplanet/guixsd-logo.png new file mode 100644 index 0000000..8c4b4ae Binary files /dev/null and b/2018-03-25-guix-libreplanet/guixsd-logo.png differ -- cgit v1.2.3