GNU bug report logs - #69783
[PATCH]: website: Convert old style sheets into a theme

Previous Next

Package: guix-patches;

Reported by: Luis Felipe <sirgazil <at> zoho.com>

Date: Wed, 13 Mar 2024 20:45:02 UTC

Severity: normal

Tags: patch

Done: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 69783 in the body.
You can then email your comments to 69783 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Wed, 13 Mar 2024 20:45:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Luis Felipe <sirgazil <at> zoho.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 13 Mar 2024 20:45:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <sirgazil <at> zoho.com>
To: guix-patches <at> gnu.org
Subject: [PATCH]: website: Convert old style sheets into a theme
Date: Wed, 13 Mar 2024 20:44:01 +0000
[Message part 1 (text/plain, inline)]
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/

[0001-website-Convert-old-style-sheets-into-a-theme.patch (text/x-patch, attachment)]
[OpenPGP_0x0AB0D067012F08C3.asc (application/pgp-keys, attachment)]
[OpenPGP_signature (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Thu, 14 Mar 2024 16:58:02 GMT) Full text and rfc822 format available.

Message #8 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Luis Felipe <sirgazil <at> zoho.com>
Cc: 69783 <at> debbugs.gnu.org
Subject: Re: [bug#69783] [PATCH]: website: Convert old style sheets into a
 theme
Date: Thu, 14 Mar 2024 17:56:01 +0100
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




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Thu, 14 Mar 2024 20:18:01 GMT) Full text and rfc822 format available.

Message #11 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <sirgazil <at> zoho.com>
To: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
Cc: 69783 <at> debbugs.gnu.org
Subject: Re: [bug#69783] [PATCH]: website: Convert old style sheets into a
 theme
Date: Thu, 14 Mar 2024 20:16:34 +0000
[Message part 1 (text/plain, inline)]
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.
[OpenPGP_0x0AB0D067012F08C3.asc (application/pgp-keys, attachment)]
[OpenPGP_signature (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Fri, 15 Mar 2024 10:21:02 GMT) Full text and rfc822 format available.

Message #14 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Luis Felipe <sirgazil <at> zoho.com>
Cc: 69783 <at> debbugs.gnu.org
Subject: Re: [bug#69783] [PATCH]: website: Convert old style sheets into a
 theme
Date: Fri, 15 Mar 2024 11:19:44 +0100
Luis Felipe <sirgazil <at> 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




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Fri, 15 Mar 2024 15:35:01 GMT) Full text and rfc822 format available.

Message #17 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: sirgazil <at> zoho.com
To: 69783 <at> debbugs.gnu.org
Cc: Luis Felipe <sirgazil <at> zoho.com>
Subject: [PATCH v2] website: Convert old style sheets into a theme.
Date: Fri, 15 Mar 2024 10:33:32 -0500
From: Luis Felipe <sirgazil <at> 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
zcmaKx2T&8;yZ;kvh#(+Uq=Y7*Q~^N <at> 2oXXHA=0EOAp{7$1c`tUGzbW&NQalM^j-v{
zh <at> p3-2~q{5Nk^KrKfd1k`_J5&dw1sSnX~&j=Xsvp*_rS6Y#0iu$pGd80{{R9Z7p?!
z^FIH)xq <at> iU&((~fkn <at> hp3#M%ZIzRkDwxQ=^I(IEIuXFzEp9X}9CKJvtUdC&f;tk#G
z <at> IGiyEWpRdM-u1i<b^@IV<p`@?UUD`T<4I$AIJ!Ycg6xVy>SFXb%+rb<AB3L?qhAd
zaCj_4&kf_`?cTZBHG59;|Dn~q <at> eXdD0E9Qr3j)VF<J_?jM015Z))%6N!9K#;x+$h#
zYdeR>|G?^4FN`P79glN!1*kbYL+}n*h`lG;-2sR3g5X <at> w$LFiq;heFM^CTg*SX&$h
zjmO$T <at> NWO2?%p=eI1I$r%>|8f6^CF67_2)UV&~@h <at> 7+HcLku5#;ju0db(|O86KCW7
zClbWj&E8EM;&UFv0fIrhLTs=QZ?E%Jy<Kgwf2Tt3dScOd+#@XHuA7UCo2wT <at> 4ga6{
z5{3 <at> v*{C_=oUjl%Nok0-D<13VdXBrfqMacK90u#^g_ZP3nLn=*!1<@lzpI@`Hp01J
z0XL*&<Rzr#ByPx?GOw(iGur<$ZtjmgarO>)0P1g5>i<>+alqr<m87IF|CJEtZ$5wC
zk<@wZe?oal{e2F9AA^)x^J&+4+`HQ9YDR>A)>8al8?`pH-%+kBWu!7wRb`C|Q5C;8
zUkH`k$~+KYujRTsdmG{q#wH=()}loRcN2bh3FH5csPV}`Lcpd)RAD8UQ&o689R^`f
zFH}dx?_+$%QWB?6viet3Z+Z3g^sTP;z4TTw&awXeYk6JvC?(+d_t!}sbr5K2iR5WT
zBogD8K=KeN5Q*zG2NjH=;{rtn%{+AwigNpD59xQKl34eTB~JfbWS=)PMZLCuuCXK2
z&!L+zXPaj$U*Xs;2B#rvRe57aiE*QQ#o;VW`o1uUMX&UiqLX=xweQ6YE*>PWP#9S^
zzT%;e!rYR)M+}!s4q(oNQmK-3O$+R*)DpkN_vXu{JO*-t)KSM*ziNQBgicge&bGm&
z%)phzUY*@b$;OL?@rB9+!(A*#LC|#|Q=CobM=y(9fRqv3>%?j3Rakife1;R^e-~I{
z&?Z3Y7q#V!lcU%STY(9lFn_qG8Y6m-?BC3JsBbb&Wu3yM18ip&P$w~!h6t|O)DKaX
z>aZEY^&L62l?|CC--XUC(c=YR{Ps8CH|-lNfkjtkGcs8>wz$y&T{7vsxs+s8g>(f}
z%e{0?(M>G~*eH{baIajrxm=+_Ek!@ZtSMMUhAT+=NE9vg**d<EN|eGP*T*XrI<-<x
zRY`Xl%tkO^lljM(ba`B8$b2UEWP`~X)n&92>dCy=@vR38EWB^X%>K56dIaNmCb?$}
zt3ZY4&G;v#dR(UX_D>JPX?3^E#ZAFXBaw-43gf0Tw4+p <at> 4oZA6E#D1}J;+hwK)Vho
zJ_NV{<W=_X7TO3`+r<Q`)_wVqnAf>2EFU4%WeD=7+rLBk;FCq+JqQJ9SuNq=IT9K|
zgiRk=1pP=T)}F2K6P=fow4taF`sdy$a1Fko_c0kPPol8%iecuS71}dwL&LZMz5oRq
z--4&iIJxyRzfezsxk08L8hN5<8fDkcsfjh+XSSt_ctONvc|2Cc>X4S-PS)(D?I{_!
z78d9dBROb$#r?_P;%y`5yPR4H=HSupuMyddx}gKIYPm3}nWLtk5`FqL7w<%o*~ylj
zi9;xz%YZ8XKC4T;^TQOL`g <at> K;ai#Dl <at> uD02qW2 <at> gn_!OadG?%l!*(;bd3`Q2V>uT)
z?wg5vsM2OUX~^k|9wt3bloqm#wCv*=uF_a`kO#X(Q9xNke~oJ%)g6ijXb66}8Uzmw
zt0FzI93;yX <at> 7Gp <at> Uph <at> lc}jy9`t~q)4ok~ya*N8b#ZhJY_4c7~K46ROmjE(;o~Ddg
zFXZ<u?-wCen&ShF5z`OL)6CyH)8&Kvou4d8GcG=Csrq$7ZB|=UWdGh<{**3qGx-KA
zL1{OiT)fvTTHBzv{i00OTbL{c;s=lEhCV?sOJS@+L=<2WSUSJQm%bC?Yp<#E3=+p0
z`{A`yUWFy5;lgRzJ$}!W_|P<Dl(nckxAix6J*pws86H;M<+gD%ufq#6^xsAF(t;f!
zN3bWzT <at> f<E`UdJbc@%Clz2#rUqL!7L8D*cqe*{b <at> QK5e6^HxaoqTnjck-;kb;DxAD
zjmCTXhE?s3NL0J7vhL6g0fcsG0eSd<ZkJ`48tbQ28^wBBcE#vUCKPO$EMx+7zadSH
z2Gg3+MrbFwYG%UpV5UzKIrp;eyf|%QW8J=Q{gG!XgpgrVZJBdR<q8bM=19%Fz7V&!
zb+daiNetb%xb!gyU7y~ioJQwGZI?ZzC$THO*Xz{4r5mHKEomTCzPQZyg9)`(Q~p!g
zB!dPbE|iSj)8t18sk7}28Lz#5*!Mek6JypaP!$Wxsr{Yzxd|UptqMKuJvHcyZcaUP
zFb0bYjI<~iUVuJJ7qh+qqr3N<q8W7z8kFeZ{ZS4uQ0%XyL0=n<zS7&HW=eZ}AtQo<
z=F$%YYjhA$%wU4LK5|Rq3W%Nt>E62h)P~<{Skq;ats?~mWbFodxjjWSTLK+v6zv36
zjGl<j+w|izjjne7 <at> KH>birz3MTlPB~PO$A$-X<ePyu`?)?AvEXf^;$?QEg~=XSj!c
zV5aY22jd)>%d|r=?`{Ee)8o|sWY<o{*;JNOc&$G>NA|G0wZEk)Fg7BF5 <at> cT+&>|&k
zweHa{?Ra~~FR@)w2v^h?wR}TZvIQ@}3w(YXR>zb{F+}YVSRx*6kpYfPg+&g8*eABo
zx5qg0-=A9>_YF0e+Cof6ECnuri!^GUf7#Y}^OP>j6j<m0276rIw9p*$0c^n-WI=?R
zl7+9o5|vn4n37Jcdab*lfj8^E95c-Zgc=tb%q1Q3A-XrYq<febHQ-%ofYpGUIku$V
zsZ$$1vdeWQ$mk!?EE9tkILVO5=QRAWWp{7!hG6*oBdfE>a$xSG(R;}*`3#82 <at> arn@
zfY#*3_k$q&?|ZZ;=*w8dTZyaTRUx4+cU <at> EO8O97o9`QsiFi8y*#kAClxQ6Q*c(CjY
z2`uD=^%%c1yT0P$NfNCVCWR;}I6Wr3K4K7My$+={_O|S~WK5wN%k`Y>M-;A4653_v
zMe|kW*Y~QI$Gk*G_(!@^%JkC$&{wY*-7>ej=#dG1zR800Aq0kH?J3}49+WQ>=sZFX
zS1=2C(}o#WOW(#iO?=pqT;J#Db1+U4>u5k_+$g>pX%&h8e&>DAL||8C>ZK{2H;*z=
zS<ZT(0)tqGs^%T <at> lJ#HOx9eckqVYbcm+RE5mwxou(4xu8G2PE=N|Vh(O9w=LP|P4$
zefaB})!v`S!CLlp4iG)GeYPbyR*K5O8Eq9NMT@>Da82Ki+4r>?^VUcm&gEyQWG41Z
zDLdAG2pY?&Qx~e<to3B#K2s(vG*-{;-01p|*FvkY)Q4?4vu2+ZnzJQ+O)SaI4vnYx
z <at> hRvywWy-2<+!E_-0%hOf-t6^gd!dbMWF`l_*l=jL3#~uuE!(dK<HxN-s6d)Y}vs#
z(D5dGqIM{Yb6{w^R^j14J>RK+VB?W}mcw+IV$bqg3C$B8joff$S|c=g%y2um-w;g}
z*H3aCx|_?7)CU<(Jh$O~;X%02Qa2QKSi6>xDD&J36gK$j#jDHw+VGv53Y}=zIGyZn
zZ$vz>X_-@YlJ|bk4X!7X!Y5+Za$)RQdbpfu8lJnkKHD6m20D31ZH}eAlnnLyLW4r<
z%2mCj;_c(@fT+^yp|SGBd)vUQdCHyvN2!S_jamBFo}*S4&+M{KvOMBvXdPltVJ*w$
z!ONa}WGU#tFV~`D0*Xz5fLA^cUGsdW*3NWIfVBdOe9LUTlxO!~{`x)%G&&gESvE <at> A
zOudeW&^{&!cNv~&yPt{r`mQp0X(!>XmOpsHNN8f7<*ih9)#q)I)t_whmsinPS?6M-
z3e=ZZ <at> EW%My~QOx;B9|f!>Cd*g}$Tc)3i3fJ_}kW`uj&Wsik}1eBKvzu(=0ILq=mf
z>3%Ql_yEi?ALtIK+`nDgux83KD_Pepi>hc9&mLJ}?a>!xZbjZtG1uX#ru0%3lat-N
z8B+C+cfJU9J*mPXgFqCeL`~R)uu <at> 9xgk4)i+*%3sq1%+(8NN!YWkm(sTrqt2+}`+d
za0GnI6qYJX*q|5uWuN+iZCEZ?iNwSaJ^BVjmUDHFdB?D%2y3{XUvu9jC+-s~Yt!aw
zI#(~7Bk9B{qk8g*k+^HwQHt>RmzA$ge3m|K0`=hlbDow;$x~f4*I_7ZMS9$%g+N~v
z;2KgjrG)CBpjzZDD!AOb <at> tGBqjl`VNHsj{Snw*9LXkOg8X@*%W5X5hn25?TzDBYTW
ztm&b&ZuVZC3}W=GI9ArEHyKn*3P?7HW1^u+p%Mlg-K{VUXO;W*@%r#nyXi1t{n4x$
zsV6qvuhO()mDz5=8)^Enk|H+hT*%tX <at> EesMD8rIB?jT54)G|#C!e`BAkNOQwOO98&
zk;m#El5=xDTXccJis8vWzMH)LVxyFVN_$(WNX9iJQ?JxJvNb*Gi`ySW)>&Q?Lo04_
zK6p|^P@!2DBtyg>XNvtI*zrTxm;)L4B?V)?r<NJ7IL}1YNVoEMAZ4 <at> EDYwS`!Tse(
zhN`(cp=BA4Z}c~KH3<JO{g <at> EQYowLl8*uE2n7T1z#>$c?$&&aj;7V83hUan|%7dKD
z>dgy`Oz+t?ib>4RROJ3)%Pwus>+G%a(?}mi-(IuJmNlwPN+BIS^>{O(j(x-cy^ujm
z4q3Gpj20%}G;U!=MugYJrksDpeEF`dU$VrGIlpJ~FihW97R|62R8~{8xKynJ3qA-n
zv<#x<6r-JmE#yBSaZ>zJ`@)d{LW{uUgPng|WsL8rU1809`J#Y <at> g4 <at> pg#YSez5&^~l
z+DymDp8$a>|HCb)<^mt9L57I+5GF^}2mh<7_&>25EGtJVZ^h%YFq <at> 4^x4hpHEnlai
zs<>K|sv?<^Kj%NZ5-X-qXu`pinRKm+z3AIq({rMnRyF*DJ6BN0hwFwV*95a!-s+Pj
zI{wwBu7NQFpqZd <at> hPeRfBM?FsE;Oz%fPUE;D^y~!VYVAj0#WZBQR77iHnNJX#r|V9
zKEztMEWW5Vde~?yZ<A&#AdWRU;@)I?&6`;CGf <at> A8v(<)6`p7~3;5o8h$A|r1hkcWZ
zxXgIJ!!Y#{BR=aeqS38XsE+n&V!e$f{Q0UAW9fx%l{3Qvn{<&7&Q9j+%$k@!ZcY1i
z7G@={tBaM>>wG{7k!A+b7#rb!mLG5~qHp <at> e3M*TM9{7|7ck3#2v8n;XnoGso_C_L+
zZ8FGY5%a#T_Ol3F5SDNfQ_8V3cdbnKK56V <at> iL8%TF?4;$U-f0De@;wrerU9*h9D-H
zWPX9W>Wl|5yD%0u1mr+#|F-9C{p@%x57|;cIf4m5wWBZQiN7<;Z8dUlMD*9t16_~{
zG-qjDGLE$`M8o`qG^8!O8^X^{d!Jv*6t_>=RvCe^nWtP3d-Qpnt{ymaFu_>%A~5<?
zvJbeX^V2Rn08%&Fu9XQ5M#a0I$y(EeE!q=t$Gs0ultVYW>2)`mI`;^Z;QEWa!jz+T
z`F#x9s9ekR+b=AY+PXzo9y)@kd$Qx0x#xv08nmgwxT*enjCD+Z??*o-<ovN5Rn{;d
z!s_c$M?z5opZ5Kp^_+H=><F$8Wzmwy&jjqeuy3*gDU?{p#yxyLI8(NN!pa&mQ(o2z
zHGeUt%dq%4{63SfFQ|%xy#L8#59e6itpBz&7+!2EE)T-uDNcJAkKvgrTa-$QYjtb$
zT)S48^&#n&A-|q(g5x{>`io7d?*fxFy>8=n4ae)8%98z|$K^>NDL>u-_65%=gHyky
z+g}`6rv#`8qD;%xul9U)!Z)vz)#qL=%bZD-=@&ZD1^9j4Ap51A5TQ9I!Afe6n9#9z
z)BB$Jx <at> jHOn^4bOU(zsD(afZsm#@9mDAKh<s{JgV{#10a+-P_4n)V~DuNuU($=ySG
zok2!L-~rbG&7#cw7*=332YbblI6f{a1*jac3Nn;t8+c%yhBe!DNwl|!x}G7)-xCdL
zucI;IC*hh_h4hc)kDSVcwvIom_tDx}_c^~fq-hBS)CKtv-!+ZDRmrP;M^70rdtj+|
z1!U|r$(KNfc-~TBRyA^4W>ChsNj46<R^5E3m2=xBq4{dh{`dMuiV <at> SeD&=vkKHQb0
zq`mT3Lqf18hN|wGWn>yE@>zGRN?!K%t2NqxT?6uuYiMm80b&f^j-x-D>yu4iMc)e8
zuP(Vx{76xDmw3b^Wh5=}6~~JU9r2}hug03K&AP<Z$s3aW`@aNIHWSohkD%Uv?Lw)d
zwksy+uUA-J4g?v7w-p!qzQPsJ0xopACZ3=YiV?9Rzw;k;NQG!3ka6<$>F+Ns$lbrg
z#+C3Amo#x8f23Om?L*#(p$ON4ekx`s&<xVMemXE <at> XqEeNC-YFT-MNft)F)enxfZ5(
z!i^}{lscMHok1X~tyN$AdW8O<QdWVY#r)nzegIsk8sV$*z7MIk&jA0oJ^1A1NMp!T
z!EC+@l-$$KyP+-lQLyaLJe>Jtv3QelHPD_S9yU?7ASfg6717)jUcBh{Y>hP81B<Bs
z1e$@SEgq>&Y`p;lHWPFeFTcFSGOR7^4p8i7J1xhW?bnb^C>@G6sN16IO{N{pMp*5M
zlU0NkNzDjJ)!>oe6y4?DocBb(hU}U6g5`Dilw`sV#D)vD_FR-nmyZcw7!MM!7qVlf
zehX;VQkkM3%1BZM{5+_Crk-(8U <at> Lw6t28VHpm<_cz|+6c2AVj$TSyKSTR1~G=E(n%
z{WJP|XGeA0ldl-xrw=?TsuXvs9q|<|WmX*a`1w(K^4k7>l)PtM <at> fmy!V5Bg1FXiU&
zZxSW;B<VyUdKB3&@P%*2<4t(wJKKsqrWu-^P$l>+_m6Ws+_M <at> V*k&hKs%r=8wVfKY
zoRsf5S?R=;ivI+;C$|@QRm6sH)J_v&Wn?duad#`UpeJh1oT2&ndp$v3dqogRR <at> nq~
zleFRn!nWk$g~;3Mh#tR($a>LNXoMAVL&|=Q <at> pC6~LvQBw$Zt&1?nc!JOXWzB)!d$B
z*hV1y`XEAQJ(w%=T-v*&zFUFajSiY9xmiSeuIxX=qpE#L#x_ZwB|njAl@$_3(pH <at> I
z`<YA!vSH6k{fG?3rNK=)Y4{7$&vNTlq3_2}dLv533xZlqmMtWQENt0ek <at> iKtF+acP
zpe=vb6Rup()6e^Awp+!Eej<})T~go|J|*baL+1T8O5aRBU?WbM>Uqa@|F%>!cW|oX
zn_1f#@1m+Yzu1fG>n2en-}=|ehvy&U0;ubM3J%GvVlTBpXEn<0_#({OdebAi$5hm%
zpDCBjwHE~80vOHXhONy;5D}M`xn_jl?6)sE6g8|4Xn!&H5%AEMSa93Pokn%o2w1Lt
zM_F|!yn8h;Sa3;*UR*z_JRYS_d%6y;W2gvV?{U_9#UAsmn<7dYo5)`$&B8io`JFG?
zR*tW^ys$Z89U)8{`F%S<o_#Rr!OL7Mr;oN&viA*mbZ&|sE<1{yCkxK7^&bI$(_fTX
zO0SeccQ0FO>}U58by$T$vdptW#?6N>mx?9o?TA+iBrF+mNdw$AlC%d??=F9D8t2Wo
zFgbZpWs>SpbYW}B7r^(<q8Pu#32U$-3B<LB$x+ZN5BG%o|43y5_RR3JB <at> _28(UdZ9
zC;eTKPbXPRVPYxKx&w&8 <at> C_iNqDmdD%d0sVts(R2>?+<gfi-1bbSHFp;xT>OsHf%!
zR~OoA=1It__=s%2^w69z>34a{8{-#zW1i-R%ocyH;ZTw{enhJ^xr)ibvux6}S <at> X_a
zMC^FqX(RAhAfAB3X2ZXqK8v%dPg}5du9Dq+f8*_4eZ<FsLqT7FY;IlasU>}Vgp37`
zcS{`=!Q82Vu7Xq#9<?(wi5&Srzti~Y@%(bNEF!RIw <at> 6Mu<KicTR*l6aV76JDcg)SV
zbD&+`yxDli+nSdVYC!r8#{4gq8Sv3*HeZEEDfXPQxv57pe`NW0jLe=Y <at> ma!%@R&iu
zD`{DT <at> XOM6V%j)*tn{LIQ$z=*unhs^_%A&!(_8X2_k^CifV*-;bMt)wpdM{D!k^}s
z6Rp_2aFrhFU=~-`pXRLuALPp-36p}<MAX74hChps2vA4reJqHRJ3^*5MLhlZt2PjN
zDiF!=ps~#_u{(@2>bZ8+Ww_@$B%tw3+77_lnlMx>+;|414m>Jnxf8YCX0arJrFM_Q
znlV-jM6wT-k<447W7stni+n0nQ|=d0jJ_1!uz&3<oPE`oexord`c=@8batT#_xB27
zj`Hlrr%`FyN!dMT#K*Bto|fCa4z~kE`Ufn#RsLIYxBl|#mgv^mRVJ3jn_y^?x>unh
z=5g|0$_pQjql%xz>sFIquuQ$p9Sp7c{;|B|jeAT$IZ<ZYn%#3HjCoxeG5BGyv9W3V
z`LeBO+pBciP5$h(E1!N%Bk`@1xaptp`myVXihTpdq+X0QDXzx&O`a*zBbcYO<Z9(e
zgY=Uwm4wa+fjaKtCX;dh;Gc=3Z`kZFU$lseU8!^6P)bEnQb3nX^#WCijQ?)A|DWpk
h|L <at> HI!9JZ)3SSx5eV=n2`R7N5wgytY7-s$S{{gSea+Lr8

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





Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Fri, 15 Mar 2024 19:36:02 GMT) Full text and rfc822 format available.

Message #20 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: sirgazil <at> zoho.com
To: 69783 <at> debbugs.gnu.org
Cc: Luis Felipe <sirgazil <at> zoho.com>
Subject: [PATCH] doc: build: Update paths to style sheets.
Date: Fri, 15 Mar 2024 14:34:22 -0500
From: Luis Felipe <sirgazil <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Fri, 15 Mar 2024 22:53:02 GMT) Full text and rfc822 format available.

Message #23 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: 69783 <at> debbugs.gnu.org
Cc: sirgazil <at> zoho.com, guix-maintainers <at> gnu.org
Subject: Re: [bug#69783] [PATCH v2] website: Convert old style sheets into a
 theme.
Date: Fri, 15 Mar 2024 23:51:40 +0100
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




Reply sent to Giovanni Biscuolo <g <at> xelera.eu>:
You have taken responsibility. (Sat, 16 Mar 2024 09:36:02 GMT) Full text and rfc822 format available.

Notification sent to Luis Felipe <sirgazil <at> zoho.com>:
bug acknowledged by developer. (Sat, 16 Mar 2024 09:36:02 GMT) Full text and rfc822 format available.

Message #28 received at 69783-close <at> debbugs.gnu.org (full text, mbox):

From: Giovanni Biscuolo <g <at> xelera.eu>
To: 69783-close <at> debbugs.gnu.org
Cc: Luis Felipe <sirgazil <at> zoho.com>, Florian Pelz <pelzflorian <at> pelzflorian.de>
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sat, 16 Mar 2024 10:34:24 +0100
[Message part 1 (text/plain, inline)]
Hello,

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

> From: Luis Felipe <sirgazil <at> 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
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sat, 16 Mar 2024 11:10:02 GMT) Full text and rfc822 format available.

Message #31 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Giovanni Biscuolo <g <at> xelera.eu>
Cc: 69783 <at> debbugs.gnu.org, Luis Felipe <sirgazil <at> zoho.com>
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sat, 16 Mar 2024 12:09:16 +0100
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




Did not alter fixed versions and reopened. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 16 Mar 2024 11:10:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sat, 16 Mar 2024 13:53:02 GMT) Full text and rfc822 format available.

Message #36 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <sirgazil <at> zoho.com>
To: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>,
 Giovanni Biscuolo <g <at> xelera.eu>
Cc: 69783 <at> debbugs.gnu.org
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sat, 16 Mar 2024 13:52:11 +0000
[Message part 1 (text/plain, inline)]
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)


[OpenPGP_0x0AB0D067012F08C3.asc (application/pgp-keys, attachment)]
[OpenPGP_signature (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sat, 16 Mar 2024 17:49:02 GMT) Full text and rfc822 format available.

Message #39 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Luis Felipe <sirgazil <at> zoho.com>
Cc: 69783 <at> debbugs.gnu.org
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sat, 16 Mar 2024 18:47:43 +0100
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 <at> 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




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 17 Mar 2024 10:53:02 GMT) Full text and rfc822 format available.

Message #42 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Giovanni Biscuolo <g <at> xelera.eu>
To: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
Cc: 69783 <at> debbugs.gnu.org, Luis Felipe <sirgazil <at> zoho.com>
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sun, 17 Mar 2024 11:51:19 +0100
[Message part 1 (text/plain, inline)]
Hello Florian,

"pelzflorian (Florian Pelz)" <pelzflorian <at> 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
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 17 Mar 2024 16:54:01 GMT) Full text and rfc822 format available.

Message #45 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Giovanni Biscuolo <g <at> xelera.eu>
Cc: 69783 <at> debbugs.gnu.org, Luis Felipe <sirgazil <at> zoho.com>
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sun, 17 Mar 2024 17:52:53 +0100
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




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 17 Mar 2024 18:11:01 GMT) Full text and rfc822 format available.

