diff options
-rw-r--r-- | index.html | 138 |
1 files changed, 77 insertions, 61 deletions
@@ -183,7 +183,7 @@ there is still room for improvement. Sometimes, package managers have the option to install - software without building it from source by fetching some + software without building it from source, by fetching some corresponding binary package. But you may want to build the software from source anyway, and this can be tricky. @@ -221,7 +221,7 @@ package, and being able to remove or upgrade software, without worrying about causing problems are all issues of user control and user freedom. - + I think Guix is a tool that can help, so how does it work? </aside> </section> @@ -234,7 +234,7 @@ important concepts to cover first. These are not new concepts, to put things in perspective, - here is a timeline. + here is a timeline. </aside> </section> @@ -253,12 +253,14 @@ <div class="timeline-block timeline-block-right" style="height: 36%;"> <div class="marker"></div> <div class="timeline-content"> - <h3>2004</h3> Nix: A Safe and Policy-Free System for - Software Deployment + <h3>2004</h3> Nix Paper + <small> + A Safe and Policy-Free System for Software Deployment + </small> </div> </div> - <div class="timeline-block timeline-block-left" style="height: 22%;"> + <div class="timeline-block timeline-block-left" style="height: 34%;"> <div class="marker"></div> <div class="timeline-content"> <h3>2012</h3> @@ -319,6 +321,60 @@ </section> <section> + <h2>7 key properties</h2> + + <ul> + <li>Handle multiple versions/variants</li> + <li>Per system, user or more general profiles</li> + <li>Tooling for reproducible builds</li> + <li>Hybrid source/binary package management</li> + <li>Support for multiple platforms</li> + <li>Comprehensive set of tooling</li> + <li>Extensibility through Guile</li> + </ul> + </section> + + <section> + <h2>The hello package</h2> + + <small class="stretch"><pre> + <code class="scheme">(define-public hello + (package + (name "hello") + (version "2.10") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/hello/hello-" version + ".tar.gz")) + (sha256 + (base32 + "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) + (build-system gnu-build-system) + (synopsis "Hello, GNU world: An example GNU package") + (description + "GNU Hello prints the message \"Hello, world!\" and then exits. It +serves as an example of standard GNU coding practices. As such, it supports +command-line arguments, multiple languages, and so on.") + (home-page "https://www.gnu.org/software/hello/") + (license gpl3+)))</code></pre></small> + + <aside class="notes" data-markdown> + This is the package for GNU hello, that corresponds to the + derivation for GNU hello. + + Packages are the term used within Guix for an individual + bit of software. + + Unless you write some custom code for creating packages, + this is as simple as they get. + + The complexity of building hello is hidden away entirely + in the build system, the gnu-build-system in the case of + GNU hello. + </aside> + </section> + + <section> <h2>The store</h2> <pre class="fragment">/gnu/store/<span class="fragment highlight-current-green">wf65hjwqwpz4wllasn63zysi5irql2sx</span>-hello-2.10 @@ -331,12 +387,13 @@ │ └── ... └── man └── ... -</pre> + </pre> <aside class="notes" data-markdown> - We start with the store, a special directory where files, - and the outputs from derivations that have been built - successfully are stored. + One of the key things that goes in to providing the + properties mentioned earlier is the store, a special + directory where files, and the outputs from derivations + that have been built successfully are stored. When using Guix, the location of the store is /gnu/store. @@ -488,7 +545,7 @@ </aside> </section> - <section data-transition="fade-in"> + <section data-transition="fade"> <pre>$ guix build --derivations hello /gnu/store/1drc59xkcvgdphzgylxm41ln9p5dwbgn-hello-2.10.drv</pre> @@ -561,7 +618,7 @@ </aside> </section> - <section> + <section data-transition="fade-in"> <code> <pre>$ guix build --derivations hello /gnu/store/1drc59xkcvgdphzgylxm41ln9p5dwbgn-hello-2.10.drv</pre> @@ -665,7 +722,7 @@ <section data-background-color="white"> <img class="noborder" src="hello-derivation-graph.svg"> - <span class="caption"> + <span class="caption" style="color:black;"> Derivation graph for the hello package </span> @@ -727,47 +784,6 @@ </section> <section> - <h2>The hello package</h2> - - <small class="stretch"><pre> - <code class="scheme">(define-public hello - (package - (name "hello") - (version "2.10") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/hello/hello-" version - ".tar.gz")) - (sha256 - (base32 - "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) - (build-system gnu-build-system) - (synopsis "Hello, GNU world: An example GNU package") - (description - "GNU Hello prints the message \"Hello, world!\" and then exits. It -serves as an example of standard GNU coding practices. As such, it supports -command-line arguments, multiple languages, and so on.") - (home-page "https://www.gnu.org/software/hello/") - (license gpl3+)))</code></pre></small> - - <aside class="notes" data-markdown> - This is the package for GNU hello, that corresponds to the - derivation for GNU hello. - - Packages are the term used within Guix for an individual - bit of software. For example, guix itself is available as - a package. - - Unless you write some custom code for creating packages, - this is as simple as they get. - - The complexity of building hello is hidden away entirely - in the build system, the gnu-build-system in the case of - GNU hello. - </aside> - </section> - - <section> <h1>What can you do with Guix?</h1> <aside class="notes" data-markdown> @@ -782,7 +798,7 @@ command-line arguments, multiple languages, and so on.") <h2>Install a package in to your profile</h2> <code> - guix package -i hello + guix install hello </code> <aside class="notes" data-markdown> @@ -808,7 +824,7 @@ command-line arguments, multiple languages, and so on.") <h2>Upgrade the packages in your profile</h2> <code> - guix package -u + guix upgrade </code> <aside class="notes" data-markdown> @@ -840,7 +856,7 @@ command-line arguments, multiple languages, and so on.") </section> <section data-transition="fade-out"> - <pre>guix package -i samtools bowtie</pre> + <pre>guix install samtools bowtie</pre> <img class="stretch noborder" src="profile-0.svg"> <a href="https://git.sv.gnu.org/cgit/guix/maintenance.git/tree/talks/bobkonf2017/profile-0.svg" class="caption"> @@ -875,7 +891,7 @@ command-line arguments, multiple languages, and so on.") </section> <section data-transition="fade"> - <pre>guix package -r bowtie</pre> + <pre>guix remove bowtie</pre> <img class="stretch noborder" src="profile-1.svg"> <a href="https://git.sv.gnu.org/cgit/guix/maintenance.git/tree/talks/bobkonf2017/profile-1.svg" class="caption"> @@ -926,13 +942,13 @@ command-line arguments, multiple languages, and so on.") So, we've just covered some of the uses of the guix package commands. - Lets go back to that first command, guix package -i hello. + Lets go back to that first command, guix install hello. </aside> </section> <section data-background-color="white"> - <code> - guix package -i hello + <code style="color:black;"> + guix install hello </code> <img class="noborder fragment" src="hello-derivation-graph.svg"> |