unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#69783] [PATCH]: website: Convert old style sheets into a theme
@ 2024-03-13 20:44 Luis Felipe via Guix-patches via
  2024-03-14 16:56 ` pelzflorian (Florian Pelz)
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Luis Felipe via Guix-patches via @ 2024-03-13 20:44 UTC (permalink / raw)
  To: 69783


[-- Attachment #1.1.1: Type: text/plain, Size: 358 bytes --]

Hi,

This is a patch for the guix-artwork repository.

NOTE: If this patch is applied, other HTML resources apart from the 
website (like HTML versions of the Guix manual) will have to be updated 
to use the new location of stylesheets and other assets they depend upon.

Cheers,

-- 
Luis Felipe López Acevedo
https://luis-felipe.gitlab.io/


[-- Attachment #1.1.2: 0001-website-Convert-old-style-sheets-into-a-theme.patch --]
[-- Type: text/x-patch, Size: 92659 bytes --]

From 6cde5823d220c794457fe40fd579ebf4409774a4 Mon Sep 17 00:00:00 2001
From: Luis Felipe <sirgazil@zoho.com>
Date: Wed, 13 Mar 2024 15:26:53 -0500
Subject: [PATCH] website: Convert old style sheets into a theme.

This change introduces the concept of website themes to separate the
look and feel of the website from unrelated static files and make it
easier to update themes, create new ones or switch between them.

* website/themes/initial: New theme.
* website/haunt.scm (site): Include the "themes" directory.
* website/apps/base/utils.scm (guix-website-theme): New variable.
(theme-url): New URL shorthand procedure.

The following template files were updated to use the new theme URL
shorthand:

* website/apps/base/templates/about.scm
* website/apps/base/templates/components.scm
* website/apps/base/templates/contact.scm
* website/apps/base/templates/contribute.scm
* website/apps/base/templates/cuirass.scm
* website/apps/base/templates/donate.scm
* website/apps/base/templates/graphics.scm
* website/apps/base/templates/help.scm
* website/apps/base/templates/home.scm
* website/apps/base/templates/irc.scm
* website/apps/base/templates/menu.scm
* website/apps/base/templates/security.scm
* website/apps/base/templates/theme.scm
* website/apps/blog/templates/feed.scm
* website/apps/blog/templates/post-list.scm
* website/apps/blog/templates/post.scm
* website/apps/blog/templates/tag.scm
* website/apps/download/templates/download-latest.scm
* website/apps/download/templates/download.scm
* website/apps/media/templates/components.scm
* website/apps/media/templates/publication-list.scm
* website/apps/media/templates/screenshot.scm
* website/apps/media/templates/screenshots-overview.scm
* website/apps/media/templates/video-list.scm
* website/apps/media/templates/video.scm

The following files were moved to the "initial" theme:

* website/static/base/css/breadcrumbs.css -> website/themes/initial/css/breadcrumbs.css
* website/static/base/css/buttons.css -> website/themes/initial/css/buttons.css
* website/static/base/css/code.css -> website/themes/initial/css/code.css
* website/static/base/css/common.css -> website/themes/initial/css/common.css
* website/static/base/css/contact.css -> website/themes/initial/css/contact.css
* website/static/base/css/download.css -> website/themes/initial/css/download.css
* website/static/base/css/elements.css -> website/themes/initial/css/elements.css
* website/static/base/css/footer.css -> website/themes/initial/css/footer.css
* website/static/base/css/index.css -> website/themes/initial/css/index.css
* website/static/base/css/item-preview.css -> website/themes/initial/css/item-preview.css
* website/static/packages/css/letter-selector.css -> website/themes/initial/css/letter-selector.css
* website/static/base/css/manual.css -> website/themes/initial/css/manual.css
* website/static/base/css/menu.css -> website/themes/initial/css/menu.css
* website/static/base/css/messages.css -> website/themes/initial/css/messages.css
* website/static/base/css/navbar.css -> website/themes/initial/css/navbar.css
* website/static/packages/css/package-list.css -> website/themes/initial/css/package-list.css
* website/static/packages/css/package.css -> website/themes/initial/css/package.css
* website/static/base/css/page.css -> website/themes/initial/css/page.css
* website/static/blog/css/post.css -> website/themes/initial/css/post.css
* website/static/media/css/publications.css -> website/themes/initial/css/publications.css
* website/static/media/css/screenshots.css -> website/themes/initial/css/screenshots.css
* website/static/base/css/sidebar.css -> website/themes/initial/css/sidebar.css
* website/static/media/css/video-list.css -> website/themes/initial/css/video-list.css
* website/static/media/css/video-preview.css -> website/themes/initial/css/video-preview.css
* website/static/media/css/video.css -> website/themes/initial/css/video.css
* website/static/base/img/Guix-logo.png -> website/themes/initial/img/Guix-logo.png
* website/static/base/img/Guix.png -> website/themes/initial/img/Guix.png
* website/static/base/img/back-btn-bg.png -> website/themes/initial/img/back-btn-bg.png
* website/static/base/img/breadcrumbs-bg.png -> website/themes/initial/img/breadcrumbs-bg.png
* website/static/base/img/chat-icon.png -> website/themes/initial/img/chat-icon.png
* website/static/base/img/checkerboard-bg.png -> website/themes/initial/img/checkerboard-bg.png
* website/static/base/img/cookbook-icon.png -> website/themes/initial/img/cookbook-icon.png
* website/static/base/img/depression-shadow-top.png -> website/themes/initial/img/depression-shadow-top.png
* website/static/base/img/dropdown-bg.png -> website/themes/initial/img/dropdown-bg.png
* website/static/base/img/email-icon.png -> website/themes/initial/img/email-icon.png
* website/static/base/img/featured-box-bg.png -> website/themes/initial/img/featured-box-bg.png
* website/static/base/img/feed-bg-white.png -> website/themes/initial/img/feed-bg-white.png
* website/static/base/img/feed.png -> website/themes/initial/img/feed.png
* website/static/base/img/feed.svg -> website/themes/initial/img/feed.svg
* website/static/base/img/h-separator-dark.png -> website/themes/initial/img/h-separator-dark.png
* website/static/base/img/h-separator.png -> website/themes/initial/img/h-separator.png
* website/static/base/img/icon-set.svg -> website/themes/initial/img/icon-set.svg
* website/static/base/img/language-picker.svg -> website/themes/initial/img/language-picker.svg
* website/static/base/img/library-icon.png -> website/themes/initial/img/library-icon.png
* website/static/base/img/link-arrow-shaper.svg -> website/themes/initial/img/link-arrow-shaper.svg
* website/static/base/img/link-arrow.png -> website/themes/initial/img/link-arrow.png
* website/static/base/img/manual-icon.png -> website/themes/initial/img/manual-icon.png
* website/static/base/img/manual-latest-icon.png -> website/themes/initial/img/manual-latest-icon.png
* website/static/base/img/menu-btn-bg.png -> website/themes/initial/img/menu-btn-bg.png
* website/static/base/img/menu-item-active-bg.png -> website/themes/initial/img/menu-item-active-bg.png
* website/static/base/img/more-info-bg.png -> website/themes/initial/img/more-info-bg.png
* website/static/base/img/noise-bg.png -> website/themes/initial/img/noise-bg.png
* website/static/media/img/playing-icon.svg -> website/themes/initial/img/playing-icon.svg
* website/static/media/img/playlist-icon.svg -> website/themes/initial/img/playlist-icon.svg
* website/static/packages/img/red-tag.png -> website/themes/initial/img/red-tag.png
* website/static/base/img/videos-icon.png -> website/themes/initial/img/videos-icon.png
* website/static/base/img/white-star.png -> website/themes/initial/img/white-star.png
* website/static/base/img/wiki-icon.png -> website/themes/initial/img/wiki-icon.png

The following files were removed:

* website/static/base/img/GuixSD-logo.png: Delete (obsolete).
---
 website/apps/base/templates/about.scm         |   2 +-
 website/apps/base/templates/components.scm    |   6 +-
 website/apps/base/templates/contact.scm       |   6 +-
 website/apps/base/templates/contribute.scm    |   4 +-
 website/apps/base/templates/cuirass.scm       |   2 +-
 website/apps/base/templates/donate.scm        |   2 +-
 website/apps/base/templates/graphics.scm      |   4 +-
 website/apps/base/templates/help.scm          |  20 +-
 website/apps/base/templates/home.scm          |   6 +-
 website/apps/base/templates/irc.scm           |   2 +-
 website/apps/base/templates/menu.scm          |   2 +-
 website/apps/base/templates/security.scm      |   2 +-
 website/apps/base/templates/theme.scm         |  18 +-
 website/apps/base/utils.scm                   |  20 +-
 website/apps/blog/templates/feed.scm          |   2 +-
 website/apps/blog/templates/post-list.scm     |   6 +-
 website/apps/blog/templates/post.scm          |   6 +-
 website/apps/blog/templates/tag.scm           |   6 +-
 .../download/templates/download-latest.scm    |   4 +-
 website/apps/download/templates/download.scm  |   4 +-
 website/apps/media/templates/components.scm   |   6 +-
 .../apps/media/templates/publication-list.scm |   4 +-
 website/apps/media/templates/screenshot.scm   |   4 +-
 .../media/templates/screenshots-overview.scm  |   2 +-
 website/apps/media/templates/video-list.scm   |   4 +-
 website/apps/media/templates/video.scm        |   4 +-
 website/haunt.scm                             |   1 +
 website/static/base/img/GuixSD-logo.png       | Bin 6785 -> 0 bytes
 website/themes/README.org                     |   6 +
 .../initial}/css/breadcrumbs.css              |   0
 .../base => themes/initial}/css/buttons.css   |   0
 .../base => themes/initial}/css/code.css      |   0
 .../base => themes/initial}/css/common.css    |   0
 .../base => themes/initial}/css/contact.css   |   0
 .../base => themes/initial}/css/download.css  |   0
 .../base => themes/initial}/css/elements.css  |   0
 .../base => themes/initial}/css/footer.css    |   0
 .../base => themes/initial}/css/index.css     |   0
 .../initial}/css/item-preview.css             |   0
 .../initial}/css/letter-selector.css          |   0
 .../base => themes/initial}/css/manual.css    |   0
 .../base => themes/initial}/css/menu.css      |   0
 .../base => themes/initial}/css/messages.css  |   0
 .../base => themes/initial}/css/navbar.css    |   0
 .../initial}/css/package-list.css             |   0
 .../initial}/css/package.css                  |   0
 .../base => themes/initial}/css/page.css      |   0
 .../blog => themes/initial}/css/post.css      |   0
 .../initial}/css/publications.css             |   2 +-
 .../initial}/css/screenshots.css              |   0
 .../base => themes/initial}/css/sidebar.css   |   2 +-
 .../initial}/css/video-list.css               |   0
 .../initial}/css/video-preview.css            |   0
 .../media => themes/initial}/css/video.css    |   0
 .../base => themes/initial}/img/Guix-logo.png | Bin
 .../base => themes/initial}/img/Guix.png      | Bin
 .../initial}/img/back-btn-bg.png              | Bin
 .../initial}/img/breadcrumbs-bg.png           | Bin
 .../base => themes/initial}/img/chat-icon.png | Bin
 .../initial}/img/checkerboard-bg.png          | Bin
 .../initial}/img/cookbook-icon.png            | Bin
 .../initial}/img/depression-shadow-top.png    | Bin
 .../initial}/img/dropdown-bg.png              | Bin
 .../initial}/img/email-icon.png               | Bin
 .../initial}/img/featured-box-bg.png          | Bin
 .../initial}/img/feed-bg-white.png            | Bin
 .../base => themes/initial}/img/feed.png      | Bin
 .../base => themes/initial}/img/feed.svg      |   0
 .../initial}/img/h-separator-dark.png         | Bin
 .../initial}/img/h-separator.png              | Bin
 .../base => themes/initial}/img/icon-set.svg  |   0
 website/themes/initial/img/icon.png           | Bin 0 -> 6912 bytes
 website/themes/initial/img/icon.svg           | 220 ++++++++++++++++++
 .../initial}/img/language-picker.svg          |   0
 .../initial}/img/library-icon.png             | Bin
 .../initial}/img/link-arrow-shaper.svg        |   0
 .../initial}/img/link-arrow.png               | Bin
 .../initial}/img/manual-icon.png              | Bin
 .../initial}/img/manual-latest-icon.png       | Bin
 .../initial}/img/menu-btn-bg.png              | Bin
 .../initial}/img/menu-item-active-bg.png      | Bin
 .../initial}/img/more-info-bg.png             | Bin
 .../base => themes/initial}/img/noise-bg.png  | Bin
 .../initial}/img/playing-icon.svg             |   0
 .../initial}/img/playlist-icon.svg            |   0
 .../initial}/img/red-tag.png                  | Bin
 .../themes/initial/img/scientific-mark.svg    | 154 ++++++++++++
 .../initial}/img/videos-icon.png              | Bin
 .../initial}/img/white-star.png               | Bin
 .../base => themes/initial}/img/wiki-icon.png | Bin
 90 files changed, 466 insertions(+), 67 deletions(-)
 delete mode 100644 website/static/base/img/GuixSD-logo.png
 create mode 100644 website/themes/README.org
 rename website/{static/base => themes/initial}/css/breadcrumbs.css (100%)
 rename website/{static/base => themes/initial}/css/buttons.css (100%)
 rename website/{static/base => themes/initial}/css/code.css (100%)
 rename website/{static/base => themes/initial}/css/common.css (100%)
 rename website/{static/base => themes/initial}/css/contact.css (100%)
 rename website/{static/base => themes/initial}/css/download.css (100%)
 rename website/{static/base => themes/initial}/css/elements.css (100%)
 rename website/{static/base => themes/initial}/css/footer.css (100%)
 rename website/{static/base => themes/initial}/css/index.css (100%)
 rename website/{static/base => themes/initial}/css/item-preview.css (100%)
 rename website/{static/packages => themes/initial}/css/letter-selector.css (100%)
 rename website/{static/base => themes/initial}/css/manual.css (100%)
 rename website/{static/base => themes/initial}/css/menu.css (100%)
 rename website/{static/base => themes/initial}/css/messages.css (100%)
 rename website/{static/base => themes/initial}/css/navbar.css (100%)
 rename website/{static/packages => themes/initial}/css/package-list.css (100%)
 rename website/{static/packages => themes/initial}/css/package.css (100%)
 rename website/{static/base => themes/initial}/css/page.css (100%)
 rename website/{static/blog => themes/initial}/css/post.css (100%)
 rename website/{static/media => themes/initial}/css/publications.css (92%)
 rename website/{static/media => themes/initial}/css/screenshots.css (100%)
 rename website/{static/base => themes/initial}/css/sidebar.css (96%)
 rename website/{static/media => themes/initial}/css/video-list.css (100%)
 rename website/{static/media => themes/initial}/css/video-preview.css (100%)
 rename website/{static/media => themes/initial}/css/video.css (100%)
 rename website/{static/base => themes/initial}/img/Guix-logo.png (100%)
 rename website/{static/base => themes/initial}/img/Guix.png (100%)
 rename website/{static/base => themes/initial}/img/back-btn-bg.png (100%)
 rename website/{static/base => themes/initial}/img/breadcrumbs-bg.png (100%)
 rename website/{static/base => themes/initial}/img/chat-icon.png (100%)
 rename website/{static/base => themes/initial}/img/checkerboard-bg.png (100%)
 rename website/{static/base => themes/initial}/img/cookbook-icon.png (100%)
 rename website/{static/base => themes/initial}/img/depression-shadow-top.png (100%)
 rename website/{static/base => themes/initial}/img/dropdown-bg.png (100%)
 rename website/{static/base => themes/initial}/img/email-icon.png (100%)
 rename website/{static/base => themes/initial}/img/featured-box-bg.png (100%)
 rename website/{static/base => themes/initial}/img/feed-bg-white.png (100%)
 rename website/{static/base => themes/initial}/img/feed.png (100%)
 rename website/{static/base => themes/initial}/img/feed.svg (100%)
 rename website/{static/base => themes/initial}/img/h-separator-dark.png (100%)
 rename website/{static/base => themes/initial}/img/h-separator.png (100%)
 rename website/{static/base => themes/initial}/img/icon-set.svg (100%)
 create mode 100644 website/themes/initial/img/icon.png
 create mode 100644 website/themes/initial/img/icon.svg
 rename website/{static/base => themes/initial}/img/language-picker.svg (100%)
 rename website/{static/base => themes/initial}/img/library-icon.png (100%)
 rename website/{static/base => themes/initial}/img/link-arrow-shaper.svg (100%)
 rename website/{static/base => themes/initial}/img/link-arrow.png (100%)
 rename website/{static/base => themes/initial}/img/manual-icon.png (100%)
 rename website/{static/base => themes/initial}/img/manual-latest-icon.png (100%)
 rename website/{static/base => themes/initial}/img/menu-btn-bg.png (100%)
 rename website/{static/base => themes/initial}/img/menu-item-active-bg.png (100%)
 rename website/{static/base => themes/initial}/img/more-info-bg.png (100%)
 rename website/{static/base => themes/initial}/img/noise-bg.png (100%)
 rename website/{static/media => themes/initial}/img/playing-icon.svg (100%)
 rename website/{static/media => themes/initial}/img/playlist-icon.svg (100%)
 rename website/{static/packages => themes/initial}/img/red-tag.png (100%)
 create mode 100644 website/themes/initial/img/scientific-mark.svg
 rename website/{static/base => themes/initial}/img/videos-icon.png (100%)
 rename website/{static/base => themes/initial}/img/white-star.png (100%)
 rename website/{static/base => themes/initial}/img/wiki-icon.png (100%)

diff --git a/website/apps/base/templates/about.scm b/website/apps/base/templates/about.scm
index 1cf2f65..68c8815 100644
--- a/website/apps/base/templates/about.scm
+++ b/website/apps/base/templates/about.scm
@@ -26,7 +26,7 @@
 system|GNU Hurd|GNU Guix package manager") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "About") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/components.scm b/website/apps/base/templates/components.scm
index 2a6881e..82f3b85 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -179,8 +179,8 @@
   `(img
     (@ (class "h-separator")
        ,(if light
-	    `(src ,(guix-url "static/base/img/h-separator.png"))
-	    `(src ,(guix-url "static/base/img/h-separator-dark.png")))
+	    `(src ,(theme-url "img/h-separator.png"))
+	    `(src ,(theme-url "img/h-separator-dark.png")))
        (alt ""))))
 
 (define (horizontal-skip)
@@ -191,7 +191,7 @@
   "Return SHTML for a visible separator to be used in a dropdown menu
 like a menu item."
   `(img (@ (class "hline")
-           (src ,(guix-url "static/base/img/h-separator.png"))
+           (src ,(theme-url "img/h-separator.png"))
            (alt ""))))
 
 
diff --git a/website/apps/base/templates/contact.scm b/website/apps/base/templates/contact.scm
index 49d8393..33d4abf 100644
--- a/website/apps/base/templates/contact.scm
+++ b/website/apps/base/templates/contact.scm
@@ -25,9 +25,9 @@ system|GNU Hurd|GNU Guix package manager|Community|Mailing lists|IRC \
 channels|Bug reports|Help") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-          (guix-url "static/base/css/buttons.css")
-	  (guix-url "static/base/css/contact.css"))
+	  (theme-url "css/page.css")
+          (theme-url "css/buttons.css")
+	  (theme-url "css/contact.css"))
    #:crumbs (list (crumb (C_ "website menu" "Contact") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/contribute.scm b/website/apps/base/templates/contribute.scm
index 42ffcb9..703267f 100644
--- a/website/apps/base/templates/contribute.scm
+++ b/website/apps/base/templates/contribute.scm
@@ -25,8 +25,8 @@ system|GNU Hurd|GNU Guix package manager|Volunteer|Development|\
 Translation|I18N|L10N|Artwork") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/item-preview.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/item-preview.css"))
    #:crumbs (list (crumb (C_ "website menu" "Contribute") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/cuirass.scm b/website/apps/base/templates/cuirass.scm
index 00fe4b9..b421530 100644
--- a/website/apps/base/templates/cuirass.scm
+++ b/website/apps/base/templates/cuirass.scm
@@ -21,7 +21,7 @@
     (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
 system|GNU Guix package manager|Cuirass|CI") #\|)
    #:css (list
-          (guix-url "static/base/css/page.css"))
+          (theme-url "css/page.css"))
    #:content
    `(main
      (section
diff --git a/website/apps/base/templates/donate.scm b/website/apps/base/templates/donate.scm
index 5257a57..0a7d796 100644
--- a/website/apps/base/templates/donate.scm
+++ b/website/apps/base/templates/donate.scm
@@ -25,7 +25,7 @@
 system|GNU Hurd|GNU Guix package manager|Donations") #\|)
    #:active-menu-item (C_ "website menu" "Donate")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Donate") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/graphics.scm b/website/apps/base/templates/graphics.scm
index befbb19..97bfe53 100644
--- a/website/apps/base/templates/graphics.scm
+++ b/website/apps/base/templates/graphics.scm
@@ -23,7 +23,7 @@
 system|GNU Hurd|GNU Guix package manager|Donations|Branding|Logo") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Graphics") "./"))
    #:content
    `(main
@@ -40,7 +40,7 @@ system|GNU Hurd|GNU Guix package manager|Donations|Branding|Logo") #\|)
           "."))
       (p
        (@ (class "centered-text"))
-       (img (@ (src ,(guix-url "static/base/img/Guix.png"))
+       (img (@ (src ,(theme-url "img/Guix.png"))
                ,(G_ `(alt "GNU Guix logotype")))))
       ,(G_
         `(p
diff --git a/website/apps/base/templates/help.scm b/website/apps/base/templates/help.scm
index 98bba39..4cacf49 100644
--- a/website/apps/base/templates/help.scm
+++ b/website/apps/base/templates/help.scm
@@ -27,8 +27,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
    #:active-menu-item (C_ "website menu" "Help")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/item-preview.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/item-preview.css"))
    #:crumbs (list (crumb (C_ "website menu" "Help") "./"))
    #:content
    `(main
@@ -43,7 +43,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
        (div
 	(@ (class "summary-box"))
 	(img
-	 (@ (src ,(guix-url "static/base/img/manual-icon.png"))
+	 (@ (src ,(theme-url "img/manual-icon.png"))
 	    (alt "")))
         ,(G_ `(h3 "GNU Guix Manual " ,(latest-guix-version) ""))
         ,(G_
@@ -71,7 +71,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
        (div
 	(@ (class "summary-box"))
 	(img
-	 (@ (src ,(guix-url "static/base/img/manual-latest-icon.png"))
+	 (@ (src ,(theme-url "img/manual-latest-icon.png"))
 	    (alt "")))
         ,(G_ `(h3 "GNU Guix Manual (Latest)"))
         ,(G_
@@ -86,7 +86,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
         (@ (class "summary-box"))
-        (img (@ (src ,(guix-url "static/base/img/videos-icon.png"))
+        (img (@ (src ,(theme-url "img/videos-icon.png"))
                 (alt "")))
         ,(G_ `(h3 "Videos"))
         ,(G_
@@ -103,7 +103,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
         (@ (class "summary-box"))
-        (img (@ (src ,(guix-url "static/base/img/cookbook-icon.png"))
+        (img (@ (src ,(theme-url "img/cookbook-icon.png"))
                 (alt "")))
         ,(G_ `(h3 "Cookbook"))
         ,(G_
@@ -120,7 +120,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/library-icon.png"))
+	(img (@ (src ,(theme-url "img/library-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "GNU Manuals"))
         ,(G_
@@ -137,7 +137,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/wiki-icon.png"))
+	(img (@ (src ,(theme-url "img/wiki-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "Wiki"))
         ,(G_
@@ -155,7 +155,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/chat-icon.png"))
+	(img (@ (src ,(theme-url "img/chat-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "IRC Chat"))
         ,(G_
@@ -176,7 +176,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/email-icon.png"))
+	(img (@ (src ,(theme-url "img/email-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "Mailing lists"))
         ,(G_
diff --git a/website/apps/base/templates/home.scm b/website/apps/base/templates/home.scm
index adddd91..aa1fbb5 100644
--- a/website/apps/base/templates/home.scm
+++ b/website/apps/base/templates/home.scm
@@ -32,9 +32,9 @@ Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Overview")
    #:css (list
-	  (guix-url "static/base/css/item-preview.css")
-	  (guix-url "static/base/css/index.css")
-          (guix-url "static/media/css/video-preview.css"))
+	  (theme-url "css/item-preview.css")
+	  (theme-url "css/index.css")
+          (theme-url "css/video-preview.css"))
    #:content
    `(main
      ;; Featured content.
diff --git a/website/apps/base/templates/irc.scm b/website/apps/base/templates/irc.scm
index 13b501f..05dc87a 100644
--- a/website/apps/base/templates/irc.scm
+++ b/website/apps/base/templates/irc.scm
@@ -23,7 +23,7 @@
     (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
 system|GNU Hurd|GNU Guix package manager|IRC|chat") #\|)
    #:active-menu-item "About"
-   #:css (list (guix-url "static/base/css/page.css"))
+   #:css (list (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "webpage title" "Contact") (guix-url "contact/"))
 		  (crumb (C_ "webpage title" "IRC") "./"))
    #:content
diff --git a/website/apps/base/templates/menu.scm b/website/apps/base/templates/menu.scm
index 5b245f8..db17fc2 100644
--- a/website/apps/base/templates/menu.scm
+++ b/website/apps/base/templates/menu.scm
@@ -22,4 +22,4 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Menu")
-   #:css (list (guix-url "static/base/css/menu.css"))))
+   #:css (list (theme-url "css/menu.css"))))
diff --git a/website/apps/base/templates/security.scm b/website/apps/base/templates/security.scm
index 8a72950..09dc5dc 100644
--- a/website/apps/base/templates/security.scm
+++ b/website/apps/base/templates/security.scm
@@ -30,7 +30,7 @@
 system|GNU Hurd|GNU Guix package manager|Security updates") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Security") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/theme.scm b/website/apps/base/templates/theme.scm
index 5f5416f..d410fdc5 100644
--- a/website/apps/base/templates/theme.scm
+++ b/website/apps/base/templates/theme.scm
@@ -93,13 +93,13 @@
       ;; Menu prefetch.
       (link (@ (rel "prefetch") (href ,(guix-url "menu/index.html"))))
       ;; Base CSS.
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/elements.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/common.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/messages.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/navbar.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/breadcrumbs.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/buttons.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/footer.css"))))
       ;; Additional CSS.
       ,@(map (lambda (style-sheet)
 	       `(link (@ (rel "stylesheet") (href ,style-sheet))))
@@ -109,9 +109,9 @@
                (title ,(C_ "webpage title" "GNU Guix — Activity Feed"))
 	       (href ,(guix-url "feeds/blog.atom"))))
       (link (@ (rel "icon") (type "image/png")
-	       (href ,(guix-url "static/base/img/icon.png"))))
+	       (href ,(theme-url "img/icon.png"))))
       (link (@ (rel "icon") (type "image/svg+xml") (sizes "any")
-	       (href ,(guix-url "static/base/img/icon.svg"))))
+	       (href ,(theme-url "img/icon.svg"))))
       ;; Additional scripts.
       ,@(map (lambda (script)
 	       `(script (@ (src ,script)) ""))
diff --git a/website/apps/base/utils.scm b/website/apps/base/utils.scm
index bb520be..37ac434 100644
--- a/website/apps/base/utils.scm
+++ b/website/apps/base/utils.scm
@@ -42,7 +42,8 @@
             manual-url-with-language
 	    number*
 	    paginate
-            packages-url))
+            packages-url
+            theme-url))
 
 
 ;;;
@@ -65,6 +66,8 @@
            path
            (string-append path "/"))))))
 
+(define guix-website-theme "initial")  ; See "themes" directory.
+
 (define latest-guix-version
   (make-parameter "1.4.0"))
 
@@ -184,6 +187,21 @@ manual.
      A URL. For example: https://packages.guix.gnu.org/packages/guile/."
   (string-append "https://packages.guix.gnu.org/" path))
 
+(define (theme-url subpath)
+  "Return the URL to a given resource provided by the current website
+   theme (see 'guix-website-theme' variable).
+
+   SUBPATH (string)
+     Relative URL path to the resource. For example: 'css/buttons.css'.
+
+   RETURN VALUE (string)
+     Complete URL to the resource. For example:
+     'https://guix.gnu.org/themes/abc/css/buttons.css'."
+  (string-append (guix-root-url-path)
+                 "themes" "/"
+                 guix-website-theme "/"
+                 subpath))
+
 
 
 ;;;
diff --git a/website/apps/blog/templates/feed.scm b/website/apps/blog/templates/feed.scm
index 0702318..8284626 100644
--- a/website/apps/blog/templates/feed.scm
+++ b/website/apps/blog/templates/feed.scm
@@ -30,7 +30,7 @@
       (id ,id)
       (title ,title)
       (author (name (C_ "feed author name" "GNU Guix")) (uri ,domain))
-      (icon ,(guix-url "static/base/img/icon.png"))
+      (icon ,(theme-url "img/icon.png"))
       (updated ,(date->string (current-date) "~4"))
       (link (@ (rel "alternate") (href ,alternate)))
 
diff --git a/website/apps/blog/templates/post-list.scm b/website/apps/blog/templates/post-list.scm
index acffce1..6bf81d1 100644
--- a/website/apps/blog/templates/post-list.scm
+++ b/website/apps/blog/templates/post-list.scm
@@ -33,9 +33,9 @@ management|Reproducibility") #\|)
      #:index? #false
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/item-preview.css")
-	   (guix-url "static/base/css/sidebar.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/item-preview.css")
+	   (theme-url "css/sidebar.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
            (crumb (G_ (string-append "Page " page-number ""))
diff --git a/website/apps/blog/templates/post.scm b/website/apps/blog/templates/post.scm
index 0e6ad0d..5183d5b 100644
--- a/website/apps/blog/templates/post.scm
+++ b/website/apps/blog/templates/post.scm
@@ -29,9 +29,9 @@
      #:keywords tags
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/code.css")
-	   (guix-url "static/blog/css/post.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/code.css")
+	   (theme-url "css/post.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
 	   (crumb (post-ref post 'title)
diff --git a/website/apps/blog/templates/tag.scm b/website/apps/blog/templates/tag.scm
index 0145e63..92b9ee3 100644
--- a/website/apps/blog/templates/tag.scm
+++ b/website/apps/blog/templates/tag.scm
@@ -37,9 +37,9 @@ management|Reproducibility") #\|)
      #:index? #false
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/item-preview.css")
-	   (guix-url "static/base/css/sidebar.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/item-preview.css")
+	   (theme-url "css/sidebar.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
 	   (crumb tag (guix-url (tag-url-path tag)))
diff --git a/website/apps/download/templates/download-latest.scm b/website/apps/download/templates/download-latest.scm
index cdcecb7..87e3cfa 100644
--- a/website/apps/download/templates/download-latest.scm
+++ b/website/apps/download/templates/download-latest.scm
@@ -155,8 +155,8 @@ system|GNU Hurd|GNU Guix package manager|Installer|Source code|\
 Package manager") #\|)
    #:active-menu-item (C_ "website menu" "Download")
    #:css (list
-          (guix-url "static/base/css/page.css")
-          (guix-url "static/base/css/download.css"))
+          (theme-url "css/page.css")
+          (theme-url "css/download.css"))
    #:crumbs
    (list (crumb (C_ "website menu" "Download") (guix-url "download/"))
          (crumb (C_ "website menu" "Latest") "./"))
diff --git a/website/apps/download/templates/download.scm b/website/apps/download/templates/download.scm
index 4ee8e3b..58500b4 100644
--- a/website/apps/download/templates/download.scm
+++ b/website/apps/download/templates/download.scm
@@ -42,8 +42,8 @@ system|GNU Hurd|GNU Guix package manager|Installer|Source code|\
 Package manager") #\|)
    #:active-menu-item (C_ "website menu" "Download")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/download.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/download.css"))
    #:crumbs (list (crumb (C_ "website menu" "Download") "./"))
    #:content
    `(main
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index 8bedc9f..2c0f551 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -61,7 +61,7 @@
        (@ (class "playlist-title"))
 
        (img (@ (class "playlist-icon")
-               (src ,(guix-url "static/media/img/playlist-icon.svg"))
+               (src ,(theme-url "img/playlist-icon.svg"))
                (alt ,(G_ "Playlist: "))
                (title ,(G_ "Playlist"))))
        " "
@@ -94,7 +94,7 @@
        ,(if (publication-scientific? publication)
             `((img
                (@ (class "scientific-mark")
-                  (src ,(guix-url "static/media/img/scientific-mark.svg"))
+                  (src ,(theme-url "img/scientific-mark.svg"))
                   ;; TRANSLATORS: This is a tag that indicates a
                   ;; publication is scientific.
                   (alt ,(G_ "[Scientific]"))
@@ -182,7 +182,7 @@ top."
 
        ,(if playing?
             `((img (@ (class "playing-icon")
-                      (src ,(guix-url "static/media/img/playing-icon.svg"))
+                      (src ,(theme-url "img/playing-icon.svg"))
 
                       (alt
                        ;; TRANSLATORS: Alternative text indicating that
diff --git a/website/apps/media/templates/publication-list.scm b/website/apps/media/templates/publication-list.scm
index bcc5744..2ef666a 100644
--- a/website/apps/media/templates/publication-list.scm
+++ b/website/apps/media/templates/publication-list.scm
@@ -27,8 +27,8 @@
    (string-split (G_ "Publications|Papers") #\|)
    #:active-menu-item (C_ "website menu" "Publications")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/media/css/publications.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/publications.css"))
    #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
    #:content
    `(main
diff --git a/website/apps/media/templates/screenshot.scm b/website/apps/media/templates/screenshot.scm
index b2d42b8..a942ef6 100644
--- a/website/apps/media/templates/screenshot.scm
+++ b/website/apps/media/templates/screenshot.scm
@@ -26,8 +26,8 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
      #:active-menu-item (C_ "website menu" "Media")
-     #:css (list (guix-url "static/base/css/index.css")
-                 (guix-url "static/media/css/screenshots.css"))
+     #:css (list (theme-url "css/index.css")
+                 (theme-url "css/screenshots.css"))
      #:content
      `(main
        (section
diff --git a/website/apps/media/templates/screenshots-overview.scm b/website/apps/media/templates/screenshots-overview.scm
index 04a9fc6..7663ad9 100644
--- a/website/apps/media/templates/screenshots-overview.scm
+++ b/website/apps/media/templates/screenshots-overview.scm
@@ -23,7 +23,7 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Media")
-   #:css (list (guix-url "static/base/css/index.css"))
+   #:css (list (theme-url "css/index.css"))
    #:content
    `(main
      (section
diff --git a/website/apps/media/templates/video-list.scm b/website/apps/media/templates/video-list.scm
index 676abba..91e56fe 100644
--- a/website/apps/media/templates/video-list.scm
+++ b/website/apps/media/templates/video-list.scm
@@ -33,8 +33,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources|Videos") #\|)
      #:active-menu-item (C_ "website menu" "Videos")
      #:css (list
-            (guix-url "static/media/css/video-list.css")
-            (guix-url "static/media/css/video-preview.css"))
+            (theme-url "css/video-list.css")
+            (theme-url "css/video-preview.css"))
      #:crumbs (list (crumb (C_ "website menu" "Videos") (guix-url "videos/")))
      #:content
      `(main
diff --git a/website/apps/media/templates/video.scm b/website/apps/media/templates/video.scm
index cb74207..8bb76f9 100644
--- a/website/apps/media/templates/video.scm
+++ b/website/apps/media/templates/video.scm
@@ -45,8 +45,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources|Videos") #\|)
      #:active-menu-item (C_ "website menu" "Videos")
      #:css (list
-            (guix-url "static/media/css/video.css")
-            (guix-url "static/media/css/video-preview.css"))
+            (theme-url "css/video.css")
+            (theme-url "css/video-preview.css"))
      #:crumbs (list (crumb (C_ "website menu" "Videos") (guix-url "videos/"))
                     (crumb (video-title video) "./"))
      #:content
diff --git a/website/haunt.scm b/website/haunt.scm
index 455bdc8..34f69cc 100644
--- a/website/haunt.scm
+++ b/website/haunt.scm
@@ -24,4 +24,5 @@
                         blog:builder
                         download:builder
                         media:builder
+                        (static-directory "themes")
                         (static-directory "static"))))
diff --git a/website/static/base/img/GuixSD-logo.png b/website/static/base/img/GuixSD-logo.png
deleted file mode 100644
index 4e520dbf1a21d9c90990758305e57ad5d3201e4b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6785
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

diff --git a/website/themes/README.org b/website/themes/README.org
new file mode 100644
index 0000000..7f477d0
--- /dev/null
+++ b/website/themes/README.org
@@ -0,0 +1,6 @@
+#+TITLE: Themes
+
+This directory contains themes for Guix websites and other themable
+artifacts. Themes are folders containing style sheets, fonts, images,
+and other assets that define the visual, aural and haptic identity of
+the artifacts.
diff --git a/website/static/base/css/breadcrumbs.css b/website/themes/initial/css/breadcrumbs.css
similarity index 100%
rename from website/static/base/css/breadcrumbs.css
rename to website/themes/initial/css/breadcrumbs.css
diff --git a/website/static/base/css/buttons.css b/website/themes/initial/css/buttons.css
similarity index 100%
rename from website/static/base/css/buttons.css
rename to website/themes/initial/css/buttons.css
diff --git a/website/static/base/css/code.css b/website/themes/initial/css/code.css
similarity index 100%
rename from website/static/base/css/code.css
rename to website/themes/initial/css/code.css
diff --git a/website/static/base/css/common.css b/website/themes/initial/css/common.css
similarity index 100%
rename from website/static/base/css/common.css
rename to website/themes/initial/css/common.css
diff --git a/website/static/base/css/contact.css b/website/themes/initial/css/contact.css
similarity index 100%
rename from website/static/base/css/contact.css
rename to website/themes/initial/css/contact.css
diff --git a/website/static/base/css/download.css b/website/themes/initial/css/download.css
similarity index 100%
rename from website/static/base/css/download.css
rename to website/themes/initial/css/download.css
diff --git a/website/static/base/css/elements.css b/website/themes/initial/css/elements.css
similarity index 100%
rename from website/static/base/css/elements.css
rename to website/themes/initial/css/elements.css
diff --git a/website/static/base/css/footer.css b/website/themes/initial/css/footer.css
similarity index 100%
rename from website/static/base/css/footer.css
rename to website/themes/initial/css/footer.css
diff --git a/website/static/base/css/index.css b/website/themes/initial/css/index.css
similarity index 100%
rename from website/static/base/css/index.css
rename to website/themes/initial/css/index.css
diff --git a/website/static/base/css/item-preview.css b/website/themes/initial/css/item-preview.css
similarity index 100%
rename from website/static/base/css/item-preview.css
rename to website/themes/initial/css/item-preview.css
diff --git a/website/static/packages/css/letter-selector.css b/website/themes/initial/css/letter-selector.css
similarity index 100%
rename from website/static/packages/css/letter-selector.css
rename to website/themes/initial/css/letter-selector.css
diff --git a/website/static/base/css/manual.css b/website/themes/initial/css/manual.css
similarity index 100%
rename from website/static/base/css/manual.css
rename to website/themes/initial/css/manual.css
diff --git a/website/static/base/css/menu.css b/website/themes/initial/css/menu.css
similarity index 100%
rename from website/static/base/css/menu.css
rename to website/themes/initial/css/menu.css
diff --git a/website/static/base/css/messages.css b/website/themes/initial/css/messages.css
similarity index 100%
rename from website/static/base/css/messages.css
rename to website/themes/initial/css/messages.css
diff --git a/website/static/base/css/navbar.css b/website/themes/initial/css/navbar.css
similarity index 100%
rename from website/static/base/css/navbar.css
rename to website/themes/initial/css/navbar.css
diff --git a/website/static/packages/css/package-list.css b/website/themes/initial/css/package-list.css
similarity index 100%
rename from website/static/packages/css/package-list.css
rename to website/themes/initial/css/package-list.css
diff --git a/website/static/packages/css/package.css b/website/themes/initial/css/package.css
similarity index 100%
rename from website/static/packages/css/package.css
rename to website/themes/initial/css/package.css
diff --git a/website/static/base/css/page.css b/website/themes/initial/css/page.css
similarity index 100%
rename from website/static/base/css/page.css
rename to website/themes/initial/css/page.css
diff --git a/website/static/blog/css/post.css b/website/themes/initial/css/post.css
similarity index 100%
rename from website/static/blog/css/post.css
rename to website/themes/initial/css/post.css
diff --git a/website/static/media/css/publications.css b/website/themes/initial/css/publications.css
similarity index 92%
rename from website/static/media/css/publications.css
rename to website/themes/initial/css/publications.css
index 11a8542..a4d8abe 100644
--- a/website/static/media/css/publications.css
+++ b/website/themes/initial/css/publications.css
@@ -18,7 +18,7 @@
 .publication-preview:focus,
 .publication-preview:hover {
     background-color: gold;
-    background-image: url("/static/base/img/link-arrow-shaper.svg");
+    background-image: url("/themes/initial/img/link-arrow-shaper.svg");
     background-position: right;
     background-repeat: no-repeat;
     background-size: auto 100%;
diff --git a/website/static/media/css/screenshots.css b/website/themes/initial/css/screenshots.css
similarity index 100%
rename from website/static/media/css/screenshots.css
rename to website/themes/initial/css/screenshots.css
diff --git a/website/static/base/css/sidebar.css b/website/themes/initial/css/sidebar.css
similarity index 96%
rename from website/static/base/css/sidebar.css
rename to website/themes/initial/css/sidebar.css
index 12ed90e..c3c278b 100644
--- a/website/static/base/css/sidebar.css
+++ b/website/themes/initial/css/sidebar.css
@@ -55,7 +55,7 @@
 }
 
 .feed-link {
-    background-image: url("/static/base/img/feed-bg-white.png");
+    background-image: url("/themes/initial/img/feed-bg-white.png");
     background-position: bottom left;
     background-repeat: no-repeat;
 }
diff --git a/website/static/media/css/video-list.css b/website/themes/initial/css/video-list.css
similarity index 100%
rename from website/static/media/css/video-list.css
rename to website/themes/initial/css/video-list.css
diff --git a/website/static/media/css/video-preview.css b/website/themes/initial/css/video-preview.css
similarity index 100%
rename from website/static/media/css/video-preview.css
rename to website/themes/initial/css/video-preview.css
diff --git a/website/static/media/css/video.css b/website/themes/initial/css/video.css
similarity index 100%
rename from website/static/media/css/video.css
rename to website/themes/initial/css/video.css
diff --git a/website/static/base/img/Guix-logo.png b/website/themes/initial/img/Guix-logo.png
similarity index 100%
rename from website/static/base/img/Guix-logo.png
rename to website/themes/initial/img/Guix-logo.png
diff --git a/website/static/base/img/Guix.png b/website/themes/initial/img/Guix.png
similarity index 100%
rename from website/static/base/img/Guix.png
rename to website/themes/initial/img/Guix.png
diff --git a/website/static/base/img/back-btn-bg.png b/website/themes/initial/img/back-btn-bg.png
similarity index 100%
rename from website/static/base/img/back-btn-bg.png
rename to website/themes/initial/img/back-btn-bg.png
diff --git a/website/static/base/img/breadcrumbs-bg.png b/website/themes/initial/img/breadcrumbs-bg.png
similarity index 100%
rename from website/static/base/img/breadcrumbs-bg.png
rename to website/themes/initial/img/breadcrumbs-bg.png
diff --git a/website/static/base/img/chat-icon.png b/website/themes/initial/img/chat-icon.png
similarity index 100%
rename from website/static/base/img/chat-icon.png
rename to website/themes/initial/img/chat-icon.png
diff --git a/website/static/base/img/checkerboard-bg.png b/website/themes/initial/img/checkerboard-bg.png
similarity index 100%
rename from website/static/base/img/checkerboard-bg.png
rename to website/themes/initial/img/checkerboard-bg.png
diff --git a/website/static/base/img/cookbook-icon.png b/website/themes/initial/img/cookbook-icon.png
similarity index 100%
rename from website/static/base/img/cookbook-icon.png
rename to website/themes/initial/img/cookbook-icon.png
diff --git a/website/static/base/img/depression-shadow-top.png b/website/themes/initial/img/depression-shadow-top.png
similarity index 100%
rename from website/static/base/img/depression-shadow-top.png
rename to website/themes/initial/img/depression-shadow-top.png
diff --git a/website/static/base/img/dropdown-bg.png b/website/themes/initial/img/dropdown-bg.png
similarity index 100%
rename from website/static/base/img/dropdown-bg.png
rename to website/themes/initial/img/dropdown-bg.png
diff --git a/website/static/base/img/email-icon.png b/website/themes/initial/img/email-icon.png
similarity index 100%
rename from website/static/base/img/email-icon.png
rename to website/themes/initial/img/email-icon.png
diff --git a/website/static/base/img/featured-box-bg.png b/website/themes/initial/img/featured-box-bg.png
similarity index 100%
rename from website/static/base/img/featured-box-bg.png
rename to website/themes/initial/img/featured-box-bg.png
diff --git a/website/static/base/img/feed-bg-white.png b/website/themes/initial/img/feed-bg-white.png
similarity index 100%
rename from website/static/base/img/feed-bg-white.png
rename to website/themes/initial/img/feed-bg-white.png
diff --git a/website/static/base/img/feed.png b/website/themes/initial/img/feed.png
similarity index 100%
rename from website/static/base/img/feed.png
rename to website/themes/initial/img/feed.png
diff --git a/website/static/base/img/feed.svg b/website/themes/initial/img/feed.svg
similarity index 100%
rename from website/static/base/img/feed.svg
rename to website/themes/initial/img/feed.svg
diff --git a/website/static/base/img/h-separator-dark.png b/website/themes/initial/img/h-separator-dark.png
similarity index 100%
rename from website/static/base/img/h-separator-dark.png
rename to website/themes/initial/img/h-separator-dark.png
diff --git a/website/static/base/img/h-separator.png b/website/themes/initial/img/h-separator.png
similarity index 100%
rename from website/static/base/img/h-separator.png
rename to website/themes/initial/img/h-separator.png
diff --git a/website/static/base/img/icon-set.svg b/website/themes/initial/img/icon-set.svg
similarity index 100%
rename from website/static/base/img/icon-set.svg
rename to website/themes/initial/img/icon-set.svg
diff --git a/website/themes/initial/img/icon.png b/website/themes/initial/img/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a76ef880189d368c578b14573e8fb0ec080597a0
GIT binary patch
literal 6912
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

literal 0
HcmV?d00001

diff --git a/website/themes/initial/img/icon.svg b/website/themes/initial/img/icon.svg
new file mode 100644
index 0000000..3aa54f2
--- /dev/null
+++ b/website/themes/initial/img/icon.svg
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="320"
+   height="320"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="icon.svg"
+   inkscape:export-filename="icon.png"
+   inkscape:export-xdpi="320.10001"
+   inkscape:export-ydpi="320.10001">
+  <title
+     id="title3310">GNU Guix Logotype</title>
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient4696-5">
+      <stop
+         style="stop-color:#ffb638;stop-opacity:1;"
+         offset="0"
+         id="stop4698-6" />
+      <stop
+         style="stop-color:#f0ae26;stop-opacity:1;"
+         offset="1"
+         id="stop4700-2" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4702-3">
+      <stop
+         style="stop-color:#ff0000;stop-opacity:0.58431375;"
+         offset="0"
+         id="stop4704-1" />
+      <stop
+         style="stop-color:#ffcc00;stop-opacity:1;"
+         offset="1"
+         id="stop4706-8" />
+    </linearGradient>
+    <color-profile
+       id="color-profile21"
+       xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
+       name="Artifex-PS-CMYK-Profile" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4702-3"
+       id="linearGradient3940"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.94723535,0,0,0.94723535,645.52224,963.77918)"
+       x1="142.96875"
+       y1="63.65625"
+       x2="177.04297"
+       y2="69.791016" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4696-5"
+       id="linearGradient3943"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.53041908,0,0,0.53041908,602.5784,553.93577)"
+       x1="108.08774"
+       y1="1025.709"
+       x2="80.655251"
+       y2="1043.709" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4702-3"
+       id="linearGradient3946"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.94723535,0,0,0.94723535,453.11411,156.39095)"
+       x1="113.5146"
+       y1="1004.8033"
+       x2="78.000107"
+       y2="922.07178" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4702-3"
+       id="linearGradient3950"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.94723535,0,0,0.94723535,453.14474,963.77949)"
+       x1="142.96875"
+       y1="63.65625"
+       x2="176.60477"
+       y2="70.667412" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.0610305"
+     inkscape:cx="449.07324"
+     inkscape:cy="55.078054"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1918"
+     inkscape:window-height="1026"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false"
+     showborder="true"
+     borderlayer="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-global="true"
+     inkscape:snap-page="true"
+     showguides="false">
+    <inkscape:grid
+       type="axonomgrid"
+       id="grid3004"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingy="3.7mm"
+       originx="-4mm"
+       originy="-8.5mm" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>GNU Guix Logotype</dc:title>
+        <dc:date>2016-12-16</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Luis Felipe López Acevedo</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Luis Felipe López Acevedo</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+        <dc:description />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Notice" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Attribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="layer"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-802.51966)">
+    <rect
+       y="802.51965"
+       x="2.0836631e-14"
+       height="320"
+       width="320"
+       id="rect4237"
+       style="fill:#232323;fill-opacity:1;stroke:none;stroke-width:1.66707385" />
+    <g
+       id="g155"
+       transform="matrix(1.6575274,0,0,1.6575274,-750.53493,-792.70746)">
+      <path
+         id="path3324"
+         d="m 627.08094,1008.773 c -1.70832,3.1221 -3.44263,5.6639 -5.2098,7.6667 -1.7083,1.944 -3.5921,3.4989 -5.65381,4.677 -2.00284,1.1193 -4.27528,1.9265 -6.80825,2.3977 -2.47408,0.4123 -5.31486,0.6217 -8.55472,0.6216 -2.38991,0 -4.53773,-0.1224 -6.42345,-0.3552 -0.007,0 -0.022,0 -0.0297,0 -0.23907,-0.017 -0.73283,-0.098 -1.24324,-0.1776 -0.53761,-0.084 -1.08715,-0.1653 -1.95369,-0.3256 -15.88367,-2.9389 -21.15151,8.0878 -22.28963,11.13 -0.17815,0.4762 -0.2664,0.7696 -0.2664,0.7696 l -19.29994,53.8148 -11.84042,20.1289 h 23.65127 c 9.71381,-21.6282 19.05268,-66.7872 29.03869,-70.7763 2.16445,0.3027 4.84735,0.4439 8.0811,0.4439 4.24129,0 8.03874,-0.5084 11.39643,-1.5688 3.35766,-1.0603 6.37783,-2.7049 9.08755,-4.9434 2.70969,-2.2973 5.16151,-5.2275 7.34107,-8.7619 2.23844,-3.5344 4.36136,-7.7803 6.36423,-12.7285 l -5.38735,-2.0129 z"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffbf2d;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3326"
+         d="m 627.08033,1008.7752 c -1.70832,3.1221 -3.4425,5.6604 -5.2097,7.6632 -1.70826,1.944 -3.59281,3.4996 -5.65451,4.6777 -0.496,0.2772 -1.00736,0.5319 -1.53631,0.7705 -0.005,0 -0.009,0.01 -0.0139,0.01 -0.66579,0.4682 -1.52215,0.8702 -2.68281,1.1465 -13.38656,3.1873 -22.50458,15.117 -23.36103,16.2711 0.38833,-0.3193 0.77922,-0.58 1.16943,-0.7796 0.0587,-0.031 0.11554,-0.059 0.17427,-0.087 0.01,0 0.0181,-0.01 0.0275,-0.014 0.0681,-0.032 0.1383,-0.06 0.20637,-0.087 2.16444,0.3027 4.84676,0.4448 8.08051,0.4448 4.24129,0 8.0385,-0.5126 11.39618,-1.573 3.35767,-1.0603 6.37513,-2.7006 9.08486,-4.9391 2.70969,-2.2973 5.16261,-5.2293 7.34217,-8.7638 2.23844,-3.5343 4.3625,-7.7825 6.36535,-12.7307 l -5.38855,-2.0087 z"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3950);fill-opacity:1;stroke:none;stroke-width:1.06666672" />
+      <path
+         id="path3328"
+         d="m 471.58617,1008.773 c 1.70832,3.1221 3.4426,5.6639 5.20979,7.6667 1.7083,1.944 3.59209,3.4989 5.65381,4.677 2.00283,1.1193 4.27528,1.9265 6.80825,2.3977 2.47409,0.4124 5.31485,0.6217 8.55472,0.6216 2.38992,0 4.53772,-0.1224 6.42343,-0.3552 0.007,0 0.022,0 0.0297,0 0.23905,-0.017 0.73283,-0.098 1.24325,-0.1776 0.53761,-0.084 1.08714,-0.1653 1.95367,-0.3256 15.88368,-2.9389 21.15152,8.0878 22.28964,11.13 0.17814,0.4762 0.2664,0.7696 0.2664,0.7696 l 19.29992,53.8148 11.84045,20.1289 h -23.65128 c -9.71381,-21.6282 -19.05267,-66.7872 -29.03869,-70.7763 -2.16444,0.3027 -4.84736,0.4439 -8.08111,0.4439 -4.24128,0 -8.03874,-0.5084 -11.39642,-1.5688 -3.35767,-1.0603 -6.37784,-2.7049 -9.08754,-4.9434 -2.70969,-2.2973 -5.16152,-5.2275 -7.34107,-8.7619 -2.23844,-3.5343 -4.36139,-7.7803 -6.36425,-12.7285 l 5.38741,-2.0129 z"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffbf2d;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3946);fill-opacity:1;stroke:none;stroke-width:1.06666672"
+         d="m 471.58521,1008.7723 c 1.70832,3.1221 3.4426,5.6639 5.20979,7.6666 1.7083,1.944 3.59209,3.4989 5.6538,4.677 2.00284,1.1193 4.27529,1.9265 6.80826,2.3977 2.47409,0.4125 5.31485,0.6217 8.55473,0.6216 2.38991,0 4.53771,-0.1224 6.42343,-0.3552 0.007,0 0.022,0 0.0296,0 0.23907,-0.017 0.73284,-0.098 1.24326,-0.1776 0.5376,-0.084 1.08714,-0.1653 1.95366,-0.3256 15.88369,-2.9389 21.15152,8.0878 22.28964,11.13 0.17814,0.4762 0.2664,0.7696 0.2664,0.7696 l 19.29993,53.8149 9.94597,20.1288 h -21.75681 c -9.7138,-21.6283 -19.05267,-66.7872 -29.03869,-70.7763 -2.16443,0.3027 -4.84736,0.444 -8.0811,0.444 -4.24127,0 -8.03874,-0.5085 -11.39642,-1.5689 -3.35766,-1.0603 -6.37784,-2.7049 -9.08754,-4.9434 -2.70969,-2.2973 -5.16152,-5.2274 -7.34107,-8.7619 -2.23844,-3.5343 -4.36139,-7.7803 -6.36424,-12.7285 z"
+         id="path3330"
+         sodipodi:nodetypes="ccccccccsscccccccccccc" />
+      <path
+         sodipodi:nodetypes="ccc"
+         d="m 549.3137,1088.9836 -11.79398,20.1373 h 23.63946"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3943);fill-opacity:1;stroke:none;stroke-width:1.06666672"
+         id="path3332"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3334"
+         d="m 471.58777,1008.7752 -5.38855,2.0087 c 0.62589,1.5463 1.26316,3.0258 1.91236,4.4347 0.12984,0.2817 0.25904,0.5583 0.38981,0.8346 5.1e-4,0 -5e-4,0 0,0 0.13018,0.2749 0.2633,0.5468 0.3944,0.8163 0.0436,0.09 0.0892,0.1767 0.13299,0.266 0.21987,0.448 0.43795,0.8926 0.66038,1.3253 10e-4,0 0.003,0 0.004,0 0.13259,0.2578 0.26549,0.5135 0.39899,0.7658 0.53841,1.018 1.08418,1.9922 1.6372,2.9213 0.13809,0.232 0.27373,0.4569 0.41274,0.6833 0.0539,0.088 0.10645,0.1745 0.16051,0.2614 0.086,0.1385 0.17503,0.2764 0.2614,0.4128 0.13622,0.2209 0.2698,0.4396 0.40815,0.6558 0.22042,0.3444 0.44835,0.6811 0.67414,1.0135 0.057,0.084 0.11232,0.169 0.16967,0.2522 0.14329,0.2077 0.28569,0.4116 0.43109,0.6145 0.28935,0.4038 0.5828,0.7985 0.88051,1.1832 0.14886,0.1923 0.2985,0.3811 0.44943,0.5687 0.30189,0.375 0.60704,0.7403 0.9172,1.096 0.23515,0.2697 0.47552,0.5349 0.71542,0.7934 0.0757,0.082 0.15303,0.1625 0.22929,0.243 0.31914,0.3372 0.6403,0.664 0.96765,0.9814 0.16327,0.1584 0.32538,0.3144 0.49069,0.4678 0.16612,0.1542 0.33173,0.3048 0.49988,0.454 0.16734,0.1486 0.3351,0.2921 0.50446,0.4357 0.50807,0.4197 1.02916,0.8189 1.55924,1.1969 1.41353,1.0081 2.90582,1.8688 4.48051,2.582 0.19683,0.089 0.39218,0.1768 0.59158,0.2614 0.40009,0.1697 0.80476,0.3302 1.2153,0.4815 0.20461,0.075 0.4073,0.1447 0.61453,0.2155 0.20722,0.071 0.41842,0.1401 0.62828,0.2064 0.20984,0.066 0.41957,0.1306 0.63286,0.1926 0.42658,0.124 0.86207,0.2417 1.30242,0.3485 0.22017,0.053 0.44136,0.1022 0.66496,0.1514 0.22362,0.049 0.44709,0.097 0.67414,0.1422 0.22852,0.045 0.45591,0.087 0.68791,0.1284 0.461,0.082 0.9285,0.1552 1.40331,0.2201 0.71221,0.097 1.43962,0.1781 2.18293,0.2385 0.49554,0.04 0.99941,0.072 1.50879,0.096 0.50937,0.024 1.02684,0.038 1.55007,0.046 0.26161,0 0.5237,0 0.78879,0 0.40421,0 0.8007,-10e-5 1.18776,0 0.77415,-0.01 1.51334,-0.028 2.21963,-0.055 0.35158,-0.014 0.69688,-0.028 1.03185,-0.046 0.33637,-0.018 0.66625,-0.041 0.98598,-0.064 0.95919,-0.069 1.84362,-0.157 2.65529,-0.2705 0.068,0.027 0.13836,0.055 0.20637,0.087 0.01,0 0.0181,0.01 0.0275,0.014 0.0588,0.028 0.11558,0.056 0.17427,0.087 0.39043,0.1998 0.78086,0.4601 1.16942,0.7796 -0.85464,-1.1517 -9.97292,-13.0835 -23.36104,-16.2711 -1.16064,-0.2763 -2.01701,-0.6782 -2.68279,-1.1465 -0.005,0 -0.009,-0.01 -0.0138,-0.01 -0.52775,-0.238 -1.04135,-0.4939 -1.53631,-0.7704 -10e-4,-5e-4 -0.003,5e-4 -0.004,0 -0.12772,-0.073 -0.25429,-0.1488 -0.38064,-0.2247 -10e-4,-5e-4 -0.003,5e-4 -0.004,0 -0.12747,-0.077 -0.24998,-0.1544 -0.37606,-0.2339 -0.25319,-0.1597 -0.50449,-0.3236 -0.75209,-0.4953 -0.12331,-0.085 -0.24496,-0.173 -0.36688,-0.2614 -0.24555,-0.1781 -0.48464,-0.3601 -0.72459,-0.5503 -0.11916,-0.094 -0.23535,-0.187 -0.35312,-0.2843 -0.11865,-0.098 -0.23587,-0.197 -0.35312,-0.2981 -0.1164,-0.1004 -0.22893,-0.2039 -0.34395,-0.3073 -0.57508,-0.5168 -1.13318,-1.0678 -1.67389,-1.6601 -0.10813,-0.1185 -0.21883,-0.2408 -0.32561,-0.3623 -0.39293,-0.4454 -0.78423,-0.918 -1.174,-1.4171 -0.0485,-0.062 -0.0938,-0.125 -0.14217,-0.188 -0.10945,-0.1422 -0.22099,-0.2846 -0.33019,-0.4311 -0.54603,-0.7324 -1.08778,-1.5203 -1.62803,-2.3618 -0.21609,-0.3366 -0.4314,-0.6821 -0.64662,-1.0364 -0.1076,-0.1772 -0.21362,-0.355 -0.32101,-0.5366 -0.32117,-0.5431 -0.64376,-1.1088 -0.96306,-1.6922 z"
+         style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient3940);fill-opacity:1;stroke:none;stroke-width:1.06666672" />
+    </g>
+  </g>
+</svg>
diff --git a/website/static/base/img/language-picker.svg b/website/themes/initial/img/language-picker.svg
similarity index 100%
rename from website/static/base/img/language-picker.svg
rename to website/themes/initial/img/language-picker.svg
diff --git a/website/static/base/img/library-icon.png b/website/themes/initial/img/library-icon.png
similarity index 100%
rename from website/static/base/img/library-icon.png
rename to website/themes/initial/img/library-icon.png
diff --git a/website/static/base/img/link-arrow-shaper.svg b/website/themes/initial/img/link-arrow-shaper.svg
similarity index 100%
rename from website/static/base/img/link-arrow-shaper.svg
rename to website/themes/initial/img/link-arrow-shaper.svg
diff --git a/website/static/base/img/link-arrow.png b/website/themes/initial/img/link-arrow.png
similarity index 100%
rename from website/static/base/img/link-arrow.png
rename to website/themes/initial/img/link-arrow.png
diff --git a/website/static/base/img/manual-icon.png b/website/themes/initial/img/manual-icon.png
similarity index 100%
rename from website/static/base/img/manual-icon.png
rename to website/themes/initial/img/manual-icon.png
diff --git a/website/static/base/img/manual-latest-icon.png b/website/themes/initial/img/manual-latest-icon.png
similarity index 100%
rename from website/static/base/img/manual-latest-icon.png
rename to website/themes/initial/img/manual-latest-icon.png
diff --git a/website/static/base/img/menu-btn-bg.png b/website/themes/initial/img/menu-btn-bg.png
similarity index 100%
rename from website/static/base/img/menu-btn-bg.png
rename to website/themes/initial/img/menu-btn-bg.png
diff --git a/website/static/base/img/menu-item-active-bg.png b/website/themes/initial/img/menu-item-active-bg.png
similarity index 100%
rename from website/static/base/img/menu-item-active-bg.png
rename to website/themes/initial/img/menu-item-active-bg.png
diff --git a/website/static/base/img/more-info-bg.png b/website/themes/initial/img/more-info-bg.png
similarity index 100%
rename from website/static/base/img/more-info-bg.png
rename to website/themes/initial/img/more-info-bg.png
diff --git a/website/static/base/img/noise-bg.png b/website/themes/initial/img/noise-bg.png
similarity index 100%
rename from website/static/base/img/noise-bg.png
rename to website/themes/initial/img/noise-bg.png
diff --git a/website/static/media/img/playing-icon.svg b/website/themes/initial/img/playing-icon.svg
similarity index 100%
rename from website/static/media/img/playing-icon.svg
rename to website/themes/initial/img/playing-icon.svg
diff --git a/website/static/media/img/playlist-icon.svg b/website/themes/initial/img/playlist-icon.svg
similarity index 100%
rename from website/static/media/img/playlist-icon.svg
rename to website/themes/initial/img/playlist-icon.svg
diff --git a/website/static/packages/img/red-tag.png b/website/themes/initial/img/red-tag.png
similarity index 100%
rename from website/static/packages/img/red-tag.png
rename to website/themes/initial/img/red-tag.png
diff --git a/website/themes/initial/img/scientific-mark.svg b/website/themes/initial/img/scientific-mark.svg
new file mode 100644
index 0000000..d301307
--- /dev/null
+++ b/website/themes/initial/img/scientific-mark.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="180"
+   height="180"
+   id="svg2"
+   version="1.1"
+   inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+   sodipodi:docname="scientific-mark.svg"
+   inkscape:export-filename="manual-latest-icon.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="338.63228"
+     inkscape:cy="-97.758331"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1016"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:showpageshadow="false"
+     inkscape:snap-global="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:document-rotation="0"
+     inkscape:snap-grids="false"
+     inkscape:snap-to-guides="false"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-page="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3245"
+       empspacing="1"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="100"
+       spacingy="100"
+       originx="40"
+       originy="40" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Cap"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-872.36218)">
+    <path
+       id="rect240"
+       style="fill:#333333;fill-opacity:1;stroke-width:1.99999"
+       d="M 90.000198,939.32109 5.5123166,969.80392 v 4.56318 l 42.5012864,15.33389 v 32.52601 h 0.01118 a 42.779802,11.407948 0 0 0 42.768622,11.1763 42.779802,11.407948 0 0 0 42.770885,-11.1763 h 0.008 v -33.09864 l 40.91539,-14.76126 v -4.56318 z m 0.494643,5.18926 -77.050437,30.24445 -4.1509766,-1.68669 z m -3.328805,20.4452 c 0.202755,-4.6e-4 0.405519,-4.6e-4 0.608275,0 18.149719,-3.6e-4 34.458049,3.62068 41.133229,9.13302 -8.25757,-3.90965 -21.87171,-6.24378 -36.414081,-6.24316 -7.194884,3.6e-4 -14.280885,0.57398 -20.643484,1.67107 v 39.96792 c -5.644696,0.7436 -10.700536,2.001 -14.525079,3.5828 v -39.53564 c -5.876691,2.51653 -9.060375,5.59376 -9.061743,8.75872 2.96e-4,0.20282 0.01367,0.40563 0.04011,0.60828 v 3.01909 c -3.127233,-2.01991 -4.757427,-4.25157 -4.759253,-6.51501 -0.004,-7.90175 19.430896,-14.33837 43.622026,-14.44709 z m 3.014639,50.85215 a 33.418522,6.440439 0 0 1 0.612731,0 33.418522,6.440439 0 0 1 33.419484,6.4417 33.418522,6.440439 0 0 1 -33.419484,6.4392 33.418522,6.440439 0 0 1 -33.417264,-6.4392 33.418522,6.440439 0 0 1 32.804533,-6.4417 z" />
+    <g
+       transform="translate(-1160.0177,610.69615)"
+       inkscape:label="referencia"
+       id="layer2-3" />
+    <g
+       inkscape:label="Layer 1"
+       id="g3194"
+       transform="translate(-381.66039,1217.4341)" />
+    <g
+       id="layer2"
+       inkscape:label="referencia"
+       transform="translate(-577.51401,231.92014)"
+       sodipodi:insensitive="true" />
+    <g
+       transform="translate(200.84331,838.65809)"
+       id="g3194-5"
+       inkscape:label="Layer 1" />
+    <g
+       inkscape:label="Layer 1"
+       id="g7737"
+       transform="translate(415.21682,1076.3667)" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none"
+       x="-225.51039"
+       y="1257.8601"
+       id="text3665"><tspan
+         sodipodi:role="line"
+         id="tspan3667"
+         x="-225.51039"
+         y="1257.8601"
+         style="font-size:40px;line-height:1.25"> </tspan></text>
+    <circle
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       id="path256"
+       cx="161.13716"
+       cy="994.64807"
+       r="4.4626188" />
+    <path
+       id="rect258"
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       d="m 159.53711,1001.2723 c -2.216,0 -3.80552,1.3775 -4,3.0723 l -2,17.4277 c -0.19448,1.6947 1.784,3.0723 4,3.0723 h 7.19922 c 2.216,0 4.19448,-1.3776 4,-3.0723 l -2,-17.4277 c -0.19448,-1.6948 -1.784,-3.0723 -4,-3.0723 z m -0.11914,2.334 -1.125,19.0254 c -1.15101,0 -1.46128,0.136 -2.22852,-0.834 l 2.12891,-16.8164 z" />
+    <path
+       id="rect263"
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:2"
+       d="m 159.35468,983.98439 3.56496,-1.28041 V 990.92 h -3.56496 z"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/website/static/base/img/videos-icon.png b/website/themes/initial/img/videos-icon.png
similarity index 100%
rename from website/static/base/img/videos-icon.png
rename to website/themes/initial/img/videos-icon.png
diff --git a/website/static/base/img/white-star.png b/website/themes/initial/img/white-star.png
similarity index 100%
rename from website/static/base/img/white-star.png
rename to website/themes/initial/img/white-star.png
diff --git a/website/static/base/img/wiki-icon.png b/website/themes/initial/img/wiki-icon.png
similarity index 100%
rename from website/static/base/img/wiki-icon.png
rename to website/themes/initial/img/wiki-icon.png

base-commit: 3101f165670d0361ba85c218029c70d25b33b313
-- 
2.41.0


[-- Attachment #1.1.3: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 2881 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

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

* [bug#69783] [PATCH]: website: Convert old style sheets into a theme
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
@ 2024-03-14 16:56 ` pelzflorian (Florian Pelz)
  2024-03-14 20:16   ` Luis Felipe via Guix-patches via
  2024-03-15 15:33 ` [bug#69783] [PATCH v2] " sirgazil--- via Guix-patches via
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-14 16:56 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 69783

Hi sirgazil,

the patch looks good, although I will not push it as I do not know where
the CSS file for manuals is set (guix repo? maintenance?).  And,

* themes is a name clash with haunt themes
  <https://files.dthompson.us/docs/haunt/latest/Blog.html#index-theme>,
  which may be OK nonetheless.  But theme could also be named style or
  something.  Or not.  The name themes is quite fitting.

* I wonder, why are static/base/img/icon and scientific-mark.svg created
  and not moved?

Regards,
Florian




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

* [bug#69783] [PATCH]: website: Convert old style sheets into a theme
  2024-03-14 16:56 ` pelzflorian (Florian Pelz)
@ 2024-03-14 20:16   ` Luis Felipe via Guix-patches via
  2024-03-15 10:19     ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 20+ messages in thread
From: Luis Felipe via Guix-patches via @ 2024-03-14 20:16 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 69783


[-- Attachment #1.1.1: Type: text/plain, Size: 1078 bytes --]

Hi Florian, thank you very much for reviewing.

El 14/03/24 a las 16:56, pelzflorian (Florian Pelz) escribió:
> the patch looks good, although I will not push it as I do not know where
> the CSS file for manuals is set (guix repo? maintenance?).  And,

It seems the stylesheets for the manuals are set in 
https://git.savannah.gnu.org/cgit/guix.git/tree/doc/build.scm.


> * themes is a name clash with haunt themes
>    <https://files.dthompson.us/docs/haunt/latest/Blog.html#index-theme>,
>    which may be OK nonetheless.  But theme could also be named style or
>    something.  Or not.  The name themes is quite fitting.

Yeah, personally, I don't mind using the |themes| concept for both the 
SXML components and the CSS stylesheets because of their relation. But I 
wouldn't mind using |styles| if necessary. So, if you prefer the latter, 
let me know and I'll update the patch.


> * I wonder, why are static/base/img/icon and scientific-mark.svg created
>    and not moved?
Right, they are leftovers. I can provide an updated patch to fix that.

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 2881 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

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

* [bug#69783] [PATCH]: website: Convert old style sheets into a theme
  2024-03-14 20:16   ` Luis Felipe via Guix-patches via
@ 2024-03-15 10:19     ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-15 10:19 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 69783

Luis Felipe <sirgazil@zoho.com> writes:
> Hi Florian, thank you very much for reviewing.
>
> El 14/03/24 a las 16:56, pelzflorian (Florian Pelz) escribió:
>> the patch looks good, although I will not push it as I do not know where
>> the CSS file for manuals is set (guix repo? maintenance?).  And,
>
> It seems the stylesheets for the manuals are set in
> https://git.savannah.gnu.org/cgit/guix.git/tree/doc/build.scm.

Thank you, yes.  Someone with access to maintenance / berlin might have
to kickstart the manual build, which is another reason I was hesitant to
push.  I can push later today and the worst that can happen is that CSS
will be missing for those who do not have cached the CSS file.

>> * themes is a name clash with haunt themes
>>    <https://files.dthompson.us/docs/haunt/latest/Blog.html#index-theme>,
>>    which may be OK nonetheless.  But theme could also be named style or
>>    something.  Or not.  The name themes is quite fitting.
>
> Yeah, personally, I don't mind using the |themes| concept for both the
> SXML components and the CSS stylesheets because of their relation. But
> I wouldn't mind using |styles| if necessary. So, if you prefer the
> latter, let me know and I'll update the patch.
>

No, I believe the name clash is okay, because themes is such a fitting
name.

>> * I wonder, why are static/base/img/icon and scientific-mark.svg created
>>    and not moved?
> Right, they are leftovers. I can provide an updated patch to fix that.

Thank you for confirming they are the same.

Regards,
Florian




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

* [bug#69783] [PATCH v2] website: Convert old style sheets into a theme.
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
  2024-03-14 16:56 ` pelzflorian (Florian Pelz)
@ 2024-03-15 15:33 ` sirgazil--- via Guix-patches via
  2024-03-15 22:51   ` pelzflorian (Florian Pelz)
  2024-03-15 19:34 ` [bug#69783] [PATCH] doc: build: Update paths to style sheets sirgazil--- via Guix-patches via
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 20+ messages in thread
From: sirgazil--- via Guix-patches via @ 2024-03-15 15:33 UTC (permalink / raw)
  To: 69783; +Cc: Luis Felipe

From: Luis Felipe <sirgazil@zoho.com>

This change introduces the concept of website themes to separate the
look and feel of the website from unrelated static files and make it
easier to update themes, create new ones or switch between them.

* website/themes/initial: New theme.
* website/haunt.scm (site): Include the "themes" directory.
* website/apps/base/utils.scm (guix-website-theme): New variable.
(theme-url): New URL shorthand procedure.

The following template files were updated to use the new theme URL
shorthand:

* website/apps/base/templates/about.scm
* website/apps/base/templates/components.scm
* website/apps/base/templates/contact.scm
* website/apps/base/templates/contribute.scm
* website/apps/base/templates/cuirass.scm
* website/apps/base/templates/donate.scm
* website/apps/base/templates/graphics.scm
* website/apps/base/templates/help.scm
* website/apps/base/templates/home.scm
* website/apps/base/templates/irc.scm
* website/apps/base/templates/menu.scm
* website/apps/base/templates/security.scm
* website/apps/base/templates/theme.scm
* website/apps/blog/templates/feed.scm
* website/apps/blog/templates/post-list.scm
* website/apps/blog/templates/post.scm
* website/apps/blog/templates/tag.scm
* website/apps/download/templates/download-latest.scm
* website/apps/download/templates/download.scm
* website/apps/media/templates/components.scm
* website/apps/media/templates/publication-list.scm
* website/apps/media/templates/screenshot.scm
* website/apps/media/templates/screenshots-overview.scm
* website/apps/media/templates/video-list.scm
* website/apps/media/templates/video.scm

The following files were moved to the "initial" theme:

* website/static/base/css/breadcrumbs.css -> website/themes/initial/css/breadcrumbs.css
* website/static/base/css/buttons.css -> website/themes/initial/css/buttons.css
* website/static/base/css/code.css -> website/themes/initial/css/code.css
* website/static/base/css/common.css -> website/themes/initial/css/common.css
* website/static/base/css/contact.css -> website/themes/initial/css/contact.css
* website/static/base/css/download.css -> website/themes/initial/css/download.css
* website/static/base/css/elements.css -> website/themes/initial/css/elements.css
* website/static/base/css/footer.css -> website/themes/initial/css/footer.css
* website/static/base/css/index.css -> website/themes/initial/css/index.css
* website/static/base/css/item-preview.css -> website/themes/initial/css/item-preview.css
* website/static/base/css/manual.css -> website/themes/initial/css/manual.css
* website/static/base/css/menu.css -> website/themes/initial/css/menu.css
* website/static/base/css/messages.css -> website/themes/initial/css/messages.css
* website/static/base/css/navbar.css -> website/themes/initial/css/navbar.css
* website/static/base/css/page.css -> website/themes/initial/css/page.css
* website/static/blog/css/post.css -> website/themes/initial/css/post.css
* website/static/base/css/sidebar.css -> website/themes/initial/css/sidebar.css
* website/static/base/img/Guix-logo.png -> website/themes/initial/img/Guix-logo.png
* website/static/base/img/Guix.png -> website/themes/initial/img/Guix.png
* website/static/base/img/back-btn-bg.png -> website/themes/initial/img/back-btn-bg.png
* website/static/base/img/breadcrumbs-bg.png -> website/themes/initial/img/breadcrumbs-bg.png
* website/static/base/img/chat-icon.png -> website/themes/initial/img/chat-icon.png
* website/static/base/img/checkerboard-bg.png -> website/themes/initial/img/checkerboard-bg.png
* website/static/base/img/cookbook-icon.png -> website/themes/initial/img/cookbook-icon.png
* website/static/base/img/depression-shadow-top.png -> website/themes/initial/img/depression-shadow-top.png
* website/static/base/img/dropdown-bg.png -> website/themes/initial/img/dropdown-bg.png
* website/static/base/img/email-icon.png -> website/themes/initial/img/email-icon.png
* website/static/base/img/featured-box-bg.png -> website/themes/initial/img/featured-box-bg.png
* website/static/base/img/feed-bg-white.png -> website/themes/initial/img/feed-bg-white.png
* website/static/base/img/feed.png -> website/themes/initial/img/feed.png
* website/static/base/img/feed.svg -> website/themes/initial/img/feed.svg
* website/static/base/img/h-separator-dark.png -> website/themes/initial/img/h-separator-dark.png
* website/static/base/img/h-separator.png -> website/themes/initial/img/h-separator.png
* website/static/base/img/icon.png -> website/themes/initial/img/icon.png
* website/static/base/img/icon.svg -> website/themes/initial/img/icon.svg
* website/static/base/img/icon-set.svg -> website/themes/initial/img/icon-set.svg
* website/static/base/img/language-picker.svg -> website/themes/initial/img/language-picker.svg
* website/static/base/img/library-icon.png -> website/themes/initial/img/library-icon.png
* website/static/base/img/link-arrow-shaper.svg -> website/themes/initial/img/link-arrow-shaper.svg
* website/static/base/img/link-arrow.png -> website/themes/initial/img/link-arrow.png
* website/static/base/img/manual-icon.png -> website/themes/initial/img/manual-icon.png
* website/static/base/img/manual-latest-icon.png -> website/themes/initial/img/manual-latest-icon.png
* website/static/base/img/menu-btn-bg.png -> website/themes/initial/img/menu-btn-bg.png
* website/static/base/img/menu-item-active-bg.png -> website/themes/initial/img/menu-item-active-bg.png
* website/static/base/img/more-info-bg.png -> website/themes/initial/img/more-info-bg.png
* website/static/base/img/noise-bg.png -> website/themes/initial/img/noise-bg.png
* website/static/base/img/videos-icon.png -> website/themes/initial/img/videos-icon.png
* website/static/base/img/white-star.png -> website/themes/initial/img/white-star.png
* website/static/base/img/wiki-icon.png -> website/themes/initial/img/wiki-icon.png
* website/static/media/css/publications.css -> website/themes/initial/css/publications.css
* website/static/media/css/screenshots.css -> website/themes/initial/css/screenshots.css
* website/static/media/css/video-list.css -> website/themes/initial/css/video-list.css
* website/static/media/css/video-preview.css -> website/themes/initial/css/video-preview.css
* website/static/media/css/video.css -> website/themes/initial/css/video.css
* website/static/media/img/playing-icon.svg -> website/themes/initial/img/playing-icon.svg
* website/static/media/img/playlist-icon.svg -> website/themes/initial/img/playlist-icon.svg
* website/static/media/img/scientific-mark.svg -> website/themes/initial/img/scientific-mark.svg
* website/static/packages/css/letter-selector.css -> website/themes/initial/css/letter-selector.css
* website/static/packages/css/package-list.css -> website/themes/initial/css/package-list.css
* website/static/packages/css/package.css -> website/themes/initial/css/package.css
* website/static/packages/img/red-tag.png -> website/themes/initial/img/red-tag.png

The following files were removed:

* website/static/base/img/GuixSD-logo.png: Delete (obsolete).
---
 website/apps/base/templates/about.scm         |   2 +-
 website/apps/base/templates/components.scm    |   6 +++---
 website/apps/base/templates/contact.scm       |   6 +++---
 website/apps/base/templates/contribute.scm    |   4 ++--
 website/apps/base/templates/cuirass.scm       |   2 +-
 website/apps/base/templates/donate.scm        |   2 +-
 website/apps/base/templates/graphics.scm      |   4 ++--
 website/apps/base/templates/help.scm          |  20 +++++++++---------
 website/apps/base/templates/home.scm          |   6 +++---
 website/apps/base/templates/irc.scm           |   2 +-
 website/apps/base/templates/menu.scm          |   2 +-
 website/apps/base/templates/security.scm      |   2 +-
 website/apps/base/templates/theme.scm         |  18 ++++++++--------
 website/apps/base/utils.scm                   |  20 +++++++++++++++++-
 website/apps/blog/templates/feed.scm          |   2 +-
 website/apps/blog/templates/post-list.scm     |   6 +++---
 website/apps/blog/templates/post.scm          |   6 +++---
 website/apps/blog/templates/tag.scm           |   6 +++---
 .../download/templates/download-latest.scm    |   4 ++--
 website/apps/download/templates/download.scm  |   4 ++--
 website/apps/media/templates/components.scm   |   6 +++---
 .../apps/media/templates/publication-list.scm |   4 ++--
 website/apps/media/templates/screenshot.scm   |   4 ++--
 .../media/templates/screenshots-overview.scm  |   2 +-
 website/apps/media/templates/video-list.scm   |   4 ++--
 website/apps/media/templates/video.scm        |   4 ++--
 website/haunt.scm                             |   1 +
 website/static/base/img/GuixSD-logo.png       | Bin 6785 -> 0 bytes
 website/themes/README.org                     |   6 ++++++
 .../initial}/css/breadcrumbs.css              |   0
 .../base => themes/initial}/css/buttons.css   |   0
 .../base => themes/initial}/css/code.css      |   0
 .../base => themes/initial}/css/common.css    |   0
 .../base => themes/initial}/css/contact.css   |   0
 .../base => themes/initial}/css/download.css  |   0
 .../base => themes/initial}/css/elements.css  |   0
 .../base => themes/initial}/css/footer.css    |   0
 .../base => themes/initial}/css/index.css     |   0
 .../initial}/css/item-preview.css             |   0
 .../initial}/css/letter-selector.css          |   0
 .../base => themes/initial}/css/manual.css    |   0
 .../base => themes/initial}/css/menu.css      |   0
 .../base => themes/initial}/css/messages.css  |   0
 .../base => themes/initial}/css/navbar.css    |   0
 .../initial}/css/package-list.css             |   0
 .../initial}/css/package.css                  |   0
 .../base => themes/initial}/css/page.css      |   0
 .../blog => themes/initial}/css/post.css      |   0
 .../initial}/css/publications.css             |   2 +-
 .../initial}/css/screenshots.css              |   0
 .../base => themes/initial}/css/sidebar.css   |   2 +-
 .../initial}/css/video-list.css               |   0
 .../initial}/css/video-preview.css            |   0
 .../media => themes/initial}/css/video.css    |   0
 .../base => themes/initial}/img/Guix-logo.png | Bin
 .../base => themes/initial}/img/Guix.png      | Bin
 .../initial}/img/back-btn-bg.png              | Bin
 .../initial}/img/breadcrumbs-bg.png           | Bin
 .../base => themes/initial}/img/chat-icon.png | Bin
 .../initial}/img/checkerboard-bg.png          | Bin
 .../initial}/img/cookbook-icon.png            | Bin
 .../initial}/img/depression-shadow-top.png    | Bin
 .../initial}/img/dropdown-bg.png              | Bin
 .../initial}/img/email-icon.png               | Bin
 .../initial}/img/featured-box-bg.png          | Bin
 .../initial}/img/feed-bg-white.png            | Bin
 .../base => themes/initial}/img/feed.png      | Bin
 .../base => themes/initial}/img/feed.svg      |   0
 .../initial}/img/h-separator-dark.png         | Bin
 .../initial}/img/h-separator.png              | Bin
 .../base => themes/initial}/img/icon-set.svg  |   0
 .../base => themes/initial}/img/icon.png      | Bin
 .../base => themes/initial}/img/icon.svg      |   0
 .../initial}/img/language-picker.svg          |   0
 .../initial}/img/library-icon.png             | Bin
 .../initial}/img/link-arrow-shaper.svg        |   0
 .../initial}/img/link-arrow.png               | Bin
 .../initial}/img/manual-icon.png              | Bin
 .../initial}/img/manual-latest-icon.png       | Bin
 .../initial}/img/menu-btn-bg.png              | Bin
 .../initial}/img/menu-item-active-bg.png      | Bin
 .../initial}/img/more-info-bg.png             | Bin
 .../base => themes/initial}/img/noise-bg.png  | Bin
 .../initial}/img/playing-icon.svg             |   0
 .../initial}/img/playlist-icon.svg            |   0
 .../initial}/img/red-tag.png                  | Bin
 .../initial}/img/scientific-mark.svg          |   0
 .../initial}/img/videos-icon.png              | Bin
 .../initial}/img/white-star.png               | Bin
 .../base => themes/initial}/img/wiki-icon.png | Bin
 90 files changed, 92 insertions(+), 67 deletions(-)
 delete mode 100644 website/static/base/img/GuixSD-logo.png
 create mode 100644 website/themes/README.org
 rename website/{static/base => themes/initial}/css/breadcrumbs.css (100%)
 rename website/{static/base => themes/initial}/css/buttons.css (100%)
 rename website/{static/base => themes/initial}/css/code.css (100%)
 rename website/{static/base => themes/initial}/css/common.css (100%)
 rename website/{static/base => themes/initial}/css/contact.css (100%)
 rename website/{static/base => themes/initial}/css/download.css (100%)
 rename website/{static/base => themes/initial}/css/elements.css (100%)
 rename website/{static/base => themes/initial}/css/footer.css (100%)
 rename website/{static/base => themes/initial}/css/index.css (100%)
 rename website/{static/base => themes/initial}/css/item-preview.css (100%)
 rename website/{static/packages => themes/initial}/css/letter-selector.css (100%)
 rename website/{static/base => themes/initial}/css/manual.css (100%)
 rename website/{static/base => themes/initial}/css/menu.css (100%)
 rename website/{static/base => themes/initial}/css/messages.css (100%)
 rename website/{static/base => themes/initial}/css/navbar.css (100%)
 rename website/{static/packages => themes/initial}/css/package-list.css (100%)
 rename website/{static/packages => themes/initial}/css/package.css (100%)
 rename website/{static/base => themes/initial}/css/page.css (100%)
 rename website/{static/blog => themes/initial}/css/post.css (100%)
 rename website/{static/media => themes/initial}/css/publications.css (92%)
 rename website/{static/media => themes/initial}/css/screenshots.css (100%)
 rename website/{static/base => themes/initial}/css/sidebar.css (96%)
 rename website/{static/media => themes/initial}/css/video-list.css (100%)
 rename website/{static/media => themes/initial}/css/video-preview.css (100%)
 rename website/{static/media => themes/initial}/css/video.css (100%)
 rename website/{static/base => themes/initial}/img/Guix-logo.png (100%)
 rename website/{static/base => themes/initial}/img/Guix.png (100%)
 rename website/{static/base => themes/initial}/img/back-btn-bg.png (100%)
 rename website/{static/base => themes/initial}/img/breadcrumbs-bg.png (100%)
 rename website/{static/base => themes/initial}/img/chat-icon.png (100%)
 rename website/{static/base => themes/initial}/img/checkerboard-bg.png (100%)
 rename website/{static/base => themes/initial}/img/cookbook-icon.png (100%)
 rename website/{static/base => themes/initial}/img/depression-shadow-top.png (100%)
 rename website/{static/base => themes/initial}/img/dropdown-bg.png (100%)
 rename website/{static/base => themes/initial}/img/email-icon.png (100%)
 rename website/{static/base => themes/initial}/img/featured-box-bg.png (100%)
 rename website/{static/base => themes/initial}/img/feed-bg-white.png (100%)
 rename website/{static/base => themes/initial}/img/feed.png (100%)
 rename website/{static/base => themes/initial}/img/feed.svg (100%)
 rename website/{static/base => themes/initial}/img/h-separator-dark.png (100%)
 rename website/{static/base => themes/initial}/img/h-separator.png (100%)
 rename website/{static/base => themes/initial}/img/icon-set.svg (100%)
 rename website/{static/base => themes/initial}/img/icon.png (100%)
 rename website/{static/base => themes/initial}/img/icon.svg (100%)
 rename website/{static/base => themes/initial}/img/language-picker.svg (100%)
 rename website/{static/base => themes/initial}/img/library-icon.png (100%)
 rename website/{static/base => themes/initial}/img/link-arrow-shaper.svg (100%)
 rename website/{static/base => themes/initial}/img/link-arrow.png (100%)
 rename website/{static/base => themes/initial}/img/manual-icon.png (100%)
 rename website/{static/base => themes/initial}/img/manual-latest-icon.png (100%)
 rename website/{static/base => themes/initial}/img/menu-btn-bg.png (100%)
 rename website/{static/base => themes/initial}/img/menu-item-active-bg.png (100%)
 rename website/{static/base => themes/initial}/img/more-info-bg.png (100%)
 rename website/{static/base => themes/initial}/img/noise-bg.png (100%)
 rename website/{static/media => themes/initial}/img/playing-icon.svg (100%)
 rename website/{static/media => themes/initial}/img/playlist-icon.svg (100%)
 rename website/{static/packages => themes/initial}/img/red-tag.png (100%)
 rename website/{static/media => themes/initial}/img/scientific-mark.svg (100%)
 rename website/{static/base => themes/initial}/img/videos-icon.png (100%)
 rename website/{static/base => themes/initial}/img/white-star.png (100%)
 rename website/{static/base => themes/initial}/img/wiki-icon.png (100%)