Message #48 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Giovanni Biscuolo <g <at> xelera.eu>
Cc: 69783 <at> debbugs.gnu.org, Luis Felipe <sirgazil <at> zoho.com>
Subject: Re: [bug#69783] [PATCH] doc: build: Update paths to style sheets.
Date: Sun, 17 Mar 2024 18:57:09 +0100
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




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 17 Mar 2024 20:28:01 GMT) Full text and rfc822 format available.

Message #51 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Florian Pelz <pelzflorian <at> pelzflorian.de>
To: 69783 <at> debbugs.gnu.org
Cc: Florian Pelz <pelzflorian <at> pelzflorian.de>
Subject: [PATCH] hydra: nginx: Adjust to website themes in guix-artwork.
Date: Sun, 17 Mar 2024 21:21:23 +0100
* 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 <at> gnu.org>
 ;; Copyright © 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado <at> elephly.net>
 ;; Copyright © 2020 Christopher Baines <mail <at> cbaines.net>
-;; Copyright © 2020, 2021 Florian Pelz <pelzflorian <at> pelzflorian.de>
+;; Copyright © 2020, 2021, 2024 Florian Pelz <pelzflorian <at> pelzflorian.de>
 ;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;; Copyright © 2021 Mathieu Othacehe <othacehe <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 24 Mar 2024 18:22:02 GMT) Full text and rfc822 format available.

