Static, Hugo-based home of Solus and its projects. This website makes use of:
- A Hugo theme named Hextra.
- Website content itself, including blog posts, in
content. - TailwindCSS for additional styling.
To make page creation easier, we have some page archetypes that can be used to get started quickly.
Regular page content, e.g. non-blog posts, can be written in two different formats: Markdown, and HTML. Markdown pages are quicker and easier to create, but lack the flexibility that comes with writing HTML. Think about how you want the page to look, and choose which format to use based on the page's design.
- Change to the main directory of this repository.
- Run
hugo newto create the basic page structure.hugo new --kind markdownpage content/pagename.md
- Write the page content as Markdown.
- Change to the main directory of this repository.
- Run
hugo newto create the basic page structure.hugo new --kind htmlpage content/pagename.md
- Write the page content using HTML.
We have several component shortcodes you can use to achieve a design that fits with the rest of the website. Some of these include:
sectionlinkbuttonbulletpoint
- Change to the main directory of this repository.
- Run
hugo newto create the basic page structure. Replace the year, month, and title with real values in the example command below.hugo new --kind blog content/blog/2026/01/my-blog-post/index.md
- Edit the post's frontmatter as necessary. Most fields are self-explanatory.
authors- A list of people who authored the post.authors: - image: https://avatars.githubusercontent.com/u/5157277?v=4 link: https://github.com/EbonJaeger name: Evan Maddock
tags- A tags a post should have, e.g.news,devlog,release. Tags are free; use as many as you like!url- The final URL of the blog post.:yearand:dayare placeholders that will automatically be filled in by Hugo during page generation, and should not need to be edited.
- Write the post content as Markdown.
Each year has a directory, with subdirectories for each month which has content.
Each post has a directory under the appropriate month. The directory and filename are the title of the post. (It's also OK to name the markdown file index.md but then you'll have to manually edit the title).
As an example, as of October, the directory for 2023 looks like:
2023
├── 04
│ └── a-new-voyage
│ ├── featured-image.jpg
│ └── index.md
├── 07
│ └── solus-4-4-released
│ ├── index.md
│ └── solus-4.4-featured.jpg
├── 08
│ └── state-of-solus-august-2023
│ ├── index.md
│ └── StateOfSolusAugust2023.jpg
└── 10
└── solus-and-hacktoberfest-2023
├── hf10_horz_fcd_rgb.png
└── index.md
Files in static/imgs/release-images/ may be used outside of the website.
For instance, Mailgun templates use the desktop collage graphic. Please coordinate with the Solus Team before deleting any files.
To set up your Solus system for developing the website, you first need to ensure you have the necessary dependencies installed. You'll need:
hugonodejssassc- Optionally, install
go-taskto simplify running the website locally, or deploying it to production.
You can install these on Solus by running:
sudo eopkg install hugo sassc go-taskTo set up nvm, the Node Version Manager, follow the instructions listed here. We recommend setting up their shell integration as well, so you can automatically switch to the correct Node version when working on this project. Otherwise, ensure you run nvm use. This project requires the "current" supported release series of Node.
You can validate you are using the latest by running node --version. Your version should be at least 19.x.
To install the required dependencies, run:
npm iYou can start up a local server by running the task:
go-task devUse this to see your changes and make sure things look as you expect before submitting a pull request. It will build the website and necessary TailwindCSS styles, and then start a local web server to serve the website.
Note
You will not need to restart the server when doing changes. Hugo does file watching across all the things.
Run the task to deploy the website via Github Pages.
go-task deployApache 2.0