diff --git a/website/apps/base/templates/about.scm b/website/apps/base/templates/about.scm
index 1cf2f65..68c8815 100644
--- a/website/apps/base/templates/about.scm
+++ b/website/apps/base/templates/about.scm
@@ -26,7 +26,7 @@
 system|GNU Hurd|GNU Guix package manager") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "About") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/components.scm b/website/apps/base/templates/components.scm
index 2a6881e..82f3b85 100644
--- a/website/apps/base/templates/components.scm
+++ b/website/apps/base/templates/components.scm
@@ -179,8 +179,8 @@
   `(img
     (@ (class "h-separator")
        ,(if light
-	    `(src ,(guix-url "static/base/img/h-separator.png"))
-	    `(src ,(guix-url "static/base/img/h-separator-dark.png")))
+	    `(src ,(theme-url "img/h-separator.png"))
+	    `(src ,(theme-url "img/h-separator-dark.png")))
        (alt ""))))
 
 (define (horizontal-skip)
@@ -191,7 +191,7 @@
   "Return SHTML for a visible separator to be used in a dropdown menu
 like a menu item."
   `(img (@ (class "hline")
-           (src ,(guix-url "static/base/img/h-separator.png"))
+           (src ,(theme-url "img/h-separator.png"))
            (alt ""))))
 
 