Message #54 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Florian Pelz <pelzflorian <at> pelzflorian.de>
To: 69783 <at> debbugs.gnu.org
Cc: guix-maintainers <at> gnu.org, Florian Pelz <pelzflorian <at> pelzflorian.de>
Subject: [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual resources due to
 themes move.
Date: Sun, 24 Mar 2024 19:19:49 +0100
* 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 <at> gnu.org>
 ;; Copyright © 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado <at> elephly.net>
 ;; Copyright © 2020 Christopher Baines <mail <at> cbaines.net>
-;; Copyright © 2020, 2021 Florian Pelz <pelzflorian <at> pelzflorian.de>
+;; Copyright © 2020, 2021, 2024 Florian Pelz <pelzflorian <at> pelzflorian.de>
 ;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;; Copyright © 2021 Mathieu Othacehe <othacehe <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sun, 24 Mar 2024 18:22:02 GMT) Full text and rfc822 format available.

Message #57 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Florian Pelz <pelzflorian <at> pelzflorian.de>
To: 69783 <at> debbugs.gnu.org
Cc: guix-maintainers <at> gnu.org, Florian Pelz <pelzflorian <at> pelzflorian.de>
Subject: [PATCH v2 2/2] hydra: nginx: Further adjust to website themes in
 guix-artwork.
