Files
zmk/docs/docusaurus.config.js
Joel Spadin 930b5cc058 docs: Replace user setup script with ZMK CLI (#3137)
This deletes the Bash and PowerShell setup scripts in favor of using
ZMK CLI. The old setup scripts are broken, since the config repo
template uses ZMK version 0.3, while the setup scripts use hardware
metadata from the main branch. ZMK CLI doesn't have this issue, because
it clones the version of ZMK listed in the config repo to get hardware
metadata.

Much of the "Installing ZMK" page has been rewritten to give
instructions for installing ZMK CLI and using it to create and modify
a config repo. The previously-hidden page on ZMK CLI has been added to
the sidebar and repurposed into general documentation for the tool.
2025-12-14 16:20:35 -06:00

231 lines
6.4 KiB
JavaScript

const { execSync } = require("child_process");
const path = require("path");
const theme = require("./src/theme/prism/themes/github");
const darkTheme = require("./src/theme/prism/themes/github-dark-dimmed");
const { releaseVersions } = require("./zmk-release-versions.json");
const gitBranch =
process.env.BRANCH ||
execSync("git branch --show-current", { encoding: "utf-8" }).trim();
const isDevelopmentVersion =
gitBranch === "main" || !/^v\d+\.\d+-branch$/.test(gitBranch);
const versionNavbarItems = [
{
label: "Pre-Release",
description: "Current active development branch (main)",
href: "https://zmk.dev/docs/",
},
...releaseVersions.map((r) => ({
label: "v" + r,
description: "Stable release v" + r,
href: `https://v${r.replaceAll(".", "-")}-branch.zmk.dev/docs/`,
})),
];
const versionDropDownLabel = (
isDevelopmentVersion
? versionNavbarItems[0]
: versionNavbarItems.find((item) => {
return item.label === gitBranch.replace("-branch", "");
})
).label;
module.exports = {
title: "ZMK Firmware",
tagline: "Modern, open source keyboard firmware",
url: "https://zmk.dev",
baseUrl: "/",
favicon: "img/favicon.ico",
trailingSlash: "false",
organizationName: "zmkfirmware", // Usually your GitHub org/user name.
projectName: "zmk", // Usually your repo name.
customFields: {
isDevelopmentVersion,
releaseVersions,
},
plugins: [
"@docusaurus/theme-mermaid",
path.resolve(__dirname, "src/docusaurus-tree-sitter-plugin"),
path.resolve(__dirname, "src/hardware-metadata-collection-plugin"),
path.resolve(__dirname, "src/hardware-metadata-static-plugin"),
path.resolve(__dirname, "src/hardware-schema-typescript-plugin"),
],
themeConfig: {
colorMode: {
respectPrefersColorScheme: true,
},
prism: {
additionalLanguages: [
"bash",
"c",
"cmake",
"ini",
"linker-script",
"log",
"powershell",
"diff",
],
theme,
darkTheme,
},
// sidebarCollapsible: false,
navbar: {
title: "ZMK Firmware",
logo: {
alt: "ZMK Logo",
src: "img/zmk_logo.svg",
},
items: [
{
to: "docs",
activeBasePath: "docs",
label: "Docs",
position: "left",
},
isDevelopmentVersion
? { to: "blog", label: "Blog", position: "left" }
: { href: "https://zmk.dev/blog", label: "Blog", position: "left" },
{
type: "dropdown",
label: "Tools",
position: "left",
items: [
{
to: "power-profiler",
label: "Power Profiler",
},
{
to: "keymap-upgrader",
label: "Keymap Upgrader",
},
],
},
{
type: "dropdown",
label: versionDropDownLabel,
position: "right",
items: versionNavbarItems,
},
{
href: "https://zmk.studio/",
label: "ZMK Studio",
position: "right",
},
{
href: "https://github.com/zmkfirmware/zmk",
"aria-label": "ZMK GitHub Repository",
className: "header-github-link",
position: "right",
},
],
},
footer: {
style: "dark",
links: [
{
title: "Docs",
items: [
{
label: "Getting Started",
to: "docs/",
},
{
label: "Development",
to: "docs/development/contributing/clean-room",
},
],
},
{
title: "Community",
items: [
// {
// label: "Stack Overflow",
// href: "https://stackoverflow.com/questions/tagged/docusaurus",
// },
{
label: "Discord",
href:
(process.env.URL || "https://zmk.dev") +
"/community/discord/invite",
},
{
label: "Mastodon",
href: "https://fosstodon.org/@zmk",
},
{
label: "Twitter",
href: "https://twitter.com/ZMKFirmware",
},
],
},
{
title: "More",
items: [
{
label: "Blog",
to: "blog",
},
{
label: "GitHub",
href: "https://github.com/zmkfirmware/zmk",
},
{
html: `
<a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">
<img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" />
</a>
`,
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} ZMK Project Contributors. <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /></a>`,
},
algolia: {
appId: "USXLDJ14JE",
apiKey: "384a3bd2d50136c9dc8c8ddfe1b3a4b2",
indexName: "zmkfirmware",
},
},
presets: [
[
"@docusaurus/preset-classic",
{
googleAnalytics: {
trackingID: "UA-145201102-2",
anonymizeIP: true,
},
docs: {
// Removed (for now) until we have content for each level of the generated breadcrumbs
breadcrumbs: false,
// It is recommended to set document id as docs home page (`docs/` path).
sidebarPath: require.resolve("./sidebars.js"),
// Please change this to your repo.
editUrl: "https://github.com/zmkfirmware/zmk/edit/main/docs/",
},
blog: {
showReadingTime: true,
// Please change this to your repo.
editUrl: "https://github.com/zmkfirmware/zmk/edit/main/docs/",
blogSidebarCount: "ALL",
},
theme: {
customCss: [
require.resolve("./src/css/custom.css"),
require.resolve("./src/css/codes.css"),
],
},
},
],
],
markdown: {
format: "detect",
mermaid: true,
mdx1Compat: {
comments: false,
admonitions: false,
headingIds: true,
},
},
};