unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] website : ...
@ 2015-05-08  4:09 Mathieu Lirzin
  2015-05-08 10:45 ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Mathieu Lirzin @ 2015-05-08  4:09 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 96 bytes --]

Well, I have been more productive than I thought. These patches are
drafts!

--
Mathieu Lirzin


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-website-Enable-directory-choice-in-export-procedure.patch --]
[-- Type: text/x-diff, Size: 1046 bytes --]

From 8d61be9cdd787265b7bb7e1232546f5e7f3997e3 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@openmailbox.org>
Date: Thu, 7 May 2015 21:21:02 +0200
Subject: [PATCH 1/3] website: Enable directory choice in export procedure.

---
 website/www.scm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/website/www.scm b/website/www.scm
index 38a0d0d..2949102 100644
--- a/website/www.scm
+++ b/website/www.scm
@@ -321,9 +321,11 @@ lists")))))
     (lambda (port)
       (sxml->xml page port))))
 
-(define (export-web-site)
-  "Export the whole web site as HTML files created in the current directory."
+(define* (export-web-site #:optional (directory "."))
+  "Export the whole web site as HTML files created in DIRECTORY."
   (for-each (match-lambda
-              ((file page)
-               (export-web-page page file)))
+              ((filename page)
+               (export-web-page page (string-append directory
+						    file-name-separator-string
+						    filename))))
             %web-pages))
-- 
2.2.1


[-- Attachment #3: 0002-website-Factorize-shared-blocks.patch --]
[-- Type: text/x-diff, Size: 95284 bytes --]

From 4763ec6706b9f5088b00f3b99f4e3eca57b05d8a Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@openmailbox.org>
Date: Fri, 8 May 2015 00:06:03 +0200
Subject: [PATCH 2/3] website: Factorize shared blocks.

---
 website/www.scm            | 478 ++++++++++++++++++++-------------------------
 website/www/about.scm      | 306 ++++++++++++-----------------
 website/www/contribute.scm | 370 +++++++++++++++--------------------
 website/www/donate.scm     | 197 +++++++------------
 website/www/download.scm   | 303 ++++++++++++----------------
 website/www/help.scm       | 410 +++++++++++++++++---------------------
 website/www/packages.scm   |  93 ++-------
 website/www/shared.scm     |  65 ++++++
 8 files changed, 932 insertions(+), 1290 deletions(-)
 create mode 100644 website/www/shared.scm

diff --git a/website/www.scm b/website/www.scm
index 2949102..36d7ee7 100644
--- a/website/www.scm
+++ b/website/www.scm
@@ -1,4 +1,5 @@
 (define-module (www)
+  #:use-module (www shared)
   #:use-module (www packages)
   #:use-module (www download)
   #:use-module (www donate)
@@ -14,281 +15,216 @@
             export-web-site))
 
 (define main-page
-  '(html (@ (lange "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/index.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Home - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (div (@ (id "featured-box"))
-			 (div (@ (class "featured-content"))
-			      (h1 (@ (class "featured-heading"))
-				  "The Guix System Distribution")
-			      (ul (li (b "Liberating.")
-				      " GuixSD is an advanced distribution of the "
-				      (a (@ (href "https://gnu.org/")
-					    (class "hlink-yellow"))
-					 "GNU Operating System")
-				      " developed by the "
-				      (a (@ (href "https://gnu.org/")
-					    (class "hlink-yellow"))
-					 "GNU Project ")
-				      "—which respects the "
-				      (a (@ (href "http://www.gnu.org/philosophy/free-sw.html")
-					    (class "hlink-yellow"))
-					 "freedom of computer users")
-				      ". ")
-				  (li (b "Dependable.")
-				      " The "
-				      (a (@ (href "/software/guix/manual/")
-					    (class "hlink-yellow"))
-					 "GNU Guix")
-				      " Package Manager, in addition
-to standard package management features, supports transactional
-upgrades and roll-backs, unprivileged package management, per-user
-profiles, and garbage collection.")
-				  (li (b "Hackable.")
-				      " It provides "
-				      (a (@ (href "https://www.gnu.org/s/guile/")
-					    (class "hlink-yellow"))
-					 "Guile Scheme")
-				      " APIs, including high-level
-embedded domain-specific languages (EDSLs), to describe how packages
-are built and composed."))
-			      (div (@ (class "featured-actions"))
-				   (a (@ (href "/software/guix/download/")
-					 (class "action download"))
-				      "TEST v0.8.2 (alpha)")
-				   (a (@ (href "/software/guix/contribute/")
-					 (class "action contribute"))
-				      "CONTRIBUTE"))))
-		    (div (@ (id "discovery-box"))
-			 (h2 "Discover GuixSD")
-			 (div (@ (class "info-box text-center"))
-			      (video (@ (src "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm")
-					(poster
-					 "/software/guix/static/base/img/the-emacs-of-distros.png")
-					(controls "controls")
-					(class "video-preview")))
-			      (p "January 2015, The Emacs of
-Distros (48 minutes)")
-			      (p (a (@ (href "/software/guix/help/#talks")
-				       (class "hlink-more-light"))
-				    "Check all talks")))
-			 (div (@ (class "info-box text-left"))
-			      (p (a (@ (href "/software/guix/manual/")
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Home")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (div (@ (id "featured-box"))
+		    (div (@ (class "featured-content"))
+			 (h1 (@ (class "featured-heading"))
+			     "The Guix System Distribution")
+			 (ul (li (b "Liberating.")
+				 " GuixSD is an advanced distribution of the "
+				 (a (@ (href "https://gnu.org/")
 				       (class "hlink-yellow"))
-				    "GNU Guix Documentation")
-				 (br)
-				 "You may also find more information
-about GNU Guix by running info guix.")
-			      (p (a (@ (href "http://arxiv.org/abs/1305.4584")
+				    "GNU Operating System")
+				 " developed by the "
+				 (a (@ (href "https://gnu.org/")
 				       (class "hlink-yellow"))
-				    " Functional Package Management with Guix")
-				 (br)
-				 "A paper presented at the 2013
-European Lisp Symposium (ELS), describes the rationale, design, and
-implementation of Guix's packaging API. ")
-			      (p (a (@ (href "http://www.gnu.org/manual/")
+				    "GNU Project ")
+				 "—which respects the "
+				 (a (@ (href "http://www.gnu.org/philosophy/free-sw.html")
 				       (class "hlink-yellow"))
-				    "GNU Manuals Online")
-				 (br)
-				 "Primary documentation for official
-GNU packages.")
-			      (p (a (@ (href "/software/guix/help/")
-				       (class "hlink-more-light"))
-				    "Find more documentation")))
-			 (img (@ (src "/software/guix/static/base/img/h-separator-darker.png")
-				 (class "h-separator")
-				 (alt "")))
-			 (div (@ (id "screens-box"))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/grub-menu.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/grub-menu-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "GRUB menu"))))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/slim.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/slim-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "Slim login manager"))))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/windowmaker+icecat+inkscape.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/windowmaker+icecat+inkscape-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "Windowmaker, Icecat, and Inkscape"))))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/user-interfaces.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/user-interfaces-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "mplayer and xterm"))))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-packages.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-packages-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "Emacs user interface to the package manager."))))
-			      (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-generations.png"))
-				 (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-generations-thumb.png")
-					 (class "screenshot-thumb")
-					 (alt "Emacs user interface generations.")))))
-			 (p (a (@ (href "/software/guix/contribute/")
-				  (class "hlink-yellow-boxed"))
-			       "Help us package more software →")))
-		    (div (@ (id "news-box"))
-			 (h2 "News")
-			 (a (@ (href "http://www.fsf.org/news/fsf-adds-guix-system-distribution-to-list-of-endorsed-distributions")
-			       (class "news-entry"))
-			    (h4 "FSF adds Guix System Distribution to
-list of endorsed distributions")
-			    (p (@ (class "news-date")) "February 3, 2015")
-			    (p (@ (class "news-summary"))
-			       "The Guix System Distribution is a new
-and growing distro that currently ships with just over 1000 packages,
-already including almost all of the programs available from the GNU
-Project..."))
-			 (a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8193")
-			       (class "news-entry"))
-			    (h4 "GNU Guix 0.8.1 Released")
-			    (p (@ (class "news-date")) "January 29, 2015")
-			    (p (@ (class "news-summary"))
-			       "We are pleased to announce the next
-alpha release of GNU Guix, version 0.8.1. The release comes both with
-a source tarball, which allows you to install it on top of a running
-GNU/Linux system, and a USB installation image to install the
-standalone Guix System..."))
-			 (a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8191")
-			       (class "news-entry"))
-			    (h4 "GNU Guix at FOSDEM")
-			    (p (@ (class "news-date")) "January 27, 2015")
-			    (p (@ (class "news-summary"))
-			       "Guix will be present at FOSDEM in
-Brussels, Belgium, with a talk entitled \"The Emacs of Distros\" this
-Saturday, at 3PM, in room H.1302. The talk will give an update on
-developments in Guix and the Guix System Distribution since last
-year..."))
-			 (p (a (@ (href "https://savannah.gnu.org/news/?group=guix")
-				  (class "hlink-more-dark"))
-			       "More news")))
-		    (div (@ (id "contact-box"))
-			 (h2 "Contact")
-			 (div (@ (class "info-box text-justify"))
-			      (h3 "IRC Channel")
-			      (p "Some Guix users and developers hang
-out on the #guix channel of the Freenode IRC network. "
-				 (small "(See "
-					(a (@ (href "https://gnunet.org/bot/log/guix/"))
-					   "channel logs")
-					")")
-				 ".")
-			      (p (@ (class "text-right"))
-				 (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
-				       (class "button btn-blue"))
-				    "Connect"))
-			      (h3 "Report Bugs")
-			      (p "Use the bugs mailing list to report
-bugs. Please check whether the bug is already in the "
-				 (a (@ (href "http://debbugs.gnu.org/cgi/pkgreport.cgi?pkg=guix"))
-				    "bug database")
-				 ".")
-			      (p (@ (class "text-right"))
-				 (a (@ (href "mailto:bug-guix@gnu.org")
-				       (class "button btn-red"))
-				    "Report")))
-			 (div (@ (class "info-box text-left"))
-			      (h3 "Mailing Lists")
-			      (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
-				    (b "guix-devel"))
-				 (small " ("
-					(a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
-					   "archive")
-					")")
-				 (br)
-				 "Discussion about the development of
-GNU Guix and the Guix System Distribution (GuixSD).")
-			      (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
-				    (b "bug-guix"))
-				 (small " ("
-					(a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
-					   "archive")
-					")")
-				 (br)
-				 "Bug reports for GNU Guix and the
-Guix System Distribution.")
-			      (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/gnu-system-discuss"))
-				    (b "gnu-system-discuss"))
-				 (small " ( "
-					(a (@ (href "http://lists.gnu.org/archive/html/gnu-system-discuss/"))
-					   "archive")
-					")")
-				 (br)
-				 "Discussion about the development of
+				    "freedom of computer users")
+				 ". ")
+			     (li (b "Dependable.")
+				 " The "
+				 (a (@ (href "/software/guix/manual/")
+				       (class "hlink-yellow"))
+				    "GNU Guix")
+				 " Package Manager, in addition to standard
+package management features, supports transactional upgrades and roll-backs,
+unprivileged package management, per-user profiles, and garbage collection.")
+			     (li (b "Hackable.")
+				 " It provides "
+				 (a (@ (href "https://www.gnu.org/s/guile/")
+				       (class "hlink-yellow"))
+				    "Guile Scheme")
+				 " APIs, including high-level embedded
+domain-specific languages (EDSLs), to describe how packages are built and
+composed."))
+			 (div (@ (class "featured-actions"))
+			      (a (@ (href "/software/guix/download/")
+				    (class "action download"))
+				 "TEST v0.8.2 (alpha)")
+			      (a (@ (href "/software/guix/contribute/")
+				    (class "action contribute"))
+				 "CONTRIBUTE"))))
+	       (div (@ (id "discovery-box"))
+		    (h2 "Discover GuixSD")
+		    (div (@ (class "info-box text-center"))
+			 (video (@ (src "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm")
+				   (poster
+				    "/software/guix/static/base/img/the-emacs-of-distros.png")
+				   (controls "controls")
+				   (class "video-preview")))
+			 (p "January 2015, The Emacs of Distros (48 minutes)")
+			 (p (a (@ (href "/software/guix/help/#talks")
+				  (class "hlink-more-light"))
+			       "Check all talks")))
+		    (div (@ (class "info-box text-left"))
+			 (p (a (@ (href "/software/guix/manual/")
+				  (class "hlink-yellow"))
+			       "GNU Guix Documentation")
+			    (br)
+			    "You may also find more information about GNU Guix
+by running info guix.")
+			 (p (a (@ (href "http://arxiv.org/abs/1305.4584")
+				  (class "hlink-yellow"))
+			       "Functional Package Management with Guix")
+			    (br)
+			    "A paper presented at the 2013 European Lisp
+Symposium (ELS), describes the rationale, design, and implementation of Guix's
+packaging API. ")
+			 (p (a (@ (href "http://www.gnu.org/manual/")
+				  (class "hlink-yellow"))
+			       "GNU Manuals Online")
+			    (br)
+			    "Primary documentation for official GNU packages.")
+			 (p (a (@ (href "/software/guix/help/")
+				  (class "hlink-more-light"))
+			       "Find more documentation")))
+		    (img (@ (src "/software/guix/static/base/img/h-separator-darker.png")
+			    (class "h-separator")
+			    (alt "")))
+		    (div (@ (id "screens-box"))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/grub-menu.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/grub-menu-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "GRUB menu"))))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/slim.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/slim-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "Slim login manager"))))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/windowmaker+icecat+inkscape.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/windowmaker+icecat+inkscape-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "Windowmaker, Icecat, and Inkscape"))))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/user-interfaces.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/user-interfaces-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "mplayer and xterm"))))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-packages.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-packages-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "Emacs user interface to the package manager."))))
+			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-generations.png"))
+			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-generations-thumb.png")
+				    (class "screenshot-thumb")
+				    (alt "Emacs user interface generations.")))))
+		    (p (a (@ (href "/software/guix/contribute/")
+			     (class "hlink-yellow-boxed"))
+			  "Help us package more software →")))
+	       (div (@ (id "news-box"))
+		    (h2 "News")
+		    (a (@ (href "http://www.fsf.org/news/fsf-adds-guix-system-distribution-to-list-of-endorsed-distributions")
+			  (class "news-entry"))
+		       (h4 "FSF adds Guix System Distribution to list of
+endorsed distributions")
+		       (p (@ (class "news-date")) "February 3, 2015")
+		       (p (@ (class "news-summary"))
+			  "The Guix System Distribution is a new and growing
+distro that currently ships with just over 1000 packages, already including
+almost all of the programs available from the GNU Project..."))
+		    (a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8193")
+			  (class "news-entry"))
+		       (h4 "GNU Guix 0.8.1 Released")
+		       (p (@ (class "news-date")) "January 29, 2015")
+		       (p (@ (class "news-summary"))
+			  "We are pleased to announce the next alpha release of
+GNU Guix, version 0.8.1. The release comes both with a source tarball, which
+allows you to install it on top of a running GNU/Linux system, and a USB
+installation image to install the standalone Guix System..."))
+		    (a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8191")
+			  (class "news-entry"))
+		       (h4 "GNU Guix at FOSDEM")
+		       (p (@ (class "news-date")) "January 27, 2015")
+		       (p (@ (class "news-summary"))
+			  "Guix will be present at FOSDEM in Brussels, Belgium,
+with a talk entitled \"The Emacs of Distros\" this Saturday, at 3PM, in room
+H.1302. The talk will give an update on developments in Guix and the Guix System
+Distribution since last year..."))
+		    (p (a (@ (href "https://savannah.gnu.org/news/?group=guix")
+			     (class "hlink-more-dark"))
+			  "More news")))
+	       (div (@ (id "contact-box"))
+		    (h2 "Contact")
+		    (div (@ (class "info-box text-justify"))
+			 (h3 "IRC Channel")
+			 (p "Some Guix users and developers hang out on the
+#guix channel of the Freenode IRC network. "
+			    (small "(See "
+				   (a (@ (href "https://gnunet.org/bot/log/guix/"))
+				      "channel logs")
+				   ")")
+			    ".")
+			 (p (@ (class "text-right"))
+			    (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
+				  (class "button btn-blue"))
+			       "Connect"))
+			 (h3 "Report Bugs")
+			 (p "Use the bugs mailing list to report bugs. Please
+check whether the bug is already in the "
+			    (a (@ (href "http://debbugs.gnu.org/cgi/pkgreport.cgi?pkg=guix"))
+			       "bug database")
+			    ".")
+			 (p (@ (class "text-right"))
+			    (a (@ (href "mailto:bug-guix@gnu.org")
+				  (class "button btn-red"))
+			       "Report")))
+		    (div (@ (class "info-box text-left"))
+			 (h3 "Mailing Lists")
+			 (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
+			       (b "guix-devel"))
+			    (small " ("
+				   (a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
+				      "archive")
+				   ")")
+			    (br)
+			    "Discussion about the development of GNU Guix and
+the Guix System Distribution (GuixSD).")
+			 (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
+			       (b "bug-guix"))
+			    (small " ("
+				   (a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
+				      "archive")
+				   ")")
+			    (br)
+			    "Bug reports for GNU Guix and the Guix System
+Distribution.")
+			 (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/gnu-system-discuss"))
+			       (b "gnu-system-discuss"))
+			    (small " ( "
+				   (a (@ (href "http://lists.gnu.org/archive/html/gnu-system-discuss/"))
+				      "archive")
+				   ")")
+			    (br)
+			    "Discussion about the development of
 the broader GNU system.")
-			      (p (a (@ (href "https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre"))
-				    (b "gnu-linux-libre"))
-				 (small " ("
-					(a (@ (href "http://lists.nongnu.org/archive/html/gnu-linux-libre/"))
-					   "archive")
-					")")
-				 (br)
-				 "Workgroup for fully free GNU/Linux
-distributions.")
-			      (p (a (@ (href "https://savannah.gnu.org/mail/?group=guix")
-				       (class "hlink-more-dark"))
-				    "Find all the available
-lists")))))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD"
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       " Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+			 (p (a (@ (href "https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre"))
+			       (b "gnu-linux-libre"))
+			    (small " ("
+				   (a (@ (href "http://lists.nongnu.org/archive/html/gnu-linux-libre/"))
+				      "archive")
+				   ")")
+			    (br)
+			    "Workgroup for fully free GNU/Linux distributions.")
+			 (p (a (@ (href "https://savannah.gnu.org/mail/?group=guix")
+				  (class "hlink-more-dark"))
+			       "Find all the available lists")))))
+	  ,(html-page-footer))))
 
 \f
 ;;;
diff --git a/website/www/about.scm b/website/www/about.scm
index bc964c9..128041d 100644
--- a/website/www/about.scm
+++ b/website/www/about.scm
@@ -1,189 +1,127 @@
 (define-module (www about)
+  #:use-module (www shared)
   #:export (about-page))
 
 (define about-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/article.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "About - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "About the Project")
-		     (p "The "
-			(em "Guix System Distribution (GuixSD)")
-			" and the "
-			(em "GNU Guix")
-			" package manager are free software projects
-developed by the "
-			(a (@ (href "http://www.gnu.org/"))
-			   "GNU Project")
-			" and independent volunteers from various
-parts of the world. This is the official website for both projects. ")
-		     (blockquote
-		      (p (strong
-			  "Free software means the users have the
-freedom to run, copy, distribute, study, change and improve the
-software."))
-		      (p "Free software is a matter of liberty, not
-price. To understand the concept, you should think of \"free\" as in
-\"free speech\", not as in \"free beer\". ")
-		      (p "More precisely, free software means users of
-a program have the "
-			 (a (@ (href "/philosophy/free-sw.html"))
-			    "four essential freedoms")
-			 ":")
-		      (ul (li "The freedom to run the program as you
-wish, for any purpose (freedom 0).")
-			  (li "The freedom to study how the program
-works, and adapt it to your needs (freedom 1). Access to the source
-code is a precondition for this.")
-			  (li "The freedom to redistribute copies so
-you can help your neighbor (freedom 2).")
-			  (li "The freedom to improve the program, and
-release your improvements to the public, so that the whole community
-benefits (freedom 3). Access to the source code is a precondition for
-this."))
-		      (p "\xa0gnu.org"))
-		     (h2 (@ (id "mantainer")) "Maintainer")
-		     (p "Guix is currently being maintained by Ludovic
+  `(html (@ (lang "en"))
+	 ,(html-page-header "About")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "About the Project")
+		(p "The "
+		   (em "Guix System Distribution (GuixSD)")
+		   " and the "
+		   (em "GNU Guix")
+		   " package manager are free software projects developed by
+the "
+		   (a (@ (href "http://www.gnu.org/"))
+		      "GNU Project")
+		   " and independent volunteers from various parts of the
+world. This is the official website for both projects. ")
+		(blockquote
+		 (p (strong
+		     "Free software means the users have the freedom to run,
+copy, distribute, study, change and improve the software."))
+		 (p "Free software is a matter of liberty, not price. To
+understand the concept, you should think of \"free\" as in \"free speech\", not
+as in \"free beer\". ")
+		 (p "More precisely, free software means users of a program have
+the "
+		    (a (@ (href "/philosophy/free-sw.html"))
+		       "four essential freedoms")
+		    ":")
+		 (ul (li "The freedom to run the program as you wish, for any
+purpose (freedom 0).")
+		     (li "The freedom to study how the program works, and adapt
+it to your needs (freedom 1). Access to the source code is a precondition for
+this.")
+		     (li "The freedom to redistribute copies so you can help
+your neighbor (freedom 2).")
+		     (li "The freedom to improve the program, and release your
+improvements to the public, so that the whole community benefits (freedom
+3). Access to the source code is a precondition for this."))
+		 (p "\xa0gnu.org"))
+		(h2 (@ (id "mantainer")) "Maintainer")
+		(p "Guix is currently being maintained by Ludovic
 Courtès. Please use the "
-			(a (@ (href "#contact")) "mailing lists")
-			" for contact. ")
-		     (h2 (@ (id "license")) "Licensing")
-		     (p "Guix is free software; you can redistribute
-it and/or modify it under the terms of the "
-			(a (@ (rel "license") (href "/licenses/gpl.html"))
-			   "GNU General Public License")
-			" as published by the Free Software Foundation; either version\xa03 of the License, or (at your option) any later version. ")
-		     (h2 (@ (id "contact")) "Contact")
-		     (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
-			   (b "guix-devel"))
-			(small " ("
-			       (a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
-				  "archive")
-			       ")")
-			(br)
-			"Discussion about the development of GNU Guix
-and the Guix System Distribution (GuixSD). "
-			(a (@ (href "http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00039.html"))
-			   " Until July 2013")
-			", the bug-Guix mailing list filled that
-role. ")
-		     (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
-			   (b "bug-guix"))
-			(small " ("
-			       (a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
-				  "archive")
-			       ")")
-			(br)
-			" Bug reports for GNU Guix and the Guix System Distribution. ")
-		     (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/gnu-system-discuss"))
-			   (b "gnu-system-discuss"))
-			(small " ("
-			       (a (@ (href "http://lists.gnu.org/archive/html/gnu-system-discuss/"))
-				  "archive")
-			       ") ")
-			(br)
-			"Discussion about the development of the
-broader GNU system. ")
-		     (p (a (@ (href "https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre"))
-			   (b "gnu-linux-libre"))
-			(small " ("
-			       (a (@ (href "http://lists.nongnu.org/archive/html/gnu-linux-libre/"))
-				  "archive")
-			       ") ")
-			(br)
-			"Workgroup for fully free GNU/Linux
-distributions.")
-		     (dl (dt "Commit notifications")
-			 (dd (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-commits"))
-				   "Guix-commits")
-				" receives notifications of commits to the "
-				(a (@ (href "#contribute"))
-				   "version control repository")
-				"."))
-			 (dt "Announcements")
-			 (dd (p "Announcements about Guix and most
-other GNU software are made on "
-				(a (@ (href "http://lists.gnu.org/mailman/listinfo/info-gnu"))
-				   "info-gnu")
-				" ("
-				(a (@ (href "http://lists.gnu.org/archive/html/info-gnu/"))
-				   "archive")
-				")."))
-			 (dt "Security reports")
-			 (dd (p "Security reports that should not be
-made immediately public can be sent directly to the maintainer.  If
-there is no response to an urgent issue, you can escalate to the
-general "
-				(a (@ (href "http://lists.gnu.org/mailman/listinfo/security"))
-				   "security")
-				" mailing list for advice."))
-			 (dt "Internet relay chat")
-			 (dd (p "Some Guix users and developers hang
-out on the "
-				(em "#guix")
-				" channel of the Freenode IRC
-network ("
-				(a (@ (href "https://gnunet.org/bot/log/guix/"))
-				   "logs")
-				").")))))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       "Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+		   (a (@ (href "#contact")) "mailing lists")
+		   " for contact. ")
+		(h2 (@ (id "license")) "Licensing")
+		(p "Guix is free software; you can redistribute it and/or modify
+it under the terms of the "
+		   (a (@ (rel "license") (href "/licenses/gpl.html"))
+		      "GNU General Public License")
+		   " as published by the Free Software Foundation; either
+version\xa03 of the License, or (at your option) any later version. ")
+		(h2 (@ (id "contact")) "Contact")
+		(p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
+		      (b "guix-devel"))
+		   (small " ("
+			  (a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
+			     "archive")
+			  ")")
+		   (br)
+		   "Discussion about the development of GNU Guix and the Guix
+System Distribution (GuixSD). "
+		   (a (@ (href "http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00039.html"))
+		      " Until July 2013")
+		   ", the bug-Guix mailing list filled that role. ")
+		(p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
+		      (b "bug-guix"))
+		   (small " ("
+			  (a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
+			     "archive")
+			  ")")
+		   (br)
+		   "Bug reports for GNU Guix and the Guix System Distribution.")
+		(p (a (@ (href "https://lists.gnu.org/mailman/listinfo/gnu-system-discuss"))
+		      (b "gnu-system-discuss"))
+		   (small " ("
+			  (a (@ (href "http://lists.gnu.org/archive/html/gnu-system-discuss/"))
+			     "archive")
+			  ") ")
+		   (br)
+		   "Discussion about the development of the broader GNU
+system.")
+		(p (a (@ (href "https://lists.nongnu.org/mailman/listinfo/gnu-linux-libre"))
+		      (b "gnu-linux-libre"))
+		   (small " ("
+			  (a (@ (href "http://lists.nongnu.org/archive/html/gnu-linux-libre/"))
+			     "archive")
+			  ") ")
+		   (br)
+		   "Workgroup for fully free GNU/Linux distributions.")
+		(dl (dt "Commit notifications")
+		    (dd (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-commits"))
+			      "Guix-commits")
+			   " receives notifications of commits to the "
+			   (a (@ (href "#contribute"))
+			      "version control repository")
+			   "."))
+		    (dt "Announcements")
+		    (dd (p "Announcements about Guix and most other GNU software
+are made on "
+			   (a (@ (href "http://lists.gnu.org/mailman/listinfo/info-gnu"))
+			      "info-gnu")
+			   "("
+			   (a (@ (href "http://lists.gnu.org/archive/html/info-gnu/"))
+			      "archive")
+			   ")."))
+		    (dt "Security reports")
+		    (dd (p "Security reports that should not be made immediately
+public can be sent directly to the maintainer.  If there is no response to an
+urgent issue, you can escalate to the general "
+			   (a (@ (href "http://lists.gnu.org/mailman/listinfo/security"))
+			      "security")
+			   " mailing list for advice."))
+		    (dt "Internet relay chat")
+		    (dd (p "Some Guix users and developers hang out on the "
+			   (em "#guix")
+			   " channel of the Freenode IRC network ("
+			   (a (@ (href "https://gnunet.org/bot/log/guix/"))
+			      "logs")
+			   ").")))))
+	  ,(html-page-footer))))
diff --git a/website/www/contribute.scm b/website/www/contribute.scm
index da254c9..076412a 100644
--- a/website/www/contribute.scm
+++ b/website/www/contribute.scm
@@ -1,222 +1,158 @@
 (define-module (www contribute)
+  #:use-module (www shared)
   #:export (contribute-page))
 
 (define contribute-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/article.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Contribute - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "Contribute")
-		     (p "The Guix System Distribution is a large
-project developed mostly by volunteers from all around the world. You
-are welcome to join us in the "
-			(a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel"))
-			   "development mailing list")
-			" or in the "
-			(a (@ (href "http://webchat.freenode.net/?channels=%23guix"))
-			   "#guix channel")
-			" in IRC Freenode. Tell us how would you like
-to help, and we will do our best to guide you. ")
-		     (div (@ (class "text-center"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "pms"))
-				   "Project Management System")
-			       (p "We use "
-				  (a (@ (href "https://savannah.gnu.org/"))
-				     "Savannah")
-				  " as the central point for
-development, maintenance and distribution of the Guix System
-Distribution and GNU Guix.")
-			       (p " The source files for all the
-components of the project, including software, webiste, documentation,
-and artwork, are available in various repositories in Savannah. ")
-			       (a (@ (href "https://savannah.gnu.org/projects/guix")
-				     (class "hlink-more-dark"))
-				  "Get the source"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "art")) "Art")
-			       (p "We are always looking for artists
-to help us design and improve user interfaces, and create multimedia
-material for documentation, presentations, and promotional items. ")
-			       (p "The artwork used in the different
-components of the project is available in the "
-				  (a (@ (href "http://git.savannah.gnu.org/cgit/guix/guix-artwork.git"))
-				     "guix-artwork")
-				  " repository. ")
-			       (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
-				     (class "hlink-more-dark"))
-				  "Contribute"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "documentation"))
-				   "Documentation")
-			       (p "You can read the "
-				  (a (@ (href "/software/guix/help/"))
-				     "project documentation")
-				  " already available in the system
-and in the website, and help us identify any errors or
-omissions. Creating new manuals, tutorials, and blog entries will also
-help users and developers discover what we do. ")
-			       (p "Helping improve the documentation
-of the "
-				  (a (@ (href "/software/guix/packages/"))
-				     "packaged software")
-				  " is another way to contribute. ")
-			       (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
-				     (class "hlink-more-dark"))
-				  "Start writing"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "packages")) "Packages")
-			       (p "Hundreds of software,
-documentation, and assets need to be packaged to make it easier for
-users to install their favorite tools with the Guix package manager,
-and be productive using the system. ")
-			       (p "Information on how to add packages
-to the distribution can be found "
-				  (a (@ (href "/software/guix/manual/guix.html#Packaging-Guidelines"))
-				     "in the manual")
-				  ". ")
-			       (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
-				     (class "hlink-more-dark"))
-				  "Send a new package"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "programming")) "Programming")
-			       (p "We use "
-				  (a (@ (href "/software/guile/"))
-				     "GNU Guile")
-				  " as the main programming and
-extension language for the components of the system. ")
-			       (p "You will find it useful to browse
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Contribute")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "Contribute")
+		(p "The Guix System Distribution is a large project developed
+mostly by volunteers from all around the world. You are welcome to join us in
 the "
-				  (a (@ (href "/software/guile/manual"))
-				     "Guile's manual")
-				  " or other "
-				  (a (@ (href "http://schemers.org/Documents/#intro-texts"))
-				     "introductory material about
-Scheme")
-				  ". Also, make sure to read the "
-				  (a (@ (href "http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING"))
-				     "HACKING")
-				  " files for more details on the
-development setup, as well as the coding and cooperation conventions
-used in the project. ")
-			       (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
-				     (class "hlink-more-dark"))
-				  "Send a new patch"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "sysadmin"))
-				   "System Administration")
-			       (p "Our system infrastructure makes it
-possible for all the contributors to communicate and collaborate in
-the project, and users to be able to download and install
-packages. Help us keep the system up and running smoothly. ")
-			       (p "You can also "
-				  (a (@ (href "/software/guix/donate/"))
-				     "donate hardware or hosting")
-				  ". ")
-			       (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
-				     (class "hlink-more-dark"))
-				  "Contribute"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "testing"))
-				   "Test and Bug Reports")
-			       (p "Install the software and send
-feedback to the community about your experience. Help the project
-reporting bugs.")
-			       (p "Before reporting a bug, please
-check whether the bug is already "
-				  (a (@ (href "http://debbugs.gnu.org/guix"))
-				     "in the bug database")
-				  ". See "
-				  (a (@ (href "http://debbugs.gnu.org/Developer.html"))
-				     "the developer information page")
-				  " for more information on how to
-manipulate bug reports. ")
-			       (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix")
-				     (class "hlink-more-dark"))
-				  "Report a bug"))
-			  (div (@ (class "summary-box"))
-			       (h2 (@ (id "translation")) "Translation")
-			       (p "You can help us translate software
-and documentation to your language. The main components of the Guix
-System Distribution, including the Guix package manager, can be
-translated in the "
-				  (a (@ (href "http://translationproject.org/"))
-				     "Translation Project")
-				  ".")
-			       (p "Other "
-				  (a (@ (href "/software/guix/packages/"))
-				     "software packaged")
-				  " for the system may have their own
-translation tools. Visit their websites and help translate. ")
-			       (a (@ (href "http://translationproject.org/")
-				     (class "hlink-more-dark"))
-				  "Start translating")))
-		     (h2 (@ (id "resources"))
-			 "Other resources for contributors")
-		     (p "Documents, supporting material of previous
-talks, and auxiliary information useful to hackers and maintainers is
-available at "
-			(a (@ (href "http://git.savannah.gnu.org/cgit/guix/maintenance.git"))
-			   "git://git.sv.gnu.org/guix/maintenance.git")
-			".")))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       "Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+		   (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel"))
+		      "development mailing list")
+		   " or in the "
+		   (a (@ (href "http://webchat.freenode.net/?channels=%23guix"))
+		      "#guix channel")
+		   " in IRC Freenode. Tell us how would you like to help, and we
+will do our best to guide you. ")
+		(div (@ (class "text-center"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "pms"))
+			      "Project Management System")
+			  (p "We use "
+			     (a (@ (href "https://savannah.gnu.org/"))
+				"Savannah")
+			     " as the central point for development,
+maintenance and distribution of the Guix System Distribution and GNU Guix.")
+			  (p "The source files for all the components of the
+project, including software, webiste, documentation, and artwork, are available
+in various repositories in Savannah. ")
+			  (a (@ (href "https://savannah.gnu.org/projects/guix")
+				(class "hlink-more-dark"))
+			     "Get the source"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "art")) "Art")
+			  (p "We are always looking for artists to help us
+design and improve user interfaces, and create multimedia material for
+documentation, presentations, and promotional items. ")
+			  (p "The artwork used in the different components of
+the project is available in the "
+			     (a (@ (href "http://git.savannah.gnu.org/cgit/guix/guix-artwork.git"))
+				"guix-artwork")
+			     "repository. ")
+			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
+				(class "hlink-more-dark"))
+			     "Contribute"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "documentation"))
+			      "Documentation")
+			  (p "You can read the "
+			     (a (@ (href "/software/guix/help/"))
+				"project documentation")
+			     " already available in the system and in the
+website, and help us identify any errors or omissions. Creating new manuals,
+tutorials, and blog entries will also help users and developers discover what we
+do. ")
+			  (p "Helping improve the documentation of
+the "
+			     (a (@ (href "/software/guix/packages/"))
+				"packaged software")
+			     " is another way to contribute. ")
+			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
+				(class "hlink-more-dark"))
+			     "Start writing"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "packages")) "Packages")
+			  (p "Hundreds of software, documentation, and assets
+need to be packaged to make it easier for users to install their favorite tools
+with the Guix package manager, and be productive using the system. ")
+			  (p "Information on how to add packages to the
+distribution can be found "
+			     (a (@ (href "/software/guix/manual/guix.html#Packaging-Guidelines"))
+				"in the manual")
+			     ". ")
+			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
+				(class "hlink-more-dark"))
+			     "Send a new package"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "programming")) "Programming")
+			  (p "We use "
+			     (a (@ (href "/software/guile/"))
+				"GNU Guile")
+			     " as the main programming and extension language
+for the components of the system. ")
+			  (p "You will find it useful to browse the "
+			     (a (@ (href "/software/guile/manual"))
+				"Guile's manual")
+			     " or other "
+			     (a (@ (href "http://schemers.org/Documents/#intro-texts"))
+				"introductory material about Scheme")
+			     ". Also, make sure to read the "
+			     (a (@ (href "http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING"))
+				"HACKING")
+			     " files for more details on the development setup,
+as well as the coding and cooperation conventions used in the project. ")
+			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
+				(class "hlink-more-dark"))
+			     "Send a new patch"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "sysadmin"))
+			      "System Administration")
+			  (p "Our system infrastructure makes it possible for
+all the contributors to communicate and collaborate in the project, and users to
+be able to download and install packages. Help us keep the system up and running
+smoothly. ")
+			  (p "You can also "
+			     (a (@ (href "/software/guix/donate/"))
+				"donate hardware or hosting")
+			     ". ")
+			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
+				(class "hlink-more-dark"))
+			     "Contribute"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "testing"))
+			      "Test and Bug Reports")
+			  (p "Install the software and send feedback to the
+community about your experience. Help the project reporting bugs.")
+			  (p "Before reporting a bug, please check whether the
+bug is already "
+			     (a (@ (href "http://debbugs.gnu.org/guix"))
+				"in the bug database")
+			     ". See "
+			     (a (@ (href "http://debbugs.gnu.org/Developer.html"))
+				"the developer information page")
+			     " for more information on how to manipulate bug
+reports. ")
+			  (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix")
+				(class "hlink-more-dark"))
+			     "Report a bug"))
+		     (div (@ (class "summary-box"))
+			  (h2 (@ (id "translation")) "Translation")
+			  (p "You can help us translate software and
+documentation to your language. The main components of the Guix System
+Distribution, including the Guix package manager, can be translated in the "
+			     (a (@ (href "http://translationproject.org/"))
+				"Translation Project")
+			     ".")
+			  (p "Other "
+			     (a (@ (href "/software/guix/packages/"))
+				"software packaged")
+			     " for the system may have their own translation
+tools. Visit their websites and help translate. ")
+			  (a (@ (href "http://translationproject.org/")
+				(class "hlink-more-dark"))
+			     "Start translating")))
+		(h2 (@ (id "resources"))
+		    "Other resources for contributors")
+		(p "Documents, supporting material of previous talks, and
+auxiliary information useful to hackers and maintainers is available at "
+		   (a (@ (href "http://git.savannah.gnu.org/cgit/guix/maintenance.git"))
+		      "git://git.sv.gnu.org/guix/maintenance.git")
+		   ".")))
+	  ,(html-page-footer))))
diff --git a/website/www/donate.scm b/website/www/donate.scm
index 8072a19..5ded10a 100644
--- a/website/www/donate.scm
+++ b/website/www/donate.scm
@@ -1,135 +1,76 @@
 (define-module (www donate)
+  #:use-module (www shared)
   #:export (donate-page))
 
 (define donate-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/article.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Donate - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "Donate")
-		     (p "The "
-			(a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
-			   "build farm")
-			" of the Guix System Distribution runs on
-donated hardware and hosting. Please consider helping the project with
-donations. ")
-		     (p "As the distribution grows (see the "
-			(a (@ (href "/software/guix/packages/"))
-			   "package list")
-			"), so do the computing and storage needs. We
-are looking for donations of hardware and optionally hosting for the
-following kinds of machines (they should be usable with exclusively
-free software): ")
-		     (ul (li "x86_64 machines, with on the order of
-1\xa0TiB of storage and 4\xa0GiB of RAM;")
-			 (li "armv7 machines that would allow us to
-provide pre-built binaries for the "
-			     (a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8175"))
-				"recently-added ARM port")
-			     ";")
-			 (li "mips64el machines to strengthen this port."))
-		     (p "Please get in touch with us through the "
-			(a (@ (href "/software/guix/about/#contact"))
-			   "usual channels")
-			"or using the guix-hardware@gnu.org private
-alias to discuss any opportunities. ")
-		     (h2 (@ (id "hardware-donors"))
-			 "Thanks to the donors!")
-		     (p "The table below summarizes hardware and
-hosting donations that make the "
-			(a (@ (href "http://hydra.gnu.org"))
-			   "build farm")
-			" for the Guix System Distribution a
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Home")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "Donate")
+		(p "The "
+		   (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
+		      "build farm")
+		   " of the Guix System Distribution runs on donated hardware
+and hosting. Please consider helping the project with donations. ")
+		(p "As the distribution grows (see the "
+		   (a (@ (href "/software/guix/packages/"))
+		      "package list")
+		   "), so do the computing and storage needs. We are looking for
+donations of hardware and optionally hosting for the following kinds of
+machines (they should be usable with exclusively free software): ")
+		(ul (li "x86_64 machines, with on the order of 1\xa0TiB of
+storage and 4\xa0GiB of RAM;")
+		    (li "armv7 machines that would allow us to provide pre-built
+binaries for the "
+			(a (@ (href "https://savannah.gnu.org/forum/forum.php?forum_id=8175"))
+			   "recently-added ARM port")
+			";")
+		    (li "mips64el machines to strengthen this port."))
+		(p "Please get in touch with us through the "
+		   (a (@ (href "/software/guix/about/#contact"))
+		      "usual channels")
+		   "or using the guix-hardware@gnu.org private alias to discuss
+any opportunities. ")
+		(h2 (@ (id "hardware-donors")) "Thanks to the donors!")
+		(p "The table below summarizes hardware and hosting donations
+that make the "
+		   (a (@ (href "http://hydra.gnu.org"))
+		      "build farm")
+		   " for the Guix System Distribution a
 reality.")
-		     (table (thead (tr (th "machine")
-				       (th "system")
-				       (th "donors")))
-			    (tbody (tr (td "hydra.gnu.org")
-				       (td "build farm front-end")
-				       (td (ul (li (a (@ (href "http://www.fsf.org/"))
-						      "Free Software \t          Foundation")))))
-				   (tr (td "hydra.gnunet.org")
-				       (td "x86_64-linux, i686-linux")
-				       (td (ul (li (a (@ (href "https://gnunet.org/fsnsg"))
-						      "Free Secure
+		(table (thead (tr (th "machine")
+				  (th "system")
+				  (th "donors")))
+		       (tbody (tr (td "hydra.gnu.org")
+				  (td "build farm front-end")
+				  (td (ul (li (a (@ (href "http://www.fsf.org/"))
+						 "Free Software \t          Foundation")))))
+			      (tr (td "hydra.gnunet.org")
+				  (td "x86_64-linux, i686-linux")
+				  (td (ul (li (a (@ (href "https://gnunet.org/fsnsg"))
+						 "Free Secure
 Network Systems Group")
-						   " at the "
-						   (a (@ (href "http://www.tum.de/"))
-						      "Technische
+					      " at the "
+					      (a (@ (href "http://www.tum.de/"))
+						 "Technische
 Universität München")))))
-				   (tr (td "chapters.gnu.org")
-				       (td "x86_64-linux, i686-linux")
-				       (td (ul (li (a (@ (href "http://es.gnu.org"))
-						      "GNU\xa0España")
-						   " (hardware)")
-					       (li (a (@ (href "http://fsffrance.org/index.en.html"))
-						      "FSF\xa0France")
-						   " (hosting)"))))
-				   (tr (td "wildebeest")
-				       (td "x86_64-linux, i686-linux")
-				       (td (ul (li "anonymous"))))
-				   (tr (td "librenote")
-				       (td "mips64el-linux")
-				       (td (ul (li "Daniel Clark (hardware)")
-					       (li "Mark H. Weaver (hosting)"))))))))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       "Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+			      (tr (td "chapters.gnu.org")
+				  (td "x86_64-linux, i686-linux")
+				  (td (ul (li (a (@ (href "http://es.gnu.org"))
+						 "GNU\xa0España")
+					      " (hardware)")
+					  (li (a (@ (href "http://fsffrance.org/index.en.html"))
+						 "FSF\xa0France")
+					      " (hosting)"))))
+			      (tr (td "wildebeest")
+				  (td "x86_64-linux, i686-linux")
+				  (td (ul (li "anonymous"))))
+			      (tr (td "librenote")
+				  (td "mips64el-linux")
+				  (td (ul (li "Daniel Clark (hardware)")
+					  (li "Mark H. Weaver (hosting)"))))))))
+	  ,(html-page-footer))))
diff --git a/website/www/download.scm b/website/www/download.scm
index 4aef10d..35a86ec 100644
--- a/website/www/download.scm
+++ b/website/www/download.scm
@@ -1,185 +1,126 @@
 (define-module (www download)
+  #:use-module (www shared)
   #:export (download-page))
 
 (define download-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/download.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Download - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "Download")
-		     (p "As of version 0.8.1, the Guix System
-Distribution "
-			(a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
-			   "can be installed")
-			" on an i686 or x86_64 machine. It uses the "
-			(a (@ (href "/software/linux-libre"))
-			   "Linux-Libre")
-			" kernel and the "
-			(a (@ (href "/software/dmd")) "GNU dmd")
-			" init system. Alternately, its package
-manager, GNU Guix, can be installed as an additional package manager
-on top of an installed Linux-based system.")
-		     (div (@ (class "text-center"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
-					    (alt ""))))
-			       (h2 "GuixSD 0.8.2 (i686)")
-			       (p "USB installer for machines with the
-following minimum system requirements:")
-			       (table (tbody (tr (th "Architecture")
-						 (td "i686"))
-					     (tr (th "Processor")
-						 (td "1GHz"))
-					     (tr (th "Memory")
-						 (td "512MB"))
-					     (tr (th "Hard Drive")
-						 (td "5GB"))))
-			       (p (@ (class "text-center"))
-				  (a (@ (href "#")
-					(class "hlink-yellow-boxed"))
-				     "DOWNLOAD")
-				  (br)
-				  "(140MB approx.)"
-				  (br)
-				  (a (@ (href "#")) "Get signature"))
-			       (p "See the "
-				  (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
-				     "installation instructions")
-				  " from the manual.")
-			       (p "Alternative download methods: "
-				  (a (@ (href "#")) "torrent")
-				  "."))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
-					    (alt ""))))
-			       (h2 "GuixSD 0.8.2 (x86_64)")
-			       (p "USB installer for machines with the
-following minimum system requirements:")
-			       (table (tbody (tr (th "Architecture")
-						 (td "x86_64"))
-					     (tr (th "Processor")
-						 (td "1GHz"))
-					     (tr (th "Memory")
-						 (td "512MB"))
-					     (tr (th "Hard Drive")
-						 (td "5GB"))))
-			       (p (@ (class "text-center"))
-				  (a (@ (href "#")
-					(class "hlink-yellow-boxed"))
-				     "DOWNLOAD")
-				  (br)
-				  "(144MB approx.)"
-				  (br)
-				  (a (@ (href "#")) "Get signature"))
-			       (p "See the "
-				  (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
-				     "installation instructions")
-				  " from the manual.")
-			       (p "Alternative download methods: "
-				  (a (@ (href "#")) "torrent")
-				  "."))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/Guix-package.png")
-					    (alt ""))))
-			       (h2 "GNU Guix 0.8.2")
-			       (p "Archive distribution to install
-from source on machines with the following minimum system
-requirements:")
-			       (table (tbody (tr (th "Architecture")
-						 (td "i686, x86_64, mips64el, or armv7"))
-					     (tr (th "Processor")
-						 (td "1GHz"))
-					     (tr (th "Memory")
-						 (td "512MB"))
-					     (tr (th "Hard Drive")
-						 (td "5GB"))))
-			       (p (@ (class "text-center"))
-				  (a (@ (href "#")
-					(class "hlink-yellow-boxed"))
-				     "DOWNLOAD")
-				  (br)
-				  "(7.7MB approx.)"
-				  (br)
-				  (a (@ (href "#")) "Get signature"))
-			       (p "See the "
-				  (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
-				     " installation instructions")
-				  " from the manual.")
-			       (p "Alternative download methods: "
-				  (a (@ (href "#")) "torrent")
-				  ". ")))
-		     (p "Source code for the Guix System Distribution
-USB installation images as well as GNU Guix can be found on the GNU
-ftp server for "
-			(em "alpha")
-			" releases: "
-			(a (@ (href "http://alpha.gnu.org/gnu/guix/"))
-			   "http://alpha.gnu.org/gnu/guix/")
-			" (via HTTP) and "
-			(a (@ (href "ftp://alpha.gnu.org/gnu/guix/"))
-			   "ftp://alpha.gnu.org/gnu/guix/")
-			" (via FTP). ")))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       "Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Download")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "Download")
+		(p "As of version 0.8.1, the Guix System Distribution "
+		   (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+		      "can be installed")
+		   " on an i686 or x86_64 machine. It uses the "
+		   (a (@ (href "/software/linux-libre"))
+		      "Linux-Libre")
+		   " kernel and the "
+		   (a (@ (href "/software/dmd")) "GNU dmd")
+		   " init system. Alternately, its package manager, GNU Guix,
+can be installed as an additional package manager on top of an installed
+Linux-based system.")
+		(div (@ (class "text-center"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+				       (alt ""))))
+			  (h2 "GuixSD 0.8.2 (i686)")
+			  (p "USB installer for machines with the following
+minimum system requirements:")
+			  (table (tbody (tr (th "Architecture")
+					    (td "i686"))
+					(tr (th "Processor")
+					    (td "1GHz"))
+					(tr (th "Memory")
+					    (td "512MB"))
+					(tr (th "Hard Drive")
+					    (td "5GB"))))
+			  (p (@ (class "text-center"))
+			     (a (@ (href "#")
+				   (class "hlink-yellow-boxed"))
+				"DOWNLOAD")
+			     (br)
+			     "(140MB approx.)"
+			     (br)
+			     (a (@ (href "#")) "Get signature"))
+			  (p "See the "
+			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+				"installation instructions")
+			     " from the manual.")
+			  (p "Alternative download methods: "
+			     (a (@ (href "#")) "torrent")
+			     "."))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+				       (alt ""))))
+			  (h2 "GuixSD 0.8.2 (x86_64)")
+			  (p "USB installer for machines with the following
+minimum system requirements:")
+			  (table (tbody (tr (th "Architecture")
+					    (td "x86_64"))
+					(tr (th "Processor")
+					    (td "1GHz"))
+					(tr (th "Memory")
+					    (td "512MB"))
+					(tr (th "Hard Drive")
+					    (td "5GB"))))
+			  (p (@ (class "text-center"))
+			     (a (@ (href "#")
+				   (class "hlink-yellow-boxed"))
+				"DOWNLOAD")
+			     (br)
+			     "(144MB approx.)"
+			     (br)
+			     (a (@ (href "#")) "Get signature"))
+			  (p "See the "
+			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+				"installation instructions")
+			     " from the manual.")
+			  (p "Alternative download methods: "
+			     (a (@ (href "#")) "torrent")
+			     "."))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/Guix-package.png")
+				       (alt ""))))
+			  (h2 "GNU Guix 0.8.2")
+			  (p "Archive distribution to install from source on
+machines with the following minimum system requirements:")
+			  (table (tbody (tr (th "Architecture")
+					    (td "i686, x86_64, mips64el, or armv7"))
+					(tr (th "Processor")
+					    (td "1GHz"))
+					(tr (th "Memory")
+					    (td "512MB"))
+					(tr (th "Hard Drive")
+					    (td "5GB"))))
+			  (p (@ (class "text-center"))
+			     (a (@ (href "#")
+				   (class "hlink-yellow-boxed"))
+				"DOWNLOAD")
+			     (br)
+			     "(7.7MB approx.)"
+			     (br)
+			     (a (@ (href "#")) "Get signature"))
+			  (p "See the "
+			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+				" installation instructions")
+			     " from the manual.")
+			  (p "Alternative download methods: "
+			     (a (@ (href "#")) "torrent")
+			     ". ")))
+		(p "Source code for the Guix System Distribution USB
+installation images as well as GNU Guix can be found on the GNU ftp server for "
+		   (em "alpha")
+		   " releases: "
+		   (a (@ (href "http://alpha.gnu.org/gnu/guix/"))
+		      "http://alpha.gnu.org/gnu/guix/")
+		   " (via HTTP) and "
+		   (a (@ (href "ftp://alpha.gnu.org/gnu/guix/"))
+		      "ftp://alpha.gnu.org/gnu/guix/")
+		   " (via FTP). ")))
+	  ,(html-page-footer))))
diff --git a/website/www/help.scm b/website/www/help.scm
index 93060a3..0899ebc 100644
--- a/website/www/help.scm
+++ b/website/www/help.scm
@@ -1,241 +1,183 @@
 (define-module (www help)
+  #:use-module (www shared)
   #:export (help-page))
 
 (define help-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/help.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Help - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "Help")
-		     (div (@ (class "text-center"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/guixsd-manual-icon.png")
-					    (alt ""))))
-			       (h2 "GuixSD Manual")
-			       (p "The documentation about the Guix
-System Distribution is available online as part of the GNU Guix
-package manager manual.")
-			       (a (@ (href "/software/guix/manual/guix.html#GNU-Distribution")
-				     (class "hlink-more-dark"))
-				  "Read the manual"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/guix-manual-icon.png")
-					    (alt ""))))
-			       (h2 "GNU Guix Manual")
-			       (p "Documentation for the GNU Guix
-package manager is available online. You may also find more
-information about Guix by running "
-				  (em "info\xa0guix")
-				  ".")
-			       (a (@ (href "/software/guix/manual/")
-				     (class "hlink-more-dark"))
-				  "Read the manual"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/library-icon.png")
-					    (alt ""))))
-			       (h2 "GNU Manuals")
-			       (p "GuixSD is a distribution of the "
-				  (a (@ (href "http://www.gnu.org/"))
-				     "GNU operating system")
-				  ". Most GNU software is documented
-and the documentation is available online in various formats. ")
-			       (a (@ (href "http://www.gnu.org/doc/doc.en.html")
-				     (class "hlink-more-dark"))
-				  "Browse the manuals"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/chat-icon.png")
-					    (alt ""))))
-			       (h2 "IRC Chat")
-			       (p "For real-time support from the
-community, you can connect to the "
-				  (em "#guix")
-				  " channel on irc.freenode.net. There
-you can get help about anything related to both the Guix System
-Distribution and GNU Guix.")
-			       (p "The "
-				  (em "#guix")
-				  " channel is logged. Previous
-conversations can be browsed online. See the "
-				  (a (@ (href "https://gnunet.org/bot/log/guix/"))
-				     "channel logs")
-				  ". ")
-			       (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
-				     (class "hlink-more-dark"))
-				  "Connect"))
-			  (div (@ (class "summary-box"))
-			       (div (@ (class "text-center"))
-				    (img (@ (src "/software/guix/static/base/img/email-icon.png")
-					    (alt ""))))
-			       (h2 "Mailing lists")
-			       (p "Email support from the community is
-also available through the following mailing lists. The messages sent
-to the lists are public and archived online.")
-			       (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
-				     (b "guix-devel"))
-				  (small " ("
-					 (a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
-					    "archive")
-					 ") ")
-				  (br)
-				  "Discussion about the development of
-GNU Guix and the Guix System Distribution (GuixSD).")
-			       (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
-				     (b "bug-guix"))
-				  (small " ("
-					 (a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
-					    "archive")
-					 ") ")
-				  (br)
-				  "Bug reports for GNU Guix and the
-Guix System Distribution. ")
-			       (a (@ (href "https://savannah.gnu.org/mail/?group=guix")
-				     (class "hlink-more-dark"))
-				  "Check all the lists")))
-		     (h2 "Additional Documentation")
-		     (ul (li (a (@ (href "http://arxiv.org/abs/1305.4584"))
-				(i "Functional Package Management with Guix"))
-			     ", presented at the "
-			     (a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
-				"2013 European Lisp Symposium (ELS)")
-			     ", describes the rationale, design, and
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Help")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "Help")
+		(div (@ (class "text-center"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/guixsd-manual-icon.png")
+				       (alt ""))))
+			  (h2 "GuixSD Manual")
+			  (p "The documentation about the Guix System
+Distribution is available online as part of the GNU Guix package manager
+manual.")
+			  (a (@ (href "/software/guix/manual/guix.html#GNU-Distribution")
+				(class "hlink-more-dark"))
+			     "Read the manual"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/guix-manual-icon.png")
+				       (alt ""))))
+			  (h2 "GNU Guix Manual")
+			  (p "Documentation for the GNU Guix package manager is
+available online. You may also find more information about Guix by running "
+			     (em "info\xa0guix")
+			     ".")
+			  (a (@ (href "/software/guix/manual/")
+				(class "hlink-more-dark"))
+			     "Read the manual"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/library-icon.png")
+				       (alt ""))))
+			  (h2 "GNU Manuals")
+			  (p "GuixSD is a distribution of the "
+			     (a (@ (href "http://www.gnu.org/"))
+				"GNU operating system")
+			     ". Most GNU software is documented and the
+documentation is available online in various formats. ")
+			  (a (@ (href "http://www.gnu.org/doc/doc.en.html")
+				(class "hlink-more-dark"))
+			     "Browse the manuals"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/chat-icon.png")
+				       (alt ""))))
+			  (h2 "IRC Chat")
+			  (p "For real-time support from the community, you can
+connect to the "
+			     (em "#guix")
+			     " channel on irc.freenode.net. There you can get
+help about anything related to both the Guix System Distribution and GNU Guix.")
+			  (p "The "
+			     (em "#guix")
+			     " channel is logged. Previous conversations can be
+browsed online. See the "
+			     (a (@ (href "https://gnunet.org/bot/log/guix/"))
+				"channel logs")
+			     ". ")
+			  (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
+				(class "hlink-more-dark"))
+			     "Connect"))
+		     (div (@ (class "summary-box"))
+			  (div (@ (class "text-center"))
+			       (img (@ (src "/software/guix/static/base/img/email-icon.png")
+				       (alt ""))))
+			  (h2 "Mailing lists")
+			  (p "Email support from the community is also available
+through the following mailing lists. The messages sent to the lists are public
+and archived online.")
+			  (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/guix-devel"))
+				(b "guix-devel"))
+			     (small " ("
+				    (a (@ (href "https://lists.gnu.org/archive/html/guix-devel"))
+				       "archive")
+				    ") ")
+			     (br)
+			     "Discussion about the development of GNU Guix and
+the Guix System Distribution (GuixSD).")
+			  (p (a (@ (href "https://lists.gnu.org/mailman/listinfo/bug-guix"))
+				(b "bug-guix"))
+			     (small " ("
+				    (a (@ (href "https://lists.gnu.org/archive/html/bug-guix"))
+				       "archive")
+				    ") ")
+			     (br)
+			     "Bug reports for GNU Guix and the Guix System
+Distribution. ")
+			  (a (@ (href "https://savannah.gnu.org/mail/?group=guix")
+				(class "hlink-more-dark"))
+			     "Check all the lists")))
+		(h2 "Additional Documentation")
+		(ul (li (a (@ (href "http://arxiv.org/abs/1305.4584"))
+			   (i "Functional Package Management with Guix"))
+			", presented at the "
+			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			   "2013 European Lisp Symposium (ELS)")
+			", describes the rationale, design, and
 implementation of Guix's packaging API. \t "))
-		     (h2 (@ (id "talks")) "Talks")
-		     (ul (li "February 2015, "
-			     (a (@ (href "https://fosdem.org/2015/schedule/event/the_emacs_of_distros/"))
-				"FOSDEM")
-			     ": "
-			     (a (@ (href "guix-fosdem-20150131.pdf"))
-				"slides")
-			     ", "
-			     (a (@ (href "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
-				"video")
-			     " (WebM; 47 minutes) ")
-			 (li "August 2014, "
-			     (a (@ (href "http://audio-video.gnu.org/video/ghm2014/"))
-				"GNU Hackers Meeting")
-			     ": "
-			     (a (@ (href "guix-ghm-20140815.pdf"))
-				"slides")
-			     ", "
-			     (a (@ (href "http://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
-				"video")
-			     " (WebM; 60 minutes) ")
-			 (li "July 2014, "
-			     (a (@ (href "http://www.open-bio.org/wiki/Codefest_2014"))
-				"Open Bioinformatics Codefest 2014")
-			     ": "
-			     (a (@ (href "guix-openbio-codefest-20140709.pdf"))
-				"slides"))
-			 (li "February 2014, "
-			     (a (@ (href "https://fosdem.org/2014/schedule/event/gnuguix/"))
-				"FOSDEM")
-			     ": "
-			     (a (@ (href "guix-fosdem-20140201.pdf"))
-				"slides")
-			     ", "
-			     (a (@ (href "http://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
-				"video")
-			     " (WebM; 55 minutes) ")
-			 (li "August 2013, "
-			     (a (@ (href "/ghm/2013/paris"))
-				"GNU Hackers Meeting")
-			     (ul (li (i "GNU Guix: Package without a
+		(h2 (@ (id "talks")) "Talks")
+		(ul (li "February 2015, "
+			(a (@ (href "https://fosdem.org/2015/schedule/event/the_emacs_of_distros/"))
+			   "FOSDEM")
+			": "
+			(a (@ (href "guix-fosdem-20150131.pdf"))
+			   "slides")
+			", "
+			(a (@ (href "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
+			   "video")
+			" (WebM; 47 minutes) ")
+		    (li "August 2014, "
+			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/"))
+			   "GNU Hackers Meeting")
+			": "
+			(a (@ (href "guix-ghm-20140815.pdf"))
+			   "slides")
+			", "
+			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
+			   "video")
+			" (WebM; 60 minutes) ")
+		    (li "July 2014, "
+			(a (@ (href "http://www.open-bio.org/wiki/Codefest_2014"))
+			   "Open Bioinformatics Codefest 2014")
+			": "
+			(a (@ (href "guix-openbio-codefest-20140709.pdf"))
+			   "slides"))
+		    (li "February 2014, "
+			(a (@ (href "https://fosdem.org/2014/schedule/event/gnuguix/"))
+			   "FOSDEM")
+			": "
+			(a (@ (href "guix-fosdem-20140201.pdf"))
+			   "slides")
+			", "
+			(a (@ (href "http://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
+			   "video")
+			" (WebM; 55 minutes) ")
+		    (li "August 2013, "
+			(a (@ (href "/ghm/2013/paris"))
+			   "GNU Hackers Meeting")
+			(ul (li (i "GNU Guix: Package without a
 scheme!")
-				     ", by Andreas: "
-				     (a (@ (href "guix-ghm-andreas-20130823.pdf"))
-					"slides"))
-				 (li (i "Guix, the Computing Freedom
+				", by Andreas: "
+				(a (@ (href "guix-ghm-andreas-20130823.pdf"))
+				   "slides"))
+			    (li (i "Guix, the Computing Freedom
 Deployment Tool")
-				     ", by Ludovic: "
-				     (a (@ (href "guix-ghm-ludo-20130823.pdf"))
-					"slides")
-				     ", "
-				     (a (@ (href "http://audio-video.gnu.org/video/ghm2013/Ludovic_Courtes-GNU_Guix_the_computing_freedom_deployment_tool_.webm"))
-					"video")
-				     " (WebM; 60 minutes, 127MB) ")))
-			 (li "June 2013, "
-			     (a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
-				" European Lisp Symposium (ELS)")
-			     ": "
-			     (a (@ (href "guix-els-20130603.pdf"))
-				"slides")
-			     ", "
-			     (a (@ (href "http://www.nicklevine.org/els2013/ludovic-courtes.mp3"))
-				"audio"))
-			 (li "July 2012, "
-			     (a (@ (href "/ghm/2012/ddorf/"))
-				"GNU Hackers Meeting")
-			     ": "
-			     (a (@ (href "guix-ghm-20120721.pdf"))
-				"slides")
-			     ", "
-			     (a (@ (href "http://audio-video.gnu.org/video/ghm2012/guix.ogv"))
-				"video")
-			     " (Ogg/"
-			     (a (@ (href "http://theora.org/")) "Theora")
-			     "; 84 minutes, 88.1MB)"))))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       "Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+				", by Ludovic: "
+				(a (@ (href "guix-ghm-ludo-20130823.pdf"))
+				   "slides")
+				", "
+				(a (@ (href "http://audio-video.gnu.org/video/ghm2013/Ludovic_Courtes-GNU_Guix_the_computing_freedom_deployment_tool_.webm"))
+				   "video")
+				" (WebM; 60 minutes, 127MB) ")))
+		    (li "June 2013, "
+			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			   " European Lisp Symposium (ELS)")
+			": "
+			(a (@ (href "guix-els-20130603.pdf"))
+			   "slides")
+			", "
+			(a (@ (href "http://www.nicklevine.org/els2013/ludovic-courtes.mp3"))
+			   "audio"))
+		    (li "July 2012, "
+			(a (@ (href "/ghm/2012/ddorf/"))
+			   "GNU Hackers Meeting")
+			": "
+			(a (@ (href "guix-ghm-20120721.pdf"))
+			   "slides")
+			", "
+			(a (@ (href "http://audio-video.gnu.org/video/ghm2012/guix.ogv"))
+			   "video")
+			" (Ogg/"
+			(a (@ (href "http://theora.org/")) "Theora")
+			"; 84 minutes, 88.1MB)"))))
+	  ,(html-page-footer))))
diff --git a/website/www/packages.scm b/website/www/packages.scm
index 56b613a..bb9c75f 100644
--- a/website/www/packages.scm
+++ b/website/www/packages.scm
@@ -1,79 +1,22 @@
 (define-module (www packages)
+  #:use-module (www shared)
   #:export (packages-page))
 
 (define packages-page
-  '(html (@ (lang "en"))
-	 (head (meta (@ (charset "utf-8")))
-	       (meta (@ (name "author")
-			(content "GuixSD Contributors")))
-	       (meta (@ (name "description")
-			(content
-			 "GuixSD is GNU's advanced system
-distribution. GNU is an operating system which respects the freedom of
-computer users. You are free to run the system for any purpose, study
-how it works, improve it, and share it with the whole world.")))
-	       (meta (@ (name "keywords")
-			(content
-			 "GNU, FSF, Free Software Foundation, Linux,
-Emacs, GCC, Unix, Free Software, Libre Software, Operating System, GNU
-Kernel, GNU Hurd, GUix Package Manager, Guile Scheme, Functional
-package management")))
-	       (meta (@ (name "viewport")
-			(content "width=device-width, initial-scale=1.0")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/base.css")))
-	       (link (@ (type "text/css")
-			(rel "stylesheet")
-			(href "/software/guix/static/base/css/article.css")))
-	       (link (@ (type "image/png")
-			(rel "icon")
-			(href "/software/guix/static/base/img/favicon.png")))
-	       (link (@ (rel "license") (href "Pending...")))
-	       (title "Packages - GuixSD"))
-	 (body (div (@ (class "message-box msg-info"))
-		    (span (@ (class "msg-label")) "Note")
-		    "The Guix System Distribution (GuixSD) is alpha
-software. This means it is not production-ready. It may contain bugs
-and lack important features. But more than a disclaimer, this is an
-invitation to join us in improving it. See "
-		    (a (@ (href "/software/guix/contribute/"))
-		       "Contributing")
-		    ", for more information. We hope you can soon
-switch to GuixSD without fear. ")
-	       (div (@ (id "header-box"))
-		    (a (@ (id "logo") (href "/software/guix/"))
-		       (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
-			       (alt "GuixSD"))))
-		    (ul (@ (id "site-nav"))
-			(li (a (@ (href "/software/guix/download/"))
-			       "Download"))
-			(li (a (@ (href "/software/guix/package-list.html"))
-			       "Packages"))
-			(li (a (@ (href "/software/guix/help/")) "Help"))
-			(li (a (@ (href "/software/guix/contribute/"))
-			       "Contribute"))
-			(li (a (@ (href "/software/guix/donate/"))
-			       "Donate"))
-			(li (a (@ (href "/software/guix/about/"))
-			       "About"))))
-	       (div (@ (id "content-box"))
-		    (article
-		     (h1 "Packages")
-		     (p "The Guix System Distribution provides 1,500+
-packages transparently "
-			(a (@ (href "http://hydra.gnu.org/jobset/gnu/master#tabs-status"))
-			   "available as pre-built binaries")
-			". This is a complete lists of the
-packages. Our "
-			(a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
-			   "continuous integration system")
-			" shows their current build status.")))
-	       (div (@ (id "footer-box"))
-		    "copyleft 2015 GuixSD "
-		    (a (@ (href "/software/guix/contribute/")
-			  (class "hlink-yellow"))
-		       " Contributors")
-		    ". Made with "
-		    (span (@ (class "metta")) "♥")
-		    " by humans."))))
+  `(html (@ (lang "en"))
+	 ,(html-page-header "Packages")
+	 (body
+	  ,(html-page-description)
+	  ,(html-page-links)
+	  (div (@ (id "content-box"))
+	       (article
+		(h1 "Packages")
+		(p "The Guix System Distribution provides 1,500+ packages
+transparently "
+		   (a (@ (href "http://hydra.gnu.org/jobset/gnu/master#tabs-status"))
+		      "available as pre-built binaries")
+		   ". This is a complete lists of the packages. Our "
+		   (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
+		      "continuous integration system")
+		   " shows their current build status.")))
+	  ,(html-page-footer))))
diff --git a/website/www/shared.scm b/website/www/shared.scm
new file mode 100644
index 0000000..8d21932
--- /dev/null
+++ b/website/www/shared.scm
@@ -0,0 +1,65 @@
+(define-module (www shared)
+  #:use-module (www shared)
+  #:export (html-page-header
+	    html-page-description
+	    html-page-links
+	    html-page-footer))
+
+(define (html-page-header title)
+  `(head (meta (@ (charset "utf-8")))
+	 (meta (@ (name "author")
+		  (content "GuixSD Contributors")))
+	 (meta (@ (name "description")
+		  (content
+		   "GuixSD is GNU's advanced system distribution. GNU is an
+operating system which respects the freedom of computer users. You are free to
+run the system for any purpose, study how it works, improve it, and share it
+with the whole world.")))
+	 (meta (@ (name "keywords")
+		  (content
+		   "GNU, FSF, Free Software Foundation, Linux, Emacs, GCC,
+Unix, Free Software, Libre Software, Operating System, GNU Kernel, GNU Hurd,
+GUix Package Manager, Guile Scheme, Functional package management")))
+	 (meta (@ (name "viewport")
+		  (content "width=device-width, initial-scale=1.0")))
+	 (link (@ (type "text/css")
+		  (rel "stylesheet")
+		  (href "/software/guix/static/base/css/base.css")))
+	 (link (@ (type "text/css")
+		  (rel "stylesheet")
+		  (href "/software/guix/static/base/css/index.css")))
+	 (link (@ (type "image/png")
+		  (rel "icon")
+		  (href "/software/guix/static/base/img/favicon.png")))
+	 (link (@ (rel "license") (href "Pending...")))
+	 (title ,(string-append title " - GuixSD"))))
+
+(define (html-page-description)
+  `(div (@ (class "message-box msg-info"))
+	(span (@ (class "msg-label")) "Note ")
+	"The Guix System Distribution (GuixSD) is alpha software. This means it
+is not production-ready. It may contain bugs and lack important features. But
+more than a disclaimer, this is an invitation to join us in improving it. See "
+	(a (@ (href "/software/guix/contribute/")) "Contributing")
+	", for more information. We hope you can soon switch to GuixSD without
+fear. "))
+
+(define (html-page-links)
+  `(div (@ (id "header-box"))
+	(a (@ (id "logo") (href "/software/guix/"))
+	   (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
+		   (alt "GuixSD"))))
+	(ul (@ (id "site-nav"))
+	    (li (a (@ (href "/software/guix/download/")) "Download"))
+	    (li (a (@ (href "/software/guix/package-list.html")) "Packages"))
+	    (li (a (@ (href "/software/guix/help/")) "Help"))
+	    (li (a (@ (href "/software/guix/contribute/")) "Contribute"))
+	    (li (a (@ (href "/software/guix/donate/")) "Donate"))
+	    (li (a (@ (href "/software/guix/about/")) "About")))))
+
+(define (html-page-footer)
+  `(div (@ (id "footer-box"))
+	"copyleft 2015 GuixSD "
+	(a (@ (href "/software/guix/contribute/") (class "hlink-yellow"))
+	   "Contributors")
+	". Made with " (span (@ (class "metta")) "♥") " by humans."))
-- 
2.2.1


[-- Attachment #4: 0003-website-Fix-URLs.patch --]
[-- Type: text/x-diff, Size: 29878 bytes --]

From c36af581753b015f31a562d2fe8992465d15f36e Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@openmailbox.org>
Date: Fri, 8 May 2015 04:56:17 +0200
Subject: [PATCH 3/3] website: Fix URLs.

---
 website/www.scm            | 45 ++++++++++++++++++------------------
 website/www/about.scm      |  6 ++---
 website/www/contribute.scm | 23 ++++++++++---------
 website/www/donate.scm     | 25 ++++++++++----------
 website/www/download.scm   | 17 +++++++-------
 website/www/help.scm       | 57 +++++++++++++++++++++++-----------------------
 website/www/shared.scm     | 29 +++++++++++------------
 website/www/utils.scm      | 37 ++++++++++++++++++++++++++++++
 8 files changed, 141 insertions(+), 98 deletions(-)
 create mode 100644 website/www/utils.scm

diff --git a/website/www.scm b/website/www.scm
index 36d7ee7..9a3fad0 100644
--- a/website/www.scm
+++ b/website/www.scm
@@ -1,4 +1,5 @@
 (define-module (www)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:use-module (www packages)
   #:use-module (www download)
@@ -35,13 +36,13 @@
 				       (class "hlink-yellow"))
 				    "GNU Project ")
 				 "—which respects the "
-				 (a (@ (href "http://www.gnu.org/philosophy/free-sw.html")
+				 (a (@ (href "https://www.gnu.org/philosophy/free-sw.html")
 				       (class "hlink-yellow"))
 				    "freedom of computer users")
 				 ". ")
 			     (li (b "Dependable.")
 				 " The "
-				 (a (@ (href "/software/guix/manual/")
+				 (a (@ (href "https://www.gnu.org/s/guix/manual/")
 				       (class "hlink-yellow"))
 				    "GNU Guix")
 				 " Package Manager, in addition to standard
@@ -56,10 +57,10 @@ unprivileged package management, per-user profiles, and garbage collection.")
 domain-specific languages (EDSLs), to describe how packages are built and
 composed."))
 			 (div (@ (class "featured-actions"))
-			      (a (@ (href "/software/guix/download/")
+			      (a (@ (href ,(url-base "/download"))
 				    (class "action download"))
 				 "TEST v0.8.2 (alpha)")
-			      (a (@ (href "/software/guix/contribute/")
+			      (a (@ (href ,(url-base "/contribute"))
 				    (class "action contribute"))
 				 "CONTRIBUTE"))))
 	       (div (@ (id "discovery-box"))
@@ -67,15 +68,15 @@ composed."))
 		    (div (@ (class "info-box text-center"))
 			 (video (@ (src "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm")
 				   (poster
-				    "/software/guix/static/base/img/the-emacs-of-distros.png")
+				    ,(img-url "the-emacs-of-distros.png"))
 				   (controls "controls")
 				   (class "video-preview")))
 			 (p "January 2015, The Emacs of Distros (48 minutes)")
-			 (p (a (@ (href "/software/guix/help/#talks")
+			 (p (a (@ (href ,(url-base "/help/#talks"))
 				  (class "hlink-more-light"))
 			       "Check all talks")))
 		    (div (@ (class "info-box text-left"))
-			 (p (a (@ (href "/software/guix/manual/")
+			 (p (a (@ (href "https://www.gnu.org/s/guix/manual")
 				  (class "hlink-yellow"))
 			       "GNU Guix Documentation")
 			    (br)
@@ -93,38 +94,38 @@ packaging API. ")
 			       "GNU Manuals Online")
 			    (br)
 			    "Primary documentation for official GNU packages.")
-			 (p (a (@ (href "/software/guix/help/")
+			 (p (a (@ (href ,(url-base "/help"))
 				  (class "hlink-more-light"))
 			       "Find more documentation")))
-		    (img (@ (src "/software/guix/static/base/img/h-separator-darker.png")
+		    (img (@ (src ,(img-url "h-separator-darker.png"))
 			    (class "h-separator")
 			    (alt "")))
 		    (div (@ (id "screens-box"))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/grub-menu.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/grub-menu-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "grub-menu.png")))
+			    (img (@ (src ,(thumb-url "grub-menu-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "GRUB menu"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/slim.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/slim-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "slim.png")))
+			    (img (@ (src ,(thumb-url "slim-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Slim login manager"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/windowmaker+icecat+inkscape.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/windowmaker+icecat+inkscape-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "windowmaker+icecat+inkscape.png")))
+			    (img (@ (src ,(thumb-url "windowmaker+icecat+inkscape-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Windowmaker, Icecat, and Inkscape"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/user-interfaces.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/user-interfaces-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "user-interfaces.png")))
+			    (img (@ (src ,(thumb-url "user-interfaces-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "mplayer and xterm"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-packages.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-packages-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "emacs-ui-packages.png")))
+			    (img (@ (src ,(thumb-url "emacs-ui-packages-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Emacs user interface to the package manager."))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-generations.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-generations-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "emacs-ui-generations.png")))
+			    (img (@ (src ,(thumb-url "emacs-ui-generations-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Emacs user interface generations.")))))
-		    (p (a (@ (href "/software/guix/contribute/")
+		    (p (a (@ (href ,(url-base "/contribute") )
 			     (class "hlink-yellow-boxed"))
 			  "Help us package more software →")))
 	       (div (@ (id "news-box"))
diff --git a/website/www/about.scm b/website/www/about.scm
index 128041d..34cc20c 100644
--- a/website/www/about.scm
+++ b/website/www/about.scm
@@ -17,7 +17,7 @@
 		   (em "GNU Guix")
 		   " package manager are free software projects developed by
 the "
-		   (a (@ (href "http://www.gnu.org/"))
+		   (a (@ (href "https://www.gnu.org"))
 		      "GNU Project")
 		   " and independent volunteers from various parts of the
 world. This is the official website for both projects. ")
@@ -30,7 +30,7 @@ understand the concept, you should think of \"free\" as in \"free speech\", not
 as in \"free beer\". ")
 		 (p "More precisely, free software means users of a program have
 the "
-		    (a (@ (href "/philosophy/free-sw.html"))
+		    (a (@ (href "https://www.gnu.org/philosophy/free-sw.html"))
 		       "four essential freedoms")
 		    ":")
 		 (ul (li "The freedom to run the program as you wish, for any
@@ -52,7 +52,7 @@ Courtès. Please use the "
 		(h2 (@ (id "license")) "Licensing")
 		(p "Guix is free software; you can redistribute it and/or modify
 it under the terms of the "
-		   (a (@ (rel "license") (href "/licenses/gpl.html"))
+		   (a (@ (rel "license") (href "http://www.gnu.org/licenses/gpl.html"))
 		      "GNU General Public License")
 		   " as published by the Free Software Foundation; either
 version\xa03 of the License, or (at your option) any later version. ")
diff --git a/website/www/contribute.scm b/website/www/contribute.scm
index 076412a..e81ed38 100644
--- a/website/www/contribute.scm
+++ b/website/www/contribute.scm
@@ -1,4 +1,5 @@
 (define-module (www contribute)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (contribute-page))
 
@@ -53,7 +54,7 @@ the project is available in the "
 			  (h2 (@ (id "documentation"))
 			      "Documentation")
 			  (p "You can read the "
-			     (a (@ (href "/software/guix/help/"))
+			     (a (@ (href ,(url-base "/help")))
 				"project documentation")
 			     " already available in the system and in the
 website, and help us identify any errors or omissions. Creating new manuals,
@@ -61,7 +62,7 @@ tutorials, and blog entries will also help users and developers discover what we
 do. ")
 			  (p "Helping improve the documentation of
 the "
-			     (a (@ (href "/software/guix/packages/"))
+			     (a (@ (href ,(url-base "/packages")))
 				"packaged software")
 			     " is another way to contribute. ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -74,7 +75,7 @@ need to be packaged to make it easier for users to install their favorite tools
 with the Guix package manager, and be productive using the system. ")
 			  (p "Information on how to add packages to the
 distribution can be found "
-			     (a (@ (href "/software/guix/manual/guix.html#Packaging-Guidelines"))
+			     (a (@ (href "https://www.gnu.org/software/guix/manual/guix.html#Packaging-Guidelines"))
 				"in the manual")
 			     ". ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -83,12 +84,12 @@ distribution can be found "
 		     (div (@ (class "summary-box"))
 			  (h2 (@ (id "programming")) "Programming")
 			  (p "We use "
-			     (a (@ (href "/software/guile/"))
+			     (a (@ (href "https://www.gnu.org/software/guile/"))
 				"GNU Guile")
 			     " as the main programming and extension language
 for the components of the system. ")
 			  (p "You will find it useful to browse the "
-			     (a (@ (href "/software/guile/manual"))
+			     (a (@ (href "https://www.gnu.org/software/guile/manual"))
 				"Guile's manual")
 			     " or other "
 			     (a (@ (href "http://schemers.org/Documents/#intro-texts"))
@@ -109,7 +110,7 @@ all the contributors to communicate and collaborate in the project, and users to
 be able to download and install packages. Help us keep the system up and running
 smoothly. ")
 			  (p "You can also "
-			     (a (@ (href "/software/guix/donate/"))
+			     (a (@ (href "https://www.gnu.org/software/guix/donate/"))
 				"donate hardware or hosting")
 			     ". ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -122,10 +123,10 @@ smoothly. ")
 community about your experience. Help the project reporting bugs.")
 			  (p "Before reporting a bug, please check whether the
 bug is already "
-			     (a (@ (href "http://debbugs.gnu.org/guix"))
+			     (a (@ (href "https://debbugs.gnu.org/guix"))
 				"in the bug database")
 			     ". See "
-			     (a (@ (href "http://debbugs.gnu.org/Developer.html"))
+			     (a (@ (href "https://debbugs.gnu.org/Developer.html"))
 				"the developer information page")
 			     " for more information on how to manipulate bug
 reports. ")
@@ -137,15 +138,15 @@ reports. ")
 			  (p "You can help us translate software and
 documentation to your language. The main components of the Guix System
 Distribution, including the Guix package manager, can be translated in the "
-			     (a (@ (href "http://translationproject.org/"))
+			     (a (@ (href "https://translationproject.org/"))
 				"Translation Project")
 			     ".")
 			  (p "Other "
-			     (a (@ (href "/software/guix/packages/"))
+			     (a (@ (href ,(url-base "/packages")))
 				"software packaged")
 			     " for the system may have their own translation
 tools. Visit their websites and help translate. ")
-			  (a (@ (href "http://translationproject.org/")
+			  (a (@ (href "https://translationproject.org/")
 				(class "hlink-more-dark"))
 			     "Start translating")))
 		(h2 (@ (id "resources"))
diff --git a/website/www/donate.scm b/website/www/donate.scm
index 5ded10a..33f8c5f 100644
--- a/website/www/donate.scm
+++ b/website/www/donate.scm
@@ -1,4 +1,5 @@
 (define-module (www donate)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (donate-page))
 
@@ -17,7 +18,7 @@
 		   " of the Guix System Distribution runs on donated hardware
 and hosting. Please consider helping the project with donations. ")
 		(p "As the distribution grows (see the "
-		   (a (@ (href "/software/guix/packages/"))
+		   (a (@ (href ,(url-base "/packages")))
 		      "package list")
 		   "), so do the computing and storage needs. We are looking for
 donations of hardware and optionally hosting for the following kinds of
@@ -31,9 +32,9 @@ binaries for the "
 			";")
 		    (li "mips64el machines to strengthen this port."))
 		(p "Please get in touch with us through the "
-		   (a (@ (href "/software/guix/about/#contact"))
+		   (a (@ (href ,(url-base "/about/#contact")))
 		      "usual channels")
-		   "or using the guix-hardware@gnu.org private alias to discuss
+		   " or using the guix-hardware@gnu.org private alias to discuss
 any opportunities. ")
 		(h2 (@ (id "hardware-donors")) "Thanks to the donors!")
 		(p "The table below summarizes hardware and hosting donations
@@ -47,23 +48,23 @@ reality.")
 				  (th "donors")))
 		       (tbody (tr (td "hydra.gnu.org")
 				  (td "build farm front-end")
-				  (td (ul (li (a (@ (href "http://www.fsf.org/"))
-						 "Free Software \t          Foundation")))))
+				  (td (ul (li (a (@ (href "https://www.fsf.org/"))
+						 "Free Software Foundation")))))
 			      (tr (td "hydra.gnunet.org")
 				  (td "x86_64-linux, i686-linux")
 				  (td (ul (li (a (@ (href "https://gnunet.org/fsnsg"))
-						 "Free Secure
-Network Systems Group")
+						 "Free Secure Network Systems
+Group")
 					      " at the "
-					      (a (@ (href "http://www.tum.de/"))
-						 "Technische
-Universität München")))))
+					      (a (@ (href "https://www.tum.de/"))
+						 "Technische Universität
+München")))))
 			      (tr (td "chapters.gnu.org")
 				  (td "x86_64-linux, i686-linux")
-				  (td (ul (li (a (@ (href "http://es.gnu.org"))
+				  (td (ul (li (a (@ (href "https://es.gnu.org"))
 						 "GNU\xa0España")
 					      " (hardware)")
-					  (li (a (@ (href "http://fsffrance.org/index.en.html"))
+					  (li (a (@ (href "https://fsffrance.org/index.en.html"))
 						 "FSF\xa0France")
 					      " (hosting)"))))
 			      (tr (td "wildebeest")
diff --git a/website/www/download.scm b/website/www/download.scm
index 35a86ec..030ca6b 100644
--- a/website/www/download.scm
+++ b/website/www/download.scm
@@ -1,4 +1,5 @@
 (define-module (www download)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (download-page))
 
@@ -12,20 +13,20 @@
 	       (article
 		(h1 "Download")
 		(p "As of version 0.8.1, the Guix System Distribution "
-		   (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+		   (a (@ (href "https://www.gnu.org/s/guix/manual/html_node/System-Installation.html"))
 		      "can be installed")
 		   " on an i686 or x86_64 machine. It uses the "
 		   (a (@ (href "/software/linux-libre"))
 		      "Linux-Libre")
 		   " kernel and the "
-		   (a (@ (href "/software/dmd")) "GNU dmd")
+		   (a (@ (href "https://www.gnu.org/software/dmd")) "GNU dmd")
 		   " init system. Alternately, its package manager, GNU Guix,
 can be installed as an additional package manager on top of an installed
 Linux-based system.")
 		(div (@ (class "text-center"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+			       (img (@ (src ,(img-url "GuixSD-package.png"))
 				       (alt ""))))
 			  (h2 "GuixSD 0.8.2 (i686)")
 			  (p "USB installer for machines with the following
@@ -47,7 +48,7 @@ minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href "https://www.gnu.org/s/guix/manual/html_node/System-Installation.html"))
 				"installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
@@ -55,7 +56,7 @@ minimum system requirements:")
 			     "."))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+			       (img (@ (src ,(img-url "GuixSD-package.png"))
 				       (alt ""))))
 			  (h2 "GuixSD 0.8.2 (x86_64)")
 			  (p "USB installer for machines with the following
@@ -77,7 +78,7 @@ minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href "https://www.gnu.org/s/guix/manual/html_node/System-Installation.html"))
 				"installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
@@ -85,7 +86,7 @@ minimum system requirements:")
 			     "."))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/Guix-package.png")
+			       (img (@ (src ,(img-url "Guix-package.png"))
 				       (alt ""))))
 			  (h2 "GNU Guix 0.8.2")
 			  (p "Archive distribution to install from source on
@@ -107,7 +108,7 @@ machines with the following minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href "https://www.gnu.org/s/guix/manual/html_node/System-Installation.html"))
 				" installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
diff --git a/website/www/help.scm b/website/www/help.scm
index 0899ebc..bb2c2d2 100644
--- a/website/www/help.scm
+++ b/website/www/help.scm
@@ -1,4 +1,5 @@
 (define-module (www help)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (help-page))
 
@@ -14,43 +15,43 @@
 		(div (@ (class "text-center"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/guixsd-manual-icon.png")
+			       (img (@ (src ,(img-url "guixsd-manual-icon.png"))
 				       (alt ""))))
 			  (h2 "GuixSD Manual")
 			  (p "The documentation about the Guix System
 Distribution is available online as part of the GNU Guix package manager
 manual.")
-			  (a (@ (href "/software/guix/manual/guix.html#GNU-Distribution")
+			  (a (@ (href "https:/www.gnu.org/s/guix/manual/guix.html#GNU-Distribution")
 				(class "hlink-more-dark"))
 			     "Read the manual"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/guix-manual-icon.png")
+			       (img (@ (src ,(img-url "guix-manual-icon.png"))
 				       (alt ""))))
 			  (h2 "GNU Guix Manual")
 			  (p "Documentation for the GNU Guix package manager is
 available online. You may also find more information about Guix by running "
 			     (em "info\xa0guix")
 			     ".")
-			  (a (@ (href "/software/guix/manual/")
+			  (a (@ (href "https:/www.gnu.org/software/guix/manual/")
 				(class "hlink-more-dark"))
 			     "Read the manual"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/library-icon.png")
+			       (img (@ (src ,(img-url "library-icon.png"))
 				       (alt ""))))
 			  (h2 "GNU Manuals")
 			  (p "GuixSD is a distribution of the "
-			     (a (@ (href "http://www.gnu.org/"))
+			     (a (@ (href "https://www.gnu.org/"))
 				"GNU operating system")
 			     ". Most GNU software is documented and the
 documentation is available online in various formats. ")
-			  (a (@ (href "http://www.gnu.org/doc/doc.en.html")
+			  (a (@ (href "https://www.gnu.org/doc/doc.en.html")
 				(class "hlink-more-dark"))
 			     "Browse the manuals"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/chat-icon.png")
+			       (img (@ (src ,(img-url "chat-icon.png"))
 				       (alt ""))))
 			  (h2 "IRC Chat")
 			  (p "For real-time support from the community, you can
@@ -65,12 +66,12 @@ browsed online. See the "
 			     (a (@ (href "https://gnunet.org/bot/log/guix/"))
 				"channel logs")
 			     ". ")
-			  (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
+			  (a (@ (href "https://webchat.freenode.net/?channels=%23guix")
 				(class "hlink-more-dark"))
 			     "Connect"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/email-icon.png")
+			       (img (@ (src ,(img-url "email-icon.png"))
 				       (alt ""))))
 			  (h2 "Mailing lists")
 			  (p "Email support from the community is also available
@@ -98,10 +99,10 @@ Distribution. ")
 				(class "hlink-more-dark"))
 			     "Check all the lists")))
 		(h2 "Additional Documentation")
-		(ul (li (a (@ (href "http://arxiv.org/abs/1305.4584"))
+		(ul (li (a (@ (href "https://arxiv.org/abs/1305.4584"))
 			   (i "Functional Package Management with Guix"))
 			", presented at the "
-			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			(a (@ (href "https://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
 			   "2013 European Lisp Symposium (ELS)")
 			", describes the rationale, design, and
 implementation of Guix's packaging API. \t "))
@@ -110,24 +111,24 @@ implementation of Guix's packaging API. \t "))
 			(a (@ (href "https://fosdem.org/2015/schedule/event/the_emacs_of_distros/"))
 			   "FOSDEM")
 			": "
-			(a (@ (href "guix-fosdem-20150131.pdf"))
+			(a (@ (href ,(slides-url "guix-fosdem-20150131.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
+			(a (@ (href "https://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
 			   "video")
 			" (WebM; 47 minutes) ")
 		    (li "August 2014, "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2014/"))
 			   "GNU Hackers Meeting")
 			": "
-			(a (@ (href "guix-ghm-20140815.pdf"))
+			(a (@ (href ,(slides-url "guix-ghm-20140815.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
 			   "video")
 			" (WebM; 60 minutes) ")
 		    (li "July 2014, "
-			(a (@ (href "http://www.open-bio.org/wiki/Codefest_2014"))
+			(a (@ (href "https://www.open-bio.org/wiki/Codefest_2014"))
 			   "Open Bioinformatics Codefest 2014")
 			": "
 			(a (@ (href "guix-openbio-codefest-20140709.pdf"))
@@ -136,46 +137,46 @@ implementation of Guix's packaging API. \t "))
 			(a (@ (href "https://fosdem.org/2014/schedule/event/gnuguix/"))
 			   "FOSDEM")
 			": "
-			(a (@ (href "guix-fosdem-20140201.pdf"))
+			(a (@ (href ,(slides-url "guix-fosdem-20140201.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
+			(a (@ (href "https://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
 			   "video")
 			" (WebM; 55 minutes) ")
 		    (li "August 2013, "
-			(a (@ (href "/ghm/2013/paris"))
+			(a (@ (href "https://www.gnu.org/s/guix/ghm/2013/paris"))
 			   "GNU Hackers Meeting")
 			(ul (li (i "GNU Guix: Package without a
 scheme!")
 				", by Andreas: "
-				(a (@ (href "guix-ghm-andreas-20130823.pdf"))
+				(a (@ (href ,(slides-url "guix-ghm-andreas-20130823.pdf")))
 				   "slides"))
 			    (li (i "Guix, the Computing Freedom
 Deployment Tool")
 				", by Ludovic: "
-				(a (@ (href "guix-ghm-ludo-20130823.pdf"))
+				(a (@ (href ,(slides-url "guix-ghm-ludo-20130823.pdf")))
 				   "slides")
 				", "
 				(a (@ (href "http://audio-video.gnu.org/video/ghm2013/Ludovic_Courtes-GNU_Guix_the_computing_freedom_deployment_tool_.webm"))
 				   "video")
 				" (WebM; 60 minutes, 127MB) ")))
 		    (li "June 2013, "
-			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			(a (@ (href "https://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
 			   " European Lisp Symposium (ELS)")
 			": "
-			(a (@ (href "guix-els-20130603.pdf"))
+			(a (@ (href ,(slides-url "guix-els-20130603.pdf")))
 			   "slides")
 			", "
 			(a (@ (href "http://www.nicklevine.org/els2013/ludovic-courtes.mp3"))
 			   "audio"))
 		    (li "July 2012, "
-			(a (@ (href "/ghm/2012/ddorf/"))
+			(a (@ (href "https://www.gnu.org/s/guix/ghm/2012/ddorf/"))
 			   "GNU Hackers Meeting")
 			": "
-			(a (@ (href "guix-ghm-20120721.pdf"))
+			(a (@ (href ,(slides-url "guix-ghm-20120721.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2012/guix.ogv"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2012/guix.ogv"))
 			   "video")
 			" (Ogg/"
 			(a (@ (href "http://theora.org/")) "Theora")
diff --git a/website/www/shared.scm b/website/www/shared.scm
index 8d21932..5e1ddd3 100644
--- a/website/www/shared.scm
+++ b/website/www/shared.scm
@@ -1,5 +1,5 @@
 (define-module (www shared)
-  #:use-module (www shared)
+  #:use-module (www utils)
   #:export (html-page-header
 	    html-page-description
 	    html-page-links
@@ -24,13 +24,13 @@ GUix Package Manager, Guile Scheme, Functional package management")))
 		  (content "width=device-width, initial-scale=1.0")))
 	 (link (@ (type "text/css")
 		  (rel "stylesheet")
-		  (href "/software/guix/static/base/css/base.css")))
+		  (href ,(css-url "base.css"))))
 	 (link (@ (type "text/css")
 		  (rel "stylesheet")
-		  (href "/software/guix/static/base/css/index.css")))
+		  (href ,(css-url "index.css"))))
 	 (link (@ (type "image/png")
 		  (rel "icon")
-		  (href "/software/guix/static/base/img/favicon.png")))
+		  (href ,(img-url "favicon.png"))))
 	 (link (@ (rel "license") (href "Pending...")))
 	 (title ,(string-append title " - GuixSD"))))
 
@@ -40,26 +40,27 @@ GUix Package Manager, Guile Scheme, Functional package management")))
 	"The Guix System Distribution (GuixSD) is alpha software. This means it
 is not production-ready. It may contain bugs and lack important features. But
 more than a disclaimer, this is an invitation to join us in improving it. See "
-	(a (@ (href "/software/guix/contribute/")) "Contributing")
+	(a (@ (href ,(url-base "/contribute"))) "Contributing")
 	", for more information. We hope you can soon switch to GuixSD without
 fear. "))
 
 (define (html-page-links)
   `(div (@ (id "header-box"))
-	(a (@ (id "logo") (href "/software/guix/"))
-	   (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
+	(a (@ (id "logo") (href ,(url-base "")))
+	   (img (@ (src ,(img-url "GuixSD-logo.png"))
 		   (alt "GuixSD"))))
 	(ul (@ (id "site-nav"))
-	    (li (a (@ (href "/software/guix/download/")) "Download"))
-	    (li (a (@ (href "/software/guix/package-list.html")) "Packages"))
-	    (li (a (@ (href "/software/guix/help/")) "Help"))
-	    (li (a (@ (href "/software/guix/contribute/")) "Contribute"))
-	    (li (a (@ (href "/software/guix/donate/")) "Donate"))
-	    (li (a (@ (href "/software/guix/about/")) "About")))))
+	    (li (a (@ (href ,(url-base "/download"))) "Download"))
+	    (li (a (@ (href "https://www.gnu.org/s/guix/package-list.html"))
+		   "Packages"))
+	    (li (a (@ (href ,(url-base "/help"))) "Help"))
+	    (li (a (@ (href ,(url-base "/contribute"))) "Contribute"))
+	    (li (a (@ (href ,(url-base "/donate"))) "Donate"))
+	    (li (a (@ (href ,(url-base "/about"))) "About")))))
 
 (define (html-page-footer)
   `(div (@ (id "footer-box"))
 	"copyleft 2015 GuixSD "
-	(a (@ (href "/software/guix/contribute/") (class "hlink-yellow"))
+	(a (@ (href ,(url-base "/contribute")) (class "hlink-yellow"))
 	   "Contributors")
 	". Made with " (span (@ (class "metta")) "♥") " by humans."))
diff --git a/website/www/utils.scm b/website/www/utils.scm
new file mode 100644
index 0000000..9cdda4e
--- /dev/null
+++ b/website/www/utils.scm
@@ -0,0 +1,37 @@
+(define-module (www utils)
+  #:export (current-url-root
+	    resources-url-root
+	    url-base
+	    static-url-base
+	    img-url
+	    thumb-url
+	    css-url
+	    screenshot-url
+	    slides-url))
+
+(define current-url-root
+  (make-parameter "/home/mthl/src/gnu/guix-artwork/website/build"))
+
+(define resources-url-root
+  (make-parameter "https://www.gnu.org/s/guix"))
+
+(define (url-base location)
+  (string-append (current-url-root) location))
+
+(define (static-url-base)
+  (string-append (current-url-root) "/static/base"))
+
+(define (img-url file)
+  (string-append (static-url-base) "/img/" file))
+
+(define (thumb-url file)
+  (string-append (static-url-base) "/img/screenshots/" file))
+
+(define (css-url file)
+  (string-append (static-url-base) "/css/" file))
+
+(define (screenshot-url version file)
+  (string-append (resources-url-root) "/screenshots/" version "/" file))
+
+(define (slides-url file)
+  (string-append (resources-url-root) "/" file))
-- 
2.2.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] website : ...
  2015-05-08  4:09 [PATCH] website : Mathieu Lirzin
@ 2015-05-08 10:45 ` Ludovic Courtès
  2015-05-08 11:02   ` Mathieu Lirzin
  2015-05-09  0:03   ` Mathieu Lirzin
  0 siblings, 2 replies; 5+ messages in thread
From: Ludovic Courtès @ 2015-05-08 10:45 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Could you create yourself an account on Savannah so I can add you to the
project?  That will make it easier to work on these changes.

Mathieu Lirzin <mthl@openmailbox.org> skribis:

> From 8d61be9cdd787265b7bb7e1232546f5e7f3997e3 Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl@openmailbox.org>
> Date: Thu, 7 May 2015 21:21:02 +0200
> Subject: [PATCH 1/3] website: Enable directory choice in export procedure.

OK.

> From 4763ec6706b9f5088b00f3b99f4e3eca57b05d8a Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl@openmailbox.org>
> Date: Fri, 8 May 2015 00:06:03 +0200
> Subject: [PATCH 2/3] website: Factorize shared blocks.

OK.

> From c36af581753b015f31a562d2fe8992465d15f36e Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl@openmailbox.org>
> Date: Fri, 8 May 2015 04:56:17 +0200
> Subject: [PATCH 3/3] website: Fix URLs.

[...]

> -				 (a (@ (href "http://www.gnu.org/philosophy/free-sw.html")
> +				 (a (@ (href "https://www.gnu.org/philosophy/free-sw.html")

I think this should be (gnu-url "philosophy/free-sw.html"), which would
return “/philosophy/free-sw.html” by default (with a ‘gnu.org-root’
parameter object.)

> -			      (a (@ (href "/software/guix/download/")
> +			      (a (@ (href ,(url-base "/download"))

Maybe (base-url "download") would be clearer.

> +		    (img (@ (src ,(img-url "h-separator-darker.png"))

s/img-url/image-url/

> +(define current-url-root
> +  (make-parameter "/home/mthl/src/gnu/guix-artwork/website/build"))

Rather default to “/software/guix”.

> +(define resources-url-root
> +  (make-parameter "https://www.gnu.org/s/guix"))

Default to (current-url-root).

OK for me with these changes.

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] website : ...
  2015-05-08 10:45 ` Ludovic Courtès
@ 2015-05-08 11:02   ` Mathieu Lirzin
  2015-05-09  0:03   ` Mathieu Lirzin
  1 sibling, 0 replies; 5+ messages in thread
From: Mathieu Lirzin @ 2015-05-08 11:02 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

ludo@gnu.org (Ludovic Courtès) writes:

> Could you create yourself an account on Savannah so I can add you to the
> project?  That will make it easier to work on these changes.

I have sent a request for inclusion. I will send the updated patch
later ;-).

--
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] website : ...
  2015-05-08 10:45 ` Ludovic Courtès
  2015-05-08 11:02   ` Mathieu Lirzin
@ 2015-05-09  0:03   ` Mathieu Lirzin
  2015-05-09 14:22     ` Ludovic Courtès
  1 sibling, 1 reply; 5+ messages in thread
From: Mathieu Lirzin @ 2015-05-09  0:03 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 120 bytes --]

Here is the updated patch with some modifications...

(most of them are in "website/www/utils.scm")

--
Mathieu Lirzin


[-- Attachment #2: 0001-website-Fix-URLs.patch --]
[-- Type: text/x-diff, Size: 30995 bytes --]

From f6b50dfccae0d493705c600587324153c96a90d0 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@openmailbox.org>
Date: Fri, 8 May 2015 04:56:17 +0200
Subject: [PATCH] website: Fix URLs.

Enable local export to link URLs correctly.

* website/www/utils.scm: New file.
---
 website/www.scm            | 51 ++++++++++++++++++++--------------------
 website/www/about.scm      |  7 +++---
 website/www/contribute.scm | 26 ++++++++++-----------
 website/www/donate.scm     | 25 ++++++++++----------
 website/www/download.scm   | 19 ++++++++-------
 website/www/help.scm       | 58 +++++++++++++++++++++++-----------------------
 website/www/shared.scm     | 27 ++++++++++-----------
 website/www/utils.scm      | 58 ++++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 167 insertions(+), 104 deletions(-)
 create mode 100644 website/www/utils.scm

diff --git a/website/www.scm b/website/www.scm
index 36d7ee7..0c82b09 100644
--- a/website/www.scm
+++ b/website/www.scm
@@ -1,4 +1,5 @@
 (define-module (www)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:use-module (www packages)
   #:use-module (www download)
@@ -27,21 +28,21 @@
 			     "The Guix System Distribution")
 			 (ul (li (b "Liberating.")
 				 " GuixSD is an advanced distribution of the "
-				 (a (@ (href "https://gnu.org/")
+				 (a (@ (href ,(gnu-url ""))
 				       (class "hlink-yellow"))
 				    "GNU Operating System")
 				 " developed by the "
-				 (a (@ (href "https://gnu.org/")
+				 (a (@ (href ,(gnu-url ""))
 				       (class "hlink-yellow"))
 				    "GNU Project ")
 				 "—which respects the "
-				 (a (@ (href "http://www.gnu.org/philosophy/free-sw.html")
+				 (a (@ (href ,(gnu-url "philosophy/free-sw.html"))
 				       (class "hlink-yellow"))
 				    "freedom of computer users")
 				 ". ")
 			     (li (b "Dependable.")
 				 " The "
-				 (a (@ (href "/software/guix/manual/")
+				 (a (@ (href ,(guix-url "manual"))
 				       (class "hlink-yellow"))
 				    "GNU Guix")
 				 " Package Manager, in addition to standard
@@ -49,17 +50,17 @@ package management features, supports transactional upgrades and roll-backs,
 unprivileged package management, per-user profiles, and garbage collection.")
 			     (li (b "Hackable.")
 				 " It provides "
-				 (a (@ (href "https://www.gnu.org/s/guile/")
+				 (a (@ (href ,(gnu-url "s/guile/"))
 				       (class "hlink-yellow"))
 				    "Guile Scheme")
 				 " APIs, including high-level embedded
 domain-specific languages (EDSLs), to describe how packages are built and
 composed."))
 			 (div (@ (class "featured-actions"))
-			      (a (@ (href "/software/guix/download/")
+			      (a (@ (href ,(base-url "download"))
 				    (class "action download"))
 				 "TEST v0.8.2 (alpha)")
-			      (a (@ (href "/software/guix/contribute/")
+			      (a (@ (href ,(base-url "contribute"))
 				    (class "action contribute"))
 				 "CONTRIBUTE"))))
 	       (div (@ (id "discovery-box"))
@@ -67,15 +68,15 @@ composed."))
 		    (div (@ (class "info-box text-center"))
 			 (video (@ (src "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm")
 				   (poster
-				    "/software/guix/static/base/img/the-emacs-of-distros.png")
+				    ,(image-url "the-emacs-of-distros.png"))
 				   (controls "controls")
 				   (class "video-preview")))
 			 (p "January 2015, The Emacs of Distros (48 minutes)")
-			 (p (a (@ (href "/software/guix/help/#talks")
+			 (p (a (@ (href ,(base-url "help/#talks"))
 				  (class "hlink-more-light"))
 			       "Check all talks")))
 		    (div (@ (class "info-box text-left"))
-			 (p (a (@ (href "/software/guix/manual/")
+			 (p (a (@ (href ,(guix-url "manual"))
 				  (class "hlink-yellow"))
 			       "GNU Guix Documentation")
 			    (br)
@@ -93,38 +94,38 @@ packaging API. ")
 			       "GNU Manuals Online")
 			    (br)
 			    "Primary documentation for official GNU packages.")
-			 (p (a (@ (href "/software/guix/help/")
+			 (p (a (@ (href ,(base-url "help"))
 				  (class "hlink-more-light"))
 			       "Find more documentation")))
-		    (img (@ (src "/software/guix/static/base/img/h-separator-darker.png")
+		    (img (@ (src ,(image-url "h-separator-darker.png"))
 			    (class "h-separator")
 			    (alt "")))
 		    (div (@ (id "screens-box"))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/grub-menu.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/grub-menu-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "grub-menu.png")))
+			    (img (@ (src ,(thumb-url "grub-menu-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "GRUB menu"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/slim.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/slim-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "slim.png")))
+			    (img (@ (src ,(thumb-url "slim-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Slim login manager"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/windowmaker+icecat+inkscape.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/windowmaker+icecat+inkscape-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "windowmaker+icecat+inkscape.png")))
+			    (img (@ (src ,(thumb-url "windowmaker+icecat+inkscape-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Windowmaker, Icecat, and Inkscape"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/user-interfaces.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/user-interfaces-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "user-interfaces.png")))
+			    (img (@ (src ,(thumb-url "user-interfaces-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "mplayer and xterm"))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-packages.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-packages-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "emacs-ui-packages.png")))
+			    (img (@ (src ,(thumb-url "emacs-ui-packages-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Emacs user interface to the package manager."))))
-			 (a (@ (href "/software/guix/screenshots/0.8.2/emacs-ui-generations.png"))
-			    (img (@ (src "/software/guix/static/base/img/screenshots/emacs-ui-generations-thumb.png")
+			 (a (@ (href ,(screenshot-url "0.8.2" "emacs-ui-generations.png")))
+			    (img (@ (src ,(thumb-url "emacs-ui-generations-thumb.png"))
 				    (class "screenshot-thumb")
 				    (alt "Emacs user interface generations.")))))
-		    (p (a (@ (href "/software/guix/contribute/")
+		    (p (a (@ (href ,(base-url "contribute") )
 			     (class "hlink-yellow-boxed"))
 			  "Help us package more software →")))
 	       (div (@ (id "news-box"))
diff --git a/website/www/about.scm b/website/www/about.scm
index 128041d..ce48638 100644
--- a/website/www/about.scm
+++ b/website/www/about.scm
@@ -1,4 +1,5 @@
 (define-module (www about)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (about-page))
 
@@ -17,7 +18,7 @@
 		   (em "GNU Guix")
 		   " package manager are free software projects developed by
 the "
-		   (a (@ (href "http://www.gnu.org/"))
+		   (a (@ (href ,(gnu-url "")))
 		      "GNU Project")
 		   " and independent volunteers from various parts of the
 world. This is the official website for both projects. ")
@@ -30,7 +31,7 @@ understand the concept, you should think of \"free\" as in \"free speech\", not
 as in \"free beer\". ")
 		 (p "More precisely, free software means users of a program have
 the "
-		    (a (@ (href "/philosophy/free-sw.html"))
+		    (a (@ (href ,(gnu-url "philosophy/free-sw.html")))
 		       "four essential freedoms")
 		    ":")
 		 (ul (li "The freedom to run the program as you wish, for any
@@ -52,7 +53,7 @@ Courtès. Please use the "
 		(h2 (@ (id "license")) "Licensing")
 		(p "Guix is free software; you can redistribute it and/or modify
 it under the terms of the "
-		   (a (@ (rel "license") (href "/licenses/gpl.html"))
+		   (a (@ (rel "license") (href ,(gnu-url "licenses/gpl.html")))
 		      "GNU General Public License")
 		   " as published by the Free Software Foundation; either
 version\xa03 of the License, or (at your option) any later version. ")
diff --git a/website/www/contribute.scm b/website/www/contribute.scm
index 076412a..0c12873 100644
--- a/website/www/contribute.scm
+++ b/website/www/contribute.scm
@@ -1,4 +1,5 @@
 (define-module (www contribute)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (contribute-page))
 
@@ -53,7 +54,7 @@ the project is available in the "
 			  (h2 (@ (id "documentation"))
 			      "Documentation")
 			  (p "You can read the "
-			     (a (@ (href "/software/guix/help/"))
+			     (a (@ (href ,(base-url "help")))
 				"project documentation")
 			     " already available in the system and in the
 website, and help us identify any errors or omissions. Creating new manuals,
@@ -61,7 +62,7 @@ tutorials, and blog entries will also help users and developers discover what we
 do. ")
 			  (p "Helping improve the documentation of
 the "
-			     (a (@ (href "/software/guix/packages/"))
+			     (a (@ (href ,(base-url "packages")))
 				"packaged software")
 			     " is another way to contribute. ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -74,7 +75,7 @@ need to be packaged to make it easier for users to install their favorite tools
 with the Guix package manager, and be productive using the system. ")
 			  (p "Information on how to add packages to the
 distribution can be found "
-			     (a (@ (href "/software/guix/manual/guix.html#Packaging-Guidelines"))
+			     (a (@ (href ,(guix-url "manual/guix.html#Packaging-Guidelines")))
 				"in the manual")
 			     ". ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -83,15 +84,14 @@ distribution can be found "
 		     (div (@ (class "summary-box"))
 			  (h2 (@ (id "programming")) "Programming")
 			  (p "We use "
-			     (a (@ (href "/software/guile/"))
-				"GNU Guile")
+			     (a (@ (href ,(gnu-url "s/guile"))) "GNU Guile")
 			     " as the main programming and extension language
 for the components of the system. ")
 			  (p "You will find it useful to browse the "
-			     (a (@ (href "/software/guile/manual"))
+			     (a (@ (href ,(gnu-url "s/guile/manual")))
 				"Guile's manual")
 			     " or other "
-			     (a (@ (href "http://schemers.org/Documents/#intro-texts"))
+			     (a (@ (href "https://schemers.org/Documents/#intro-texts"))
 				"introductory material about Scheme")
 			     ". Also, make sure to read the "
 			     (a (@ (href "http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING"))
@@ -109,7 +109,7 @@ all the contributors to communicate and collaborate in the project, and users to
 be able to download and install packages. Help us keep the system up and running
 smoothly. ")
 			  (p "You can also "
-			     (a (@ (href "/software/guix/donate/"))
+			     (a (@ (href ,(base-url "donate")))
 				"donate hardware or hosting")
 			     ". ")
 			  (a (@ (href "http://lists.gnu.org/mailman/listinfo/guix-devel")
@@ -122,10 +122,10 @@ smoothly. ")
 community about your experience. Help the project reporting bugs.")
 			  (p "Before reporting a bug, please check whether the
 bug is already "
-			     (a (@ (href "http://debbugs.gnu.org/guix"))
+			     (a (@ (href "https://debbugs.gnu.org/guix"))
 				"in the bug database")
 			     ". See "
-			     (a (@ (href "http://debbugs.gnu.org/Developer.html"))
+			     (a (@ (href "https://debbugs.gnu.org/Developer.html"))
 				"the developer information page")
 			     " for more information on how to manipulate bug
 reports. ")
@@ -137,15 +137,15 @@ reports. ")
 			  (p "You can help us translate software and
 documentation to your language. The main components of the Guix System
 Distribution, including the Guix package manager, can be translated in the "
-			     (a (@ (href "http://translationproject.org/"))
+			     (a (@ (href "https://translationproject.org/"))
 				"Translation Project")
 			     ".")
 			  (p "Other "
-			     (a (@ (href "/software/guix/packages/"))
+			     (a (@ (href ,(base-url "packages")))
 				"software packaged")
 			     " for the system may have their own translation
 tools. Visit their websites and help translate. ")
-			  (a (@ (href "http://translationproject.org/")
+			  (a (@ (href "https://translationproject.org/")
 				(class "hlink-more-dark"))
 			     "Start translating")))
 		(h2 (@ (id "resources"))
diff --git a/website/www/donate.scm b/website/www/donate.scm
index 5ded10a..e238444 100644
--- a/website/www/donate.scm
+++ b/website/www/donate.scm
@@ -1,4 +1,5 @@
 (define-module (www donate)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (donate-page))
 
@@ -17,7 +18,7 @@
 		   " of the Guix System Distribution runs on donated hardware
 and hosting. Please consider helping the project with donations. ")
 		(p "As the distribution grows (see the "
-		   (a (@ (href "/software/guix/packages/"))
+		   (a (@ (href ,(base-url "packages")))
 		      "package list")
 		   "), so do the computing and storage needs. We are looking for
 donations of hardware and optionally hosting for the following kinds of
@@ -31,9 +32,9 @@ binaries for the "
 			";")
 		    (li "mips64el machines to strengthen this port."))
 		(p "Please get in touch with us through the "
-		   (a (@ (href "/software/guix/about/#contact"))
+		   (a (@ (href ,(base-url "about/#contact")))
 		      "usual channels")
-		   "or using the guix-hardware@gnu.org private alias to discuss
+		   " or using the guix-hardware@gnu.org private alias to discuss
 any opportunities. ")
 		(h2 (@ (id "hardware-donors")) "Thanks to the donors!")
 		(p "The table below summarizes hardware and hosting donations
@@ -47,23 +48,23 @@ reality.")
 				  (th "donors")))
 		       (tbody (tr (td "hydra.gnu.org")
 				  (td "build farm front-end")
-				  (td (ul (li (a (@ (href "http://www.fsf.org/"))
-						 "Free Software \t          Foundation")))))
+				  (td (ul (li (a (@ (href "https://www.fsf.org/"))
+						 "Free Software Foundation")))))
 			      (tr (td "hydra.gnunet.org")
 				  (td "x86_64-linux, i686-linux")
 				  (td (ul (li (a (@ (href "https://gnunet.org/fsnsg"))
-						 "Free Secure
-Network Systems Group")
+						 "Free Secure Network Systems
+Group")
 					      " at the "
-					      (a (@ (href "http://www.tum.de/"))
-						 "Technische
-Universität München")))))
+					      (a (@ (href "https://www.tum.de/"))
+						 "Technische Universität
+München")))))
 			      (tr (td "chapters.gnu.org")
 				  (td "x86_64-linux, i686-linux")
-				  (td (ul (li (a (@ (href "http://es.gnu.org"))
+				  (td (ul (li (a (@ (href "https://es.gnu.org"))
 						 "GNU\xa0España")
 					      " (hardware)")
-					  (li (a (@ (href "http://fsffrance.org/index.en.html"))
+					  (li (a (@ (href "https://fsffrance.org/index.en.html"))
 						 "FSF\xa0France")
 					      " (hosting)"))))
 			      (tr (td "wildebeest")
diff --git a/website/www/download.scm b/website/www/download.scm
index 35a86ec..15ad184 100644
--- a/website/www/download.scm
+++ b/website/www/download.scm
@@ -1,4 +1,5 @@
 (define-module (www download)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (download-page))
 
@@ -12,20 +13,20 @@
 	       (article
 		(h1 "Download")
 		(p "As of version 0.8.1, the Guix System Distribution "
-		   (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+		   (a (@ (href ,(guix-url "manual/html_node/System-Installation.html")))
 		      "can be installed")
 		   " on an i686 or x86_64 machine. It uses the "
-		   (a (@ (href "/software/linux-libre"))
+		   (a (@ (href ,(gnu-url "s/linux-libre")))
 		      "Linux-Libre")
 		   " kernel and the "
-		   (a (@ (href "/software/dmd")) "GNU dmd")
+		   (a (@ (href ,(gnu-url "s/dmd"))) "GNU dmd")
 		   " init system. Alternately, its package manager, GNU Guix,
 can be installed as an additional package manager on top of an installed
 Linux-based system.")
 		(div (@ (class "text-center"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+			       (img (@ (src ,(image-url "GuixSD-package.png"))
 				       (alt ""))))
 			  (h2 "GuixSD 0.8.2 (i686)")
 			  (p "USB installer for machines with the following
@@ -47,7 +48,7 @@ minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href ,(guix-url "manual/html_node/System-Installation.html")))
 				"installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
@@ -55,7 +56,7 @@ minimum system requirements:")
 			     "."))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/GuixSD-package.png")
+			       (img (@ (src ,(image-url "GuixSD-package.png"))
 				       (alt ""))))
 			  (h2 "GuixSD 0.8.2 (x86_64)")
 			  (p "USB installer for machines with the following
@@ -77,7 +78,7 @@ minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href ,(guix-url "manual/html_node/System-Installation.html")))
 				"installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
@@ -85,7 +86,7 @@ minimum system requirements:")
 			     "."))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/Guix-package.png")
+			       (img (@ (src ,(image-url "Guix-package.png"))
 				       (alt ""))))
 			  (h2 "GNU Guix 0.8.2")
 			  (p "Archive distribution to install from source on
@@ -107,7 +108,7 @@ machines with the following minimum system requirements:")
 			     (br)
 			     (a (@ (href "#")) "Get signature"))
 			  (p "See the "
-			     (a (@ (href "/software/guix/manual/html_node/System-Installation.html"))
+			     (a (@ (href ,(guix-url "manual/html_node/System-Installation.html")))
 				" installation instructions")
 			     " from the manual.")
 			  (p "Alternative download methods: "
diff --git a/website/www/help.scm b/website/www/help.scm
index 0899ebc..3c42b9e 100644
--- a/website/www/help.scm
+++ b/website/www/help.scm
@@ -1,4 +1,5 @@
 (define-module (www help)
+  #:use-module (www utils)
   #:use-module (www shared)
   #:export (help-page))
 
@@ -14,43 +15,42 @@
 		(div (@ (class "text-center"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/guixsd-manual-icon.png")
+			       (img (@ (src ,(image-url "guixsd-manual-icon.png"))
 				       (alt ""))))
 			  (h2 "GuixSD Manual")
 			  (p "The documentation about the Guix System
 Distribution is available online as part of the GNU Guix package manager
 manual.")
-			  (a (@ (href "/software/guix/manual/guix.html#GNU-Distribution")
+			  (a (@ (href ,(guix-url "manual/guix.html#GNU-Distribution"))
 				(class "hlink-more-dark"))
 			     "Read the manual"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/guix-manual-icon.png")
+			       (img (@ (src ,(image-url "guix-manual-icon.png"))
 				       (alt ""))))
 			  (h2 "GNU Guix Manual")
 			  (p "Documentation for the GNU Guix package manager is
 available online. You may also find more information about Guix by running "
 			     (em "info\xa0guix")
 			     ".")
-			  (a (@ (href "/software/guix/manual/")
+			  (a (@ (href ,(guix-url "manual"))
 				(class "hlink-more-dark"))
 			     "Read the manual"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/library-icon.png")
+			       (img (@ (src ,(image-url "library-icon.png"))
 				       (alt ""))))
 			  (h2 "GNU Manuals")
 			  (p "GuixSD is a distribution of the "
-			     (a (@ (href "http://www.gnu.org/"))
-				"GNU operating system")
+			     (a (@ (href ,(gnu-url ""))) "GNU operating system")
 			     ". Most GNU software is documented and the
 documentation is available online in various formats. ")
-			  (a (@ (href "http://www.gnu.org/doc/doc.en.html")
+			  (a (@ (href ,(gnu-url "doc/doc.en.html"))
 				(class "hlink-more-dark"))
 			     "Browse the manuals"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/chat-icon.png")
+			       (img (@ (src ,(image-url "chat-icon.png"))
 				       (alt ""))))
 			  (h2 "IRC Chat")
 			  (p "For real-time support from the community, you can
@@ -65,12 +65,12 @@ browsed online. See the "
 			     (a (@ (href "https://gnunet.org/bot/log/guix/"))
 				"channel logs")
 			     ". ")
-			  (a (@ (href "http://webchat.freenode.net/?channels=%23guix")
+			  (a (@ (href "https://webchat.freenode.net/?channels=%23guix")
 				(class "hlink-more-dark"))
 			     "Connect"))
 		     (div (@ (class "summary-box"))
 			  (div (@ (class "text-center"))
-			       (img (@ (src "/software/guix/static/base/img/email-icon.png")
+			       (img (@ (src ,(image-url "email-icon.png"))
 				       (alt ""))))
 			  (h2 "Mailing lists")
 			  (p "Email support from the community is also available
@@ -98,10 +98,10 @@ Distribution. ")
 				(class "hlink-more-dark"))
 			     "Check all the lists")))
 		(h2 "Additional Documentation")
-		(ul (li (a (@ (href "http://arxiv.org/abs/1305.4584"))
+		(ul (li (a (@ (href "https://arxiv.org/abs/1305.4584"))
 			   (i "Functional Package Management with Guix"))
 			", presented at the "
-			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			(a (@ (href "https://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
 			   "2013 European Lisp Symposium (ELS)")
 			", describes the rationale, design, and
 implementation of Guix's packaging API. \t "))
@@ -110,24 +110,24 @@ implementation of Guix's packaging API. \t "))
 			(a (@ (href "https://fosdem.org/2015/schedule/event/the_emacs_of_distros/"))
 			   "FOSDEM")
 			": "
-			(a (@ (href "guix-fosdem-20150131.pdf"))
+			(a (@ (href ,(slides-url "guix-fosdem-20150131.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
+			(a (@ (href "https://audio-video.gnu.org/video/misc/2015-01__GNU_Guix__The_Emacs_of_Distros.webm"))
 			   "video")
 			" (WebM; 47 minutes) ")
 		    (li "August 2014, "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2014/"))
 			   "GNU Hackers Meeting")
 			": "
-			(a (@ (href "guix-ghm-20140815.pdf"))
+			(a (@ (href ,(slides-url "guix-ghm-20140815.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2014/2014-08--courtes--were-building-the-gnu-system--ghm.webm"))
 			   "video")
 			" (WebM; 60 minutes) ")
 		    (li "July 2014, "
-			(a (@ (href "http://www.open-bio.org/wiki/Codefest_2014"))
+			(a (@ (href "https://www.open-bio.org/wiki/Codefest_2014"))
 			   "Open Bioinformatics Codefest 2014")
 			": "
 			(a (@ (href "guix-openbio-codefest-20140709.pdf"))
@@ -136,46 +136,46 @@ implementation of Guix's packaging API. \t "))
 			(a (@ (href "https://fosdem.org/2014/schedule/event/gnuguix/"))
 			   "FOSDEM")
 			": "
-			(a (@ (href "guix-fosdem-20140201.pdf"))
+			(a (@ (href ,(slides-url "guix-fosdem-20140201.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
+			(a (@ (href "https://video.fosdem.org/2014/H1302_Depage/Sunday/Growing_a_GNU_with_Guix.webm"))
 			   "video")
 			" (WebM; 55 minutes) ")
 		    (li "August 2013, "
-			(a (@ (href "/ghm/2013/paris"))
+			(a (@ (href ,(gnu-url "ghm/2013/paris")))
 			   "GNU Hackers Meeting")
 			(ul (li (i "GNU Guix: Package without a
 scheme!")
 				", by Andreas: "
-				(a (@ (href "guix-ghm-andreas-20130823.pdf"))
+				(a (@ (href ,(slides-url "guix-ghm-andreas-20130823.pdf")))
 				   "slides"))
 			    (li (i "Guix, the Computing Freedom
 Deployment Tool")
 				", by Ludovic: "
-				(a (@ (href "guix-ghm-ludo-20130823.pdf"))
+				(a (@ (href ,(slides-url "guix-ghm-ludo-20130823.pdf")))
 				   "slides")
 				", "
 				(a (@ (href "http://audio-video.gnu.org/video/ghm2013/Ludovic_Courtes-GNU_Guix_the_computing_freedom_deployment_tool_.webm"))
 				   "video")
 				" (WebM; 60 minutes, 127MB) ")))
 		    (li "June 2013, "
-			(a (@ (href "http://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
+			(a (@ (href "https://www-sop.inria.fr/members/Manuel.Serrano/conferences/els13.html"))
 			   " European Lisp Symposium (ELS)")
 			": "
-			(a (@ (href "guix-els-20130603.pdf"))
+			(a (@ (href ,(slides-url "guix-els-20130603.pdf")))
 			   "slides")
 			", "
 			(a (@ (href "http://www.nicklevine.org/els2013/ludovic-courtes.mp3"))
 			   "audio"))
 		    (li "July 2012, "
-			(a (@ (href "/ghm/2012/ddorf/"))
+			(a (@ (href ,(gnu-url "ghm/2012/ddorf")))
 			   "GNU Hackers Meeting")
 			": "
-			(a (@ (href "guix-ghm-20120721.pdf"))
+			(a (@ (href ,(slides-url "guix-ghm-20120721.pdf")))
 			   "slides")
 			", "
-			(a (@ (href "http://audio-video.gnu.org/video/ghm2012/guix.ogv"))
+			(a (@ (href "https://audio-video.gnu.org/video/ghm2012/guix.ogv"))
 			   "video")
 			" (Ogg/"
 			(a (@ (href "http://theora.org/")) "Theora")
diff --git a/website/www/shared.scm b/website/www/shared.scm
index 8156f9d..37c2c99 100644
--- a/website/www/shared.scm
+++ b/website/www/shared.scm
@@ -1,4 +1,5 @@
 (define-module (www shared)
+  #:use-module (www utils)
   #:export (html-page-header
 	    html-page-description
 	    html-page-links
@@ -23,13 +24,13 @@ GUix Package Manager, Guile Scheme, Functional package management")))
 		  (content "width=device-width, initial-scale=1.0")))
 	 (link (@ (type "text/css")
 		  (rel "stylesheet")
-		  (href "/software/guix/static/base/css/base.css")))
+		  (href ,(css-url "base.css"))))
 	 (link (@ (type "text/css")
 		  (rel "stylesheet")
-		  (href "/software/guix/static/base/css/index.css")))
+		  (href ,(css-url "index.css"))))
 	 (link (@ (type "image/png")
 		  (rel "icon")
-		  (href "/software/guix/static/base/img/favicon.png")))
+		  (href ,(image-url "favicon.png"))))
 	 (link (@ (rel "license") (href "Pending...")))
 	 (title ,(string-append title " - GuixSD"))))
 
@@ -39,26 +40,26 @@ GUix Package Manager, Guile Scheme, Functional package management")))
 	"The Guix System Distribution (GuixSD) is alpha software. This means it
 is not production-ready. It may contain bugs and lack important features. But
 more than a disclaimer, this is an invitation to join us in improving it. See "
-	(a (@ (href "/software/guix/contribute/")) "Contributing")
+	(a (@ (href ,(base-url "contribute"))) "Contributing")
 	", for more information. We hope you can soon switch to GuixSD without
 fear. "))
 
 (define (html-page-links)
   `(div (@ (id "header-box"))
-	(a (@ (id "logo") (href "/software/guix/"))
-	   (img (@ (src "/software/guix/static/base/img/GuixSD-logo.png")
+	(a (@ (id "logo") (href ,(base-url "")))
+	   (img (@ (src ,(image-url "GuixSD-logo.png"))
 		   (alt "GuixSD"))))
 	(ul (@ (id "site-nav"))
-	    (li (a (@ (href "/software/guix/download/")) "Download"))
-	    (li (a (@ (href "/software/guix/package-list.html")) "Packages"))
-	    (li (a (@ (href "/software/guix/help/")) "Help"))
-	    (li (a (@ (href "/software/guix/contribute/")) "Contribute"))
-	    (li (a (@ (href "/software/guix/donate/")) "Donate"))
-	    (li (a (@ (href "/software/guix/about/")) "About")))))
+	    (li (a (@ (href ,(base-url "download"))) "Download"))
+	    (li (a (@ (href ,(guix-url "package-list.html"))) "Packages"))
+	    (li (a (@ (href ,(base-url "help"))) "Help"))
+	    (li (a (@ (href ,(base-url "contribute"))) "Contribute"))
+	    (li (a (@ (href ,(base-url "donate"))) "Donate"))
+	    (li (a (@ (href ,(base-url "about"))) "About")))))
 
 (define (html-page-footer)
   `(div (@ (id "footer-box"))
 	"copyleft 2015 GuixSD "
-	(a (@ (href "/software/guix/contribute/") (class "hlink-yellow"))
+	(a (@ (href ,(base-url "contribute")) (class "hlink-yellow"))
 	   "Contributors")
 	". Made with " (span (@ (class "metta")) "♥") " by humans."))
diff --git a/website/www/utils.scm b/website/www/utils.scm
new file mode 100644
index 0000000..2d7ec91
--- /dev/null
+++ b/website/www/utils.scm
@@ -0,0 +1,58 @@
+(define-module (www utils)
+  #:export (current-url-root
+	    gnu.org-root
+
+	    base-url
+	    gnu-url
+	    guix-url
+	    static-base-url
+	    css-url
+	    image-url
+	    thumb-url
+	    screenshot-url
+	    slides-url))
+
+\f
+;;;
+;;; URL variables.
+;;;
+
+(define current-url-root
+  ;; Website local url prefix.
+  (make-parameter "/software/guix"))
+
+(define gnu.org-root
+  ;; GNU's website url prefix.
+  (make-parameter ""))
+
+\f
+;;;
+;;; URL linking.
+;;;
+
+(define (base-url location)
+  (string-append (current-url-root) "/" location))
+
+(define (gnu-url location)
+  (string-append (gnu.org-root) "/" location))
+
+(define (guix-url location)
+  (string-append (gnu-url "s/guix/") location))
+
+(define (static-base-url)
+  (base-url "static/base/"))
+
+(define (css-url file)
+  (string-append (static-base-url) "css/" file))
+
+(define (image-url file)
+  (string-append (static-base-url) "img/" file))
+
+(define (thumb-url file)
+  (string-append (image-url "screenshots/") file))
+
+(define (screenshot-url version file)
+  (string-append (guix-url "screenshots/") version "/" file))
+
+(define (slides-url file)
+  (guix-url file))
-- 
2.2.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] website : ...
  2015-05-09  0:03   ` Mathieu Lirzin
@ 2015-05-09 14:22     ` Ludovic Courtès
  0 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2015-05-09 14:22 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Mathieu Lirzin <mthl@openmailbox.org> skribis:

> From f6b50dfccae0d493705c600587324153c96a90d0 Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl@openmailbox.org>
> Date: Fri, 8 May 2015 04:56:17 +0200
> Subject: [PATCH] website: Fix URLs.
>
> Enable local export to link URLs correctly.
>
> * website/www/utils.scm: New file.

I think it’s a good idea to use GNU ChangeLog-style logs, but I won’t
require it for the web site.  If you want to do that, remember to
mention all the files and procedures/variables that are
added/removed/modified.  (See the GNU Coding Standards for details on
ChangeLogs.)

[...]

> +(define (guix-url location)
> +  (string-append (gnu-url "s/guix/") location))

“software/guix” rather than “s/guix”.

OK to push with this change (with or without ChangeLog-style commit
log), and with the two previous patches.

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-05-09 14:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-08  4:09 [PATCH] website : Mathieu Lirzin
2015-05-08 10:45 ` Ludovic Courtès
2015-05-08 11:02   ` Mathieu Lirzin
2015-05-09  0:03   ` Mathieu Lirzin
2015-05-09 14:22     ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).