summaryrefslogtreecommitdiff
path: root/2018-03-25-guix-libreplanet
diff options
context:
space:
mode:
authorDavid Thompson <davet@gnu.org>2018-03-21 21:46:51 -0400
committerDavid Thompson <davet@gnu.org>2018-03-21 21:46:51 -0400
commit99fb80a367b8afd71995330b28bfaa0a2ccb1b83 (patch)
treee278376843c22103565970ef7cf302ffa794138c /2018-03-25-guix-libreplanet
parent2681aa7d9b9f67d84b49b99931a93511ed25a893 (diff)
Update libreplanet talk.
Diffstat (limited to '2018-03-25-guix-libreplanet')
-rw-r--r--2018-03-25-guix-libreplanet/guix-libreplanet.org121
-rw-r--r--2018-03-25-guix-libreplanet/guix-libreplanet.pdfbin132573 -> 169367 bytes
2 files changed, 101 insertions, 20 deletions
diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.org b/2018-03-25-guix-libreplanet/guix-libreplanet.org
index 511c6a0..d6958bc 100644
--- a/2018-03-25-guix-libreplanet/guix-libreplanet.org
+++ b/2018-03-25-guix-libreplanet/guix-libreplanet.org
@@ -69,6 +69,12 @@
- incompatible libraries between systems
- high barrier to entry for common package managers
+* common issues
+
+ trying out new stuff can lead to sadness
+
+ - ever upgrade your distro, reboot, and get an unusable system?
+
* freedom: embedded
GuixSD removes many of the common barriers that prevent users from
@@ -93,6 +99,10 @@
Users can build and install software *without root privileges*
+ tired: =sudo apt install emacs=
+
+ wired: =guix package -i emacs=
+
* unprivileged package management
Each user may have one or more “profiles”, a union of many packages.
@@ -104,13 +114,25 @@
* experiment without fear
+ =guix package --upgrade emacs=
+
+ oh no, the new version of Emacs is broken!
+
=guix package --roll-back=
+* experiment without fear
+
=guix system reconfigure=
+ oh no, the latest GuixSD updates broke my system!
+
+ <image of grub menu with older generations?>
+
* inspecting source code
- =guix build --source=
+ quickly grab the source code for a package
+
+ =guix build --source gimp=
* inspecting dependency graph
@@ -130,46 +152,106 @@
* sharing development environments
- =guix environment=
+ #+BEGIN_SRC scheme
+ (use-modules (guix profiles)
+ (gnu packages base)
+ (gnu packages guile))
+
+ (packages->manifest
+ (list gnu-make
+ guile-2.2
+ guile-syntax-highlight
+ haunt))
+ #+END_SRC
+
+ use it:
- <minimal environment file example>
+ =guix environment --manifest=guix.scm=
* sharing binaries
- Use =guix publish= to spawn a web server that allows other Guix
- users to download the software you've already built
+ start a server to share your builds:
+
+ #+BEGIN_SRC sh
+ guix publish
+ #+END_SRC
+
+ have a friend download them:
#+BEGIN_SRC sh
guix build \
- --substitute-urls=http://guix.dthompson.us:8080 \
+ --substitute-urls=http://guix.example.com:8080 \
hello
#+END_SRC
* reproducible builds
- did anyone attend "You think you're not a target? A tale of three
- developers..." by Chris Lamb yesterday?
+ reproducible builds produce *bit-identical binaries* when performed
+ multiple times under the same conditions.
- =guix build --rounds=N=
+ requires fixing issues in upstream build systems that are
+ nondeterministic.
+
+* reproducible builds
-* verifying binaries
+ this is a *cross-distro effort*, but Guix facilitates
+ reproducibility more than others
+
+ see Chris Lamb's talk /You think you're not a target? A tale of
+ three developers.../ from yesterday for more perspective
+
+* reproducible builds
+
+ is this build reproducible on my machine?
+
+ =guix build --rounds=3 hello=
+
+* challenge authority
+
+ is this build reproducible on many machines?
+
+ is this build compromised?
=guix challenge=
* customize packages
- =guix edit=
+ show me how Ruby is built:
- =guix build=
+ #+BEGIN_SRC sh
+ export EDITOR=emacs
+ guix edit ruby
+ #+END_SRC
+
+* customize packages
+
+ let's make some changes!
+
+ #+BEGIN_SRC sh
+ git clone https://git.savannah.gnu.org/git/guix.git
+ cd guix
+ guix environment guix
+ ./configure
+ make
+ guix build ruby
+ #+END_SRC
* interoperate with other systems
- =guix pack=
+ need a Docker image?
-* extending
+ =guix pack --format=docker guile emacs geiser=
+
+ \tiny(see /Solving the deployment crisis with GNU Guix/ from
+ LibrePlanet 2016 for reasons why Docker may not be so great)
+
+* extending guix
GuixSD is essentially a big Scheme library
+ easy to write new tools that use the exact same APIs that the core
+ Guix tools use
+
* literally: embedded
GuixSD now runs on the Beaglebone Black single-board computer!
@@ -178,13 +260,12 @@
GNU Guix is a welcoming community:
- we have a *code of conduct* and *enforce* it
-
- we have started seeking new contributors via *Outreachy*
-
- we participate in *Google Summer of Code* every year
+ - we have a *code of conduct* and *enforce* it
+ - we have started seeking new contributors via *Outreachy*
+ - we participate in *Google Summer of Code* every year
+ - oh, and no copyright assignment (in case you were wondering)
- oh, and no copyright assignment (in case you were wondering)
+ join us!
* thanks!
diff --git a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
index 6bd9226..09b3615 100644
--- a/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
+++ b/2018-03-25-guix-libreplanet/guix-libreplanet.pdf
Binary files differ