diff --git a/website/apps/base/templates/contact.scm b/website/apps/base/templates/contact.scm
index 49d8393..33d4abf 100644
--- a/website/apps/base/templates/contact.scm
+++ b/website/apps/base/templates/contact.scm
@@ -25,9 +25,9 @@ system|GNU Hurd|GNU Guix package manager|Community|Mailing lists|IRC \
 channels|Bug reports|Help") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-          (guix-url "static/base/css/buttons.css")
-	  (guix-url "static/base/css/contact.css"))
+	  (theme-url "css/page.css")
+          (theme-url "css/buttons.css")
+	  (theme-url "css/contact.css"))
    #:crumbs (list (crumb (C_ "website menu" "Contact") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/contribute.scm b/website/apps/base/templates/contribute.scm
index 42ffcb9..703267f 100644
--- a/website/apps/base/templates/contribute.scm
+++ b/website/apps/base/templates/contribute.scm
@@ -25,8 +25,8 @@ system|GNU Hurd|GNU Guix package manager|Volunteer|Development|\
 Translation|I18N|L10N|Artwork") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/item-preview.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/item-preview.css"))
    #:crumbs (list (crumb (C_ "website menu" "Contribute") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/cuirass.scm b/website/apps/base/templates/cuirass.scm
index 00fe4b9..b421530 100644
--- a/website/apps/base/templates/cuirass.scm
+++ b/website/apps/base/templates/cuirass.scm
@@ -21,7 +21,7 @@
     (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
 system|GNU Guix package manager|Cuirass|CI") #\|)
    #:css (list
-          (guix-url "static/base/css/page.css"))
+          (theme-url "css/page.css"))
    #:content
    `(main
      (section
diff --git a/website/apps/base/templates/donate.scm b/website/apps/base/templates/donate.scm
index 5257a57..0a7d796 100644
--- a/website/apps/base/templates/donate.scm
+++ b/website/apps/base/templates/donate.scm
@@ -25,7 +25,7 @@
 system|GNU Hurd|GNU Guix package manager|Donations") #\|)
    #:active-menu-item (C_ "website menu" "Donate")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Donate") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/graphics.scm b/website/apps/base/templates/graphics.scm
index befbb19..97bfe53 100644
--- a/website/apps/base/templates/graphics.scm
+++ b/website/apps/base/templates/graphics.scm
@@ -23,7 +23,7 @@
 system|GNU Hurd|GNU Guix package manager|Donations|Branding|Logo") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Graphics") "./"))
    #:content
    `(main
@@ -40,7 +40,7 @@ system|GNU Hurd|GNU Guix package manager|Donations|Branding|Logo") #\|)
           "."))
       (p
        (@ (class "centered-text"))
-       (img (@ (src ,(guix-url "static/base/img/Guix.png"))
+       (img (@ (src ,(theme-url "img/Guix.png"))
                ,(G_ `(alt "GNU Guix logotype")))))
       ,(G_
         `(p
diff --git a/website/apps/base/templates/help.scm b/website/apps/base/templates/help.scm
index 98bba39..4cacf49 100644
--- a/website/apps/base/templates/help.scm
+++ b/website/apps/base/templates/help.scm
@@ -27,8 +27,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
    #:active-menu-item (C_ "website menu" "Help")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/item-preview.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/item-preview.css"))
    #:crumbs (list (crumb (C_ "website menu" "Help") "./"))
    #:content
    `(main
@@ -43,7 +43,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
        (div
 	(@ (class "summary-box"))
 	(img
-	 (@ (src ,(guix-url "static/base/img/manual-icon.png"))
+	 (@ (src ,(theme-url "img/manual-icon.png"))
 	    (alt "")))
         ,(G_ `(h3 "GNU Guix Manual " ,(latest-guix-version) ""))
         ,(G_
@@ -71,7 +71,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
        (div
 	(@ (class "summary-box"))
 	(img
-	 (@ (src ,(guix-url "static/base/img/manual-latest-icon.png"))
+	 (@ (src ,(theme-url "img/manual-latest-icon.png"))
 	    (alt "")))
         ,(G_ `(h3 "GNU Guix Manual (Latest)"))
         ,(G_
@@ -86,7 +86,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
         (@ (class "summary-box"))
-        (img (@ (src ,(guix-url "static/base/img/videos-icon.png"))
+        (img (@ (src ,(theme-url "img/videos-icon.png"))
                 (alt "")))
         ,(G_ `(h3 "Videos"))
         ,(G_
@@ -103,7 +103,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
         (@ (class "summary-box"))
-        (img (@ (src ,(guix-url "static/base/img/cookbook-icon.png"))
+        (img (@ (src ,(theme-url "img/cookbook-icon.png"))
                 (alt "")))
         ,(G_ `(h3 "Cookbook"))
         ,(G_
@@ -120,7 +120,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/library-icon.png"))
+	(img (@ (src ,(theme-url "img/library-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "GNU Manuals"))
         ,(G_
@@ -137,7 +137,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/wiki-icon.png"))
+	(img (@ (src ,(theme-url "img/wiki-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "Wiki"))
         ,(G_
@@ -155,7 +155,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/chat-icon.png"))
+	(img (@ (src ,(theme-url "img/chat-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "IRC Chat"))
         ,(G_
@@ -176,7 +176,7 @@ system|GNU Hurd|GNU Guix package manager|Help resources") #\|)
 
        (div
 	(@ (class "summary-box"))
-	(img (@ (src ,(guix-url "static/base/img/email-icon.png"))
+	(img (@ (src ,(theme-url "img/email-icon.png"))
 		(alt "")))
         ,(G_ `(h3 "Mailing lists"))
         ,(G_
diff --git a/website/apps/base/templates/home.scm b/website/apps/base/templates/home.scm
index adddd91..aa1fbb5 100644
--- a/website/apps/base/templates/home.scm
+++ b/website/apps/base/templates/home.scm
@@ -32,9 +32,9 @@ Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Overview")
    #:css (list
-	  (guix-url "static/base/css/item-preview.css")
-	  (guix-url "static/base/css/index.css")
-          (guix-url "static/media/css/video-preview.css"))
+	  (theme-url "css/item-preview.css")
+	  (theme-url "css/index.css")
+          (theme-url "css/video-preview.css"))
    #:content
    `(main
      ;; Featured content.
diff --git a/website/apps/base/templates/irc.scm b/website/apps/base/templates/irc.scm
index 13b501f..05dc87a 100644
--- a/website/apps/base/templates/irc.scm
+++ b/website/apps/base/templates/irc.scm
@@ -23,7 +23,7 @@
     (G_ "GNU|Linux|Unix|Free software|Libre software|Operating \
 system|GNU Hurd|GNU Guix package manager|IRC|chat") #\|)
    #:active-menu-item "About"
-   #:css (list (guix-url "static/base/css/page.css"))
+   #:css (list (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "webpage title" "Contact") (guix-url "contact/"))
 		  (crumb (C_ "webpage title" "IRC") "./"))
    #:content
diff --git a/website/apps/base/templates/menu.scm b/website/apps/base/templates/menu.scm
index 5b245f8..db17fc2 100644
--- a/website/apps/base/templates/menu.scm
+++ b/website/apps/base/templates/menu.scm
@@ -22,4 +22,4 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Menu")
-   #:css (list (guix-url "static/base/css/menu.css"))))
+   #:css (list (theme-url "css/menu.css"))))
diff --git a/website/apps/base/templates/security.scm b/website/apps/base/templates/security.scm
index 8a72950..09dc5dc 100644
--- a/website/apps/base/templates/security.scm
+++ b/website/apps/base/templates/security.scm
@@ -30,7 +30,7 @@
 system|GNU Hurd|GNU Guix package manager|Security updates") #\|)
    #:active-menu-item (C_ "website menu" "About")
    #:css (list
-	  (guix-url "static/base/css/page.css"))
+	  (theme-url "css/page.css"))
    #:crumbs (list (crumb (C_ "website menu" "Security") "./"))
    #:content
    `(main
diff --git a/website/apps/base/templates/theme.scm b/website/apps/base/templates/theme.scm
index 5f5416f..d410fdc5 100644
--- a/website/apps/base/templates/theme.scm
+++ b/website/apps/base/templates/theme.scm
@@ -93,13 +93,13 @@
       ;; Menu prefetch.
       (link (@ (rel "prefetch") (href ,(guix-url "menu/index.html"))))
       ;; Base CSS.
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css"))))
-      (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/elements.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/common.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/messages.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/navbar.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/breadcrumbs.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/buttons.css"))))
+      (link (@ (rel "stylesheet") (href ,(theme-url "css/footer.css"))))
       ;; Additional CSS.
       ,@(map (lambda (style-sheet)
 	       `(link (@ (rel "stylesheet") (href ,style-sheet))))
@@ -109,9 +109,9 @@
                (title ,(C_ "webpage title" "GNU Guix — Activity Feed"))
 	       (href ,(guix-url "feeds/blog.atom"))))
       (link (@ (rel "icon") (type "image/png")
-	       (href ,(guix-url "static/base/img/icon.png"))))
+	       (href ,(theme-url "img/icon.png"))))
       (link (@ (rel "icon") (type "image/svg+xml") (sizes "any")
-	       (href ,(guix-url "static/base/img/icon.svg"))))
+	       (href ,(theme-url "img/icon.svg"))))
       ;; Additional scripts.
       ,@(map (lambda (script)
 	       `(script (@ (src ,script)) ""))
diff --git a/website/apps/base/utils.scm b/website/apps/base/utils.scm
index bb520be..37ac434 100644
--- a/website/apps/base/utils.scm
+++ b/website/apps/base/utils.scm
@@ -42,7 +42,8 @@
             manual-url-with-language
 	    number*
 	    paginate
-            packages-url))
+            packages-url
+            theme-url))
 
 
 ;;;
@@ -65,6 +66,8 @@
            path
            (string-append path "/"))))))
 
+(define guix-website-theme "initial")  ; See "themes" directory.
+
 (define latest-guix-version
   (make-parameter "1.4.0"))
 
@@ -184,6 +187,21 @@ manual.
      A URL. For example: https://packages.guix.gnu.org/packages/guile/."
   (string-append "https://packages.guix.gnu.org/" path))
 
+(define (theme-url subpath)
+  "Return the URL to a given resource provided by the current website
+   theme (see 'guix-website-theme' variable).
+
+   SUBPATH (string)
+     Relative URL path to the resource. For example: 'css/buttons.css'.
+
+   RETURN VALUE (string)
+     Complete URL to the resource. For example:
+     'https://guix.gnu.org/themes/abc/css/buttons.css'."
+  (string-append (guix-root-url-path)
+                 "themes" "/"
+                 guix-website-theme "/"
+                 subpath))
+
 
 
 ;;;
diff --git a/website/apps/blog/templates/feed.scm b/website/apps/blog/templates/feed.scm
index 0702318..8284626 100644
--- a/website/apps/blog/templates/feed.scm
+++ b/website/apps/blog/templates/feed.scm
@@ -30,7 +30,7 @@
       (id ,id)
       (title ,title)
       (author (name (C_ "feed author name" "GNU Guix")) (uri ,domain))
-      (icon ,(guix-url "static/base/img/icon.png"))
+      (icon ,(theme-url "img/icon.png"))
       (updated ,(date->string (current-date) "~4"))
       (link (@ (rel "alternate") (href ,alternate)))
 
diff --git a/website/apps/blog/templates/post-list.scm b/website/apps/blog/templates/post-list.scm
index acffce1..6bf81d1 100644
--- a/website/apps/blog/templates/post-list.scm
+++ b/website/apps/blog/templates/post-list.scm
@@ -33,9 +33,9 @@ management|Reproducibility") #\|)
      #:index? #false
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/item-preview.css")
-	   (guix-url "static/base/css/sidebar.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/item-preview.css")
+	   (theme-url "css/sidebar.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
            (crumb (G_ (string-append "Page " page-number ""))
diff --git a/website/apps/blog/templates/post.scm b/website/apps/blog/templates/post.scm
index 0e6ad0d..5183d5b 100644
--- a/website/apps/blog/templates/post.scm
+++ b/website/apps/blog/templates/post.scm
@@ -29,9 +29,9 @@
      #:keywords tags
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/code.css")
-	   (guix-url "static/blog/css/post.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/code.css")
+	   (theme-url "css/post.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
 	   (crumb (post-ref post 'title)
diff --git a/website/apps/blog/templates/tag.scm b/website/apps/blog/templates/tag.scm
index 0145e63..92b9ee3 100644
--- a/website/apps/blog/templates/tag.scm
+++ b/website/apps/blog/templates/tag.scm
@@ -37,9 +37,9 @@ management|Reproducibility") #\|)
      #:index? #false
      #:active-menu-item (C_ "website menu" "Blog")
      #:css
-     (list (guix-url "static/base/css/page.css")
-	   (guix-url "static/base/css/item-preview.css")
-	   (guix-url "static/base/css/sidebar.css"))
+     (list (theme-url "css/page.css")
+	   (theme-url "css/item-preview.css")
+	   (theme-url "css/sidebar.css"))
      #:crumbs
      (list (crumb (C_ "website menu" "Blog") (guix-url "blog/"))
 	   (crumb tag (guix-url (tag-url-path tag)))
diff --git a/website/apps/download/templates/download-latest.scm b/website/apps/download/templates/download-latest.scm
index cdcecb7..87e3cfa 100644
--- a/website/apps/download/templates/download-latest.scm
+++ b/website/apps/download/templates/download-latest.scm
@@ -155,8 +155,8 @@ system|GNU Hurd|GNU Guix package manager|Installer|Source code|\
 Package manager") #\|)
    #:active-menu-item (C_ "website menu" "Download")
    #:css (list
-          (guix-url "static/base/css/page.css")
-          (guix-url "static/base/css/download.css"))
+          (theme-url "css/page.css")
+          (theme-url "css/download.css"))
    #:crumbs
    (list (crumb (C_ "website menu" "Download") (guix-url "download/"))
          (crumb (C_ "website menu" "Latest") "./"))
diff --git a/website/apps/download/templates/download.scm b/website/apps/download/templates/download.scm
index 4ee8e3b..58500b4 100644
--- a/website/apps/download/templates/download.scm
+++ b/website/apps/download/templates/download.scm
@@ -42,8 +42,8 @@ system|GNU Hurd|GNU Guix package manager|Installer|Source code|\
 Package manager") #\|)
    #:active-menu-item (C_ "website menu" "Download")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/base/css/download.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/download.css"))
    #:crumbs (list (crumb (C_ "website menu" "Download") "./"))
    #:content
    `(main
diff --git a/website/apps/media/templates/components.scm b/website/apps/media/templates/components.scm
index 8bedc9f..2c0f551 100644
--- a/website/apps/media/templates/components.scm
+++ b/website/apps/media/templates/components.scm
@@ -61,7 +61,7 @@
        (@ (class "playlist-title"))
 
        (img (@ (class "playlist-icon")
-               (src ,(guix-url "static/media/img/playlist-icon.svg"))
+               (src ,(theme-url "img/playlist-icon.svg"))
                (alt ,(G_ "Playlist: "))
                (title ,(G_ "Playlist"))))
        " "
@@ -94,7 +94,7 @@
        ,(if (publication-scientific? publication)
             `((img
                (@ (class "scientific-mark")
-                  (src ,(guix-url "static/media/img/scientific-mark.svg"))
+                  (src ,(theme-url "img/scientific-mark.svg"))
                   ;; TRANSLATORS: This is a tag that indicates a
                   ;; publication is scientific.
                   (alt ,(G_ "[Scientific]"))
@@ -182,7 +182,7 @@ top."
 
        ,(if playing?
             `((img (@ (class "playing-icon")
-                      (src ,(guix-url "static/media/img/playing-icon.svg"))
+                      (src ,(theme-url "img/playing-icon.svg"))
 
                       (alt
                        ;; TRANSLATORS: Alternative text indicating that
diff --git a/website/apps/media/templates/publication-list.scm b/website/apps/media/templates/publication-list.scm
index bcc5744..2ef666a 100644
--- a/website/apps/media/templates/publication-list.scm
+++ b/website/apps/media/templates/publication-list.scm
@@ -27,8 +27,8 @@
    (string-split (G_ "Publications|Papers") #\|)
    #:active-menu-item (C_ "website menu" "Publications")
    #:css (list
-	  (guix-url "static/base/css/page.css")
-	  (guix-url "static/media/css/publications.css"))
+	  (theme-url "css/page.css")
+	  (theme-url "css/publications.css"))
    #:crumbs (list (crumb (C_ "website menu" "Publications") "./"))
    #:content
    `(main
diff --git a/website/apps/media/templates/screenshot.scm b/website/apps/media/templates/screenshot.scm
index b2d42b8..a942ef6 100644
--- a/website/apps/media/templates/screenshot.scm
+++ b/website/apps/media/templates/screenshot.scm
@@ -26,8 +26,8 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
      #:active-menu-item (C_ "website menu" "Media")
-     #:css (list (guix-url "static/base/css/index.css")
-                 (guix-url "static/media/css/screenshots.css"))
+     #:css (list (theme-url "css/index.css")
+                 (theme-url "css/screenshots.css"))
      #:content
      `(main
        (section
diff --git a/website/apps/media/templates/screenshots-overview.scm b/website/apps/media/templates/screenshots-overview.scm
index 04a9fc6..7663ad9 100644
--- a/website/apps/media/templates/screenshots-overview.scm
+++ b/website/apps/media/templates/screenshots-overview.scm
@@ -23,7 +23,7 @@ system|GNU Hurd|GNU Guix package manager|GNU Guile|Guile \
 Scheme|Transactional upgrades|Functional package \
 management|Reproducibility") #\|)
    #:active-menu-item (C_ "website menu" "Media")
-   #:css (list (guix-url "static/base/css/index.css"))
+   #:css (list (theme-url "css/index.css"))
    #:content
    `(main
      (section
diff --git a/website/apps/media/templates/video-list.scm b/website/apps/media/templates/video-list.scm
index 676abba..91e56fe 100644
--- a/website/apps/media/templates/video-list.scm
+++ b/website/apps/media/templates/video-list.scm
@@ -33,8 +33,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources|Videos") #\|)
      #:active-menu-item (C_ "website menu" "Videos")
      #:css (list
-            (guix-url "static/media/css/video-list.css")
-            (guix-url "static/media/css/video-preview.css"))
+            (theme-url "css/video-list.css")
+            (theme-url "css/video-preview.css"))
      #:crumbs (list (crumb (C_ "website menu" "Videos") (guix-url "videos/")))
      #:content
      `(main
diff --git a/website/apps/media/templates/video.scm b/website/apps/media/templates/video.scm
index cb74207..8bb76f9 100644
--- a/website/apps/media/templates/video.scm
+++ b/website/apps/media/templates/video.scm
@@ -45,8 +45,8 @@
 system|GNU Hurd|GNU Guix package manager|Help resources|Videos") #\|)
      #:active-menu-item (C_ "website menu" "Videos")
      #:css (list
-            (guix-url "static/media/css/video.css")
-            (guix-url "static/media/css/video-preview.css"))
+            (theme-url "css/video.css")
+            (theme-url "css/video-preview.css"))
      #:crumbs (list (crumb (C_ "website menu" "Videos") (guix-url "videos/"))
                     (crumb (video-title video) "./"))
      #:content
diff --git a/website/haunt.scm b/website/haunt.scm
index 455bdc8..34f69cc 100644
--- a/website/haunt.scm
+++ b/website/haunt.scm
@@ -24,4 +24,5 @@
                         blog:builder
                         download:builder
                         media:builder
+                        (static-directory "themes")
                         (static-directory "static"))))
diff --git a/website/static/base/img/GuixSD-logo.png b/website/static/base/img/GuixSD-logo.png
deleted file mode 100644
index 4e520dbf1a21d9c90990758305e57ad5d3201e4b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6785
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

diff --git a/website/themes/README.org b/website/themes/README.org
new file mode 100644
index 0000000..7f477d0
--- /dev/null
+++ b/website/themes/README.org
@@ -0,0 +1,6 @@
+#+TITLE: Themes
+
+This directory contains themes for Guix websites and other themable
+artifacts. Themes are folders containing style sheets, fonts, images,
+and other assets that define the visual, aural and haptic identity of
+the artifacts.
diff --git a/website/static/base/css/breadcrumbs.css b/website/themes/initial/css/breadcrumbs.css
similarity index 100%
rename from website/static/base/css/breadcrumbs.css
rename to website/themes/initial/css/breadcrumbs.css
diff --git a/website/static/base/css/buttons.css b/website/themes/initial/css/buttons.css
similarity index 100%
rename from website/static/base/css/buttons.css
rename to website/themes/initial/css/buttons.css
diff --git a/website/static/base/css/code.css b/website/themes/initial/css/code.css
similarity index 100%
rename from website/static/base/css/code.css
rename to website/themes/initial/css/code.css
diff --git a/website/static/base/css/common.css b/website/themes/initial/css/common.css
similarity index 100%
rename from website/static/base/css/common.css
rename to website/themes/initial/css/common.css
diff --git a/website/static/base/css/contact.css b/website/themes/initial/css/contact.css
similarity index 100%
rename from website/static/base/css/contact.css
rename to website/themes/initial/css/contact.css
diff --git a/website/static/base/css/download.css b/website/themes/initial/css/download.css
similarity index 100%
rename from website/static/base/css/download.css
rename to website/themes/initial/css/download.css
diff --git a/website/static/base/css/elements.css b/website/themes/initial/css/elements.css
similarity index 100%
rename from website/static/base/css/elements.css
rename to website/themes/initial/css/elements.css
diff --git a/website/static/base/css/footer.css b/website/themes/initial/css/footer.css
similarity index 100%
rename from website/static/base/css/footer.css
rename to website/themes/initial/css/footer.css
diff --git a/website/static/base/css/index.css b/website/themes/initial/css/index.css
similarity index 100%
rename from website/static/base/css/index.css
rename to website/themes/initial/css/index.css
diff --git a/website/static/base/css/item-preview.css b/website/themes/initial/css/item-preview.css
similarity index 100%
rename from website/static/base/css/item-preview.css
rename to website/themes/initial/css/item-preview.css
diff --git a/website/static/packages/css/letter-selector.css b/website/themes/initial/css/letter-selector.css
similarity index 100%
rename from website/static/packages/css/letter-selector.css
rename to website/themes/initial/css/letter-selector.css
diff --git a/website/static/base/css/manual.css b/website/themes/initial/css/manual.css
similarity index 100%
rename from website/static/base/css/manual.css
rename to website/themes/initial/css/manual.css
diff --git a/website/static/base/css/menu.css b/website/themes/initial/css/menu.css
similarity index 100%
rename from website/static/base/css/menu.css
rename to website/themes/initial/css/menu.css
diff --git a/website/static/base/css/messages.css b/website/themes/initial/css/messages.css
similarity index 100%
rename from website/static/base/css/messages.css
rename to website/themes/initial/css/messages.css
diff --git a/website/static/base/css/navbar.css b/website/themes/initial/css/navbar.css
similarity index 100%
rename from website/static/base/css/navbar.css
rename to website/themes/initial/css/navbar.css
diff --git a/website/static/packages/css/package-list.css b/website/themes/initial/css/package-list.css
similarity index 100%
rename from website/static/packages/css/package-list.css
rename to website/themes/initial/css/package-list.css
diff --git a/website/static/packages/css/package.css b/website/themes/initial/css/package.css
similarity index 100%
rename from website/static/packages/css/package.css
rename to website/themes/initial/css/package.css
diff --git a/website/static/base/css/page.css b/website/themes/initial/css/page.css
similarity index 100%
rename from website/static/base/css/page.css
rename to website/themes/initial/css/page.css
diff --git a/website/static/blog/css/post.css b/website/themes/initial/css/post.css
similarity index 100%
rename from website/static/blog/css/post.css
rename to website/themes/initial/css/post.css
diff --git a/website/static/media/css/publications.css b/website/themes/initial/css/publications.css
similarity index 92%
rename from website/static/media/css/publications.css
rename to website/themes/initial/css/publications.css
index 11a8542..a4d8abe 100644
--- a/website/static/media/css/publications.css
+++ b/website/themes/initial/css/publications.css
@@ -18,7 +18,7 @@
 .publication-preview:focus,
 .publication-preview:hover {
     background-color: gold;
-    background-image: url("/static/base/img/link-arrow-shaper.svg");
+    background-image: url("/themes/initial/img/link-arrow-shaper.svg");
     background-position: right;
     background-repeat: no-repeat;
     background-size: auto 100%;
diff --git a/website/static/media/css/screenshots.css b/website/themes/initial/css/screenshots.css
similarity index 100%
rename from website/static/media/css/screenshots.css
rename to website/themes/initial/css/screenshots.css
diff --git a/website/static/base/css/sidebar.css b/website/themes/initial/css/sidebar.css
similarity index 96%
rename from website/static/base/css/sidebar.css
rename to website/themes/initial/css/sidebar.css
index 12ed90e..c3c278b 100644
--- a/website/static/base/css/sidebar.css
+++ b/website/themes/initial/css/sidebar.css
@@ -55,7 +55,7 @@
 }
 
 .feed-link {
-    background-image: url("/static/base/img/feed-bg-white.png");
+    background-image: url("/themes/initial/img/feed-bg-white.png");
     background-position: bottom left;
     background-repeat: no-repeat;
 }
diff --git a/website/static/media/css/video-list.css b/website/themes/initial/css/video-list.css
similarity index 100%
rename from website/static/media/css/video-list.css
rename to website/themes/initial/css/video-list.css
diff --git a/website/static/media/css/video-preview.css b/website/themes/initial/css/video-preview.css
similarity index 100%
rename from website/static/media/css/video-preview.css
rename to website/themes/initial/css/video-preview.css
diff --git a/website/static/media/css/video.css b/website/themes/initial/css/video.css
similarity index 100%
rename from website/static/media/css/video.css
rename to website/themes/initial/css/video.css
diff --git a/website/static/base/img/Guix-logo.png b/website/themes/initial/img/Guix-logo.png
similarity index 100%
rename from website/static/base/img/Guix-logo.png
rename to website/themes/initial/img/Guix-logo.png
diff --git a/website/static/base/img/Guix.png b/website/themes/initial/img/Guix.png
similarity index 100%
rename from website/static/base/img/Guix.png
rename to website/themes/initial/img/Guix.png
diff --git a/website/static/base/img/back-btn-bg.png b/website/themes/initial/img/back-btn-bg.png
similarity index 100%
rename from website/static/base/img/back-btn-bg.png
rename to website/themes/initial/img/back-btn-bg.png
diff --git a/website/static/base/img/breadcrumbs-bg.png b/website/themes/initial/img/breadcrumbs-bg.png
similarity index 100%
rename from website/static/base/img/breadcrumbs-bg.png
rename to website/themes/initial/img/breadcrumbs-bg.png
diff --git a/website/static/base/img/chat-icon.png b/website/themes/initial/img/chat-icon.png
similarity index 100%
rename from website/static/base/img/chat-icon.png
rename to website/themes/initial/img/chat-icon.png
diff --git a/website/static/base/img/checkerboard-bg.png b/website/themes/initial/img/checkerboard-bg.png
similarity index 100%
rename from website/static/base/img/checkerboard-bg.png
rename to website/themes/initial/img/checkerboard-bg.png
diff --git a/website/static/base/img/cookbook-icon.png b/website/themes/initial/img/cookbook-icon.png
similarity index 100%
rename from website/static/base/img/cookbook-icon.png
rename to website/themes/initial/img/cookbook-icon.png
diff --git a/website/static/base/img/depression-shadow-top.png b/website/themes/initial/img/depression-shadow-top.png
similarity index 100%
rename from website/static/base/img/depression-shadow-top.png
rename to website/themes/initial/img/depression-shadow-top.png
diff --git a/website/static/base/img/dropdown-bg.png b/website/themes/initial/img/dropdown-bg.png
similarity index 100%
rename from website/static/base/img/dropdown-bg.png
rename to website/themes/initial/img/dropdown-bg.png
diff --git a/website/static/base/img/email-icon.png b/website/themes/initial/img/email-icon.png
similarity index 100%
rename from website/static/base/img/email-icon.png
rename to website/themes/initial/img/email-icon.png
diff --git a/website/static/base/img/featured-box-bg.png b/website/themes/initial/img/featured-box-bg.png
similarity index 100%
rename from website/static/base/img/featured-box-bg.png
rename to website/themes/initial/img/featured-box-bg.png
diff --git a/website/static/base/img/feed-bg-white.png b/website/themes/initial/img/feed-bg-white.png
similarity index 100%
rename from website/static/base/img/feed-bg-white.png
rename to website/themes/initial/img/feed-bg-white.png
diff --git a/website/static/base/img/feed.png b/website/themes/initial/img/feed.png
similarity index 100%
rename from website/static/base/img/feed.png
rename to website/themes/initial/img/feed.png
diff --git a/website/static/base/img/feed.svg b/website/themes/initial/img/feed.svg
similarity index 100%
rename from website/static/base/img/feed.svg
rename to website/themes/initial/img/feed.svg
diff --git a/website/static/base/img/h-separator-dark.png b/website/themes/initial/img/h-separator-dark.png
similarity index 100%
rename from website/static/base/img/h-separator-dark.png
rename to website/themes/initial/img/h-separator-dark.png
diff --git a/website/static/base/img/h-separator.png b/website/themes/initial/img/h-separator.png
similarity index 100%
rename from website/static/base/img/h-separator.png
rename to website/themes/initial/img/h-separator.png
diff --git a/website/static/base/img/icon-set.svg b/website/themes/initial/img/icon-set.svg
similarity index 100%
rename from website/static/base/img/icon-set.svg
rename to website/themes/initial/img/icon-set.svg
diff --git a/website/static/base/img/icon.png b/website/themes/initial/img/icon.png
similarity index 100%
rename from website/static/base/img/icon.png
rename to website/themes/initial/img/icon.png
diff --git a/website/static/base/img/icon.svg b/website/themes/initial/img/icon.svg
similarity index 100%
rename from website/static/base/img/icon.svg
rename to website/themes/initial/img/icon.svg
diff --git a/website/static/base/img/language-picker.svg b/website/themes/initial/img/language-picker.svg
similarity index 100%
rename from website/static/base/img/language-picker.svg
rename to website/themes/initial/img/language-picker.svg
diff --git a/website/static/base/img/library-icon.png b/website/themes/initial/img/library-icon.png
similarity index 100%
rename from website/static/base/img/library-icon.png
rename to website/themes/initial/img/library-icon.png
diff --git a/website/static/base/img/link-arrow-shaper.svg b/website/themes/initial/img/link-arrow-shaper.svg
similarity index 100%
rename from website/static/base/img/link-arrow-shaper.svg
rename to website/themes/initial/img/link-arrow-shaper.svg
diff --git a/website/static/base/img/link-arrow.png b/website/themes/initial/img/link-arrow.png
similarity index 100%
rename from website/static/base/img/link-arrow.png
rename to website/themes/initial/img/link-arrow.png
diff --git a/website/static/base/img/manual-icon.png b/website/themes/initial/img/manual-icon.png
similarity index 100%
rename from website/static/base/img/manual-icon.png
rename to website/themes/initial/img/manual-icon.png
diff --git a/website/static/base/img/manual-latest-icon.png b/website/themes/initial/img/manual-latest-icon.png
similarity index 100%
rename from website/static/base/img/manual-latest-icon.png
rename to website/themes/initial/img/manual-latest-icon.png
diff --git a/website/static/base/img/menu-btn-bg.png b/website/themes/initial/img/menu-btn-bg.png
similarity index 100%
rename from website/static/base/img/menu-btn-bg.png
rename to website/themes/initial/img/menu-btn-bg.png
diff --git a/website/static/base/img/menu-item-active-bg.png b/website/themes/initial/img/menu-item-active-bg.png
similarity index 100%
rename from website/static/base/img/menu-item-active-bg.png
rename to website/themes/initial/img/menu-item-active-bg.png
diff --git a/website/static/base/img/more-info-bg.png b/website/themes/initial/img/more-info-bg.png
similarity index 100%
rename from website/static/base/img/more-info-bg.png
rename to website/themes/initial/img/more-info-bg.png
diff --git a/website/static/base/img/noise-bg.png b/website/themes/initial/img/noise-bg.png
similarity index 100%
rename from website/static/base/img/noise-bg.png
rename to website/themes/initial/img/noise-bg.png
diff --git a/website/static/media/img/playing-icon.svg b/website/themes/initial/img/playing-icon.svg
similarity index 100%
rename from website/static/media/img/playing-icon.svg
rename to website/themes/initial/img/playing-icon.svg
diff --git a/website/static/media/img/playlist-icon.svg b/website/themes/initial/img/playlist-icon.svg
similarity index 100%
rename from website/static/media/img/playlist-icon.svg
rename to website/themes/initial/img/playlist-icon.svg
diff --git a/website/static/packages/img/red-tag.png b/website/themes/initial/img/red-tag.png
similarity index 100%
rename from website/static/packages/img/red-tag.png
rename to website/themes/initial/img/red-tag.png
diff --git a/website/static/media/img/scientific-mark.svg b/website/themes/initial/img/scientific-mark.svg
similarity index 100%
rename from website/static/media/img/scientific-mark.svg
rename to website/themes/initial/img/scientific-mark.svg
diff --git a/website/static/base/img/videos-icon.png b/website/themes/initial/img/videos-icon.png
similarity index 100%
rename from website/static/base/img/videos-icon.png
rename to website/themes/initial/img/videos-icon.png
diff --git a/website/static/base/img/white-star.png b/website/themes/initial/img/white-star.png
similarity index 100%
rename from website/static/base/img/white-star.png
rename to website/themes/initial/img/white-star.png
diff --git a/website/static/base/img/wiki-icon.png b/website/themes/initial/img/wiki-icon.png
similarity index 100%
rename from website/static/base/img/wiki-icon.png
rename to website/themes/initial/img/wiki-icon.png

base-commit: 3101f165670d0361ba85c218029c70d25b33b313
-- 
2.41.0





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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
  2024-03-14 16:56 ` pelzflorian (Florian Pelz)
  2024-03-15 15:33 ` [bug#69783] [PATCH v2] " sirgazil--- via Guix-patches via
@ 2024-03-15 19:34 ` sirgazil--- via Guix-patches via
  2024-03-16  9:34   ` bug#69783: " Giovanni Biscuolo
  2024-03-17 20:21 ` [bug#69783] [PATCH] hydra: nginx: Adjust to website themes in guix-artwork Florian Pelz
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 20+ messages in thread
From: sirgazil--- via Guix-patches via @ 2024-03-15 19:34 UTC (permalink / raw)
  To: 69783; +Cc: Luis Felipe

From: Luis Felipe <sirgazil@zoho.com>

The Guix website style sheets are now organized in themes. This change
makes the documentation builder use the resources provided by a theme
called "initial" (See https://issues.guix.gnu.org/69783).

* doc/build.scm (syntax-highlighted-html): Update path to CSS.
(html-manual-indexes): Likewise.
(stylized-html): Likewise, and update path to language picker image.

Change-Id: Ib2d51fcfdec42ad827add1ead1cfee4c9c4e65b7
---
 doc/build.scm | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/doc/build.scm b/doc/build.scm
index 2cd57b4a92..9ab2ca32d2 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -365,7 +365,7 @@ (define* (syntax-highlighted-html input
                                                             #:languages
                                                             languages))
                                   (syntax-css-url
-                                   "/static/base/css/code.css"))
+                                   "/themes/initial/css/code.css"))
   "Return a derivation called NAME that processes all the HTML files in INPUT
 to (1) add them a link to SYNTAX-CSS-URL, and (2) highlight the syntax of all
 its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
@@ -624,7 +624,7 @@ (define* (stylized-html source input
                         #:key
                         (languages %languages)
                         (manual %manual)
-                        (manual-css-url "/static/base/css/manual.css"))
+                        (manual-css-url "/themes/initial/css/manual.css"))
   "Process all the HTML files in INPUT; add them MANUAL-CSS-URL as a <style>
 link, and add a menu to choose among LANGUAGES.  Use the Guix PO files found
 in SOURCE."
@@ -741,7 +741,7 @@ (define split-node?
                             (list (menu-dropdown
                                    #:label
                                    `(img (@ (alt "Language")
-                                            (src "/static/base/img/language-picker.svg")))
+                                            (src "/themes/initial/img/language-picker.svg")))
                                    #:items
                                    (language-menu-items file)))
                             #:split-node? split-node?)
@@ -1141,16 +1141,16 @@ (define (sxml-index language title body)
                     ;; Menu prefetch.
                     (link (@ (rel "prefetch") (href ,(guix-url "menu/index.html"))))
                     ;; Base CSS.
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/elements.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/common.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/messages.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/navbar.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/breadcrumbs.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/buttons.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/footer.css"))))
-
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/page.css"))))
-                    (link (@ (rel "stylesheet") (href ,(guix-url "static/base/css/post.css")))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/elements.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/common.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/messages.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/navbar.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/breadcrumbs.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/buttons.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/footer.css"))))
+
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/page.css"))))
+                    (link (@ (rel "stylesheet") (href ,(guix-url "themes/initial/css/post.css")))))
                    (body
                     (header (@ (class "navbar"))
                             (h1 (a (@ (class "branding")

base-commit: 93aefca7bab5f5b40164176e3224221d26d708f1
-- 
2.41.0





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

* [bug#69783] [PATCH v2] website: Convert old style sheets into a theme.
  2024-03-15 15:33 ` [bug#69783] [PATCH v2] " sirgazil--- via Guix-patches via
@ 2024-03-15 22:51   ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-15 22:51 UTC (permalink / raw)
  To: 69783; +Cc: sirgazil, guix-maintainers

Having pushed these two patches to guix-artwork and guix.git, I have one
humble request to the Guix maintainers (Cc):

This patch split static/ into static/ and themes/.  Could someone with
push access to maintenance.git make it so that hydra/nginx/berlin.scm
also emits cache HTTP headers for themes/ like it already does for
static/?

Pushed as f916cbb234e159f4730425c82d436a542f9288a8 with two changes:
* untabified,
* changed the static/base/fonts in .guix.scm as well.

Otherwise all rebuilds are automatic, I believe, and I hope we have not
wreaked much havoc.

Regards,
Florian




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

* bug#69783: [PATCH] doc: build: Update paths to style sheets.
  2024-03-15 19:34 ` [bug#69783] [PATCH] doc: build: Update paths to style sheets sirgazil--- via Guix-patches via
@ 2024-03-16  9:34   ` Giovanni Biscuolo
  2024-03-16 11:09     ` [bug#69783] " pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 20+ messages in thread
From: Giovanni Biscuolo @ 2024-03-16  9:34 UTC (permalink / raw)
  To: 69783-close; +Cc: Luis Felipe, Florian Pelz

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

Hello,

sirgazil--- via Guix-patches via <guix-patches@gnu.org> writes:

> From: Luis Felipe <sirgazil@zoho.com>
>
> The Guix website style sheets are now organized in themes. This change
> makes the documentation builder use the resources provided by a theme
> called "initial" (See https://issues.guix.gnu.org/69783).
>
> * doc/build.scm (syntax-highlighted-html): Update path to CSS.
> (html-manual-indexes): Likewise.
> (stylized-html): Likewise, and update path to language picker image.
>
> Change-Id: Ib2d51fcfdec42ad827add1ead1cfee4c9c4e65b7

I was looking at this patch set and found that this has been commited as
999bfa0d543c539e4554797deaf2f447dddf3796 (Fri Mar 15 23:22:45 2024)

I'm closing this bug, if I'm doing something wrong please reopen it! :-)

Thanks! Gio'

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 849 bytes --]

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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-16  9:34   ` bug#69783: " Giovanni Biscuolo
@ 2024-03-16 11:09     ` pelzflorian (Florian Pelz)
  2024-03-16 13:52       ` Luis Felipe via Guix-patches via
  2024-03-17 10:51       ` Giovanni Biscuolo
  0 siblings, 2 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-16 11:09 UTC (permalink / raw)
  To: Giovanni Biscuolo; +Cc: 69783, Luis Felipe

Reopen.
I had not closed yet because I still had a request to the maintainers:

https://lists.gnu.org/archive/html/guix-patches/2024-03/msg01035.html

Regards,
Florian




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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-16 11:09     ` [bug#69783] " pelzflorian (Florian Pelz)
@ 2024-03-16 13:52       ` Luis Felipe via Guix-patches via
  2024-03-16 17:47         ` pelzflorian (Florian Pelz)
  2024-03-17 10:51       ` Giovanni Biscuolo
  1 sibling, 1 reply; 20+ messages in thread
From: Luis Felipe via Guix-patches via @ 2024-03-16 13:52 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz), Giovanni Biscuolo; +Cc: 69783


[-- Attachment #1.1.1: Type: text/plain, Size: 415 bytes --]

I see that the changes are live now, thanks.

However, the HTML manual for version 1.4.0 still uses the old paths, so 
the style is currently broken (not horribly broken but still).

I'm not sure if the pending actions that require maintainer intervention 
would fix this, so I'm investigating in the meantime.

(I hope I can help make the Texinfo's HTML versions of the manual easier 
to theme soon)



[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 2881 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-16 13:52       ` Luis Felipe via Guix-patches via
@ 2024-03-16 17:47         ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-16 17:47 UTC (permalink / raw)
  To: Luis Felipe; +Cc: 69783

Hrmm.  I see breakage only of the /manual hub page listing the
languages, otherwise I had checked some 14 hours ago and the manual and
site itself worked.  I see some nginx proxy pass directives that last
two days, but I think it is something different.

Luis Felipe <sirgazil@zoho.com> writes:
> (I hope I can help make the Texinfo's HTML versions of the manual
> easier to theme soon)

guix.git’s doc/build.scm says:

;; FIXME: Avoid duplicating styling info from guix-artwork.git.

That would mean downloading guix-artwork.git from within the build
script, like with a fixed-output derivation, but I do not know how to do
downloads from outside package origins beautifully and not as
confusing/unexpected as the test code for the recent fixed-output
derivation vulnerability on the Guix.gnu.org blog.

Regards,
Florian




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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-16 11:09     ` [bug#69783] " pelzflorian (Florian Pelz)
  2024-03-16 13:52       ` Luis Felipe via Guix-patches via
@ 2024-03-17 10:51       ` Giovanni Biscuolo
  2024-03-17 16:52         ` pelzflorian (Florian Pelz)
  2024-03-17 17:57         ` pelzflorian (Florian Pelz)
  1 sibling, 2 replies; 20+ messages in thread
From: Giovanni Biscuolo @ 2024-03-17 10:51 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 69783, Luis Felipe

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

Hello Florian,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:

> Reopen.
> I had not closed yet because I still had a request to the maintainers:
>
> https://lists.gnu.org/archive/html/guix-patches/2024-03/msg01035.html

Uh sorry! I missed it.

But then, why not wait for the missing information and related patch and
commit all the patches in this bug as a coherent patchset "in bulk"?  If
needed "we" could use a dedicated "doc" branch to test this, no?

I understand that this patch series is "just" for doc presentation
(style) and the missing patch(es) do not "hard" break the manual, but
this workflow makes harder for casual contributors like me to help in
"bug gardening".

WDYT?

Sorry again for the confusion.

Happy hacking! Gio'

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 849 bytes --]

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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-17 10:51       ` Giovanni Biscuolo
@ 2024-03-17 16:52         ` pelzflorian (Florian Pelz)
  2024-03-17 17:57         ` pelzflorian (Florian Pelz)
  1 sibling, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-17 16:52 UTC (permalink / raw)
  To: Giovanni Biscuolo; +Cc: 69783, Luis Felipe

Hello Giovanni and thank you for spending time on bug management.

What I wanted from the maintainers is not the reason why
https://guix.gnu.org/manual/ still has the wrong CSS paths.

I had pushed to guix-artwork.git and guix.git without waiting for
maintainers with push authorization to maintenance.git, because I wanted
to fix tabification myself and cause less bother.  Sorry to you that I
did cause inconvenience to you.

I wanted from the maintainers specifically that maintenance.git’s
hydra/nginx/berlin.scm treats /themes the same way as /static.

I believe this would change server-side cache times to be the same for
/themes and for /static.  Regardless of whether they are the same,
server-side cacheing causes the current disruption of the CSS of the
/manual hub page.  I was not sure this would happen, but accept it and
hope the cache issue is gone by itself by tomorrow.

Regards,
Florian




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

* [bug#69783] [PATCH] doc: build: Update paths to style sheets.
  2024-03-17 10:51       ` Giovanni Biscuolo
  2024-03-17 16:52         ` pelzflorian (Florian Pelz)
@ 2024-03-17 17:57         ` pelzflorian (Florian Pelz)
  1 sibling, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-17 17:57 UTC (permalink / raw)
  To: Giovanni Biscuolo; +Cc: 69783, Luis Felipe

Indeed you are right, Giovanni, that the true problem is that
maintenance.git needs rewrite rules for the CSS and image files.  This
is because the 1.4.0 manual still uses the doc/build.scm of 1.4.0.

My apologies.  I can prepare a patch later.

Regards,
Florian




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

* [bug#69783] [PATCH] hydra: nginx: Adjust to website themes in guix-artwork.
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
                   ` (2 preceding siblings ...)
  2024-03-15 19:34 ` [bug#69783] [PATCH] doc: build: Update paths to style sheets sirgazil--- via Guix-patches via
@ 2024-03-17 20:21 ` Florian Pelz
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move Florian Pelz
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork Florian Pelz
  5 siblings, 0 replies; 20+ messages in thread
From: Florian Pelz @ 2024-03-17 20:21 UTC (permalink / raw)
  To: 69783; +Cc: Florian Pelz

* hydra/modules/sysadmin/nginx.scm (guix.gnu.org-redirect-locations):
Redirect /static to the new /themes location to fix the 1.4.0 manual.
(guix.gnu.org-other-locations): Adjust to fonts being in /themes now.
Use /static cache settings for /themes as well.
* hydra/nginx/berlin.scm: Use /static cache settings for /themes.
---
 hydra/modules/sysadmin/nginx.scm | 27 +++++++++++++++++++++++----
 hydra/nginx/berlin.scm           | 10 ++++++++++
 2 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/hydra/modules/sysadmin/nginx.scm b/hydra/modules/sysadmin/nginx.scm
index 59d5856..14d8461 100644
--- a/hydra/modules/sysadmin/nginx.scm
+++ b/hydra/modules/sysadmin/nginx.scm
@@ -2,7 +2,7 @@
 ;; Copyright © 2016-2024 Ludovic Courtès <ludo@gnu.org>
 ;; Copyright © 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
-;; Copyright © 2020, 2021 Florian Pelz <pelzflorian@pelzflorian.de>
+;; Copyright © 2020, 2021, 2024 Florian Pelz <pelzflorian@pelzflorian.de>
 ;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;; Released under the GNU GPLv3 or any later version.
@@ -317,6 +317,20 @@ synonymous IETF language tags that should be mapped to the same $lang."
    (redirect "/manual/en/html_node/Installing-GuixSD-in-a-VM.html" "Installing-Guix-in-a-VM.html")
    (redirect "/manual/en/html_node/Running-GuixSD-in-a-VM.html"
              "Running-Guix-in-a-VM.html")
+   ;; URLs used by the manual for Guix 1.4.0.
+   ;; XXX: Remove after the next release.
+   (redirect "/static/base/css/elements.css" "/themes/initial/css/elements.css")
+   (redirect "/static/base/css/common.css" "/themes/initial/css/common.css")
+   (redirect "/static/base/css/messages.css" "/themes/initial/css/messages.css")
+   (redirect "/static/base/css/navbar.css" "/themes/initial/css/navbar.css")
+   (redirect "/static/base/css/breadcrumbs.css" "/themes/initial/css/breadcrumbs.css")
+   (redirect "/static/base/css/buttons.css" "/themes/initial/css/buttons.css")
+   (redirect "/static/base/css/footer.css" "/themes/initial/css/footer.css")
+   (redirect "/static/base/css/page.css" "/themes/initial/css/page.css")
+   (redirect "/static/base/css/post.css" "/themes/initial/css/post.css")
+   (redirect "/static/base/css/manual.css" "/themes/initial/css/manual.css")
+   (redirect "/static/base/css/code.css" "/themes/initial/css/code.css")
+   (redirect "/static/base/img/language-picker.svg" "/themes/initial/img/language-picker.svg")
    ;; Old URLs not ending in a slash like https://guix.gnu.org/graphics.
    (redirect "/about" "/$lang/about/")
    (redirect "/blog" "/$lang/blog/")
@@ -664,14 +678,14 @@ synonymous IETF language tags that should be mapped to the same $lang."
     (uri "^~ /cuirass/releases")
     (body (list "alias /srv/cuirass-releases;")))
 
-   ;; Let browsers cache files under /static for a while.
+   ;; Let browsers cache files under /themes for a while.
 
    (nginx-location-configuration
-    (uri "/static/base/fonts")
+    (uri "/themes/initial/fonts")
     (body (list "expires 30d;"                    ;fonts never change
                 "gzip on;"
                 "gzip_types *;"
-                "alias /srv/guix.gnu.org/static/base/fonts;")))
+                "alias /srv/guix.gnu.org/themes/initial/fonts;")))
 
    ;; XXX: This is really a hack to work around the fact that we can't have
    ;; 'If-Modified-Since' because timestamps are zeroed.
@@ -680,6 +694,11 @@ synonymous IETF language tags that should be mapped to the same $lang."
     (body (list "expires 1d;"
                 "alias /srv/guix.gnu.org/static;")))
 
+   (nginx-location-configuration
+    (uri "/themes") ;like "/static" above
+    (body (list "expires 1d;"
+                "alias /srv/guix.gnu.org/themes;")))
+
    ;; These rules take precedence over the '.pdf' and '.html' rules below.
    (nginx-location-configuration
     (uri "~ /manual/devel(|/.*)$")
diff --git a/hydra/nginx/berlin.scm b/hydra/nginx/berlin.scm
index 5ba15d1..2f8cd60 100644
--- a/hydra/nginx/berlin.scm
+++ b/hydra/nginx/berlin.scm
@@ -174,6 +174,16 @@ PUBLISH-URL."
               "proxy_cache_valid any 10m;"
               "proxy_ignore_client_abort on;")))
 
+           (nginx-location-configuration
+            (uri "/themes") ;like "/static" above
+            (body
+             (list
+              "proxy_pass http://localhost:8081;"
+              "proxy_cache static;"
+              "proxy_cache_valid 200 2d;"
+              "proxy_cache_valid any 10m;"
+              "proxy_ignore_client_abort on;")))
+
            (nginx-location-configuration
             (uri "/download")                     ;Cuirass "build products"
             (body

base-commit: e16552ce47aca34dc8597787f1c3f19d7580eb9b
-- 
2.41.0





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

* [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move.
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
                   ` (3 preceding siblings ...)
  2024-03-17 20:21 ` [bug#69783] [PATCH] hydra: nginx: Adjust to website themes in guix-artwork Florian Pelz
@ 2024-03-24 18:19 ` Florian Pelz
  2024-03-30 14:28   ` Ludovic Courtès
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork Florian Pelz
  5 siblings, 1 reply; 20+ messages in thread
From: Florian Pelz @ 2024-03-24 18:19 UTC (permalink / raw)
  To: 69783; +Cc: guix-maintainers, Florian Pelz

* hydra/modules/sysadmin/nginx.scm (guix.gnu.org-redirect-locations):
Redirect /static to the new /themes location to fix the 1.4.0 manual.
---
 hydra/modules/sysadmin/nginx.scm | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/hydra/modules/sysadmin/nginx.scm b/hydra/modules/sysadmin/nginx.scm
index e8b7897..e18c9b4 100644
--- a/hydra/modules/sysadmin/nginx.scm
+++ b/hydra/modules/sysadmin/nginx.scm
@@ -2,7 +2,7 @@
 ;; Copyright © 2016-2024 Ludovic Courtès <ludo@gnu.org>
 ;; Copyright © 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
-;; Copyright © 2020, 2021 Florian Pelz <pelzflorian@pelzflorian.de>
+;; Copyright © 2020, 2021, 2024 Florian Pelz <pelzflorian@pelzflorian.de>
 ;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;; Released under the GNU GPLv3 or any later version.
@@ -317,6 +317,20 @@ synonymous IETF language tags that should be mapped to the same $lang."
    (redirect "/manual/en/html_node/Installing-GuixSD-in-a-VM.html" "Installing-Guix-in-a-VM.html")
    (redirect "/manual/en/html_node/Running-GuixSD-in-a-VM.html"
              "Running-Guix-in-a-VM.html")
+   ;; URLs used by the manual for Guix 1.4.0.
+   ;; XXX: Remove after the next release.
+   (redirect "/static/base/css/elements.css" "/themes/initial/css/elements.css")
+   (redirect "/static/base/css/common.css" "/themes/initial/css/common.css")
+   (redirect "/static/base/css/messages.css" "/themes/initial/css/messages.css")
+   (redirect "/static/base/css/navbar.css" "/themes/initial/css/navbar.css")
+   (redirect "/static/base/css/breadcrumbs.css" "/themes/initial/css/breadcrumbs.css")
+   (redirect "/static/base/css/buttons.css" "/themes/initial/css/buttons.css")
+   (redirect "/static/base/css/footer.css" "/themes/initial/css/footer.css")
+   (redirect "/static/base/css/page.css" "/themes/initial/css/page.css")
+   (redirect "/static/base/css/post.css" "/themes/initial/css/post.css")
+   (redirect "/static/base/css/manual.css" "/themes/initial/css/manual.css")
+   (redirect "/static/base/css/code.css" "/themes/initial/css/code.css")
+   (redirect "/static/base/img/language-picker.svg" "/themes/initial/img/language-picker.svg")
    ;; Old URLs not ending in a slash like https://guix.gnu.org/graphics.
    (redirect "/about" "/$lang/about/")
    (redirect "/blog" "/$lang/blog/")

base-commit: ef0e3bf584a66ac14ff230da54c7d25d0fdf0129
-- 
2.41.0





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

* [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork.
  2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
                   ` (4 preceding siblings ...)
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move Florian Pelz
@ 2024-03-24 18:19 ` Florian Pelz
  2024-03-30 11:00   ` Ludovic Courtès
  5 siblings, 1 reply; 20+ messages in thread
From: Florian Pelz @ 2024-03-24 18:19 UTC (permalink / raw)
  To: 69783; +Cc: guix-maintainers, Florian Pelz

* hydra/nginx/berlin.scm: Use /static cache settings for /themes.
---
 hydra/nginx/berlin.scm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/hydra/nginx/berlin.scm b/hydra/nginx/berlin.scm
index 5ba15d1..2f8cd60 100644
--- a/hydra/nginx/berlin.scm
+++ b/hydra/nginx/berlin.scm
@@ -174,6 +174,16 @@ PUBLISH-URL."
               "proxy_cache_valid any 10m;"
               "proxy_ignore_client_abort on;")))
 
+           (nginx-location-configuration
+            (uri "/themes") ;like "/static" above
+            (body
+             (list
+              "proxy_pass http://localhost:8081;"
+              "proxy_cache static;"
+              "proxy_cache_valid 200 2d;"
+              "proxy_cache_valid any 10m;"
+              "proxy_ignore_client_abort on;")))
+
            (nginx-location-configuration
             (uri "/download")                     ;Cuirass "build products"
             (body
-- 
2.41.0





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

* [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork.
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork Florian Pelz
@ 2024-03-30 11:00   ` Ludovic Courtès
  2024-03-31 10:07     ` bug#69783: " pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 20+ messages in thread
From: Ludovic Courtès @ 2024-03-30 11:00 UTC (permalink / raw)
  To: Florian Pelz; +Cc: 69783, guix-maintainers

Hi Florian,

Florian Pelz <pelzflorian@pelzflorian.de> skribis:

> * hydra/nginx/berlin.scm: Use /static cache settings for /themes.

I hadn’t noticed your message and did this:

  https://git.savannah.gnu.org/cgit/guix/maintenance.git/commit/?id=ef0e3bf584a66ac14ff230da54c7d25d0fdf0129

> diff --git a/hydra/nginx/berlin.scm b/hydra/nginx/berlin.scm
> index 5ba15d1..2f8cd60 100644
> --- a/hydra/nginx/berlin.scm
> +++ b/hydra/nginx/berlin.scm
> @@ -174,6 +174,16 @@ PUBLISH-URL."
>                "proxy_cache_valid any 10m;"
>                "proxy_ignore_client_abort on;")))
>  
> +           (nginx-location-configuration
> +            (uri "/themes") ;like "/static" above
> +            (body

If I’m not mistaken, I think this is the wrong place: ‘berlin-locations’
returns locations for ci.guix.gnu.org (Cuirass), not for the web site.
There’s no /themes in Cuirass.  Am I right?

Thanks,
Ludo’.

PS: The private guix-sysadmin@gnu.org mailing list is probably a better
    contact point for these things (if you wish to subscribe, feel free
    to do so!).




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

* [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move.
  2024-03-24 18:19 ` [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move Florian Pelz
@ 2024-03-30 14:28   ` Ludovic Courtès
  0 siblings, 0 replies; 20+ messages in thread
From: Ludovic Courtès @ 2024-03-30 14:28 UTC (permalink / raw)
  To: Florian Pelz; +Cc: 69783, guix-maintainers

Florian Pelz <pelzflorian@pelzflorian.de> skribis:

> * hydra/modules/sysadmin/nginx.scm (guix.gnu.org-redirect-locations):
> Redirect /static to the new /themes location to fix the 1.4.0 manual.

Good catch.  Pushed, thanks!  I deployed it on bayfront just now.

I guess we can close now?

Ludo’.




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

* bug#69783: [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork.
  2024-03-30 11:00   ` Ludovic Courtès
@ 2024-03-31 10:07     ` pelzflorian (Florian Pelz)
  0 siblings, 0 replies; 20+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-31 10:07 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 69783-done, Luis Felipe

Thank you Ludo.

Ludovic Courtès <ludo@gnu.org> writes:
> Florian Pelz <pelzflorian@pelzflorian.de> skribis:
> 
> > * hydra/modules/sysadmin/nginx.scm (guix.gnu.org-redirect-locations):
> > Redirect /static to the new /themes location to fix the 1.4.0 manual.
> 
> Good catch.  Pushed, thanks!  I deployed it on bayfront just now.

It was Luis’ catch.


> I guess we can close now?

Yes, closing.



> Hi Florian,
>
> Florian Pelz <pelzflorian@pelzflorian.de> skribis:
>
>> * hydra/nginx/berlin.scm: Use /static cache settings for /themes.
>
> I hadn’t noticed your message and did this:
>
>   https://git.savannah.gnu.org/cgit/guix/maintenance.git/commit/?id=ef0e3bf584a66ac14ff230da54c7d25d0fdf0129
>
>> diff --git a/hydra/nginx/berlin.scm b/hydra/nginx/berlin.scm
>> index 5ba15d1..2f8cd60 100644
>> --- a/hydra/nginx/berlin.scm
>> +++ b/hydra/nginx/berlin.scm
>> @@ -174,6 +174,16 @@ PUBLISH-URL."
>>                "proxy_cache_valid any 10m;"
>>                "proxy_ignore_client_abort on;")))
>>  
>> +           (nginx-location-configuration
>> +            (uri "/themes") ;like "/static" above
>> +            (body
>
> If I’m not mistaken, I think this is the wrong place: ‘berlin-locations’
> returns locations for ci.guix.gnu.org (Cuirass), not for the web site.
> There’s no /themes in Cuirass.  Am I right?

Of course you are absolutely right.  I lost touch and had not known
about the separation of CI (which like Luis’ separation of themes in
guix-artwork is a good thing):

commit 4cf3743e0daddac99ff71a151a5fd37cbe874493
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Tue Dec 21 23:34:35 2021 +0100

    hydra: Add (sysadmin nginx) module.
    
    This factorizes the guix.gnu.org web site configuration.
    The nginx.conf derivation for berlin.scm is left unchanged.
    
    * hydra/nginx/berlin.scm (le, redirect, %tls-settings)
    (guix.gnu.org-redirect-locations, languages-to-accept)
    (guix.gnu.org-redirects-for-each-language)
    (guix.gnu.org-other-locations, accept-languages): Move to...
    * hydra/modules/sysadmin/nginx.scm: ... here.
    * hydra/nginx/berlin.scm (%berlin-servers): Use
    GUIX.GNU.ORG-NGINX-SERVER instead of the inline copy.


and did not know the purpose of bayfront.

> Thanks,
> Ludo’.
>
> PS: The private guix-sysadmin@gnu.org mailing list is probably a better
>     contact point for these things (if you wish to subscribe, feel free
>     to do so!).

I should have known.  I do not wish to subscribe, though.

Regards,
Florian




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

end of thread, other threads:[~2024-03-31 10:09 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-13 20:44 [bug#69783] [PATCH]: website: Convert old style sheets into a theme Luis Felipe via Guix-patches via
2024-03-14 16:56 ` pelzflorian (Florian Pelz)
2024-03-14 20:16   ` Luis Felipe via Guix-patches via
2024-03-15 10:19     ` pelzflorian (Florian Pelz)
2024-03-15 15:33 ` [bug#69783] [PATCH v2] " sirgazil--- via Guix-patches via
2024-03-15 22:51   ` pelzflorian (Florian Pelz)
2024-03-15 19:34 ` [bug#69783] [PATCH] doc: build: Update paths to style sheets sirgazil--- via Guix-patches via
2024-03-16  9:34   ` bug#69783: " Giovanni Biscuolo
2024-03-16 11:09     ` [bug#69783] " pelzflorian (Florian Pelz)
2024-03-16 13:52       ` Luis Felipe via Guix-patches via
2024-03-16 17:47         ` pelzflorian (Florian Pelz)
2024-03-17 10:51       ` Giovanni Biscuolo
2024-03-17 16:52         ` pelzflorian (Florian Pelz)
2024-03-17 17:57         ` pelzflorian (Florian Pelz)
2024-03-17 20:21 ` [bug#69783] [PATCH] hydra: nginx: Adjust to website themes in guix-artwork Florian Pelz
2024-03-24 18:19 ` [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to themes move Florian Pelz
2024-03-30 14:28   ` Ludovic Courtès
2024-03-24 18:19 ` [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in guix-artwork Florian Pelz
2024-03-30 11:00   ` Ludovic Courtès
2024-03-31 10:07     ` bug#69783: " pelzflorian (Florian Pelz)

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).