Skip to content

Commit 779fecb

Browse files
committed
feat: initialize LuminusOS wiki with guides and assets
- Add package.json for Astro configuration and dependencies. - Create CNAME for custom domain wiki.luminusos.org. - Include favicon and brand SVG assets for the wiki. - Set up content configuration for documentation collections. - Add multiple guides including installation, updates, apps, and contributing. - Translate guides into Brazilian Portuguese. - Implement custom CSS styles for the wiki theme.
1 parent 09af2d6 commit 779fecb

77 files changed

Lines changed: 23578 additions & 176 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Deploys the standalone aurora.luminusos.org variant of the site.
2+
#
3+
# GitHub Pages serves one site per repository, so the subdomain build is
4+
# pushed to the `gh-pages` branch of luminusOS/aurora-shell, which must have
5+
# Pages enabled and a DNS CNAME record: aurora.luminusos.org -> luminusos.github.io
6+
#
7+
# Requires a repo secret AURORA_DEPLOY_TOKEN: a fine-grained PAT with
8+
# "Contents: write" on luminusOS/aurora-shell.
9+
10+
name: Deploy Aurora Shell site
11+
12+
on:
13+
push:
14+
branches: [main]
15+
workflow_dispatch:
16+
17+
jobs:
18+
build-and-deploy:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- uses: actions/setup-node@v4
24+
with:
25+
node-version: 20
26+
cache: npm
27+
28+
- run: npm ci
29+
- run: npm run build:aurora
30+
31+
- uses: peaceiris/actions-gh-pages@v4
32+
with:
33+
personal_token: ${{ secrets.AURORA_DEPLOY_TOKEN }}
34+
external_repository: luminusOS/aurora-shell
35+
publish_branch: gh-pages
36+
publish_dir: ./dist-aurora

.github/workflows/deploy-blog.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Builds the blog (a sub-project in blog/) and publishes it to the gh-pages
2+
# branch of luminusOS/blog, which serves blog.luminusos.org via GitHub Pages
3+
# (one Pages site per repo). Requires the BLOG_DEPLOY_TOKEN secret: a
4+
# fine-grained PAT with "Contents: write" on luminusOS/blog.
5+
6+
name: Deploy blog site
7+
8+
on:
9+
push:
10+
branches: [main]
11+
paths: ['blog/**']
12+
workflow_dispatch:
13+
14+
jobs:
15+
build-and-deploy:
16+
runs-on: ubuntu-latest
17+
defaults:
18+
run:
19+
working-directory: blog
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- uses: actions/setup-node@v4
24+
with:
25+
node-version: 20
26+
cache: npm
27+
cache-dependency-path: blog/package-lock.json
28+
29+
- run: npm ci
30+
- run: npm run build
31+
32+
- uses: peaceiris/actions-gh-pages@v4
33+
with:
34+
personal_token: ${{ secrets.BLOG_DEPLOY_TOKEN }}
35+
external_repository: luminusOS/blog
36+
publish_branch: gh-pages
37+
publish_dir: ./blog/dist

.github/workflows/deploy-wiki.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Builds the wiki (a sub-project in wiki/) and publishes it to the gh-pages
2+
# branch of luminusOS/wiki, which serves wiki.luminusos.org via GitHub Pages
3+
# (one Pages site per repo). Requires the WIKI_DEPLOY_TOKEN secret: a
4+
# fine-grained PAT with "Contents: write" on luminusOS/wiki.
5+
6+
name: Deploy wiki site
7+
8+
on:
9+
push:
10+
branches: [main]
11+
paths: ['wiki/**']
12+
workflow_dispatch:
13+
14+
jobs:
15+
build-and-deploy:
16+
runs-on: ubuntu-latest
17+
defaults:
18+
run:
19+
working-directory: wiki
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- uses: actions/setup-node@v4
24+
with:
25+
node-version: 20
26+
cache: npm
27+
cache-dependency-path: wiki/package-lock.json
28+
29+
- run: npm ci
30+
- run: npm run build
31+
32+
- uses: peaceiris/actions-gh-pages@v4
33+
with:
34+
personal_token: ${{ secrets.WIKI_DEPLOY_TOKEN }}
35+
external_repository: luminusOS/wiki
36+
publish_branch: gh-pages
37+
publish_dir: ./wiki/dist

