Documentation site
The documentation is a VitePress site in docs/. It is published to https://unixnu.com.
Requirements
| Tool | Version |
|---|---|
| Node.js | 22 or newer |
| npm | 10 or newer |
Local development
sh
cd docs
npm install
npm run devThe site runs at the URL printed by VitePress. npm run build writes the static site to docs/.vitepress/dist. npm run preview serves the built site.
Structure
docs/
.vitepress/
config.mts site configuration
theme/ custom CSS
public/
CNAME custom domain
logo-light.svg
logo-dark.svg
guide/ getting started and build
concepts/ boot chain, payload, prelink, userdata, security
porting/ device porting
drivers/ UEFI, XNU and kext drivers
xnu/ source, patches, pages, boot arguments
devices/ device pages and examples
reference/ command line, configuration, outputs, QEMU, glossary
contributing/ this section
zh/ Simplified Chinese localeAdd a page
- Create the Markdown file under the matching section.
- Add the page to the sidebar in
docs/.vitepress/config.mts. - Add the Chinese page under
docs/zh/and to the Chinese sidebar. - Run
npm run buildand fix broken links. - Add the language switcher entry when a new section starts.
Language editions
The site has two locales:
| Locale | Path | Language |
|---|---|---|
| Root | / | English |
zh | /zh/ | Simplified Chinese |
Both editions carry the same pages. A change to one page updates both editions in the same pull request.
Writing rules
- Use standard technical terms.
- State the current behavior directly.
- Avoid em-dashes and en-dashes.
- Avoid metaphors.
- Use neutral headings.
- Keep the page focused on one subject.
- Use tables for references and lists for steps.
- Put device-specific values in the device page.
- Put a concrete command in every procedure.
Deploy
The workflow .github/workflows/docs.yml builds the site on every push to main that touches docs/ and deploys it with GitHub Pages.
The site needs:
- GitHub Pages enabled with
GitHub Actionsas the source. - The custom domain
unixnu.comin the repository Pages settings. - DNS records for the domain.
docs/public/CNAME contains:
unixnu.comDNS for an apex domain:
| Type | Name | Value |
|---|---|---|
| A | @ | 185.199.108.153 |
| A | @ | 185.199.109.153 |
| A | @ | 185.199.110.153 |
| A | @ | 185.199.111.153 |
| CNAME | www | unixnu.github.io |
GitHub Pages also serves the site over IPv6:
| Type | Name | Value |
|---|---|---|
| AAAA | @ | 2606:50c0:8000::153 |
| AAAA | @ | 2606:50c0:8001::153 |
| AAAA | @ | 2606:50c0:8002::153 |
| AAAA | @ | 2606:50c0:8003::153 |
Enable Enforce HTTPS after the certificate is issued.
Badge
The README uses:
markdown
[](https://unixnu.com)Link check
sh
cd docs
npm run buildVitePress fails the build on a broken internal link.