[maintenance PATCH 1/2] talks: Add JRES 2022 tutorial.

DoneSubmitted by zimoun.
Details
5 participants
  • Ludovic Courtès
  • Maxime Devos
  • Tobias Geerinckx-Rice
  • Olivier Dion
  • zimoun
Owner
unassigned
Severity
normal
Z
Z
zimoun wrote 6 days ago
(address . guix-patches@gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20220620035132.3461-1-zimon.toutoune@gmail.com
* talks/jres-2022: New directory.
---
talks/jres-2022/.gitlab-ci.yml | 52 +
talks/jres-2022/README | 110 +
talks/jres-2022/demo/commands.txt | 119 +
.../demo/mp4/01-getting-started-1-2.txt | 4 +
.../demo/mp4/02-getting-started-3.txt | 6 +
.../demo/mp4/03-getting-started-4.txt | 5 +
.../demo/mp4/04-getting-started-5.txt | 5 +
.../demo/mp4/05-getting-started-6.txt | 5 +
talks/jres-2022/demo/mp4/06-profile.txt | 9 +
talks/jres-2022/demo/mp4/07-generations.txt | 8 +
.../demo/mp4/08-multi-profiles-1.txt | 7 +
talks/jres-2022/demo/mp4/09-shell-ipython.txt | 14 +
talks/jres-2022/demo/mp4/do-chapters.py | 73 +
talks/jres-2022/demo/mp4/videos.txt | 9 +
talks/jres-2022/do-all.sh | 4 +
talks/jres-2022/do-clean.sh | 6 +
talks/jres-2022/do-pres.sh | 8 +
talks/jres-2022/do-supp.sh | 16 +
talks/jres-2022/src/channels.scm | 6 +
talks/jres-2022/src/contenu.tex | 2413 +++++++++++++++++
talks/jres-2022/src/example/config-vm-1.scm | 22 +
talks/jres-2022/src/example/config-vm-2.scm | 13 +
.../src/example/mock-define-python.scm | 9 +
.../jres-2022/src/example/some-python-bis.scm | 11 +
.../src/example/some-python-with-gcc7.scm | 13 +
talks/jres-2022/src/example/some-python.scm | 6 +
talks/jres-2022/src/header.tex | 86 +
talks/jres-2022/src/listings-scheme.tex | 97 +
talks/jres-2022/src/manifest.scm | 26 +
talks/jres-2022/src/presentation.tex | 70 +
talks/jres-2022/src/static/Guix-white.pdf | Bin 0 -> 8483 bytes
talks/jres-2022/src/static/LOGO-JRES-2022.png | Bin 0 -> 18956 bytes
talks/jres-2022/src/static/cafe-guix.png | Bin 0 -> 17311 bytes
.../jres-2022/src/static/forest-symlinks.pdf | Bin 0 -> 16418 bytes
talks/jres-2022/src/static/graph-python.png | Bin 0 -> 479843 bytes
.../static/guixhpc-logo-transparent-white.pdf | Bin 0 -> 8808 bytes
talks/jres-2022/src/static/u-paris.png | Bin 0 -> 7104 bytes
talks/jres-2022/src/supplement.tex | 282 ++
.../src/support-notes-additionnelles.tex | 58 +
.../support-notes-additionnelles.20220519.pdf | Bin 0 -> 3948392 bytes
talks/jres-2022/talk.20220519.pdf | Bin 0 -> 1077431 bytes
41 files changed, 3572 insertions(+)
create mode 100644 talks/jres-2022/.gitlab-ci.yml
create mode 100644 talks/jres-2022/README
create mode 100644 talks/jres-2022/demo/commands.txt
create mode 100644 talks/jres-2022/demo/mp4/01-getting-started-1-2.txt
create mode 100644 talks/jres-2022/demo/mp4/02-getting-started-3.txt
create mode 100644 talks/jres-2022/demo/mp4/03-getting-started-4.txt
create mode 100644 talks/jres-2022/demo/mp4/04-getting-started-5.txt
create mode 100644 talks/jres-2022/demo/mp4/05-getting-started-6.txt
create mode 100644 talks/jres-2022/demo/mp4/06-profile.txt
create mode 100644 talks/jres-2022/demo/mp4/07-generations.txt
create mode 100644 talks/jres-2022/demo/mp4/08-multi-profiles-1.txt
create mode 100644 talks/jres-2022/demo/mp4/09-shell-ipython.txt
create mode 100644 talks/jres-2022/demo/mp4/do-chapters.py
create mode 100644 talks/jres-2022/demo/mp4/videos.txt
create mode 100755 talks/jres-2022/do-all.sh
create mode 100755 talks/jres-2022/do-clean.sh
create mode 100755 talks/jres-2022/do-pres.sh
create mode 100755 talks/jres-2022/do-supp.sh
create mode 100644 talks/jres-2022/src/channels.scm
create mode 100644 talks/jres-2022/src/contenu.tex
create mode 100644 talks/jres-2022/src/example/config-vm-1.scm
create mode 100644 talks/jres-2022/src/example/config-vm-2.scm
create mode 100644 talks/jres-2022/src/example/mock-define-python.scm
create mode 100644 talks/jres-2022/src/example/some-python-bis.scm
create mode 100644 talks/jres-2022/src/example/some-python-with-gcc7.scm
create mode 100644 talks/jres-2022/src/example/some-python.scm
create mode 100644 talks/jres-2022/src/header.tex
create mode 100644 talks/jres-2022/src/listings-scheme.tex
create mode 100644 talks/jres-2022/src/manifest.scm
create mode 100644 talks/jres-2022/src/presentation.tex
create mode 100644 talks/jres-2022/src/static/Guix-white.pdf
create mode 100644 talks/jres-2022/src/static/LOGO-JRES-2022.png
create mode 100644 talks/jres-2022/src/static/cafe-guix.png
create mode 100644 talks/jres-2022/src/static/forest-symlinks.pdf
create mode 100644 talks/jres-2022/src/static/graph-python.png
create mode 100644 talks/jres-2022/src/static/guixhpc-logo-transparent-white.pdf
create mode 100644 talks/jres-2022/src/static/u-paris.png
create mode 100644 talks/jres-2022/src/supplement.tex
create mode 100644 talks/jres-2022/src/support-notes-additionnelles.tex
create mode 100644 talks/jres-2022/support-notes-additionnelles.20220519.pdf
create mode 100644 talks/jres-2022/talk.20220519.pdf

Toggle diff (73535 lines)
diff --git a/talks/jres-2022/.gitlab-ci.yml b/talks/jres-2022/.gitlab-ci.yml
new file mode 100644
index 0000000..6d7f55c
--- /dev/null
+++ b/talks/jres-2022/.gitlab-ci.yml
@@ -0,0 +1,52 @@
+stages:
+  - tex2pdf
+  - deploy
+
+pdf:
+  image:
+    name: zimoun/jres
+  stage: tex2pdf
+  script:
+    - mkdir public && cd src
+    - rubber --pdf presentation.tex
+    - rubber --pdf support-notes-additionnelles.tex
+    - mv *.pdf ../public/
+  artifacts:
+    paths:
+      - public
+  only:
+    - main
+
+pages:
+  image:
+    name: zimoun/jres
+  stage: deploy
+  script:
+    - |
+      cat > public/index.html <<EOF
+      <?xml version="1.0" encoding="utf-8"?>
+      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+      <head>
+      <title>Reproductibilité des environnements logiciels avec GNU Guix</title>
+      <meta name="author" content="Simon Tournier" />
+      </head>
+      <body>
+      <div id="content" class="content">
+      <h1 class="title">Reproductibilité des environnements logiciels avec GNU Guix</h1>
+      <ul class="org-ul">
+      <li><a href="presentation.pdf">presentation.pdf</a></li>
+      <li><a href="support-notes-additionnelles.pdf">support-notes-additionnelles.pdf</a></li>
+      </ul>
+      </div>
+        <p>Simon Tournier</p>
+        <p>JRES 2022 - Marseille</p>
+      </body>
+      </html>
+      EOF
+  artifacts:
+    paths:
+      - public
+  only:
+    - main
diff --git a/talks/jres-2022/README b/talks/jres-2022/README
new file mode 100644
index 0000000..2785cb2
--- /dev/null
+++ b/talks/jres-2022/README
@@ -0,0 +1,110 @@
+# -*- mode:org -*-
+
+Original Git repo: https://gitlab.com/zimoun/jres22-tuto-guix
+SWH archive: https://archive.softwareheritage.org/swh:1:rev:8a378f2f833dd28ea71d38e7fc45bac10fe122d5
+
+Visible: https://zimoun.gitlab.io/jres22-tuto-guix/
+Web archive: https://web.archive.org/web/20220520150253/https://zimoun.gitlab.io/jres22-tuto-guix/
+
+This repository contains the all material to run the tutorial about Guix
+presented at [[https://www.jres.org/][JRES 2022]].  The language of the conference is French, thus this
+material is initially written in French.
+
+The version of the presentation for the D-day is tagged 'pres-d-day'
+corresponnding to commit 6ff987583173ab5a0bc65708f8bf2482c7390eb0.
+
+* Get PDF from source
+
+#+begin_src bash
+  cd src
+  guix time-machine -C channels.scm \
+       -- shell -C -m manifest.scm  \
+       -- rubber --pdf presentation.tex
+#+end_src
+
+* Record Gif
+
+#+begin_src bash
+  export PS1="\[\033[0;34m\]alice@laptop:\w$ \[\033[0;30m\] "
+
+  if [ -n "$GUIX_ENVIRONMENT" ]; then
+      export PS1="\[\033[0;34m\]alice@laptop:\w\[\033[0;30m\] [env]$ "
+  fi
+
+#+end_src
+
+#+begin_src bash
+  # Fix <https://issues.guix.gnu.org/51202#3>
+  # addition of: gtk+ gsettings-desktop-schemas
+  guix time-machine -C channels.scm                                \
+       -- shell peek ffmpeg         gtk+ gsettings-desktop-schemas \
+       -- peek
+#+end_src
+
+* Capture Video
+
+#+begin_src bash
+  guix time-machine -C channels.scm   \
+       -- shell obs                   \
+       -- obs
+#+end_src
+
+** Resolution (screen from desktop)
+  - 1920x1080 Base
+  - 1920x1080 Output
+  - Downscale filter: Bicubic (sharpened scaling, 16 samples)x
+  - Common FPS values 60
+
+** Recording / Streaming
+  - 2500 Kbps / audio bitrate 160
+  - Medium file size
+  - mp4
+  - x264
+
+* Chapters
+
+#+begin_src bash
+  guix time-machine -C channels.scm   \
+       -- shell ffmpeg python-minimal
+#+end_src
+
+
+Be careful, the Python help is a quick too simplistic script.
+
+#+begin_src bash
+  ffmpeg -i INPUT.mp4 -f ffmetadata META.txt
+  python3 do-chapters.py CHAPS.txt
+  cat META.txt CHAPS.txt.meta > CHAPS.meta
+  ffmpeg -i INPUT.mp4 -i CHAPS.meta -map_metadata 1 -codec copy OUTPUT.mp4
+#+end_src
+
+For each video, end with a title at video length time.
+
+* Merge videos
+
+#+begin_src bash
+  guix time-machine -C channels.scm   \
+       -- shell ffmpeg python-minimal
+#+end_src
+
+
+The file =videos.txt= contains the list of videos
+
+#+begin_src text
+  file 'test.mp4'
+  file 'test2.mp4'
+#+end_src
+
+#+begin_src bash
+  ffmpeg -f concat -safe 0 -i videos.txt -c copy demos.mp4
+#+end_src
+
+#+begin_src bash
+  ffmpeg -i INPUT.mp4 -f ffmetadata META.txt
+  python3 do-chapters.py CHAPS.txt CHAPS2.txt
+  cat META.txt merged.meta > video.meta
+  ffmpeg -i video.mp4 -i video.meta -map_metadata 1 -codec copy video_chapters.mp4
+#+end_src
+
+The Python script =do-chapters.py= reads, at the finest, seconds when it would
+require a finer scale.  Especially, see =08-multi-profiles-1.txt=.
diff --git a/talks/jres-2022/demo/commands.txt b/talks/jres-2022/demo/commands.txt
new file mode 100644
index 0000000..a2f06a7
--- /dev/null
+++ b/talks/jres-2022/demo/commands.txt
@@ -0,0 +1,119 @@
+# -*- mode:org -*-
+
+* 01
+
+guix search dynamically-typed programming language
+guix show python
+
+* 02
+
+which python3
+python3
+guix install python
+guix package --search-paths
+
+which python3
+
+GUIX_PROFILE=/home/alice/.guix-profile
+. $GUIX_PROFILE/etc/profile
+which python3
+python3
+>> import this
+
+* 03
+
+guix insall python-ipython python-numpy
+guix package --search-paths
+which python3
+python3
+import numpy as np
+x = np.linspace(0,1,20)
+which ipython
+ipython
+import numpy as np
+x = np.linspace(0,1,20)
+
+* 04
+
+which ipython
+guix remove python-ipython
+which ipython
+ipython
+
+* 05
+
+guix install python-matplotlib python-scipy
+guix package --search-paths
+python3 plot.py
+
+* 06
+
+env | grep ^PATH
+GUIX_PROFILE=$HOME/.guix-profile
+cat $GUIX_PROFILE/etc/profile
+guix package --search-paths
+guix package --search-paths=prefix
+guix package --search-paths=suffix
+. GUIX_PROFILE/etc/profile # == eval $(guix package --search-paths=prefix)
+clear
+
+ls $GUIX_PROFILE
+guix install tree
+clear
+
+tree -L 1 $GUIX_PROFILE
+
+* 07
+
+guix package --list-generations
+CLICK
+
+which tree
+guix package --roll-back
+which tree
+tree
+
+guix package --list-generations
+CLICK
+
+which ipython
+guix package --switch-generations=2
+ipython
+guix package --list-generations
+
+guix package --switch-generation=5
+ipython
+
+* 08
+
+guix install python-ipython --profile=outils
+guix package --search-paths --profile=outils
+env | grep ^PATH
+eval $(guix package --search-paths=suffix --profile-outils)
+env | grep ^PATH
+CLICK
+which ipython
+tree -L 1 outils
+ls -l
+
+* 09
+
+ls -d */
+cd project-foo && ls
+python3 some-fun.py
+guix shell --manifest=some-python-pkgs.scm
+python3 some-fun.py
+^D
+guix shell -m some-python-pkgs.scm --pure
+ls
+cd ../project-bar
+^D
+guix shell -m some-python-pkgs.scm --container
+ls
+cd ../project-bar
+python3 some-fun.py
+^D
+guix shell -m some-python-pkgs.scm --container python-ipython
+ipython
+^D
+python3 some-fun.py
diff --git a/talks/jres-2022/demo/mp4/01-getting-started-1-2.txt b/talks/jres-2022/demo/mp4/01-getting-started-1-2.txt
new file mode 100644
index 0000000..2ffb66a
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/01-getting-started-1-2.txt
@@ -0,0 +1,4 @@
+00:00 -
+00:05 guix search
+00:32 guix show
+00:36 done 01
diff --git a/talks/jres-2022/demo/mp4/02-getting-started-3.txt b/talks/jres-2022/demo/mp4/02-getting-started-3.txt
new file mode 100644
index 0000000..7706020
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/02-getting-started-3.txt
@@ -0,0 +1,6 @@
+00:00 -
+00:22 guix install python
+00:38 guix package --search-paths #1
+00:57 GUIX_PROFILE
+01:10 python3 (from Guix)
+01:22 done 02
diff --git a/talks/jres-2022/demo/mp4/03-getting-started-4.txt b/talks/jres-2022/demo/mp4/03-getting-started-4.txt
new file mode 100644
index 0000000..366ff4f
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/03-getting-started-4.txt
@@ -0,0 +1,5 @@
+00:00 -
+00:12 guix install python-ipython python-numpy
+02:10 guix package --search-paths #2
+02:15 python3 with numpy
+03:14 done 03
diff --git a/talks/jres-2022/demo/mp4/04-getting-started-5.txt b/talks/jres-2022/demo/mp4/04-getting-started-5.txt
new file mode 100644
index 0000000..8a0e0b8
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/04-getting-started-5.txt
@@ -0,0 +1,5 @@
+00:00 -
+00:06 ipython
+00:13 guix remove python-ipython
+00:24 ipython (removed)
+00:30 done 04
diff --git a/talks/jres-2022/demo/mp4/05-getting-started-6.txt b/talks/jres-2022/demo/mp4/05-getting-started-6.txt
new file mode 100644
index 0000000..bb4dbee
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/05-getting-started-6.txt
@@ -0,0 +1,5 @@
+00:00 -
+00:12 guix install python-matplotlib python-scipy
+02:04 guix package --search-paths #3
+02:11 python3 plot.py
+02:18 done 05
diff --git a/talks/jres-2022/demo/mp4/06-profile.txt b/talks/jres-2022/demo/mp4/06-profile.txt
new file mode 100644
index 0000000..1994571
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/06-profile.txt
@@ -0,0 +1,9 @@
+00:00 -
+00:24 cat $GUIX_PROFILE
+00:34 breath
+00:42 guix package --search-paths=prefix
+00:47 guix package --search-paths=suffix
+01:11 eval $(guix package --search-paths=prefix)
+01:21 ls $GUIX_PROFILE
+01:35 tree $GUIX_PROFILE
+01:38 done 06
diff --git a/talks/jres-2022/demo/mp4/07-generations.txt b/talks/jres-2022/demo/mp4/07-generations.txt
new file mode 100644
index 0000000..eff2daf
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/07-generations.txt
@@ -0,0 +1,8 @@
+00:00 -
+00:07 guix package --list-generations     #1
+00:20 guix package --roll-back
+00:31 guix package --list-generations (4) #2
+00:54 guix package --switch-generation=2
+01:10 guix package --list-generations (2) #3
+01:20 guix package --switch-generation=5
+01:31 done 07
diff --git a/talks/jres-2022/demo/mp4/08-multi-profiles-1.txt b/talks/jres-2022/demo/mp4/08-multi-profiles-1.txt
new file mode 100644
index 0000000..0479e88
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/08-multi-profiles-1.txt
@@ -0,0 +1,7 @@
+00:00 -
+00:13 guix install --profile
+00:26 guix package --search-paths --profile
+00:54 eval $(guix package --search-paths=suffix --profile)
+01:23 tree profile
+01:27 ls -l profile
+01:29 done 08
diff --git a/talks/jres-2022/demo/mp4/09-shell-ipython.txt b/talks/jres-2022/demo/mp4/09-shell-ipython.txt
new file mode 100644
index 0000000..9846760
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/09-shell-ipython.txt
@@ -0,0 +1,14 @@
+00:00 -
+00:05 ls -d
+00:17 python3 some-fun.py (fail)
+00:29 guix shell --manifest
+00:37 python3 some-fun.py (success)
+00:41 guix shell --pure
+00:54 exit pure shell
+00:59 guix shell --container
+01:20 exit containerized shell
+01:26 guix shell python-ipython
+01:36 ipython in container
+01:47 exit
+01:55 python3 some-fun.py (fail again)
+01:59 done 09
diff --git a/talks/jres-2022/demo/mp4/do-chapters.py b/talks/jres-2022/demo/mp4/do-chapters.py
new file mode 100644
index 0000000..9a6a73b
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/do-chapters.py
@@ -0,0 +1,73 @@
+#!/bin/env python3
+
+import re
+
+def read_chapters(filename):
+    print("Read chapters from {}...".format(filename), sep=" ", end="")
+
+    with open(filename, 'r') as f:
+        chapters = list()
+        for line in f:
+            try:
+                x = re.match(r"(\d{2}):(\d{2}) (.*)", line)
+            except:
+                print("Error: excepted format 'XY:uv The title'")
+                return
+
+            mins = int(x.group(1))
+            secs = int(x.group(2))
+            title = x.group(3)
+
+            minutes = mins
+            seconds = secs + (minutes * 60)
+            timestamp = (seconds * 1000)
+            chap = {
+                "title": title,
+                "time": timestamp
+            }
+            chapters.append(chap)
+
+    print("done.")
+    return chapters
+
+
+def generate_meta(chapters, offset=0):
+    print("Generate meta...", sep=" ", end="")
+
+    text = ""
+    for i in range(len(chapters)-1): # Require unnecessary mm:ss Stop
+        chap = chapters[i]
+        title = chap['title']
+        start = chap['time'] + offset
+        end = chapters[i+1]['time']-1 + offset
+        text += f"""
+[CHAPTER]
+TIMEBASE=1/1000
+START={start}
+END={end}
+title={title}
+"""
+
+    print("done.")
+    return text, end
+
+if __name__ == "__main__":
+    import sys
+    try:
+        offset = 0
+        for i, filename in enumerate(sys.argv[1:]):
+            chapters= read_chapters(filename)
+            text, offset = generate_meta(chapters, offset)
+            if len(sys.argv) > 2:
+                out, perm = "merged.meta", 'a'
+                if i == 0:
+                    with open(out, 'w') as f:
+                        f.write('')
+            else:
+                out, perm = filename + '.meta', 'w'
+            with open(out, perm) as f:
+                f.write(text)
+            print("Wrote {}".format(out))
+    except:
+        print("Error.")
+        sys.exit(1)
diff --git a/talks/jres-2022/demo/mp4/videos.txt b/talks/jres-2022/demo/mp4/videos.txt
new file mode 100644
index 0000000..521a4e8
--- /dev/null
+++ b/talks/jres-2022/demo/mp4/videos.txt
@@ -0,0 +1,9 @@
+file '01-getting-started-1-2_raw.mp4'
+file '02-getting-started-3_raw.mp4'
+file '03-getting-started-4_raw.mp4'
+file '04-getting-started-5_raw.mp4'
+file '05-getting-started-6_raw.mp4'
+file '06-profile_raw.mp4'
+file '07-generations_raw.mp4'
+file '08-multi-profiles-1_raw.mp4'
+file '09-shell-ipython_raw.mp4'
diff --git a/talks/jres-2022/do-all.sh b/talks/jres-2022/do-all.sh
new file mode 100755
index 0000000..96a9d51
--- /dev/null
+++ b/talks/jres-2022/do-all.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+./do-pres.sh
+./do-supp.sh
diff --git a/talks/jres-2022/do-clean.sh b/talks/jres-2022/do-clean.sh
new file mode 100755
index 0000000..5121cbb
--- /dev/null
+++ b/talks/jres-2022/do-clean.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+for ext in vrb aux log nav out snm toc;
+do
+    find src/ -name "*.${ext}" -type f -print -exec rm {} \;
+done
diff --git a/talks/jres-2022/do-pres.sh b/talks/jres-2022/do-pres.sh
new file mode 100755
index 0000000..2e01d14
--- /dev/null
+++ b/talks/jres-2022/do-pres.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+here=$(pwd)
+cd src
+guix time-machine -C channels.scm \
+       -- shell -C -m manifest.scm  \
+       -- rubber --pdf presentation.tex
+cd $here
diff --git a/talks/jres-2022/do-supp.sh b/talks/jres-2022/do-supp.sh
new file mode 100755
index 0000000..08dacef
--- /dev/null
+++ b/talks/jres-2022/do-supp.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+here=$(pwd)
+cd src
+if [ -f presentation.snm ]
+then
+    guix time-machine -C channels.scm \
+         -- shell -C -m manifest.scm  \
+         -- rubber --pdf support-notes-additionnelles.tex
+fi
+cd $here
+
+if [ ! -f src/presentation.snm ]
+then
+    ./do-all.sh
+fi
diff --git a/talks/jres-2022/src/channels.scm b/talks/jres-2022/src/channels.scm
new file mode 100644
index 0000000..7df15c6
--- /dev/null
+++ b/talks/jres-2022/src/channels.scm
@@ -0,0 +1,6 @@
+(list (channel
+        (name 'guix)
+        (url "https://git.savannah.gnu.org/git/guix.git")
+        (branch "master")
+        (commit
+          "791069737c8c51582cc021438dae32eb0fb7b8e0")))
diff --git a/talks/jres-2022/src/contenu.tex b/talks/jres-2022/src/contenu.tex
new file mode 100644
index 0000000..c95066a
--- /dev/null
+++ b/talks/jres-2022/src/contenu.tex
@@ -0,0 +1,2413 @@
+\mode*        %Follow up of Beamer configuration when using ignorenonframetext.
+
+\begin{abstract}
+  Ce document s'attache à montrer quelques fonctionnalités de l'outil \href{https://guix.gnu.org}{GNU Guix}.
+  Il correspond à un tutoriel court d'une durée de 1 heure, cependant les
+  informations données ici peuvent prendre plus de temps.
+\end{abstract}
+
+\indent
+
+GNU Guix est un gestionnaire de paquets transactionnel et déclaratif.  Il
+implémente une discipline de gestion de paquet fonctionnelle.  Autrement dit,
+le processus de construction et d’installation des paquets est vu comme une
+fonction dans le sens mathématique du terme : cette fonction a des entrées
+(comme des scripts de construction, un compilateur, des bibliothèques ou
+dépendances) et renvoie une construction (comme un programme compilé).  En
+tant que fonction pure, son résultat ne dépend que de ses entrées ; par
+exemple, il ne peut pas faire référence à des logiciels ou des scripts qui
+n’ont pas été explicitement passés en entrée.  Par conséquent, une fonction de
+construction produit toujours le même résultat quand on lui donne le même
+ensemble d’entrée.  Les constructions sont dites reproductibles.
+
+\indent
+
+Basé sur ces fondations, Guix est un gestionnaire d'environnements logiciels :
+il peut utiliser les paquets qu’il connaît pour créer des environnements sous
+différentes formes, temporaires ou «~permanentes~».  Un environnement
+(collection de paquets) peut être déclaré par un manifeste pour générer un «
+profil~», chaque profil ayant son propre historique permettant de revenir en
+arrière ou en avant.  Un environnement temporaire peut aussi être créé à la
+volée, et optionnellement isolé (conteneur Linux), ou n'autorisant lecture,
+écriture ou réseau que spécifiquement.  Aussi, ces environnements peuvent être
+empaquetés dans des images Docker, Singularity ou simplement des archives
+repositionnables.  Pour finir, Guix permet, sur le même principe, la
+génération de «~machines virtuelles~» à partir d'une déclaration pouvant
+contenir un système d'exploitation.  Une fois installé, Guix ne nécessite pas
+de droits spécifiques pour manipuler ses différents environnements.
+
+\indent
+
+Dans ce tutoriel, nous nous proposons d'illustrer quelques spécificités de
+Guix.  Ce tutoriel fait echo à la présentation «~Administration système
+reproductible avec GNU Guix~» par Julien Lepiller au JRES 2019
+(\hrefsf{https://replay.jres.org/videos/watch/c77b3a44-b75f-4c10-9f39-8fb55ae096d7}{vidéo}
+et
+\hrefsf{https://conf-ng.jres.org/2019/document_revision_5343.html?download}{article}).
+
+\begin{center}
+  (Les termes en police \textsf{sans serif} sont des hyperliens.)
+\end{center}
+
+Ce tutoriel n'est qu'une introduction à l'outil Guix.  Nous avons pris le
+parti d'une approche aussi didactique que possible.  Ce document se veut une
+invitation et non pas un menu exhaustif.
+
+
+
+\thisslide{why}
+\begin{frame}<presentation>[label=why, fragile, plain, noframenumbering]{Pourquoi j'en suis venu à GNU Guix}
+  \begin{alertblock}{\(\approx\) 2010 \textbf{Thésard}}
+    Développement d'1-2 outils utilisant un gestionnaire de paquets
+    \uline{classique}
+
+    \hfill (Simulation numérique \texttt{C} et \texttt{Fortran} avec Debian / Ubuntu /
+    \texttt{apt})
+  \end{alertblock}
+
+  \begin{exampleblock}{\(\approx\) 2014 \textbf{Post-doc}}
+    Développement de 2-3 outils utilisant un gestionnaire de paquets sans
+    droit administrateur
+
+    \hfill (Simulation numérique \texttt{Python} et \texttt{C++} avec \texttt{conda})
+  \end{exampleblock}
+
+  \begin{block}{2016 \textbf{Ingénieur. de Recherche}}
+    \begin{itemize}
+    \item Administration d'un \emph{cluster} (\texttt{modulefiles})
+    \item Utilisation de 10+ outils pour un même projet
+    \end{itemize}
+
+    \hfill (Analyse «~bioinformatique~»)
+  \end{block}
+
+  \begin{center}
+    \textbf{Question : \alert{pourquoi cela fonctionne-t-il pour Alice et pas pour Bob ? Et vice-versa.}}
+  \end{center}
+\end{frame}
+
+De cette expérience, la question qui se dégage est la continuité du
+déploiement de l'environnement computationnel : comment développer sur son
+ordinateur portable, faire la mise au point sur son ordinateur de bureau et
+calculer massivement sur la grappe de calcul (\emph{cluster}) mutualisée sans
+perdre trop de temps sur des problèmes d'administration ?
+
+Notre motivation dans l'utilisation de Guix est d'apporter une réponse aux
+questions :
+
+\begin{itemize}
+\item Comment refaire demain là-bas ce que l'on a fait hier ici ?
+\item Quelle granularité sur la transparence ?
+\end{itemize}
+
+
+\paragraph{Pour information :}
+\begin{itemize}
+\item \hrefsf{https://docs.conda.io/en/latest/}{Conda} est un gestionnaire
+  d'environnement issu de la communauté Python et visant particulièrement
+  le contexte de logiciels scientifiques.
+\item La
+  \hrefsf{https://modules.readthedocs.io/en/latest/modulefile.html}%
+  {commande \texttt{module}}
+  est un outil largement répandu sur les grappes de calcul qui permet, en
+  jouant sur les variables d'environnement, de charger des outils spécifiques.
+\end{itemize}
+Nous précisons plus loin pourquoi nous ne les considérons pas satisfaisants.
+
+
+
+\begin{frame}<presentation>[plain, noframenumbering]{Ce que nous allons aborder}
+  \begin{center}
+    \begin{minipage}{0.7\textwidth}
+      \begin{itemize}
+      \item Comment refaire demain là-bas ce que l'on a fait hier ici ?
+      \item Quelle granularité sur la transparence ?
+      \end{itemize}
+    \end{minipage}
+  \end{center}
+
+  \setcounter{tocdepth}{2}
+  \tableofcontents
+\end{frame}
+
+
+\clearpage
+\section{Introduction}
+
+Dans cette section, nous cherchons à souligner le cadre des problèmes et des
+solutions existantes, ce qui permet, nous l'espérons d'avoir une idée où se
+positionne l'outil Guix.
+
+\subsection{Pourquoi seriez-vous intéressé par Guix ?}
+
+Comme nous allons parler de \emph{logiciels}, de \emph{paquets},
+\emph{dépendances}, puis de ce que fait un \emph{gestionnaire de paquets} pour
+créer des environnements computationnels, voici quelques définitions (dans des
+sens très larges) qui permettent de fixer les idées.
+
+
+\thisslide{start}
+\begin{frame}<presentation>[label=start, fragile]{Pour fixer les idées}
+  \begin{tabular}{rl}
+    \rule[-0.3cm]{0cm}{0.3cm} Logiciel
+    & code source ou programme \emph{binaire} associé
+    \\
+    \rule[-0.3cm]{0cm}{0.3cm} Paquet
+    & recette pour configurer, construire, installer un logiciel
+    \\
+    \rule[-0.3cm]{0cm}{0.3cm} Dépendance
+    & autre paquet nécessaire
+    \\
+    \rule[-0.6cm]{0cm}{0.6cm} Gestionnaire de paquets
+    &
+      \begin{minipage}{0.6\linewidth}
+        automatisation du processus traitant la
+        recette du paquet (et ses dépendances)
+      \end{minipage}
+    \\
+    Environnement computationnel
+    &
+      \begin{minipage}{0.6\linewidth}
+        pile de tous les logiciels nécessaires
+        pour la configuration, construction et
+        installation d'une collection de logiciels
+      \end{minipage}
+  \end{tabular}
+
+  \begin{exampleblock}{}
+    \begin{center}
+      Comment Alice et ses collaborateurs peuvent-ils obtenir le même environnement \\
+      pour \emph{calculer} avec Python et Numpy ?
+    \end{center}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Tuto avec un biais issu d’un environnement plus «~scientifique~» et moins «~ASR~»
+
+      \textbf{\uline{mais} \red{Guix s’adapte à tous les cas d’usage}}
+      \scriptsize{(ou presque)}
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+
+Les collaborateurs d'Alice sont Carole, Charlie et Bob.  Tous travaillent sur
+des machines différentes avec des distributions GNU/Linux différentes.  Dan
+n'a pas d'interaction avec Alice et a sous la main uniquement un document
+(article de recherche ou fichier de configuration).
+
+
+\thisslide{scenarii}
+\begin{frame}<presentation>[label=scenarii, fragile]{Scenarii}
+  \begin{itemize}
+  \item Alice utilise \texttt{python@3.9} et \texttt{numpy@1.20.3}
+    \vspace{-0.25cm}
+    \begin{center}
+      \begin{minipage}{0.75\linewidth}
+        \begin{exampleblock}{}
+\begin{verbatim}
+$ sudo apt install python python-numpy
+\end{verbatim}
+        \end{exampleblock}
+      \end{minipage}
+    \end{center}
+  \item Carole \textbf{collabore} avec Alice\ldots{}
+    mais utilise \texttt{python3.8} et \texttt{numpy@1.16.5} pour un autre
+    projet
+    \vspace{-0.6cm}
+    \begin{center}
+      \begin{minipage}{0.75\linewidth}
+        \begin{exampleblock}{}
+\begin{verbatim}
+$ apt-cache madison python-numpy
+python-numpy | 1:1.16.5-2ubuntu7 | ...
+\end{verbatim}
+        \end{exampleblock}
+      \end{minipage}
+    \end{center}
+  \item Charlie \textbf{mets à jour} son système et \textbf{tout est cassé}
+    \vspace{-0.25cm}
+    \begin{center}
+      \begin{minipage}{0.75\linewidth}
+        \begin{exampleblock}{}
+\begin{verbatim}
+$ sudo apt upgrade
+The following packages have unmet dependencies:
+E: Broken packages
+\end{verbatim}
+        \end{exampleblock}
+      \end{minipage}
+    \end{center}
+  \item Bob utilise les \textbf{\alert{mêmes} versions} qu'Alice mais n'a
+    \textbf{pas le \alert{même} résultat}
+  \item Dan essaie de \textbf{rejouer plus tard} le scénario d'Alice
+    mais rencontre l'\alert{enfer des dépendances}
+    \begin{center}
+      \begin{minipage}{0.75\linewidth}
+        \href{http://repeatability.cs.arizona.edu}%
+        {Repeatability in Computer Science (lien)}
+      \end{minipage}
+    \end{center}
+  \end{itemize}
+\end{frame}
+
+\begin{itemize}
+\item Qui n’a pas été dans la situation de Carole qui devait installer
+  plusieurs versions d'un même logiciel ?  Et ces versions peuvent
+  entrer en conflit.  En général, par défaut, une distribution Linux
+  installe uniquement une seule version d'un logiciel avec toutes ses
+  dépendances.  Le problème est l'endroit où résident ces logiciels, par
+  défaut le dossier nommé \texttt{/usr/}, et il ne peut pas y
+  avoir deux exécutables, par exemple \texttt{python3}, à deux versions
+  différentes, par exemple \texttt{3.9} et \texttt{3.10}.  Il faut donc un logiciel
+  externe qui s'occupe de la gestion de \uline{différentes versions} (et leurs
+  dépendances).
+\item Qui n'a pas été dans la situation de Charlie la veille d'un évènement
+  important et plus rien ne fonctionnait ?  À ma connaissance, cette
+  difficulté de \uline{mise à jour} est une difficulté des administrateurs
+  systèmes de machine partagée : une fois la mise à jour faite, s'il y a
+  de la casse, pas de possibilités de \uline{revenir en arrière}.
+\item Qui n'a pas été dans la situation de Bob «~pourquoi cela ne fonctionne
+  pas pour moi, et pourtant tout est pareil~» ?  Car peut-être que les
+  versions \texttt{python} et \texttt{numpy} de Bob sont bien les mêmes que
+  celles d’Alice, mais le problème est : est-ce bien le cas pour toutes les
+  dépendances et toutes les dépendances de dépendances ?
+\item Qui n’a pas été dans la situation de Dan en lisant un article
+  scientifique ou un tutoriel ou une documentation ?  Le problème est qu’il
+  est difficile de s’assurer que la liste des logiciels requis (ainsi que
+  toutes les dépendances et leurs dépendances) sont à la bonne version sur
+  deux systèmes différents à deux moments différents.
+\end{itemize}
+
+Pour résumer, les problèmes sont :
+
+\begin{enumerate}
+\item installer le logiciel ainsi que toutes les dépendances,
+\item installer plusieurs versions d’un même logiciel,
+\item capturer l’état complet du système.
+\end{enumerate}
+
+
+
+\thisslide{solutions}
+\begin{frame}<presentation>[label=solutions, fragile]{Solution(s)}
+  \begin{enumerate}
+  \item gestionnaire de paquets : APT (Debian/Ubuntu), YUM (RedHat), etc.
+  \item gestionnaire d'environnements : Modulefiles, Conda, etc.
+  \item conteneur : Docker, Singularity
+  \end{enumerate}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Guix = \#1 + \#2 + \#3
+    \end{center}
+  \end{alertblock}
+
+  \begin{description}
+    \item[APT, Yum] Difficile de faire coexister plusieurs versions ou
+      revenir en arrière ?
+    \item[Modulefiles] Comment sont-ils maintenus ? (qui les utilise sur son
+      \emph{laptop} ?)
+    \item[Conda] Quelle granularité sur la transparence ? (qui sait comment a
+      été produit PyTorch dans \texttt{pip install torch} ?
+      \href{http://hpc.guix.info/blog/2021/09/whats-in-a-package/}%
+      {\scriptsize{(lien)}})
+      \item[Docker] Dockerfile basé sur APT, YUM etc.
+        \begin{minipage}{1.0\linewidth}
+        \begin{exampleblock}{}
+\begin{verbatim}
+RUN apt-get update && apt-get install
+\end{verbatim}
+        \end{exampleblock}
+        \end{minipage}
+    \end{description}
+\end{frame}
+
+Rappelons brièvement les termes des solutions :
+\begin{itemize}
+\item un gestionnaire de paquets automatise le processus pour configurer,
+  construire et installer le logiciel ainsi que toutes les dépendances,
+\item un gestionnaire d'environnements autorise la coexistence de plusieurs
+  versions d'un même logiciel, le plus souvent en jouant sur les variables
+  d’environnement,
+\item un conteneur fournit tous les binaires pour être transporté d’une
+  machine à l’autre et donc fonctionne indépendamment de la configuration de
+  la machine hôte.
+\end{itemize}
+
+\bigskip
+
+La double difficulté majeure est :
+\begin{itemize}
+\item d’une part, un contrôle fin dans la production du binaire,
+\item d’autre part, la reproductibilité, au sens «~refaire ailleurs~» (autre
+  configuration, autre moment).
+\end{itemize}
+
+\medskip
+
+Guix, en étant un gestionnaire d’environnements sous \emph{stéroïde}, tente de
+répondre à cette double difficulté.
+
+
+
+\thisslide{interet}
+\begin{frame}<presentation>[label=interet]{Concrètement}
+  Soit
+  \begin{itemize}
+  \item vous vous reconnaissez dans un scénario,
+  \item vous n'êtes pas satisfait par une des solutions,
+  \item vous êtes curieux d'un nouveau outil.
+  \end{itemize}
+
+  \bigskip
+
+  Dans les 3 cas, ce tutoriel illustre :
+
+  \begin{itemize}
+  \item Comment faire en pratique avec GNU Guix.
+  \item Quel est le problème à traiter ?  Et pourquoi c'est compliqué.
+  \end{itemize}
+
+  \begin{alertblock}{}
+      \begin{center}
+        Guix est un gestionnaire d'environnements sous \emph{stéroïde}
+      \end{center}
+    \end{alertblock}
+
+    Ce tutoriel est complémentaire de la présentation de Julien Lepiller en
+    2019
+    (\href{https://replay.jres.org/videos/watch/c77b3a44-b75f-4c10-9f39-8fb55ae096d7}{vidéo}
+    et
+    \href{https://conf-ng.jres.org/2019/document_revision_5343.html?download}{article})
+\end{frame}
+
+
+
+\thisslide{steroide}
+\begin{frame}<presentation>[label=steroide]{\emph{Stéroïde} signifie\dots}
+  \begin{tabular}{lr}
+    un \uline{\textbf{gestionnaire de paquets}}
+    & (comme APT, Yum, etc.)
+    \\
+    \ \ transactionnel et déclaratif
+    & (revenir en arrière, versions concurrentes)
+    \\
+    \ \ \ \ qui produit des \uline{\textbf{\emph{packs} distribuables}}
+    & (conteneur Docker ou Singularity)
+    \\
+    \ \ \  \ \ \ qui génèrent des \textbf{\uline{\emph{machines virtuelles}} isolées}
+    & (\emph{à la} Ansible ou Packer)
+    \\
+    \ \ \ \ \ \ \ \ sur lequel on construit une distribution Linux
+    & (nous n'en parlerons pas)
+    \\
+    \ \ \ \ \ \ \ \ \ \ \dots et aussi une bibliothèque Scheme\dots
+    & (nous n'en parlerons pas, non plus)
+  \end{tabular}
+
+  \begin{alertblock}{}
+    Ce tuto court est un coup de projecteur sur :
+    \begin{itemize}
+    \item la gestion de paquets \emph{fonctionnelle}
+    \item création de \emph{machines virtuelles}
+    \end{itemize}
+    \begin{center}
+      \textbf{\alert{Ce que nous présentons fonctionne sur n'importe quelle
+          distribution Linux}}
+    \end{center}
+  \end{alertblock}
+  \begin{flushright}
+    \small{%
+      (Facile à essayer\dots)
+    }
+  \end{flushright}
+\end{frame}
+
+\paragraph{Convention.} Nous notons \texttt{foo@1.2} pour le logiciel
+\texttt{foo} à la version \texttt{1.2}.  Usuellement, une ligne commençant par
+\texttt{\$} (dollar) représente une commande \emph{shell}, ainsi que par la suite
+toutes les lignes commençant par \texttt{guix}.  La commande \texttt{sudo}
+signifie des droits administrateur.
+
+
+\clearpage
+\subsection{Installation de GNU Guix}
+
+Il est important de noter en tout premier lieu le
+\hrefsf{https://guix.gnu.org/en/manual/devel/fr/}{manuel} (traduit en français)
+qui fournit le point d’entrée pour l’installation et la configuration.  La
+version de référence est la \hrefsf{https://guix.gnu.org/en/manual/devel/en/}%
+{version anglaise}.
+
+\subsubsection{Installation recommandée}
+
+Nous recommandons d’installer Guix sur une distribution Linux, voir la section
+\href{https://guix.gnu.org/en/manual/devel/fr/guix.fr.html#Installation-binaire}%
+{\textsf{Installation binaire}} du manuel.  En tant que \texttt{root} (avec
+les droits administrateur), il faut exécuter les commandes :
+
+\begin{verbatim}
+cd /tmp
+wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+chmod +x guix-install.sh
+./guix-install.sh
+\end{verbatim}
+
+\paragraph{Attention.}  Nous vous recommandons de parcourir le script \emph{shell}
+\texttt{guix-install.sh} et de ne pas l’exécuter aveuglément.  Ce script fait
+principalement 2 choses :
+\begin{enumerate}
+\item télécharge, installe et configure le démon \texttt{guix-daemon},
+\item crée les différents dossiers nécessaires au bon fonctionnement.
+\end{enumerate}
+
+\paragraph{Cette installation n'interfère en rien avec la distribution hôte.}
+Pour «~désinstaller~» Guix, il suffit de supprimer les dossiers \texttt{/gnu},
+\texttt{/var/guix}, \texttt{\$HOME/\{.cache,.config\}/guix},
+\texttt{/root/.config/guix} et les mécanismes de complétion de \emph{shell}
+(p. ex. \texttt{/etc/bash\_completion.d}).
+
+\paragraph{Remarques.} Pour une utilisation plus agréable, nous recommandons
+d’au\-to\-ri\-ser les substituts binaires (voir la section
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Substituts}{\textsf{Substituts}})
+lors de l’installation via le script.  Nous recommandons aussi de configurer
+\emph{Name Service Switch} (\texttt{nscd}) sur la distribution hôte (voir la
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Name-Service-Switch-1}{\textsf{section}}
+du manuel pour une explication du pourquoi).
+
+\medskip
+
+Pour des constructions locales, il est aussi possible d’utiliser un mécanisme
+de déchargement (\emph{offload}) sur une machine tierce.  Nous renvoyons à la
+section du manuel
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#R_00e9glages-du-d_00e9chargement-du-d_00e9mon}%
+{\textsf{Utiliser le dispositif de déchargement}}.
+
+\medskip
+
+Pour finir, nous recommandons d’installer le paquet \texttt{glibc-locales},
+dans le \emph{profil} \texttt{root} ainsi que dans le \emph{profil}
+utilisateurs (voir la section
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Regionalisation}%
+{\textsf{Régionalisation}}).
+\begin{center}
+  \texttt{sudo guix install glibc-locales}
+
+  \texttt{guix install glibc-locales}
+\end{center}
+et d’exporter la variable d’environnement
+\begin{center}
+  \texttt{export GUIX\_LOCPATH=\$HOME/.guix-profile/lib/locale}
+\end{center}
+ ce qui évite des messages de \emph{warning}.
+
+
+
+\begin{frame}<presentation>[fragile]{\emph{distro externe}}
+  \begin{alertblock}{}
+  \begin{center}
+    Guix s’installe sur \textbf{\uline{n’importe quelle distribution}} Linux récente.
+  \end{center}
+  \end{alertblock}
+  Il faut les droits administrateur (\texttt{root}) pour l’installation.
+
+  \begin{exampleblock}{}
+\begin{verbatim}
+$ cd /tmp
+$ wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+$ chmod +x guix-install.sh
+$ sudo ./guix-install.sh
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{center}
+    (Quelques réglages supplémentaires sont expliqués dans les notes
+    additionnelles)
+  \end{center}
+
+  Pour commencer :
+  \begin{center}
+    \begin{minipage}{0.75\linewidth}
+\begin{verbatim}
+$ guix help
+\end{verbatim}
+    \end{minipage}
+  \end{center}
+
+\end{frame}
+
+\subsubsection{Autres méthodes d'installation}
+
+\paragraph{Guix System, Guix dans une VM.}
+
+Il nous apparaît plus aisé de commencer par installer Guix sur une
+distribution Linux et d’utiliser l’outil comme gestionnaire de paquets sous
+\emph{stéroïde}.  Mais les plus téméraires d’entre vous peuvent vouloir
+installer Guix comme système d’exploitation complet ou dans une machine
+virtuelle.  Dans ce cas, le manuel fournit une
+\hrefsf{https://guix.gnu.org/en/manual/devel/fr/guix.fr.html\#Installation-du-syst\_00e8me}%
+{section} dédiée. Nous recommandons d’utiliser
+l’\hrefsf{https://guix.gnu.org/en/manual/devel/fr/guix.fr.html\#Installation-graphique-guid\_00e9e}%
+{installateur graphique}.
+
+\medskip
+
+Par ailleurs, il est à noter que Guix n’a pas un modèle stable versus
+expérimental mais des révisions considérées comme \emph{release},
+intensivement testées mais ne recevant pas de correctifs.  Actuellement, c’est
+l’étiquette
+\hrefsf{https://guix.gnu.org/en/blog/2021/gnu-guix-1.3.0-released/}{v1.3.0}
+sortie au mois de mai 2021.  Il est possible de télécharger des images soit
+de la version dite «~\hrefsf{https://guix.gnu.org/fr/download/}{standard}~»
+(v1.3.0), soit des images générées à partir des derniers
+\hrefsf{https://guix.gnu.org/fr/download/latest/}{développements}.  Chacun a ses
+avantages et inconvénients :
+\begin{description}
+\item[avantage «~standard~» :] bien testé,
+\item[inconvénient «~standard~» :] potentiel manque de substituts binaires,
+\item[avantage «~derniers développements~» :] inclus les correctifs depuis le
+  dernier étiquetage,
+\item[inconvénient «~derniers développements~» :] potentiellement instable ;
+  ça peut fonctionner parfaitement comme cela peut être cassé.
+\end{description}
+
+\paragraph{Installation via le paquet Debian.}  Nous n’avons pas intensivement
+testé cette méthode d’installation, c’est pourquoi nous la ne recommanderions
+pas.  Mais elle est peut-être d’intérêt pour certains d’entre vous.  La
+version Debian \hrefsf{https://packages.debian.org/bullseye/guix}{Bullseye}
+fournit le paquet Guix :
+\begin{verbatim}
+$ sudo apt install guix
+\end{verbatim}
+
+\paragraph{Installation sur une grappe de calcul.}  Les grappes de calcul
+(\emph{cluster}) ont souvent des configurations très spécifiques, nous
+renvoyons à cette
+\hrefsf{https://hpc.guix.info/blog/2017/11/installing-guix-on-a-cluster/}{explications}
+pour les points essentiels.  Sinon, nous recommandons de prendre contact avec
+la communauté via p. ex. \texttt{guix-science@gnu.org}.
+
+\subsubsection{Révision de Guix pour ce tutoriel}
+
+Ce tutoriel devrait être pouvoir être joué quelque soit la révision.
+Cependant, il est possible que les exemples fournis évoluent ; comme les
+versions des paquets Python ou autres.  La commande, en tant qu’utilisateur
+sans privilège particulier,
+
+\begin{center}
+  \texttt{\$ guix pull -{}-commit=eb34ff1}
+\end{center}
+
+permet de se placer dans l’exact même révision que celle utilisée lors de
+l’écriture de ce document.
+
+\paragraph{Remarques.}  Les
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Serveur-de-substituts-officiel}%
+{\textsf{fermes de substituts officielles}} n’étant pas des ressources illimitées, il
+est possible que les substituts ne soient plus disponibles dans quelques mois
+ou années après mai 2022.  Le projet Guix s’efforce autant que possible
+d’assurer la conservation des substituts binaires qu’il produit et nous
+espérons que cette remarque soit caduque.
+
+\medskip
+
+Dans le cas d’absence de substituts binaires, cela signifie que la commande
+précédente (\texttt{pull}) risque de prendre plus de temps, mais surtout que
+les exemples utilisant les piles logicielles risquent de compiler depuis les
+sources toutes les dépendances (binaires) manquantes de la dite pile.  D’un
+côté, c’est pour cela que Guix est un outil puissant pour la reproductibilité.
+
+\medskip
+
+D’un autre côté, si les substituts ne sont plus disponibles, alors il sera
+difficile de suivre ce tutoriel avec votre ordinateur portable et nous
+conseillons donc d’utiliser un
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#R_00e9glages-du-d_00e9chargement-du-d_00e9mon}%
+{\textsf{déchargement (\emph{offload})}}.  Ou de saisir l’esprit général et
+d’utiliser vos propres exemples avec substituts.
+
+
+\begin{frame}<presentation>[plain,fragile,noframenumbering]{}
+
+  \vfill{}
+  \begin{center}
+    \textbf{Comment faire la gestion de paquets ?}
+  \end{center}
+
+  \vfill{}
+  \begin{flushright}
+    (Exemple : Alice sans privilège particulier)
+  \end{flushright}
+
+  \vfill{}
+  \begin{minipage}{0.57\linewidth}
+    \begin{alertblock}{}
+      \begin{itemize}
+      \item Démos avec des outils du «~\emph{monde scientifique}~»
+      \item Guix représente 20k+ paquets
+        \scriptsize{(constante progression)}\normalsize{}
+      \item Cela serait identique pour d'autres outils\\
+        \hfill{} comme Nginx, LDAP, SSH, etc.
+      \end{itemize}
+    \end{alertblock}
+  \end{minipage}
+\end{frame}
+
+
+\clearpage
+\section{Gestion de paquets}
+
+À partir de cette section, nous considérons une installation fonctionnelle de
+l’outil Guix sur une distribution Linux récente.  Toutes les commandes seront
+exécutées dans un terminal en tant qu’utilisateur régulier (sans droit
+d’administration particulier).  La révision de Guix utilisée est
+\texttt{eb34ff1}.
+
+\medskip
+
+Nous recommandons la lecture de la section
+«~\href{https://guix.gnu.org/en/manual/devel/fr/guix.fr.html\#Pour-d\_00e9marrer}{Pour
+  démarrer}~» du manuel.
+
+\subsection{Utilisation de \texttt{guix package}}
+
+Guix est avant tout un gestionnaire de paquets, c.-à-d. que Guix automatise le
+processus pour configurer, construire et installer le logiciel ainsi que
+toutes les dépendances.  Les fonctionnalités de gestion de paquets sont
+données par la commande \texttt{guix package}.
+
+
+\begin{frame}<presentation>[fragile]{Commandes basiques}
+  \begin{center}
+    Exemple : outils scientifiques classiques en Python
+  \end{center}
+
+  \bigskip
+
+  \begin{center}
+    (\texttt{demo/getting-started})
+  \end{center}
+\end{frame}
+
+
+
+\thisslide{cli-basic}
+\begin{frame}<presentation>[label=cli-basic, fragile]{Commandes basiques : Résumé}
+  \begin{exampleblock}{}
+    \begin{verbatim}
+guix search dynamically-typed programming language # 1.
+guix show    python                                # 2.
+guix install python                                # 3.
+guix install python-ipython python-numpy           # 4.
+guix remove  python-ipython                        # 5.
+guix install python-matplotlib python-scipy        # 6.
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{center}
+    alias de \texttt{guix package}, p. ex. \verb+guix package --install+
+  \end{center}
+
+  \begin{alertblock}{Transactionnel}
+\begin{verbatim}
+guix package --install python                                    # 3.
+guix package --install python-ipython python-numpy               # 4.
+guix package -r python-ipython -i python-matplotlib python-scipy # 5. & 6.
+\end{verbatim}
+  \end{alertblock}
+\end{frame}
+
+Les commandes précédentes sont des alias de la commande \texttt{guix package}.
+
+\begin{center}
+  \begin{tabular}{clcl}
+    $1.$ & \texttt{guix search}  & $\leftrightarrow$ & \texttt{guix package -{}-search=}\\
+    $2.$& \texttt{guix show}    & $\leftrightarrow$ & \texttt{guix package -{}-show=}\\
+    $3.$& \texttt{guix install} & $\leftrightarrow$ & \texttt{guix package -{}-install=}\\
+    $4.$& \texttt{guix remove}  & $\leftrightarrow$ & \texttt{guix package -{}-remove=}\\
+  \end{tabular}
+\end{center}
+
+Pour de plus amples informations sur chacune des commandes, se référer au
+manuel (section
+\hrefsf{https://guix.gnu.org/en/manual/devel/fr/guix.fr.html\#Invoquer-guix-package}%
+{Invoquer \texttt{guix package}}).  En quelques mots :
+
+\begin{enumerate}
+\item \texttt{guix search} : Recherche dans tous les paquets disponibles les
+  termes \texttt{dynamically-typed programming language} dans les noms,
+  synopsis et descriptions des paquets.
+\item \texttt{guix show} : Affiche les informations relatives au paquet : nom, version,
+  dépendances, synopsis, description, etc.  Par convention si aucune
+  version n’est donnée, il choisit la dernière.
+\item \texttt{guix install} : Installe le paquet \texttt{python}, par
+  convention si aucune version n’est donnée, il choisit la dernière.
+\item Installe les paquets \texttt{python-ipython python-numpy}.
+\item \texttt{guix remove} : Supprime l’installation du paquet \texttt{python-ipython}.
+\item Installe les deux autres paquets \texttt{python-matplotlib python-scipy}.
+\end{enumerate}
+
+Il est important de noter que les opérations d'installation / suppression
+sont transactionnelles.  D'une part, une action (transaction) peut comporter
+plusieurs opérations.  D'autre part, cette action (transaction) transforme un
+état dans un autre et ces états sont sauvegardés (voir \emph{génération} et
+la {Gestion de \emph{profil}}, section \textsf{\ref{sec:profil}}) ; en
+d'autres termes il est toujours possible de défaire une action (transaction).
+
+
+
+\thisslide{pkg-man}
+\begin{frame}<presentation>[label=pkg-man]{Guix, un gestionnaire de paquets comme les autres ?}
+  \begin{alertblock}{}
+    \begin{itemize}
+    \item Interface \emph{ligne de commande} comme les autres gestionnaires de
+      paquets
+    \item Installation/suppression sans privilège particulier
+    \item Transactionnel (= pas d'état «~\emph{cassé}~»)
+    \item \emph{Substituts} binaires (téléchargement d'éléments pré-construits)
+    \end{itemize}
+  \end{alertblock}
+  \begin{center}
+    \textbf{Trois fonctionnalités puissantes :}
+  \end{center}
+
+  \begin{exampleblock}{}
+    \begin{itemize}
+    \item Les \emph{profils} et leur composition
+    \item Gestion déclarative
+    \item Environnement isolé à la volée
+    \end{itemize}
+  \end{exampleblock}
+\end{frame}
+
+Toutes ces commandes ressemblent très fortement à toutes celles d’autres
+gestionnaires de paquets, comme \texttt{apt} (Debian/Ubuntu) ou \texttt{yum}
+(RedHat).  À la différence qu'il ne faut pas de droits d'administration
+particuliers pour installer des paquets.
+
+\medskip
+
+Nous allons maintenant illustrer trois fonctionnalités qui font de Guix le
+couteau suisse des gestionnaires d'environnement.  Les \emph{profils}
+permettent de garder sous contrôle l'installation d'outils (paquets)
+potentiellement en conflit.  La \emph{gestion déclarative} permet de
+configurer les \emph{profils} dans un style de programmation fonctionnelle.
+Pour finir, nous verrons la création à la volée d'un environnement
+computationnel et optionnellement isolé.
+
+\clearpage
+\subsection{Gestion de \emph{profil}}
+\label{sec:profil}
+
+Un notion essentielle dans l’utilisation de Guix est la notion de
+\emph{profil} : un répertoire contenant les paquets installés.
+
+
+\thisslide{profil-default}
+\begin{frame}<presentation>[label=profil-default, fragile]{Le \emph{profil} par défaut}
+  Les commandes d’installation précédentes finissent avec le conseil :
+  \begin{exampleblock}{}
+\begin{verbatim}
+hint: Consider setting the necessary environment variables by running:
+
+     GUIX_PROFILE="/home/alice/.guix-profile"
+     . "$GUIX_PROFILE/etc/profile"
+
+Alternately, see `guix package --search-paths -p "$HOME/.guix-profile"'.
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      \texttt{\$HOME/.guix-profile} est le \emph{profil} par défaut
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+Il n'est pas nécessaire d'entrer dans ces détails pour utiliser Guix mais ce
+tutoriel nous apparaît opportun pour décortiquer.
+
+\medskip
+
+Le profil par défaut est \texttt{\$HOME/.guix-profile} et nous pouvons
+afficher les variables d'environnements de ce profil avec la commande
+\begin{verbatim}
+$ guix package --search-paths -p $HOME/.guix-profile
+export PATH="/home/alice/.guix-profile/bin"
+export GUIX_PYTHONPATH="/home/alice/.guix-profile/lib/python3.9/site-packages"
+export GI_TYPELIB_PATH="/home/alice/.guix-profile/lib/girepository-1.0"
+export XDG_DATA_DIRS="/home/alice/.guix-profile/share"
+\end{verbatim}
+et ce profil est un lien symbolique
+\begin{verbatim}
+$ file $HOME/.guix-profile
+/home/alice/.guix-profile: symbolic link to
+                               /var/guix/profiles/per-user/alice/guix-profile
+\end{verbatim}
+et vers quoi pointe le lien ?
+\begin{verbatim}
+$ readlink -f $HOME/.guix-profile
+/gnu/store/jy24qk0vdgqvysnryldqn52b3fg03z10-profile
+\end{verbatim}
+où \texttt{jy24qk...} ressemble à un condensat (\emph{hash}) -- il condense
+toutes les entrées (dépendances) pour la construction dudit profil.  Le type
+du lien pointé est un dossier
+\begin{verbatim}
+$ file $(readlink -f ~/.guix-profile)
+/gnu/store/jy24qk0vdgqvysnryldqn52b3fg03z10-profile: directory
+\end{verbatim}
+et ce dossier contient
+\begin{verbatim}
+$ tree -L 1 $(readlink -f ~/.guix-profile)
+/gnu/store/jy24qk0vdgqvysnryldqn52b3fg03z10-profile
+|-- bin
+|-- etc
+|-- include
+|-- lib
+|-- manifest
+`-- share
+\end{verbatim}
+
+
+
+\thisslide{profil}
+\begin{frame}<presentation>[label=profil, fragile]{Mais qu'est-ce un \emph{profil} ?}
+  \begin{center}
+    Filesystem Hierarchy Standard (FHS) = norme de la hiérarchie des systèmes
+    de fichiers
+
+    \medskip
+
+    (définit l'arborescence et contenu des répertoires systèmes pour les systèmes Unix)
+  \end{center}
+
+  \begin{exampleblock}{}
+    \begin{Verbatim}
+      usr
+      |-- bin       Binaires exécutables
+      |-- etc       Fichiers de configuration
+      |-- include   Entêtes des bibliothèques partagées
+      |-- lib       Bibliothèques partagées
+      |-- share     Documentation entre autres
+    \end{Verbatim}
+  \end{exampleblock}
+
+  \begin{center} % XXXX: demo ?
+    \verb+ls $HOME/.guix-profile+
+  \end{center}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Un \emph{profil} est un répertoire contenant les paquets installés
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+\textbf{Conclusion}
+\begin{itemize}
+\item Un \emph{profil} contient les variables d’environnements ajustées.
+\item Un \emph{profil} est un lien symbolique.
+\item Un \emph{profil} pointe vers un dossier du dépôt (\emph{store}).
+\item Un \emph{profil} a la structure hiérarchique de FHS (comme \texttt{/usr/}).
+\end{itemize}
+
+Sans entrer dans les détails, le dépôt (\emph{store}) est monté à
+\texttt{/gnu/store} et il est dédupliqué, c.-à-d. qu'il pourrait être vu comme
+une forêt de liens symboliques (voir \textsf{Fig. \ref{fig:symlinks}}).
+\begin{figure}[!htb]
+  \centering
+  \includegraphics[width=0.7\textwidth]{static/forest-symlinks.pdf}
+  \caption{Forêt de liens symboliques \label{fig:symlinks}}
+\end{figure}
+L'exemple \textsf{Fig. \ref{fig:symlinks}} utilise des paquets qui sont classiques
+dans le contexte bioinformatique.  Cependant, on peut se poser la question des
+nombres 42 et 43.  Examinons ceci.
+\begin{verbatim}
+$ ls -l /var/guix/profiles/per-user/alice/guix-profile*
+/var/guix/profiles/per-user/alice/guix-profile -> guix-profile-5-link
+/var/guix/profiles/per-user/alice/guix-profile-0-link -> /gnu/store/0fv...-profile
+/var/guix/profiles/per-user/alice/guix-profile-1-link -> /gnu/store/vsr...-profile
+/var/guix/profiles/per-user/alice/guix-profile-2-link -> /gnu/store/k3c...-profile
+/var/guix/profiles/per-user/alice/guix-profile-3-link -> /gnu/store/dks...-profile
+/var/guix/profiles/per-user/alice/guix-profile-4-link -> /gnu/store/33d...-profile
+/var/guix/profiles/per-user/alice/guix-profile-5-link -> /gnu/store/jy2...-profile
+\end{verbatim}
+Par conséquent, l'historique est en quelque sorte conservé et Guix donne la
+possibilité de changer vers quoi les liens pointent.  Le profil lui-même est
+donc immutable.
+
+
+
+\thisslide{profil2}
+\begin{frame}<presentation>[label=profil2, fragile]{Exemples de fonctionnalités des \emph{profils}}
+
+  \begin{alertblock}{}
+    \begin{itemize}
+    \item Historique des paquets installés / supprimés (\verb+--list-generations+)
+    \item Retour en arrière (\verb+--roll-back+ or \verb+--switch-generations+)
+    \end{itemize}
+  \end{alertblock}
+
+  \begin{center}
+    (\texttt{demo/generations})
+  \end{center}
+
+  \begin{alertblock}{}
+    \begin{itemize}
+    \item Profils indépendants
+    \item Contrôle fin des variables d'environnement (\verb+--search-paths+)
+    \item Composition
+    \end{itemize}
+  \end{alertblock}
+
+  \begin{center}
+    (\texttt{demo/multi-profiles})
+  \end{center}
+\end{frame}
+
+Une première fonctionnalité est la conservation des actions (installation ou
+suppression) sur un profil.  Chaque action complète va créer une
+\emph{génération} (état) -- c'est en ce sens que Guix est transactionnel.  Il
+est donc possible de revenir en arrière (\texttt{roll-back}) ou de basculer
+vers une autre génération (\texttt{switch-generation}).  Par exemple,
+\begin{verbatim}
+$ guix package --list-generations
+Generation 1    avril 21 2022 20:22:28
+ + python            3.9.9   out     /gnu/store/sz7...-python-3.9.9
+
+Generation 2    avril 21 2022 20:38:30
+ + python-numpy      1.20.3  out     /gnu/store/s89...-python-numpy-1.20.3
+ + python-ipython    7.27.0  out     /gnu/store/rj0...-python-ipython-7.27.0
+
+Generation 3    avril 21 2022 20:41:38
+ - python-ipython    7.27.0  out     /gnu/store/rj0...-python-ipython-7.27.0
+
+Generation 4    avril 21 2022 21:05:14
+ + python-scipy      1.7.3   out     /gnu/store/x3x...-python-scipy-1.7.3
+ + python-matplotlib 3.5.1   out     /gnu/store/inl...-python-matplotlib-3.5.1
+
+Generation 5    avril 21 2022 21:19:34  (current)
+ + tree              2.0.2   out     /gnu/store/b9z..-tree-2.0.2
+\end{verbatim}
+où le symbole \texttt{+} représente un ajout de paquet, le symbole \texttt{-}
+une suppression pour chaque génération et \texttt{guix package
+  -{}-list-installed} fournit la liste complète des paquets de l'état courant.
+
+\medskip
+
+Il est possible de supprimer une (ou plusieurs) génération avec l'option
+\texttt{-{}-delete-generations}.  Nous renvoyons à la section du manuel sur le
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-gc}%
+{\textsf{ramasse-miette}} qui permet une gestion de ce que contient le dépôt
+(\emph{store}).
+
+\bigskip
+
+Pour finir, autant de profils que l'on souhaite peuvent être créés.  D'une
+part, chaque profil est indépendant et d'autre part, ils peuvent être
+composés. En d'autres termes
+\begin{verbatim}
+guix install python --profile=interpreteur
+guix install python-numpy --profile=bibliotheque
+eval $(guix package --search-paths=prefix -p interpreteur -p bibliotheque)
+\end{verbatim}
+et l'environnement résultant contiendra \texttt{python} et
+\texttt{python-numpy}.  D'autre part, l'ajout des variables d'environnement
+(\texttt{search-paths}) est contrôlable avec la valeur de l'argument
+\texttt{prefix}, \texttt{suffix} ou \texttt{exact} ; les variables
+d'en\-vi\-ron\-nement peuvent être, respectivement, placées avant ou après
+les valeurs actuelles, ou remplacer les valeurs actuelles.
+
+\bigskip
+
+Nous recommandons
+\href{https://guix.gnu.org/en/cookbook/fr/guix-cookbook.fr.html#Gestion-avanc_00e9e-des-paquets}%
+{\textsf{Les profils en pratique}} du livre de cuisine.
+
+
+\thisslide{profil3}
+\begin{frame}<presentation>[label=profil3, fragile]{\emph{Profil}, en résumé}
+  Les paquets sont installés dans un \emph{profil} qui est :
+  $\left. \text{\parbox{0.55\linewidth}{
+        \begin{itemize}
+        \item un lien symbolique,
+        \item pointant vers un élément du dépôt (\emph{store}),
+        \end{itemize}
+      }} \only<1|article:1>{\right.}\only<2-|article:0>{\right\}} $
+  \only<2-|article:0>{%
+  \hfill
+  \begin{minipage}{0.3\linewidth}
+    \begin{alertblock}{Dépôt (\emph{store})}
+      \begin{itemize}
+      \item Monté à \texttt{/gnu/store}
+      \item Dédupliqué
+      \end{itemize}
+    \end{alertblock}
+  \end{minipage}
+  }
+  $\left. \text{\parbox{1.0\linewidth}{
+  \begin{itemize}
+  \item et les éléments ont une structure hiérarchique type FHS (comme \texttt{/usr/}).
+  \end{itemize}
+  }} \right.$
+
+  \begin{exampleblock}{}
+    \begin{center}
+      On peut créer autant de profils que l’on souhaite
+    \end{center}
+  \end{exampleblock}
+
+  \vfill
+
+  \begin{alertblock}{}
+    \begin{center}
+      \textbf{Toutes les options de \texttt{guix package} s’appliquent à n’importe quel profil}
+    \end{center}
+  \end{alertblock}
+
+  \vfill
+
+  \begin{center}
+    \texttt{guix install python python-numpy -{}-profile=outils-python}
+  \end{center}
+
+\end{frame}
+
+
+\clearpage
+\subsection{Gestion déclarative}
+
+Il devient vite fastidieux de saisir à l'invite du \emph{shell} la liste des
+paquets et il apparaît naturel de vouloir sauvegarder cette liste dans un
+fichier.  Par exemple, il n'est pas rare de versionner cette liste.  Guix
+permet ceci, et un peu plus, au travers d'une gestion déclarative.
+
+
+\thisslide{declarative}
+\begin{frame}<presentation>[label=declarative, fragile]{Gestion déclarative}
+  \vspace{-0.3cm}
+  \begin{center}
+    déclaratif = fichier de configuration
+  \end{center}
+
+  \begin{exampleblock}{%
+      Un fichier \texttt{some-python.scm} peut contenir cette déclaration :%
+    }
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/some-python.scm}
+  \end{exampleblock}
+
+  \begin{center}
+    \verb+guix package --manifest=some-python.scm+
+  \end{center}
+  équivalent à
+  \begin{center}
+    \verb+guix install python python-matplotlib python-numpy python-scipy+
+  \end{center}
+\end{frame}
+
+Le fichier de configuration est usuellement appelé \texttt{manifest}.  Il
+contient la liste des paquets comme saisi à l'invite du \emph{shell}.  Cette liste
+est une spécification du manifeste à instancier dans le profil.
+
+
+\thisslide{declarative2}
+\begin{frame}<presentation>[label=declarative2, fragile]{Gestion \emph{déclarative} : remarques}
+  \begin{description}
+  \item[Version ?] Nous le verrons dans la suite
+    \medskip
+  \item[Langage ?] \emph{Domain-Specific Language} (DSL) basé sur
+    \href{https://fr.wikipedia.org/wiki/Scheme}%
+    {Scheme}
+    \href{https://fr.wikipedia.org/wiki/Lisp}%
+    {(«~langage fonctionnel Lisp~»)}%
+    \medskip
+    \begin{itemize}
+    \item \verb+(Oui (quand (= Lisp parenthèses) (baroque)))+
+      \medskip
+    \item Mais \uline{\textbf{continuum}} :
+      \begin{enumerate}
+      \item configuration (\texttt{manifest})
+      \item définition des paquets (ou services)
+      \item extension
+      \item le c\oe ur est écrit aussi en Scheme
+      \end{enumerate}
+    \end{itemize}
+  \end{description}
+  \begin{alertblock}{}
+    \begin{center}
+      Guix est \textbf{adaptable} à ses besoins
+    \end{center}
+  \end{alertblock}
+
+  \vfill
+
+  \footnotesize{%
+    \href{https://fr.wikipedia.org/wiki/Programmation_déclarative}{Déclaratif}
+    vs
+    \href{https://fr.wikipedia.org/wiki/Programmation_impérative}{Impératif}
+  } \hfill \scriptsize{%
+    (%
+    et non pas
+    % \hfill
+    Donnée inerte vs Programme%
+    )
+  }
+
+  \footnotesize{%
+    Programmation déclarative = programmation fonctionnelle ou descriptive (\LaTeX) ou logique (Prolog)
+  }
+\end{frame}
+
+Tout d'abord, il est important de noter que \emph{déclaratif} ne signifie pas
+donnée inerte, comme l'on pourrait retrouver avec un format comme
+\hrefsf{https://fr.wikipedia.org/wiki/Comma-separated_values}{CSV} ou
+\hrefsf{https://fr.wikipedia.org/wiki/YAML}{YAML}.  Le terme
+\hrefsf{https://fr.wikipedia.org/wiki/Programmation_déclarative}{déclaratif}
+(«~on décrit le \emph{quoi}, c'est-à-dire le problème~») s'oppose à
+\hrefsf{https://fr.wikipedia.org/wiki/Programmation_impérative}{impératif}
+(«~on décrit le \emph{comment}, c'est-à-dire la structure de contrôle
+correspondant à la solution~»).
+
+Avec le \textsf{Tableau \ref{tab:cloc}}, nous espérons illustrer ce
+\emph{continuum} dans Guix.
+
+\begin{table}[!htb]
+  \centering
+  \begin{tabular}{l|rrrr}
+    Language     &files &blank &comment &code\\
+    \hline
+    Scheme       &1105  &47761 &63485   &804643\\
+    ~\texttt{\textasciigrave-{}-~packages}  &538   &26787 &37972   &642152\\
+    ~\texttt{\textasciigrave-{}-~guix}      &272   &9699  &13346   &75577\\
+    ~\texttt{\textasciigrave-{}-~services}  &53    &3232  &2764    &26723\\
+    C++          & 50 &3425 &2198 &10635\\
+    make         &  4 &213  &292  &3087\\
+    Bourne Shell & 29 &850  &1213 &2891
+  \end{tabular}
+  \caption{\texttt{cloc -{}-exclude-ext=patch -{}-exclude-dir=po .}}
+  \label{tab:cloc}
+\end{table}
+
+Les paquets, les services et Guix lui-même sont écrits dans le même langage
+\hrefsf{https://fr.wikipedia.org/wiki/Scheme}{Scheme} (pour être précis
+\hrefsf{https://www.gnu.org/software/guile/}{GNU Guile}).  Ce langage est
+dérivé du langage fonctionnel Lisp et il facilite la définition de langages
+dédiés (DSL, \emph{domain-specific language}).
+
+
+
+\thisslide{trans-declarative}
+\begin{frame}<presentation>[label=trans-declarative, fragile]{Gestion déclarative : exemple de transformation
+    \small{%
+    (\href{https://fr.wikipedia.org/wiki/Machine_de_Rube_Goldberg}%
+    {machine de \smiley{Goldberg} \tiny{(lien)}})}} % \ddot\smile
+  \vspace{-0.3cm}
+  \begin{exampleblock}{}
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/some-python-bis.scm}
+  \end{exampleblock}
+  Guix DSL, \somevariable{\emph{variables}}, \someguile{Scheme} et \somestring{chaîne de caractères}.
+\end{frame}
+
+Par exemple, nous illustrons la capacité de manipuler
+\emph{programmatiquement} les paquets.  Avec le mots-clé \texttt{append}, deux
+listes sont concaténées.  Le mot-clé \texttt{map} applique une fonction aux
+éléments d’une liste et retourne une liste.  Le mot-clé \texttt{lambda}
+définit une fonction (anonyme).
+
+\medskip
+
+Ainsi, il est possible de déclarer des transformations à appliquer aux
+paquets.
+
+
+\clearpage
+\paragraph{Transformation de paquets.}
+Les
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Options-de-transformation-de-paquets}%
+{\textsf{transformations de paquets}} sont des options qui rendent possible la
+définition de variantes de paquets -- par exemple, des paquets construit en
+utilisant une
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#La-cha_00eene-d_0027outils-GCC}%
+{\textsf{chaîne d’outils}} différente que celle par défaut.
+
+
+\thisslide{transformation}
+\begin{frame}<presentation>[label=transformation, fragile]{Transformations de paquet : survol}
+    \begin{exampleblock}{}
+    \begin{center}
+      Comment utiliser GCC@7 pour compiler le paquet \texttt{python} ?
+    \end{center}
+  \end{exampleblock}
+
+  \begin{center}
+    Un paquet = recette pour configurer, construire, installer un logiciel
+
+    \medskip
+
+    (\texttt{./configure \&\& make \&\& make install})
+  \end{center}
+  La recette définit :
+  \begin{itemize}
+  \item un \blue{code source} et potentiellement des modifications \emph{ad-hoc} (\verb+patch+)
+  \item des \magenta{outils de construction} (compilateurs, moteur de
+    production etc., p. ex. \verb+gcc+, \verb+cmake+)
+  \item des \violet{dépendances}
+  \end{itemize}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Une transformation permet de les réécrire
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+
+
+\thisslide{cli-trans}
+\begin{frame}<presentation>[label=cli-trans, fragile]{Transformations : ligne de commande}
+  \begin{exampleblock}{}
+    \begin{center}
+      \verb+guix package --help-transformations+
+    \end{center}
+  \end{exampleblock}
+\begin{Verbatim}[commandchars=\\\{\}]
+\blue{--with-source      use SOURCE when building the corresponding package}
+\blue{--with-branch      build PACKAGE from the latest commit of BRANCH}
+\blue{--with-commit      build PACKAGE from COMMIT}
+\blue{--with-git--url    build PACKAGE from the repository at URL}
+\blue{--with-patch       add FILE to the list of patches of PACKAGE}
+\blue{--with-latest      use the latest upstream release of PACKAGE}
+\magenta{--with-c-toolchain build PACKAGE and its dependents with TOOLCHAIN}
+\magenta{--with-debug-info  build PACKAGE and preserve its debug info}
+\magenta{--without-tests    build PACKAGE without running its tests}
+\violet{--with-input       replace dependency PACKAGE by REPLACEMENT}
+\violet{--with-graft       graft REPLACEMENT on packages that refer to PACKAGE}
+\end{Verbatim}
+\end{frame}
+
+Les transformations sont appliquées récursivement, donc elles s’appliquent
+aussi aux dépendances de dépendances.  Par exemple, la ligne de commande pour
+recompiler le paquet \texttt{python} et toutes ses dépendances avec le
+compilateur GCC à la version 7 à la place de la version 10 (par défaut) est
+\begin{verbatim}
+guix install python --with-c-toolchain=python=gcc-toolchain@7
+\end{verbatim}
+et ceci se traduit naturellement dans un fichier de configuration
+\emph{manifest}.
+
+
+\thisslide{trans-manif}
+\begin{frame}<presentation>[label=trans-manif, fragile]{Transformations via fichier manifeste}
+  \vspace{-0.3cm}
+  \begin{exampleblock}{}
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/some-python-with-gcc7.scm}
+  \end{exampleblock}
+\end{frame}
+
+Ici, nous utilisons le module définissant les transformations et nous
+définissions la transformation \texttt{transform} via
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#index-options_002d_003etransformation}{la
+procédure \texttt{options->transformation}} ; autrement dit \texttt{transform}
+est une fonction prenant en argument un paquet et retournant un nouveau paquet
+dans lequel la chaîne de compilation a été remplacée.  Pour finir,
+\texttt{compose} permet de composer deux fonctions et nous aurions pu écrire à
+la place
+\begin{center}
+  \texttt{(lambda (pkg) (transform (specification->package pkg)))}
+\end{center}
+Le manuel fournit un
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Index-de-programmation}%
+{\textsf{index de programmation}} qui aide à se familiariser avec le langage
+dédié.
+
+
+\clearpage
+\subsection{Environnement isolé à la volée}
+
+À ce stade, nous sommes capables de créer des profils.  Par exemple, la
+commande \texttt{guix package -{}-list-profiles} liste tous les profils de
+l'utilisateur.  Tant qu'il y a un élément qui pointe dans un profil, le
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-gc}{ramasse-miettes}
+ne peut pas \emph{glaner} les paquets non utilisés.  Dans certains cas, nous
+voulons temporairement tester un outil sans se préoccuper de la gestion du
+profil.  C'est la fonctionnalité de \texttt{guix shell}.
+
+
+
+\begin{frame}<presentation>[fragile]{Profils temporaires}
+    \begin{center}
+    Exemple : ajouter temporairement \texttt{IPython}
+  \end{center}
+
+  \bigskip
+
+  \begin{center}
+    (\texttt{demo/shell-ipython})
+  \end{center}
+\end{frame}
+
+
+\thisslide{shell}
+\begin{frame}<presentation>[label=shell,fragile]{Étendre temporairement un \emph{profil}}
+  \begin{exampleblock}{}
+\begin{verbatim}
+guix shell -m manifest.scm
+guix shell -m manifest.scm python-ipython -- ipython3
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{tabular}{lcl}
+      \red{$\blacktriangleright$} \verb+--pure+ &:& réinitialise des variables
+                                                    d’environnement existantes
+      \\
+      \red{$\blacktriangleright$} \verb+--container+ &:& lance un conteneur isolé
+      \\
+      \red{$\blacktriangleright$} \verb+--development+ &:& inclus les dépendances du paquet
+    \end{tabular}
+  \end{alertblock}
+
+  \begin{exampleblock}{}
+\begin{verbatim}
+guix shell -m some-python.scm python-ipython             # 1.
+guix shell -m some-python.scm python-ipython --pure      # 2.
+guix shell -m some-python.scm python-ipython --container # 3.
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{center}
+    Bonus : \verb+guix shell emacs git git:send-email --development guix+
+  \end{center}
+\end{frame}
+
+La commande \texttt{guix shell} permet de créer ou étendre temporairement un
+profil.  Par exemple, dans la section précédente, le programme \texttt{cloc}
+est utilisé pour compter les lignes de code.  La commande \texttt{guix shell
+  cloc} a permis de lancer un \emph{shell} temporaire contenant le programme.
+
+\medskip
+
+Les options \texttt{pure} et \texttt{container} permettent de vérifier que
+toutes les dépendances de l'application sur laquelle on travaille sont bien
+capturées.  En particulier, l'option \texttt{container} permet de lancer un
+\emph{shell} temporaire totalement isolé.
+
+\bigskip
+
+\paragraph{Nota bene~:} La commande \texttt{guix shell} a été introduite récemment pour
+remplacer \texttt{guix environment}.  Cette dernière est encore conservée pour
+assurer une rétro-compatibilité.  Toutefois, nous recommandons d'utiliser
+\texttt{guix shell}, en particulier si vous n'avez jamais utilisé Guix
+auparavant.
+
+
+
+\begin{frame}<presentation>[plain,fragile,noframenumbering]{}
+  À ce stade, il semble naturel de vouloir \uline{partager ou construire des conteneurs isolés}.
+
+  \vfill{}
+  \begin{center}
+    \textbf{Comment créer des images ?}
+  \end{center}
+  \vfill{}
+  \begin{flushright}
+    (Exemple : Alice sans privilège particulier)
+  \end{flushright}
+\end{frame}
+
+
+\clearpage
+\section{Création d'images}
+
+Dans la section précédente, nous avons vu comment créer des environnements
+«~isolés~».  Il semble naturel de vouloir les partager ou les distribuer.
+
+\subsection{Création d’un \emph{pack}}
+
+La technologie usuelle pour transporter du matériel est celle d’un
+\textbf{conteneur}.  Cependant, il ne faut \uline{\textbf{pas perdre de vue}}
+la \uline{\textbf{transparence}} et la
+\textbf{\uline{re\-pro\-duc\-ti\-bi\-li\-té}}.
+
+
+\thisslide{conteneur}
+\begin{frame}<presentation>[label=conteneur,fragile]{Comment capturer un environnement ? Conteneur}
+  \begin{center}
+    Conteneur = \smiley{smoothie}
+  \end{center}
+
+  \begin{itemize}
+  \item Comment est construit le conteneur ? Dockerfile ?
+  \item Comment sont construits les binaires inclus dans le conteneur ?
+  \end{itemize}
+
+  \begin{exampleblock}{}
+\begin{verbatim}
+FROM amd64/debian:stretch
+RUN apt-get update && apt-get install git make curl gcc g++ ...
+RUN curl -L -O https://... && ... && make -j 4 && ...
+RUN git clone https://... && ... && make ... /usr/local/lib/libopenblas.a ...
+\end{verbatim}
+    \begin{center}
+      \href{https://gitlab.onelab.info/gmsh/gmsh/-/blob/c7544ec812982dbe15e105059983f1b0c3896536/utils/docker/Dockerfile.debian.stretch.64bit}%
+      {source (lien) : Gmsh~}%
+      \href{http://gmsh.info/}%
+      {A three-dimensional finite element mesh generator (lien)}
+    \end{center}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Avec un Dockerfile au temps t, comment regénérer l'image au temps t’ ?
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+\bigskip % workaround
+
+Un conteneur est comme un «~smoothie~» dans le sens où nous pouvons
+immédiatement dire si nous l’aimons ou non, mais il est difficile, si ce n’est
+impossible, de donner précisément la liste exhaustive des ingrédients.  Par
+conséquent, comment, à deux moments différents, reproduire exactement le même
+conteneur sur deux machines différentes ?
+
+\bigskip
+
+
+\thisslide{pack}
+\begin{frame}<presentation>[label=pack, fragile]{Qu’est-ce qu’un \emph{pack} ?}
+  \begin{center}
+    \emph{pack} = collection de paquets dans un format d’archive
+  \end{center}
+
+  Quel est le but d’un \emph{pack} ?
+  \begin{itemize}
+  \item Alice  distribue «~tout~» à Carole,
+  \item Carole n’a pas installé Guix mais aura l’exact même environnement.
+  \end{itemize}
+
+  \begin{exampleblock}{Qu’est-ce qu’un format d’archive ?}
+    \begin{itemize}
+    \item \texttt{tar} (\emph{tarballs})
+    \item Docker
+    \item Singularity
+    \item paquet binaire Debian \texttt{.deb}
+    \end{itemize}
+  \end{exampleblock}
+\end{frame}
+
+Un \emph{pack} est un \emph{lot de logiciels} enregistrés sous leur forme
+binaire dans un format spécifique.  Le format d’archivage \texttt{tar} est
+probablement le plus connu, historiquement.  Aujourd’hui,
+\hrefsf{https://www.docker.com/}{Docker} ou
+\hrefsf{https://sylabs.io/guides/3.4/user-guide/quick_start.html}{Singularity}
+sont très largement utilisés comme format de conteneur.
+
+
+
+\thisslide{tout}
+\begin{frame}<presentation>[label=tout, fragile]{Qu'est-ce que «~tout~» ?}
+  \begin{center}
+    Carole a besoin de la \emph{clôture transitive} (= toutes les dépendances)
+  \end{center}
+  \begin{exampleblock}{}
+\begin{verbatim}
+$ guix size python-numpy --sort=closure
+store item             total    self
+python-numpy-1.20.3    301.5    23.6   7.8%
+...
+python-3.9.9           155.3    63.7  21.1%
+openblas-0.3.18        152.8    40.0  13.3%
+...
+total: 301.5 MiB
+\end{verbatim}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      \texttt{guix pack} permet de créer cette archive contenant «~tout~»
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+\clearpage % workaround
+
+Le but d’un conteneur est de capturer l’intégralité de la pile logicielle pour
+fonctionner indépendamment du système hôte.  Guix fournit une commande
+(\texttt{guix size}) pour examiner la taille des éléments à inclure.  Par
+exemple, le paquet \texttt{python-numpy} ne représente que moins de 8\% des
+301,5Mo totaux nécessaires à son bon fonctionnement.  Nous voyons que le paquet
+\texttt{python-numpy} a aussi besoin du paquet \texttt{python} ainsi que de la
+bibliothèque d’algèbre linéaire \texttt{openblas}, entre autres.
+
+
+\thisslide{pack2}
+\begin{frame}<presentation>[label=pack2, fragile]{Création d’un \emph{pack}
+    pour le distribuer}
+
+  \begin{itemize}
+  \item Alice construit un \emph{pack} au format Docker
+    \begin{exampleblock}{}
+      \begin{center}
+        \verb+guix pack --format=docker -m manifest.scm+
+      \end{center}
+    \end{exampleblock}
+    puis distribue ce conteneur Docker (via un \emph{registry} ou autre).
+
+  \item Carole n'utilise pas \small{(encore?)}\normalsize{} Guix
+    \begin{exampleblock}{}
+\begin{verbatim}
+$ docker run -ti projet-alice python3
+Python 3.9.9 (main, Jan  1 1970, 00:00:01)
+[GCC 10.3.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>>
+\end{verbatim}
+    \end{exampleblock}
+    et utilise l'exact même environnement computationnel qu'Alice.
+  \end{itemize}
+\end{frame}
+
+\paragraph{Prenons un exemple :} Construire et déployer cette présentation.
+Les deux commandes suivantes sur une machine ayant Guix permettent de
+récupérer les sources (\LaTeX) puis de construire la présentation au format
+PDF.
+
+\begin{verbatim}
+guix shell git nss-certs \
+     -- git clone https://gitlab.com/zimoun/jres22-tuto-guix
+
+guix shell -m manifest.scm \
+     -- rubber --pdf presentation.tex
+\end{verbatim}
+
+Alice souhaite pouvoir générer cette présentation sur une infrastructure ne
+possédant pas Guix.  À la place, l’infrastructure utilise des conteneurs
+Docker.  Par conséquent, Alice empaquette au format Docker
+\begin{verbatim}
+guix pack                                                \
+     --format=docker                                     \
+     -C none                                             \
+     -S /bin=bin -S /lib=lib -S /share=share -S /etc=etc \
+     -m manifest.scm                                     \
+     --save-provenance
+\end{verbatim}
+qui produit l’élément dans le dépôt (\emph{store})
+\texttt{/gnu/store/n92...-rubber-...-docker-pack.tar}.  Nous renvoyons à la
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-pack}%
+{\textsf{section du manuel}} pour une description exhaustive des options de la
+commande \texttt{guix pack}.  Notons que \texttt{-{}-symlink / -S} ajoute les
+liens symboliques spécifiés dans le \emph{pack} ; par exemple, \texttt{-S
+  /bin=bin} crée un lien symbolique \texttt{/bin} qui pointe vers le
+sous-répertoire \texttt{bin} du profil.
+
+\bigskip
+
+Ce \emph{pack} une fois créé peut être chargé en local comme image Docker
+pour, par exemple, ajouter une étiquette (\emph{tag}) et pousser cette image sur un
+dépôt (\emph{registry})
+\begin{verbatim}
+$ docker load < $(guix pack ...)
+$ docker images
+REPOSITORY                            TAG    IMAGE ID     CREATED      SIZE
+rubber-texlive-base-texlive-fonts-ec  latest 6f08ec6e1f4c 52 years ago 1.03GB
+$ docker tag 6f08ec6e1f4c zimoun/jres
+$ docker push zimoun/jres
+\end{verbatim}
+où les points \dots~ sont par exemple les options précédentes.
+
+\medskip
+
+Il faut noter la date qui correspond au 1\ier{} janvier 1970, c.-à-d. qui
+donne les conditions pour reproduire l'image bit-à-bit.  D'autre part, il faut
+aussi noter que Guix vérifie si l'élément est déjà présent dans le dépôt
+(\emph{store}).
+
+\bigskip
+
+Maintenant, il suffit pour Carole de télécharger depuis le dépôt
+(\emph{registry}) le conteneur Docker.  Par exemple, ce conteneur pourrait
+être utilisé pour de l'intégration continue à travers GitLab~CI (voir l'%
+\hrefsf{https://gitlab.com/zimoun/jres22-tuto-guix/-/blob/main/.gitlab-ci.yml}%
+{exemple dédié} pour construire cette présentation).
+
+
+
+\thisslide{pack3}
+\begin{frame}<presentation>[label=pack3, fragile]{Au final, \texttt{guix pack}, c’est\dots}
+
+  \begin{center}
+    \emph{Agnostique} sur le format du «~conteneur~»
+  \end{center}
+
+  \begin{tabular}{cc}
+    \begin{minipage}{0.4\linewidth}
+      \begin{exampleblock}{}
+        \begin{itemize}
+        \item \texttt{tar} (\emph{tarballs})
+        \item Docker
+        \item Singularity
+        \item paquet binaire Debian \texttt{.deb}
+        \end{itemize}
+      \end{exampleblock}
+    \end{minipage}
+    &
+      \begin{minipage}{0.5\linewidth}
+        \begin{alertblock}{}
+          \begin{itemize}
+          \item archives repositionnables
+          \item sans \texttt{Dockerfile}
+          \item via \texttt{squashfs}
+          \item sans \texttt{debian/rule} (expérimental)
+          \end{itemize}
+        \end{alertblock}
+      \end{minipage}
+  \end{tabular}
+
+  \bigskip
+
+  \begin{center}
+    \textbf{Adaptable aux cas d’usage}
+  \end{center}
+\end{frame}
+
+\paragraph{Pour aller plus loin :} Peut-on extraire le manifeste Guix d’un
+\emph{pack} au format Docker ?
+\begin{center}
+  \hrefsf{https://hpc.guix.info/blog/2021/10/when-docker-images-become-fixed-point/}%
+  {Reproductibilité d'un conteneur Docker généré par Guix}
+\end{center}
+
+\bigskip
+
+Internet étant fait de serveurs qui vont et viennent, les URL risquent de
+ne plus pointer vers le contenu.  Par conséquent, nous donnons ici des liens
+vers des archives (meilleure pérennité) pour le contenu de ce tutoriel :
+
+\begin{itemize}
+\item
+  \hrefsf{https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://gitlab.com/zimoun/jres22-tuto-guix}%
+  {Source} sur \hrefsf{https://www.softwareheritage.org/}{Software Heritage}
+\item
+  \hrefsf{https://web.archive.org/web/*/https://zimoun.gitlab.io/jres22-tuto-guix}%
+  {Déploiement} sur \hrefsf{https://web.archive.org/}{Web Archive}
+\end{itemize}
+
+en plus, évidemment, des JRES.
+
+
+\clearpage
+\subsection{Création d'une machine virtuelle}
+
+Dans la section précédente, nous avons vu comme créer des \emph{pack}
+contenant un déploiement de paquets.  Cependant, nous souhaiterions aussi
+pouvoir déployer des services.
+
+
+\thisslide{image}
+\begin{frame}<presentation>[label=image, fragile]{Création d’une image avec
+    \texttt{guix system} : un monde de services}
+
+  \begin{alertblock}{}
+    \begin{center}
+      \texttt{guix system} permet une
+      \uline{\textbf{configuration déclarative} d'un \emph{système}}
+    \end{center}
+  \end{alertblock}
+
+  \begin{itemize}
+  \item \texttt{guix system search} pour trouver les services disponibles
+  \item \texttt{guix system image} pour construire une image de type :
+    \begin{itemize}
+    \item qcow2
+    \item docker
+    \item iso9660, uncompressed-iso9660, efi-raw, raw-with-offset
+    \item rock64-raw, pinebook-pro-raw, pine64-raw, novena-raw
+    \item hurd-raw, hurd-qcow2
+    \end{itemize}
+  \item
+    \begin{minipage}{1.0\linewidth}
+      \begin{exampleblock}{}
+        \texttt{guix system vm} pour construire une machine virtuelle (VM)
+        \begin{center}
+          (la VM partage son dépôt avec le système hôte)
+        \end{center}
+      \end{exampleblock}
+    \end{minipage}
+  \end{itemize}
+\end{frame}
+
+Sur le même principe que la commande \texttt{guix package}, il est possible de
+chercher les services disponibles avec \texttt{guix system search}.  De plus,
+la commande \texttt{guix system} permet de générer une image suivant
+différents formats.  Par exemple, ceci permet d’obtenir une image
+\emph{bootable} qui donne une distribution complète – appelée Guix System.
+
+\bigskip
+
+La commande qui nous intéresse particulièrement est \texttt{guix system vm}.
+Elle permet de générer une machine virtuelle (VM) qui partage son dépôt avec
+son hôte (n’importe quelle distribution Linux avec Guix installé).  L’avantage
+principal est une isolation complète qui, par exemple, permet de fournir des
+services.  Le déploiement de services avec Guix mériterait un tutoriel en soi,
+nous donnons ici un point d’entrée.
+
+
+
+\thisslide{image2}
+\begin{frame}<presentation>[label=image2, fragile]{Configuration déclarative
+    d'une machine virtuelle}
+  \vspace{-0.3cm}
+  \begin{exampleblock}{}
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/config-vm-1.scm}
+  \end{exampleblock}
+\end{frame}
+
+Comme pour la gestion de paquets, la configuration de la machine virtuelle se
+fait dans un langage déclaratif.  Le point d’entrée est le mot-clé
+\texttt{operating-system}
+(\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#r_00e9f_00e9rence-de-operating_002dsystem}%
+{\textsf{décrit dans le manuel}}) qui spécifie les options.  En particulier,
+un champ liste les paquets à provisionner et un autre champ liste les services
+avec éventuellement leurs caractéristiques.
+
+
+\thisslide{image3}
+\begin{frame}<presentation>[label=image3, fragile]{Configuration déclarative
+    d'une machine virtuelle (2)}
+  \vspace{-0.3cm}
+  \begin{exampleblock}{}
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/config-vm-2.scm}
+  \end{exampleblock}
+\end{frame}
+
+
+\thisslide{image4}
+\begin{frame}<presentation>[label=image4, fragile]{Machines virtuelles avec Guix}
+
+  % \begin{center}
+  %   (\texttt{demo/vm})
+  % \end{center}
+
+  \begin{alertblock}{}
+    \begin{itemize}
+    \item Gestion déclarative
+    \item Réutilisation via des patrons (\emph{template})
+    \end{itemize}
+  \end{alertblock}
+
+\end{frame}
+
+Par exemple, la commande
+\begin{center}
+  \texttt{guix system vm src/example/vm-image.scm}
+\end{center}
+produit le script \texttt{/gnu/store/0n5...-run-vm.sh} qui lance QEMU avec les
+éléments du dépôt (\emph{store}) adéquats, c.-à-d.
+\begin{verbatim}
+$ /gnu/store/0n5...-run-vm.sh -nic user
+\end{verbatim}
+démarre la machine virtuelle avec, ici, le réseau.  Ces machines virtuelles
+peuvent être administrées avec le paquet \texttt{virt-manager}.
+
+
+
+\begin{frame}<presentation>[plain,fragile,noframenumbering]{}
+  Très bien tout cela, mais en quoi est-ce \uline{reproductible} ?
+
+  \vfill{}
+  \begin{center}
+    \textbf{Parlons de versions !}
+  \end{center}
+  \vfill{}
+  \begin{flushright}
+    (Exemple : Carole collabore avec Alice)
+  \end{flushright}
+\end{frame}
+
+
+\clearpage
+\section{Une histoire de versions}
+
+Le but de cette section est double, d'une part montrer par l'exemple la
+capacité de Guix de s'affranchir de l'état externe et d'autre part en quoi
+Guix est dit \emph{fonctionnel}.
+
+\subsection*{Version ?  Graphe ?}
+
+Une question récurrente des nouveaux utilisateurs de Guix est~: comment est-ce
+que je spécifie la version de l’outil à utiliser ?  Une réponse à cette
+question appelle une autre question~: qu’est-ce que l’on appelle version ?
+Est-ce la version du code source ?  Est-ce la version du binaire ?  Mais
+alors, pour le le même code source transformé par deux chaînes de compilation
+différentes, appelle-t-on les deux binaires résultants la même \emph{version}
+?
+
+
+\thisslide{version}
+\begin{frame}<presentation>[label=version, fragile]{Quelle est ma version de Guix ?}
+  % \vspace{-0.25cm}
+  \begin{exampleblock}{}
+\begin{verbatim}
+$ guix describe
+Generation 76	Apr 25 2022 12:44:37	(current)
+  guix eb34ff1
+    repository URL: https://git.savannah.gnu.org/git/guix.git
+    branch: master
+    commit: eb34ff16cc9038880e87e1a58a93331fca37ad92
+
+$ guix --version
+guix (GNU Guix) eb34ff16cc9038880e87e1a58a93331fca37ad92
+\end{verbatim}
+  \end{exampleblock}
+
+  % \vspace{-0.175cm}
+  \begin{alertblock}{}
+    \begin{center}
+      Un état fixe toute la collection des paquets et de Guix lui-même
+    \end{center}
+  \end{alertblock}
+
+  (Un état peut contenir plusieurs canaux (\emph{channel} = dépôt Git),\\
+  \hfill avec des URL, branches ou commits divers et variés)
+
+%   \vspace{-0.175cm}
+% \begin{verbatim}
+% $ guix package --list-available=^python | head -2
+% python              	3.9.9    out,tk,idle	gnu/packages/python.scm:431:2
+% python-absl-py      	0.6.1    out        	gnu/packages/python-xyz.scm:23415:2
+% \end{verbatim}
+\end{frame}
+
+Guix capture un état : la liste de tous les paquets et les commandes Guix
+elles-mêmes.  Les commandes Guix sont données par le canal principal et ce
+canal fournit un ensemble de paquets (et de services).  Il est tout à fait
+possible d’étendre la collection de paquets en fournissant d’autres canaux
+pour avoir des paquets variants.  Par exemple, l’initiative
+\hrefsf{https://hpc.guix.info/about/}{GuixHPC} (qui correspond à Guix dans un
+contexte scientifique) essaie de maintenir une \hrefsf{liste de canaux}.
+
+\medskip
+
+Pour spécifier un canal supplémentaire, l’utilisateur (sans droit particulier)
+doit modifier le fichier \texttt{\$HOME/.config/guix/channels.scm}, p. ex.
+\begin{verbatim}
+(cons (channel
+       (name 'guix-hpc)
+       (url "https://gitlab.inria.fr/guix-hpc/guix-hpc"))
+      %default-channels)
+\end{verbatim}
+Si la canal fournit aussi des substituts binaires ce qui évite de consommer
+des ressources, alors il faut
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Autoriser-un-serveur-de-substituts}%
+{autoriser le serveur de substituts}.  Dans le cas de ce canal, la clé
+publique est
+\begin{verbatim}
+(public-key
+ (ecc
+  (curve Ed25519)
+  (q #89FBA276A976A8DE2A69774771A92C8C879E0F24614AAAAE23119608707B3F06#)))
+\end{verbatim}
+L’ajout de serveurs de substituts nécessite cependant des droits
+d’administration privilégiés pour des raisons de sécurité.
+
+
+\thisslide{dag}
+\begin{frame}<presentation>[label=dag, fragile]{État = Graphe Acyclique Dirigé (\emph{DAG})}
+  \vspace{-0.5cm}
+  \begin{center}
+    \texttt{guix graph -{}-max-depth=6 python | dot -Tpng > graph-python.png}
+  \end{center}
+
+  \vfill{}
+  \includegraphics[width=\textwidth]{static/graph-python.png}
+  \vfill{}
+
+  Graphe complet : Python = 137 n\oe uds, Numpy = 189, Matplotlib = 915, Scipy
+  = 1439 n\oe uds
+% graph python-scipy -t bag | grep label | cut -f2 -d'[' | sort | uniq | wc -l
+\end{frame}
+
+Guix capture un état, c.-à-d. que Guix capture le graphe complet pour produire
+le binaire résultant.  Il capture les relations de dépendances, les recettes
+de construction et la machinerie de Guix elle-même pour traiter tout cela.
+
+\medskip
+
+Il n’y a pas de résolveur de dépendances qui cherche à trouver la meilleure
+solution à un problème sous-contraintes.  Guix lui construit un graphe à
+partir de la collection de paquets qu’il connaît dans son état courant.
+Ensuite, ce graphe peut être
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Options-de-transformation-de-paquets}%
+{\textsf{transformé}} pour obtenir les variants.
+
+\medskip
+
+Ainsi la variabilité est contrôlée aussi finement que possible.  Dans la
+plupart des cas d’usage, le résultat final (la courbe publiée par Alice,
+l’utilisation de tel ou tel outil par Carole, etc.) ne sera pas impacté.  La
+question se pose à l’inverse quand il y a une différence dans ce résultat.
+D’où vient l’erreur ?  En d’autres termes, ce contrôle fin est d’intérêt quand
+on cherche à redéployer une pile logicielle pour reproduire ou dupliquer.
+
+
+\subsection*{Définir un paquet}
+
+
+\thisslide{def-pkg}
+\begin{frame}<presentation>[label=def-pkg, fragile]{Définition d’un paquet (n\oe ud du graphe)}
+  \vspace{-0.3cm}
+  \begin{exampleblock}{}
+    \lstinputlisting[language=Scheme,columns=space-flexible]{example/mock-define-python.scm}
+  \end{exampleblock}
+
+  \vspace{-0.2cm}
+  \begin{alertblock}{}
+    \begin{itemize}
+    \item Chaque \texttt{inputs} est une définition similaire
+      \hfill (récursion $\rightarrow$ graphe)
+    \item Il n’y a pas de cycle
+      \hfill (\texttt{bzip2} ou ses \texttt{inputs} ne peuvent pas utiliser \texttt{python})
+    \end{itemize}
+  \end{alertblock}
+
+  \vspace{-0.25cm}
+  \begin{center}
+    \small{%
+    (Quel commencement du graphe ?  Problème du \emph{bootstrap} dont nous ne
+    parlerons pas ici)
+    }\normalsize
+  \end{center}
+\end{frame}
+
+Un paquet correspond à un n\oe ud du graphe.  D’une part, il contient des
+\emph{meta} informations comme le nom, la version du code source, un synopsis
+et description, la licence.  D’autre part, il contient la recette pour être
+construit par Guix~: où trouver les sources, quelle chaîne de compilation par
+défaut, quelles dépendances, et quelles modifications spécifiques
+(\texttt{arguments}) pour indiquer les options de compilation ou les
+changements mineurs dans la chaîne de compilation.
+
+\medskip
+
+Pour faciliter la création de nouveaux paquets,
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-import}%
+{\textsf{la commande \texttt{guix import}}} permet de générer une recette Guix
+à partir des dépôts dédiés à un écosystème (PyPI, CRAN, Bioconductor, etc.).
+Il faut noter que l’\emph{utilisabilité} de la recette résultante est très
+variable car elle dépend fortement de la qualité ou disponibilité des
+métadonnées du dépôt source.
+
+\medskip
+
+De notre point de vue, empaqueter pour Guix est généralement plus facile que
+pour les autres gestionnaires.  Cependant, la construction totalement isolée
+de Guix oblige à une certaine gymnastique.  Au final, nous tenons à souligner
+que le travail d’empaquetage quelque soit le gestionnaire sous-jacent est un
+tâche laborieuse.
+
+
+\clearpage
+\subsection*{Changer d'état}
+
+La
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-pull}%
+{\textsf{commande \texttt{guix pull}}} permet de changer d’état en mettant à
+jour la collection de paquets des différents canaux et Guix lui-même.  Par
+exemple, la commande \texttt{guix pull --news} permet de savoir quelles sont
+les différences entre notre état précédent et notre état courant.
+
+\medskip
+
+La commande \texttt{guix upgrade} permet de mettre à jour les paquets d’un
+profil.  Cette commande respecte les transformations, s’il y a, dans la mise à
+jour.
+
+\medskip
+
+En ayant la capacité d’utiliser d’autres canaux, de créer des profils et de
+mettre à jour la collection des paquets, un utilisateur sans privilège devient
+autonome dans la gestion de ses outils.  Bien entendu, sur une machine
+mutualisée, l’administrateur peut créer des profils exposés aux utilisateurs
+pour leurs fournir des suites d’outils par défaut.
+
+
+\thisslide{pull}
+\begin{frame}<presentation>[label=pull, fragile]{Concrètement, en pratique ?}
+
+  \begin{alertblock}{}
+    \begin{center}
+      une version = un graphe
+    \end{center}
+  \end{alertblock}
+
+  \begin{center}
+    Mise à jour de Guix
+
+    \texttt{guix pull}
+
+    (création d'une nouvelle \emph{génération} interne)
+  \end{center}
+
+  \begin{itemize}
+  \item Il est possible de \uline{spécifier un \emph{état}} :
+    \begin{exampleblock}{}
+      \begin{center}
+        \begin{tabular}{rl}
+          \blue{\texttt{alice@laptop\$}} & \texttt{guix describe -{}-format=channels >
+                                           alice-laptop.scm}
+          \\
+          \violet{\texttt{carole@desktop\$}} & \texttt{guix pull -{}-channels=alice-laptop.scm}
+        \end{tabular}
+      \end{center}
+    \end{exampleblock}
+  \item Il est possible de se placer \uline{\textbf{temporairement} dans un état spécifique}\\
+    \hfill pour exécuter une commande (comme créer un profil)
+
+    \begin{exampleblock}{}
+      \begin{center}
+        \texttt{guix time-machine -{}-commit=c61df1792c -{}- install python -p python/autres}
+      \end{center}
+    \end{exampleblock}
+  \end{itemize}
+\end{frame}
+
+Comme il est possible de connaître l’historique d’installation et de
+suppression des paquets d’un profil avec la commande \texttt{guix package -l},
+la commande \texttt{guix pull -{}-list-generations} fournit l’historique des
+états de l’utilisateur.  Notons que les commandes Guix elle-mêmes vivent dans
+un profil particulier (nommé \texttt{\$HOME/.config/guix/current}).
+
+\medskip
+
+Ainsi, sur une machine multi-utilisateurs, cette liste des états peut différer
+entre les utilisateurs.  La commande \texttt{guix describe} permet de capturer
+l’état courant pour soit le \emph{versionner} avec un projet, soit le
+partager.  Par exemple, Alice sauvegarde son état courant dans le fichier
+\texttt{alice-laptop.scm} et transmet à Carole ce fichier.  Ensuite, Carole
+sur une autre machine peut se placer dans l’exact même état qu’Alice.
+
+\medskip
+
+Lorsque l’on travaille sur plusieurs projets, il peut devenir fastidieux de
+changer d’état \emph{globalement} et il est souhaitable d’avoir la capacité de
+se placer temporairement dans un état donné pour réaliser une opération
+(installation, création de profil, etc.).  Ceci est possible avec la
+\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Invoquer-guix-time_002dmachine}%
+{\textsf{commande} \texttt{guix time-machine}}.
+
+
+
+\thisslide{time-machine}
+\begin{frame}<presentation>[label=time-machine, fragile]{Reproductibilité en arrière, en avant :
+    \texttt{guix time-machine}}
+
+  \vspace{-1cm}
+  \begin{center}
+    \begin{tikzpicture}
+      % draw horizontal line
+      \draw[thick, -Triangle] (0,0) -- (12,0) node[font=\scriptsize,below left=3pt and -8pt]{time};
+
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] at (0,-.3) {2018};
+
+      % draw vertical lines
+      \foreach \x in {1,...,11}
+      \draw (\x cm,3pt) -- (\x cm,-3pt);
+
+      \foreach \x/\descr in {3/Carole,6/Alice,8/Bob}
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] at (\x,-.3) {$\descr$};
+
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] (Carole) at (3,+.3)  {d7e57e};
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] (Alice) at (6,+.3)  {eb34ff1};
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] (Dan) at (8,+.3)  {3682bd};
+
+      \draw[->] (Carole.north) to [out=50,in=150] (Alice.west);
+      \draw[->] (Dan.north) to [out=100,in=50] (Alice.east);
+
+      \draw[lightgray!0!red, line width=4pt] (2,-.6) -- +(8,0);
+      \foreach \x/\percol in {1/75,9/75}
+      \draw[lightgray!\percol!red, line width=4pt] (\x,-.6) -- +(1,0);
+
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] at (11,-.3)  {$Dan$};
+      \node[font=\scriptsize, text height=1.75ex, text depth=.5ex] (Dan) at (11,+.3)  {c99c3d};
+      \draw[dashed,->] (Dan.north) to [out=40,in=90] (Alice.north);
+
+    \end{tikzpicture}
+  \end{center}
+
+  \begin{exampleblock}{}
+    Pour être \uline{reproductible dans le temps}, il faut :
+    \begin{itemize}
+    \item Une préservation de \textbf{tous} les codes source~%
+      \small{%
+        (\href{https://ngyro.com/pog-reports/latest/}%
+        {$\approx 75\%$ archivés \tiny{(lien)}\small} dans~%
+        \href{https://www.softwareheritage.org/}%
+        {Software Heritage \tiny{(lien)}\small})%
+      }\normalsize
+    \item Une \emph{backward} compatibilité du noyau Linux
+    \item Une compatibilité du \emph{hardware} (p. ex. CPU, disque dur \tiny{(NVMe)}\normalsize, etc.)
+    \end{itemize}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      Quelle est la taille de la fenêtre temporelle avec les 3 conditions
+      satisfaites ?
+    \end{center}
+  \end{alertblock}
+  \begin{center}
+    \scriptsize{(À ma connaissance, le projet Guix réalise une expérimentation
+      grandeur nature et quasi-unique depuis sa v1.0 en 2019)}
+  \end{center}
+\end{frame}
+
+Carole et Bob, les collaborateurs d’Alice, qui aussi travaillent sur d’autres
+projets avec d’autres collaborateurs peuvent convenir d’un état et s’y
+placer.  Ils auront le même environnement logiciel.  Grâce aux mécanismes
+d’\href{https://guix.gnu.org/manual/devel/fr/guix.fr.html#Inf_00e9rieurs}%
+{inférieurs}, il est possible de tendre à une reproductibilité dans le temps.
+
+\medskip
+
+Pour assurer cette reproductibilité, le seul point sur lequel nous pouvons
+directement agir est la sauvegarde de tous les codes sources.  Le projet Guix
+participe à la mise en place de ponts avec des systèmes d’archivage comme
+Software Heritage.  Chaque état correspond à une collection de paquets et donc
+à des codes sources et des recettes Guix de construction.  Le chantier est en
+cours pour préserver «~quoi~» et «~comment~» construire.
+
+
+\clearpage
+\section{Au final\dots}
+\subsection*{Au final\dots}
+
+
+\thisslide{continuum2}
+\begin{frame}<presentation>[label=continuum2, fragile]{\dots Guix est un \emph{continuum}%
+    \hfill \small{(sur n'importe quelle distribution Linux)}}
+
+  \vspace{-0.5cm}
+
+  \begin{center}
+    \begin{tabular}{llr}
+      un \uline{\textbf{gestionnaire de paquets}} déclaratif
+      & \texttt{guix package}
+      & (\texttt{-m} \emph{manifest})
+      \\
+      \ \ temporairement étendu à la volée
+      & \texttt{guix shell}
+      & (\texttt{-{}-container})
+      \\
+      \ \ \ \ maîtrisant exactement l'\emph{état}
+      & \texttt{guix time-machine}
+      & (\texttt{-C} \emph{channels})
+      \\
+      \ \ \ \ \ \ qui produit des \uline{\textbf{\emph{packs} distribuables}}
+      & \texttt{guix pack}
+      & (\texttt{-f docker})
+      \\
+      \ \ \ \ \ \ \ \ qui génèrent des \textbf{\uline{\emph{machines virtuelles}} isolées}
+      & \texttt{guix sytem vm}
+      \\
+      \ \ \ \ \ \ \ \ \ \ \ \ \ et aussi une bibliothèque Scheme
+      & \texttt{guix repl}
+      & (\emph{extensions})
+      \\
+      $\Big($
+      la distribution Linux elle-même
+      & \texttt{config.scm}
+      & (Guix System)
+        $\Big)$
+    \end{tabular}
+
+    \begin{alertblock}{}
+      \begin{center}
+        \textbf{%
+          Guix permet un contrôle fin du graphe de configuration sous-jacent
+        }
+      \end{center}
+    \end{alertblock}
+  \end{center}
+
+  \begin{exampleblock}{}
+    \begin{center}
+      \texttt{guix time-machine -C channels.scm -{}-}
+      \emph{commande options}
+      \texttt{une-config.scm}
+    \end{center}
+  \end{exampleblock}
+
+  \begin{alertblock}{}
+    \begin{center}
+      \texttt{une-config.scm} est \textbf{reproductible}
+      d'une machine à l'autre et dans le temps
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+
+
+\thisslide{scenarii2}
+\begin{frame}<presentation>[label=scenarii2,fragile]{Scenarii}
+  \vspace{-0.2cm}
+  \begin{itemize}
+  \item Alice utilise \texttt{python@3.9} et \texttt{numpy@1.20.3}
+    \vspace{-0.1cm}
+    \begin{exampleblock}{}
+\begin{verbatim}
+$ guix install python python-numpy
+\end{verbatim}
+    \end{exampleblock}
+  \item Carole \textbf{collabore} avec Alice\ldots{}
+    mais utilise d'autres outils pour un autre projet
+    \vspace{-0.1cm}
+    \begin{exampleblock}{}
+\begin{verbatim}
+$ guix time-machine -C version-alice.scm \
+       -- install -m outils-alice.scm -p projet/alice
+\end{verbatim}
+        \end{exampleblock}
+  \item Charlie \textbf{mets à jour} son système et \textbf{tout est cassé}
+    \vspace{-0.1cm}
+    \begin{exampleblock}{}
+\begin{verbatim}
+$ guix pull --roll-back
+\end{verbatim}
+    \end{exampleblock}
+  \item Bob utilise les \textbf{{mêmes} versions} qu'Alice mais n'a
+    \textbf{pas le {même} résultat}
+    \vspace{-0.1cm}
+    \begin{exampleblock}{}
+\begin{verbatim}
+error: You found a bug
+\end{verbatim}
+    \end{exampleblock}
+  \item Dan essaie de \textbf{rejouer plus tard} le scénario d'Alice\dots
+    \vspace{-0.25cm}
+    \begin{flushright}
+      \scriptsize{(voir ligne commande Carole)}\normalsize
+      \hfill{}
+      \dots ça dépend de la date du scénario ;-)
+    \end{flushright}
+  \end{itemize}
+\end{frame}
+
+\clearpage
+\subsection*{Limitations}
+
+En tant que contributeur régulier, j'ai une vision biaisée qui peut-être
+sur-estime les défauts à traiter et sous-estime toutes les
+fonctionnalités qui résolvent un large spectre de problèmes.  Pour sûr, après
+plus de deux années d'utilisation intensive de l'ordinateur portable à la
+machine de calcul en passant pour la station de travail, je ne reviendrai
+pas à des outils sans un paradigme déclaratif et fonctionnel.
+
+
+\thisslide{limit}
+\begin{frame}<presentation>[label=limit,fragile]{On s'habitue vite\dots}
+  \begin{itemize}
+  \item Fonctionne uniquement avec Linux.
+  \item Environnement isolé implique une forte transparence,
+    \begin{flushright}
+      c.-à-d., difficile avec des parties propriétaires.
+    \end{flushright}
+
+  \item Certaines commandes peuvent apparaître lentes (\texttt{pull}, \texttt{search}, etc.),
+    \begin{flushright}
+      ou retourner des erreurs obscures.
+    \end{flushright}
+  \item Les premiers pas requièrent un peu de patience,
+    \begin{flushright}
+      et d’accepter que ce
+      n’est \uline{pas \emph{comme d’habitude}}.
+    \end{flushright}
+  \end{itemize}
+
+  \vfill{}
+  \begin{alertblock}{}
+    \begin{center}
+      \textbf{La communauté est très accueillante et toujours disponible pour aider}
+    \end{center}
+  \end{alertblock}
+\end{frame}
+
+\begin{enumerate}
+\item Le problème est la transparence de la chaîne de \emph{bootstrap} : comment
+  construire à «~partir de rien~».  Techniquement, en quelques mots, le
+  nœud du problème est le port de la bibliothèque C \texttt{glibc} pour un autre
+  noyau.  Autrement dit, quelle est la taille de la graine binaire que l'on
+  s'autorise comme racine du graphe des dépendances ?
+\item Il est possible d’utiliser des pilotes spécifiques pour certains
+  matériels \emph{hardware} mais c’est du travail.  D’un autre côté, dans un
+  contexte de reproductibilité scientifique, ne doit-on pas chercher au
+  maximum la transparence de toute la chaîne de traitement ?
+
+  L’autre implication est l’utilisation de logiciels requérant par exemple un
+  jeton de licence – comme le compilateur Fortran d’Intel \texttt{ifort}.
+  L’environnement de construction étant totalement isolé, l’accès au jeton est
+  impossible lors de la compilation.
+\item Tout est régulièrement amélioré, dans la mesure du possible avec les
+  moyens disponibles.
+\item On y vient, on n’en repart pas.
+\end{enumerate}
+
+\subsection*{Ressources}
+
+
+\thisslide{prod}
+\begin{frame}<presentation>[label=prod]{En production}
+  \vspace{-0.2cm}
+  \begin{exampleblock}{}
+    \begin{tabular}{lcrl|c}
+      \textbf{Grid’5000}           &          &  828-nodes  &(12,000+ cores, 31 clusters) &(France)     \\
+      \textbf{GliCID (CCIPL)}      & Nantes   &  392-nodes  &(7500+ cores)                 &(France)    \\
+      \textbf{PlaFrIM Inria}       & Bordeaux &  120-nodes  &(3000+ cores)                 &(France)    \\
+      \textbf{GriCAD}              & Grenoble &  72-nodes   &(1000+ cores)                 &(France)    \\
+      \textbf{Max Delbrück Center} & Berlin   &  250-nodes  &+ workstations                &(Allemagne) \\
+      \textbf{UMC}                 & Utrecht  &  68-nodes   &(1000+ cores)                 &(Pays-Bas)  \\
+      \textbf{UTHSC Pangenome}     &          &  11-nodes   &(264 cores)                   &(USA)       \\
+      \\
+      \quad (le vôtre ?)
+    \end{tabular}
+  \end{exampleblock}
+
+  \vspace{-0.25cm}
+  \begin{center}
+      \includegraphics[width=0.25\paperwidth]{static/guixhpc-logo-transparent-white}
+
+    \vspace{-0.25cm}
+
+    \href{https://hpc.guix.info/}{\texttt{https://hpc.guix.info}}
+  \end{center}
+
+  \vspace{-1.2cm}
+  \begin{flushright}
+    \includegraphics[width=0.175\paperwidth]{static/cafe-guix}
+  \end{flushright}
+\end{frame}
+
+
+\thisslide{thanks}
+\begin{frame}<presentation>[label=thanks]{Remerciements}
+  \begin{itemize}
+  \item Ludovic Courtès
+  \item Ricardo Wurmus (Guix comme bibliothèque Scheme : Guix Workflow Language)
+  \item Mathieu Othacehe
+    (\href{https://guix.gnu.org/cuirass/}%
+    {Cuirass \scriptsize{(lien)} \normalsize = CI}
+    qui assure la disponibilité des \emph{substituts} binaires)
+  \item tous les contributeurs (de la question au \emph{patch} en passant par
+    la rapport de \emph{bug})
+  \end{itemize}
+
+  \vfill{}
+
+  \emph{«~Présidents~» de la session} JRES :
+  \begin{itemize}
+  \item Yann Dupont
+  \item Emmanuel Halbwachs
+  \end{itemize}
+\end{frame}
diff --git a/talks/jres-2022/src/example/config-vm-1.scm b/talks/jres-2022/src/example/config-vm-1.scm
new file mode 100644
index 0000000..0e0b8d3
--- /dev/null
+++ b/talks/jres-2022/src/example/config-vm-1.scm
@@ -0,0 +1,22 @@
+(use-modules (gnu) (guix) (srfi srfi-1))
+(use-service-modules desktop mcron networking xorg)
+(use-package-modules certs fonts xorg)
+
+(operating-system
+  (host-name "gnu")
+  (keyboard-layout (keyboard-layout "us" "altgr-intl"))
+
+  (users (cons (user-account
+                (name "guest")
+                (password "") ;no password
+                (group "users"))
+               %base-user-accounts))
+
+  (packages (append (list font-bitstream-vera nss-certs)
+                    %base-packages))
+
+  (services
+   (append (list (service xfce-desktop-service-type)
+                 (simple-service 'cron-jobs mcron-service-type
+                                 (list auto-update-resolution-crutch))
+                 (service dhcp-client-service-type)))))
diff --git a/talks/jres-2022/src/example/config-vm-2.scm b/talks/jres-2022/src/example/config-vm-2.scm
new file mode 100644
index 0000000..68322b6
--- /dev/null
+++ b/talks/jres-2022/src/example/config-vm-2.scm
@@ -0,0 +1,13 @@
+(use-modules (gnu) (guix) (srfi srfi-1))
+(use-service-modules desktop mcron networking xorg)
+(use-package-modules certs fonts xorg)
+
+(operating-system
+  [...]
+  (packages (append (list font-bitstream-vera nss-certs)
+                    %base-packages))
+  (services
+   (append (list (service xfce-desktop-service-type)
+                 (simple-service 'cron-jobs mcron-service-type
+                    (list auto-update-resolution-crutch))
+                 (service dhcp-client-service-type)))))
diff --git a/talks/jres-2022/src/example/mock-define-python.scm b/talks/jres-2022/src/example/mock-define-python.scm
new file mode 100644
index 0000000..994538d
--- /dev/null
+++ b/talks/jres-2022/src/example/mock-define-python.scm
@@ -0,0 +1,9 @@
+(define python
+  (package
+    (name "python")
+    (version "3.9.9")
+    (source ... )
+    (build-system gnu-build-system)
+    (arguments ... )
+    (inputs (list bzip2 expat gdbm libffi sqlite
+                  openssl readline zlib tcl tk))))
diff --git a/talks/jres-2022/src/example/some-python-bis.scm b/talks/jres-2022/src/example/some-python-bis.scm
new file mode 100644
index 0000000..cd6ceb5
--- /dev/null
+++ b/talks/jres-2022/src/example/some-python-bis.scm
@@ -0,0 +1,11 @@
+(define python "python")
+
+(specifications->manifest
+ (append
+  (list python)
+  (map (lambda (pkg)
+         (string-append python "-" pkg))
+       (list
+        "matplotlib"
+        "numpy"
+        "scipy"))))
diff --git a/talks/jres-2022/src/example/some-python-with-gcc7.scm b/talks/jres-2022/src/example/some-python-with-gcc7.scm
new file mode 100644
index 0000000..6c71cb0
--- /dev/null
+++ b/talks/jres-2022/src/example/some-python-with-gcc7.scm
@@ -0,0 +1,13 @@
+(use-modules (guix transformations))
+
+(define transform
+  (options->transformation
+   '((with-c-toolchain . "python=gcc-toolchain@7"))))
+
+(packages->manifest
+ (map (compose transform specification->package)
+      (list
+       "python"
+       "python-matplotlib"
+       "python-numpy"
+       "python-scipy")))
diff --git a/talks/jres-2022/src/example/some-python.scm b/talks/jres-2022/src/example/some-python.scm
new file mode 100644
index 0000000..5436dac
--- /dev/null
+++ b/talks/jres-2022/src/example/some-python.scm
@@ -0,0 +1,6 @@
+(specifications->manifest
+ (list
+  "python"
+  "python-matplotlib"
+  "python-numpy"
+  "python-scipy"))
diff --git a/talks/jres-2022/src/header.tex b/talks/jres-2022/src/header.tex
new file mode 100644
index 0000000..4914847
--- /dev/null
+++ b/talks/jres-2022/src/header.tex
@@ -0,0 +1,86 @@
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{graphicx}
+\usepackage{longtable}
+\usepackage{wrapfig}
+\usepackage{rotating}
+\usepackage[normalem]{ulem}
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{capt-of}
+\usepackage{hyperref}
+\usepackage[french]{babel}
+\usepackage{fancyvrb}
+
+\usepackage{tikz}
+\usetikzlibrary{decorations.pathreplacing,positioning, arrows.meta}
+
+
+\usetheme{Madrid}
+\useoutertheme[subsection=true]{smoothbars}
+
+\makeatletter
+\usecolortheme{whale}
+\usecolortheme{orchid}
+\setbeamerfont{block title}{size={}}
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{itemize items}[triangle]
+\makeatletter
+\setbeamertemplate{footline}
+{
+  \leavevmode%
+  \hbox{%
+    \begin{beamercolorbox}[wd=.15\paperwidth,ht=2.25ex,dp=1ex,left]{author in head/foot}%
+      \usebeamerfont{author in head/foot}\quad S. Tournier
+    \end{beamercolorbox}%
+    \begin{beamercolorbox}[wd=.7\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
+      \usebeamerfont{title in head/foot}\insertshorttitle
+    \end{beamercolorbox}%
+    \begin{beamercolorbox}[wd=.15\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
+      \insertframenumber{} / \inserttotalframenumber\hspace*{2ex}
+    \end{beamercolorbox}}%
+  \vskip0pt%
+}
+\makeatother
+
+\title[Reproductibilité des environnements logiciels avec GNU Guix]%
+{Reproductibilité des environnements logiciels \\ avec GNU Guix}
+\author{Simon Tournier}
+\date{JRES, 19 mai 2022}
+\institute{Inserm US53 - UAR CNRS 2030 \\ \texttt{simon.tournier@u-paris.fr}}
+\hypersetup{
+  pdfauthor={Simon Tournier},
+  pdftitle={Reproductibilité des environnements logiciels avec GNU Guix},
+  pdfkeywords={GNU Guix, reproductibilité, déploiement logiciels, gestionnaire de paquets, machine virtuelle},
+  pdfsubject={tutoriel court de l'outil GNU Guix},
+  pdfcreator={with love},
+  pdflang={French}}
+
+
+\newcommand{\violet}{\textcolor{violet}}
+\newcommand{\blue}{\textcolor{blue}}
+\newcommand{\red}{\textcolor{red}}
+\newcommand{\magenta}{\textcolor{magenta}}
+\newcommand{\cyan}{\textcolor{cyan}}
+\newcommand{\green}{\textcolor{green}}
+\definecolor{mauve}{rgb}{0.58,0,0.82}
+\newcommand{\mauve}{\textcolor{mauve}}
+
+\input{listings-scheme}
+
+\newcommand{\someguile}{\textcolor{someguile}}
+\newcommand{\somestring}{\textcolor{somestring}}
+\newcommand{\somevariable}{\textcolor{somevariable}}
+
+\newcommand{\thisslide}[1]{%
+  \begin{figure}[!htb]
+    \begin{center}
+      \includeslide[width=\textwidth]{#1}
+    \end{center}
+  \end{figure}
+}
+
+\newcommand{\smiley}[1]{${\textsf{#1~}}^{\textrm{:-)}}$}
+
+\newcommand{\hrefsf}[2]{\href{#1}{\textsf{#2}}}
diff --git a/talks/jres-2022/src/listings-scheme.tex b/talks/jres-2022/src/listings-scheme.tex
new file mode 100644
index 0000000..359817a
--- /dev/null
+++ b/talks/jres-2022/src/listings-scheme.tex
@@ -0,0 +1,97 @@
+% This file contains some restricted keywords for highlighting the all the
+% snippets in LaTeX.  The main purpose is to easy reading the Scheme
+% Domain-Specific code by coloring what is Guile-specific, user-specific and DSL-specific.
+%
+% The language shell is also trivially defined.
+
+\usepackage{listings}
+\usepackage{color}
+
+\definecolor{someguile}{rgb}{0.0, 0.25, 0.8}
+\definecolor{somestring}{rgb}{0.8, 0.25, 0.0}
+\definecolor{somevariable}{rgb}{0.0, 0.5, 0.0}
+\definecolor{somecomment}{rgb}{1.0, 0.0, 0}
+\definecolor{bracket}{rgb}{0.6, 0.6, 0.6}
+
+\lstdefinelanguage{Scheme}{
+    basicstyle=\normalsize\ttfamily\slshape\color{somevariable},
+    sensitive=true,
+    alsoletter={-,\#,:,>},
+    morestring = [b]",
+    stringstyle=\upshape\color{somestring},
+    morecomment=[l]{;},
+    commentstyle=\upshape\color{somecomment},
+    literate=
+            *{(}{{\textcolor{bracket}{(}}}{1}
+            {)}{{\textcolor{bracket}{)}}}{1},
+    classoffset=0,
+    % Guile
+    morekeywords={
+        define, define-public,
+        list, map, compose,
+        cons,
+        lambda,
+        let, let*, quote,
+        append, string-append,
+        use-modules, define-module, \#:use-module, \#:prefix
+        },
+    keywordstyle=\ttfamily\upshape\color{someguile},
+    classoffset=1,
+    % Fix
+    morekeywords={
+        guix, transformations,
+        gnu, srfi, srfi-1,
+        desktop, mcron, networking, xorg,
+        certs, fonts,
+        font-bitstream-vera, nss-certs,
+        xfce-desktop-service-type,
+        cron-jobs, mcron-service-type,
+        dhcp-client-service-type,
+    },
+    keywordstyle=\ttfamily\upshape\color{black},
+    classoffset=1,
+    % DSL
+    morekeywords={
+    package,
+    name, version,
+    build-system, gnu-build-system, arguments,
+    inputs,
+    synopsis, description, license,
+    source, origin,
+    method, url-fetch, git-fetch,
+    specifications->manifest, specification->package, packages->manifest,
+    options->transformation, with-c-toolchain,
+    },
+    % DSL VM
+    morekeywords={
+    use-service-modules, use-package-modules,
+    operating-system,
+    host-name, timezone, locale, keyboard-layout, label, firmware,
+    bootloader, bootloader-configuration, grub-bootloader, targets, terminal-outputs,
+    users, user-account, name, password, group, supplementary-groups,
+    file-systems, file-system, mount-point, device, type,
+    base-file-systems,          % bug with %base-
+    base-user-accounts,
+    base-packages,
+    packages,
+    services, service, simple-service,
+    plain-file,
+    },
+    keywordstyle=\ttfamily\bfseries\upshape\color{black},
+    classoffset=0,
+}
+
+\lstdefinelanguage{shell}{
+    basicstyle=\normalsize\ttfamily,
+    sensitive=true,
+    morestring = [b]",
+    stringstyle=\upshape\color{red},
+    morecomment=[l]{\#},
+    commentstyle=\upshape\color{green},
+}
+
+% \lstdefinelanguage{text}{
+%     basicstyle=\normalsize\ttfamily,
+%     sensitive=true,
+%     commentstyle=\upshape\color{green},
+% }
diff --git a/talks/jres-2022/src/manifest.scm b/talks/jres-2022/src/manifest.scm
new file mode 100644
index 0000000..7e649dc
--- /dev/null
+++ b/talks/jres-2022/src/manifest.scm
@@ -0,0 +1,26 @@
+(specifications->manifest
+ (list
+  "rubber"
+
+  "texlive-base"
+  "texlive-fonts-ec"
+  "texlive-kpfonts"
+  "texlive-cm-super"
+  "texlive-amsfonts-fixed"
+
+  "texlive-beamer"
+  "texlive-translator"
+  "texlive-ulem"
+  "texlive-capt-of"
+  "texlive-hyperref"
+  "texlive-carlisle"
+
+  "texlive-latex-geometry"
+  "texlive-latex-wrapfig"
+  "texlive-latex-amsmath"
+  "texlive-babel-french"
+  "texlive-latex-listings"
+  "texlive-latex-fancyvrb"
+  "texlive-latex-pgf"
+  "texlive-latex-fancyhdr"
+  ))
diff --git a/talks/jres-2022/src/presentation.tex b/talks/jres-2022/src/presentation.tex
new file mode 100644
index 0000000..202777d
--- /dev/null
+++ b/talks/jres-2022/src/presentation.tex
@@ -0,0 +1,70 @@
+\documentclass[aspectratio=169,ignorenonframetext,presentation]{beamer}
+
+\input{header}
+
+\begin{document}
+
+\begin{frame}[plain, fragile, noframenumbering]{}
+  \vspace{5mm}
+  \titlepage
+
+  \vfill{}
+  \vspace{-12mm}
+  \begin{center}
+    \includegraphics[width=0.2\paperwidth]{static/Guix-white}
+
+    \vspace{-10mm}
+    \href{https://hpc.guix.info}{\texttt{https://hpc.guix.info}}
+  \end{center}
+  \vfill{}
+  \normalsize
+  \begin{minipage}{0.2\paperwidth}
+    \vspace{-7mm}
+    \includegraphics[width=0.2\paperwidth]{static/LOGO-JRES-2022}
+  \end{minipage}
+  \begin{flushright}
+    \begin{minipage}{0.2\paperwidth}
+      \vspace{-20mm}
+      \includegraphics[width=0.2\paperwidth]{static/u-paris}
+    \end{minipage}
+  \end{flushright}
+\end{frame}
+
+
+%% From Beamer documentation p.207
+%% User Guide for version 3.66.
+%% http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf
+\mode<all>
+\input{contenu}
+\mode*
+
+\begin{frame}[plain, noframenumbering]{}
+  \begin{center}
+    \vfill{}
+    \Large{%
+      \textbf{%
+        Des questions ?%
+      }}\normalsize
+
+    \vfill{}
+    \texttt{guix-science@gnu.org}
+
+    \vfill{}
+    \includegraphics[width=0.2\paperwidth]{static/cafe-guix}\\
+    \href{https://hpc.guix.info/events/2022/café-guix/}{\texttt{https://hpc.guix.info/events/2022/café-guix/}}
+
+    % \vfill{}
+    % \tiny{%
+    % Copyright \copyright{} 2021 Simon Tournier%
+    % }
+  \end{center}
+\end{frame}
+
+%% From Beamer documentation p.207
+%% User Guide for version 3.66.
+%% http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf
+\mode<all>
+\input{supplement}
+\mode*
+
+\end{document}
diff --git a/talks/jres-2022/src/static/Guix-white.pdf b/talks/jres-2022/src/static/Guix-white.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3641e7fc651602a1953308a2e4e05d9171a69801
GIT binary patch
literal 8483
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
DN8BwK

literal 0
HcmV?d00001

diff --git a/talks/jres-2022/src/static/LOGO-JRES-2022.png b/talks/jres-2022/src/static/LOGO-JRES-2022.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa190dfab9f600dfd230bb133dfd1495d68074e8
GIT binary patch
literal 18956
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
M8z<`;)cu720z`cp0{{R3

literal 0
HcmV?d00001

diff --git a/talks/jres-2022/src/static/cafe-guix.png b/talks/jres-2022/src/static/cafe-guix.png
new file mode 100644
index 0000000000000000000000000000000000000000..1698c65b9042a352cafc8fe67ec621e95a3ef57f
GIT binary patch
literal 17311
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
Y=~;|*xJo7Xat+|Mv=X#T((u!N1H6dw9smFU

literal 0
HcmV?d00001

diff --git a/talks/jres-2022/src/static/forest-symlinks.pdf b/talks/jres-2022/src/static/forest-symlinks.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..527cf68076ab526f2bd96e1fe1726954a4917b71
GIT binary patch
literal 16418
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

literal 0
HcmV?d00001

diff --git a/talks/jres-2022/src/static/graph-python.png b/talks/jres-2022/src/static/graph-python.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0026b2dc1d5ea9118131333e074ebfd062a015d
GIT binary patch
literal 479843
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
<