.github/workflows/deploy.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Deploy website to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: pages
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: withastro/action@v3
23+
24+
deploy:
25+
needs: build
26+
runs-on: ubuntu-latest
27+
environment:
28+
name: github-pages
29+
url: ${{ steps.deployment.outputs.page_url }}
30+
steps:
31+
- id: deployment
32+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules/
2+
dist/
3+
dist-*/
4+
.astro/

README.md

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,84 @@
1-
# luminos.github.io
1+
# LuminusOS Website
2+
3+
The official website for [LuminusOS](https://luminusos.org), an immutable Linux
4+
distribution built on Fedora bootc, plus the [Aurora Shell](https://aurora.luminusos.org) subdomain variant, and
5+
the [wiki](https://wiki.luminusos.org) and [blog](https://blog.luminusos.org)
6+
as sub-projects in `wiki/` and `blog/`.
7+
8+
Built with [Astro](https://astro.build). Fully static, no client framework;
9+
the only JavaScript on the page handles the theme toggle, the language menu
10+
and fetching the latest release tag from the GitHub API.
11+
12+
## Pages & languages
13+
14+
Every page exists in English (default) and Brazilian Portuguese:
15+
16+
| Route | Content |
17+
| --- | --- |
18+
| `/` and `/pt-br/` | LuminusOS home: hero, pillars, how it works, editions, download, support |
19+
| `/aurora/` and `/pt-br/aurora/` | Aurora Shell subpage |
20+
21+
All copy lives in a single typed dictionary: `src/i18n/translations.ts`.
22+
Adding a language = append it to the `languages` array (name + flag, the
23+
header menu picks it up automatically), add its entry to `translations`, and
24+
create the page folders for its prefix.
25+
26+
The site has light and dark themes: dark by default, following the system
27+
preference, with a header toggle persisted in `localStorage`.
28+
29+
## Development
30+
31+
```sh
32+
npm install
33+
npm run dev # http://localhost:4321
34+
npm run build # static output in dist/
35+
npm run preview # serve dist/ locally
36+
```
37+
38+
## Downloads
39+
40+
Download buttons point at
41+
`https://github.com/luminusOS/images/releases/latest`, which always resolves to
42+
the newest release, so no website change is needed when a release ships.
43+
Editions that don't exist yet (Play, Mobile, Tablet, Cast) render as locked
44+
"Coming soon" cards in `src/components/HomePage.astro`; flip one to available
45+
by editing the `available` check when its first release lands.
46+
47+
## The Aurora Shell subdomain
48+
49+
`aurora.luminusos.org` is a second build of this same project:
50+
51+
```sh
52+
npm run build:aurora # static output in dist-aurora/
53+
```
54+
55+
With `SITE_VARIANT=aurora` the Aurora Shell page becomes the site root
56+
(`/` and `/pt-br/`), cross-links point back to `https://luminusos.org`, and
57+
`dist-aurora/CNAME` is written as `aurora.luminusos.org`.
58+
59+
`deploy-aurora.yml` pushes that build to the `gh-pages` branch of
60+
`luminusOS/aurora-shell` (needs the `AURORA_DEPLOY_TOKEN` secret: a
61+
fine-grained PAT with Contents: write there), since GitHub Pages serves one
62+
site per repository.
63+
64+
## Wiki & Blog (sub-projects)
65+
66+
The wiki and the blog live in this repository as independent Astro projects:
67+
68+
| Site | Folder | Stack |
69+
| --- | --- | --- |
70+
| [wiki.luminusos.org](https://wiki.luminusos.org) | `wiki/` | Astro Starlight (sidebar, search, i18n) |
71+
| [blog.luminusos.org](https://blog.luminusos.org) | `blog/` | Astro content collections, English + Google Translate menu |
72+
73+
Each has its own `package.json` (`cd wiki && npm install && npm run dev`).
74+
GitHub Pages serves one site per repository, so `deploy-wiki.yml` and
75+
`deploy-blog.yml` build the sub-project and push its `dist/` to the
76+
`gh-pages` branch of `luminusOS/wiki` / `luminusOS/blog` (Pages-only repos).
77+
Setup per subdomain: create the target repo, enable Pages on `gh-pages`,
78+
point DNS `<sub>.luminusos.org``luminusos.github.io`, and add the
79+
`WIKI_DEPLOY_TOKEN` / `BLOG_DEPLOY_TOKEN` secret here (fine-grained PAT
80+
with Contents: write on the target repo).
81+
82+
## License
83+
84+
MIT — see [LICENSE](LICENSE).

astro.config.mjs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// @ts-check
2+
import { defineConfig } from 'astro/config';
3+
4+
// SITE_VARIANT=aurora builds the standalone aurora.luminusos.org variant:
5+
// the Aurora Shell page becomes the site root and links back to the main
6+
// site. The wiki and blog are separate repositories.
7+
const variant = process.env.SITE_VARIANT ?? '';
8+
const sites = {
9+
'': 'https://luminusos.org',
10+
aurora: 'https://aurora.luminusos.org',
11+
};
12+
if (!(variant in sites)) {
13+
throw new Error(`Unknown SITE_VARIANT "${variant}" (expected aurora)`);
14+
}
15+
16+
export default defineConfig({
17+
site: sites[/** @type {keyof typeof sites} */ (variant)],
18+
outDir: variant ? `./dist-${variant}` : './dist',
19+
trailingSlash: 'ignore',
20+
i18n: {
21+
defaultLocale: 'en',
22+
locales: ['en', 'pt-br'],
23+
routing: {
24+
prefixDefaultLocale: false,
25+
},
26+
},
27+
});

blog/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules/
2+
dist/
3+
.astro/

blog/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# LuminusOS Blog
2+
3+
The blog at [blog.luminusos.org](https://blog.luminusos.org), built with
4+
[Astro](https://astro.build) content collections.
5+
6+
Posts are written in **English only**. The header has a Translate menu that
7+
hands the current page to Google Translate's proxy
8+
(`blog-luminusos-org.translate.goog`) for machine translation into other
9+
languages, so there is nothing to maintain per language.
10+
11+
## Writing a post
12+
13+
Add a Markdown file to `src/content/posts/`:
14+
15+
```md
16+
---
17+
title: 'Post title'
18+
description: One-sentence summary shown in the list and in meta tags.
19+
date: 2026-06-10
20+
tag: Announcement
21+
---
22+
23+
Content in Markdown…
24+
```
25+
26+
The file name becomes the URL: `my-post.md``/posts/my-post/`.
27+
28+
## Development
29+
30+
```sh
31+
npm install
32+
npm run dev # http://localhost:4321
33+
npm run build # static output in dist/
34+
```
35+
36+
## Deployment
37+
38+
Pushes to `main` deploy to GitHub Pages via `.github/workflows/deploy.yml`.
39+
One-time setup: enable Pages (Source: GitHub Actions) on this repo and add a
40+
DNS `CNAME` record `blog.luminusos.org``luminusos.github.io`. The `CNAME`
41+
file ships in `public/`.
42+
43+
## License
44+
45+
MIT

blog/astro.config.mjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// @ts-check
2+
import { defineConfig } from 'astro/config';
3+
4+
export default defineConfig({
5+
site: 'https://blog.luminusos.org',
6+
trailingSlash: 'ignore',
7+
});

0 commit comments

Comments
 (0)