Date: Sun, 24 Mar 2024 19:19:50 +0100
* 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





Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sat, 30 Mar 2024 11:01:01 GMT) Full text and rfc822 format available.

Message #60 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Florian Pelz <pelzflorian <at> pelzflorian.de>
Cc: 69783 <at> debbugs.gnu.org, guix-maintainers <at> gnu.org
Subject: Re: [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to
 website themes in guix-artwork.
Date: Sat, 30 Mar 2024 12:00:26 +0100
Hi Florian,

Florian Pelz <pelzflorian <at> 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 <at> gnu.org mailing list is probably a better
    contact point for these things (if you wish to subscribe, feel free
    to do so!).




Information forwarded to guix-patches <at> gnu.org:
bug#69783; Package guix-patches. (Sat, 30 Mar 2024 14:29:01 GMT) Full text and rfc822 format available.

Message #63 received at 69783 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Florian Pelz <pelzflorian <at> pelzflorian.de>
Cc: 69783 <at> debbugs.gnu.org, guix-maintainers <at> gnu.org
Subject: Re: [bug#69783] [PATCH v2 1/2] hydra: nginx: Redirect 1.4.0 manual
 resources due to themes move.
Date: Sat, 30 Mar 2024 15:28:08 +0100
Florian Pelz <pelzflorian <at> 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’.




Reply sent to "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>:
You have taken responsibility. (Sun, 31 Mar 2024 10:09:02 GMT) Full text and rfc822 format available.

Notification sent to Luis Felipe <sirgazil <at> zoho.com>:
bug acknowledged by developer. (Sun, 31 Mar 2024 10:09:02 GMT) Full text and rfc822 format available.

Message #68 received at 69783-done <at> debbugs.gnu.org (full text, mbox):

From: "pelzflorian (Florian Pelz)" <pelzflorian <at> pelzflorian.de>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 69783-done <at> debbugs.gnu.org, Luis Felipe <sirgazil <at> zoho.com>
Subject: Re: [bug#69783] [PATCH v2 2/2] hydra: nginx: Further adjust to
 website themes in guix-artwork.
Date: Sun, 31 Mar 2024 12:07:52 +0200
Thank you Ludo.

Ludovic Courtès <ludo <at> gnu.org> writes:
> Florian Pelz <pelzflorian <at> 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 <at> 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 <at> 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 <at> 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




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 28 Apr 2024 11:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 6 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.