diff --git a/docs/.vitepress/sidebar.ts b/docs/.vitepress/sidebar.ts index c669ad4..f0d3fec 100644 --- a/docs/.vitepress/sidebar.ts +++ b/docs/.vitepress/sidebar.ts @@ -19,31 +19,59 @@ export function generateDocumentationSidebar(): any { prefixSeparator: '/', }); - // Post-process sidebar to fix folder titles for single-file directories - // When a folder only has index.md, vitepress-sidebar may not apply the frontmatter title correctly + // Post-process sidebar to fix folder titles and extract descriptions from frontmatter const fixFolderTitles = (items: any[]): any[] => { return items.map(item => { + let frontmatter: Record | undefined; + if (item.link && item.link.endsWith('/')) { - // This is a folder link - try to read title from its index.md + // This is a folder link - read frontmatter from its index.md const indexPath = path.join('docs', item.link, 'index.md'); if (fs.existsSync(indexPath)) { try { const content = fs.readFileSync(indexPath, 'utf-8'); - const { data } = matter(content); - if (data.title) { - item.text = data.title; + frontmatter = matter(content).data; + if (frontmatter?.title) { + item.text = frontmatter.title; } } catch (err) { // Ignore errors, keep the original text } } + } else if (item.link && item.link.endsWith('.md')) { + // This is a file link - read frontmatter from the page + const pagePath = path.join('docs', item.link); + if (fs.existsSync(pagePath)) { + try { + const content = fs.readFileSync(pagePath, 'utf-8'); + frontmatter = matter(content).data; + } catch (err) { + // Ignore errors + } + } + } else if (item.link && !item.link.includes('.')) { + // Link has no extension (vitepress-sidebar strips .md for leaf pages) + // Try appending .md to find the source file + const pagePath = path.join('docs', item.link + '.md'); + if (fs.existsSync(pagePath)) { + try { + const content = fs.readFileSync(pagePath, 'utf-8'); + frontmatter = matter(content).data; + } catch (err) { + // Ignore errors + } + } + } + + if (frontmatter?.description) { + item.description = frontmatter.description; } - + // Recursively fix nested items if (item.items && Array.isArray(item.items)) { item.items = fixFolderTitles(item.items); } - + return item; }); }; diff --git a/docs/.vitepress/theme/components/SectionIndex.vue b/docs/.vitepress/theme/components/SectionIndex.vue index 1cb243c..40d659c 100644 --- a/docs/.vitepress/theme/components/SectionIndex.vue +++ b/docs/.vitepress/theme/components/SectionIndex.vue @@ -2,21 +2,25 @@ import { useData } from "vitepress"; import { computed } from "vue"; -const { page, theme } = useData(); +const { page, theme, frontmatter } = useData(); interface SidebarItem { text: string; + description?: string; link?: string; items?: SidebarItem[]; } interface TreeNode { text: string; + description?: string; link?: string; depth: number; children?: TreeNode[]; } +const showDescriptions = computed(() => frontmatter.value.overviewDescriptions !== false); + // Get the current directory path from the current page // e.g., 'how-to/' for how-to/index.md or 'how-to/platform-specific/' for how-to/platform-specific/index.md const currentDirectory = computed(() => { @@ -103,6 +107,7 @@ const sectionItems = computed(() => { } flattened.push({ text: item.text, + description: item.description, link: formattedLink, depth: 2, // Treat as depth 2 (child of sub-group) }); @@ -139,6 +144,7 @@ const sectionItems = computed(() => { } nodes.push({ text: item.text, + description: item.description, link: formattedLink, depth, children, @@ -154,6 +160,7 @@ const sectionItems = computed(() => { } nodes.push({ text: item.text, + description: item.description, link: formattedLink, depth, }); @@ -187,15 +194,21 @@ const sectionName = computed(() => { class="section-item" :class="`depth-${node.depth}`"> {{ node.text }} + {{ node.description }}
- {{ - node.text - }} + {{ node.text }}
@@ -210,14 +223,20 @@ const sectionName = computed(() => { class="section-item" :class="`depth-${child.depth}`"> {{ child.text }} + {{ child.description }}
- {{ - child.text - }} + {{ child.text }}
@@ -229,6 +248,9 @@ const sectionName = computed(() => { class="section-item" :class="`depth-${grandchild.depth}`"> {{ grandchild.text }} + {{ grandchild.description }}
@@ -368,6 +390,19 @@ const sectionName = computed(() => { transform: translateX(2px); } +.section-item-description { + display: block; + font-size: 0.85rem; + color: var(--vp-c-text-2); + line-height: 1.5; + padding: 0 0.75rem; + margin-top: 0.25rem; +} + +.section-group-header .section-item-description { + padding: 0; +} + /* Depth-specific styling for items */ .section-item.depth-1 a { font-size: 0.95rem; diff --git a/docs/explanation/documentation/aggregation-architecture.md b/docs/explanation/documentation/aggregation-architecture.md index 5d775f1..68ed350 100644 --- a/docs/explanation/documentation/aggregation-architecture.md +++ b/docs/explanation/documentation/aggregation-architecture.md @@ -279,7 +279,6 @@ Temp Directory Docs Output ## See Also -- [Getting Started Tutorial](../../tutorials/documentation/index.md) — Step-by-step guide to contributing documentation - [Adding Repositories](../../how-to/documentation/adding-repos.md) — How to add new repositories to the aggregation - [Technical Reference](../../reference/documentation/technical.md) — Source code and API documentation - [Configuration Reference](../../reference/documentation/configuration.md) — Complete configuration options diff --git a/docs/how-to/documentation/adding-repos.md b/docs/how-to/documentation/adding-repos.md index 49c8d9b..29ca354 100644 --- a/docs/how-to/documentation/adding-repos.md +++ b/docs/how-to/documentation/adding-repos.md @@ -248,7 +248,6 @@ Here's a complete configuration: ## See Also -- [Getting Started Tutorial](../../tutorials/documentation/index.md) — Step-by-step guide to contributing documentation - [Adding Repositories](../../how-to/documentation/adding-repos.md) — How to add new repositories to the aggregation - [Technical Reference](../../reference/documentation/technical.md) — Source code and API documentation - [Configuration Reference](../../reference/documentation/configuration.md) — Complete configuration options diff --git a/docs/overview/index.md b/docs/overview/index.md index 444dc5c..0bd1093 100644 --- a/docs/overview/index.md +++ b/docs/overview/index.md @@ -4,157 +4,66 @@ description: "How Garden Linux documentation is organized" order: 1 --- -# How Our Documentation Is Organized +# Documentation Overview -Garden Linux documentation is organized to help you find what you need quickly, whether you're learning the basics, solving a specific problem, understanding concepts, or looking up technical details. +Garden Linux documentation uses the [Diátaxis framework](https://diataxis.fr/) to organize content by what you need, not by your role. This page explains the structure and helps you find the right section. -## Documentation Structure +## Where to Start -Our documentation follows a proven framework that organizes content by **what you need**, not by your role. Here's how to navigate: +| Your Situation | Where to Go | +| --- | --- | +| New to Garden Linux | Start with [Tutorials](/tutorials/) | +| Deploy on a specific platform | Go to [Platform-Specific Guides](/how-to/platform-specific/) | +| Customize Garden Linux | Check [Customization Guides](/how-to/customization/) | +| Understand concepts | Read [Explanation](/explanation/) | +| Look up specifications | Search [Reference](/reference/) | +| Contribute to the project | See [Contributing](/contributing/) | -### 🎓 Tutorials — "I want to learn" +## Tutorials -**Purpose**: Learn by doing with step-by-step guides -**Best for**: Newcomers, those trying Garden Linux for the first time +Learning-oriented guides that walk you through complete workflows. Tutorials assume no prior experience, provide complete commands, and take 15--30 minutes to complete. -Tutorials are hands-on, learning-oriented guides that walk you through complete workflows from start to finish. Each tutorial: +**Start here**: [Tutorials](/tutorials/) -- Starts from zero knowledge -- Provides complete, copy-pasteable commands -- Guarantees success if followed exactly -- Takes 15-30 minutes to complete +Tutorials cover local environments (Kernel-based Virtual Machine (KVM), Lima), cloud platforms (Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), OpenStack), containers (Open Container Initiative (OCI) Image Format), and bare-metal deployments. -**Start here**: [First Boot Tutorials](/tutorials/) +## How-to Guides -**Examples**: - -- First Boot on AWS, Azure, GCP, KVM, Lima, etc. -- Complete walkthroughs for each platform - ---- - -### 🛠️ How-to Guides — "I want to accomplish a task" - -**Purpose**: Step-by-step solutions for specific problems -**Best for**: Users who know what they want to do - -How-to guides are goal-oriented instructions that help you accomplish specific tasks. They assume some familiarity with Garden Linux and focus on practical solutions. +Task-oriented directions for solving specific problems. These guides assume some familiarity with Garden Linux and focus on practical solutions. **Start here**: [How-to Guides](/how-to/) -**Categories**: - -- **Getting Started**: Choosing flavors, getting images, initial configuration -- **Platform-Specific**: AWS, Azure, GCP, KVM, OpenStack, Lima, OCI, VMware, Bare Metal -- **Security**: SSH hardening, Secure Boot, time configuration -- **Customization**: Building features and flavors, testing builds -- **System Management**: Updates, users, disks, APT repositories - ---- +Topics include [getting images](/how-to/getting-images), [choosing flavors](/how-to/choosing-flavors), [initial configuration](/how-to/initial-configuration), [building images](/how-to/building-images), [testing images](/how-to/testing-images), [platform-specific deployment](/how-to/platform-specific/), [security hardening](/how-to/security/), and [customization](/how-to/customization/). -### 💡 Explanation — "I want to understand" +## Explanation -**Purpose**: Background, concepts, and design philosophy -**Best for**: Users who want to understand _why_ and _how_ things work - -Explanations provide context and background to help you think about Garden Linux. They're discursive and conceptual rather than task-focused. +Understanding-oriented articles that clarify concepts, provide background, and explain how Garden Linux works. **Start here**: [Explanation](/explanation/) -**Topics**: - -- **Use Cases**: Why use Garden Linux? What problems does it solve? -- **Flavors and Features**: How the build system works -- **Image Types**: Different formats and boot modes -- **Architecture**: System design and components -- **Security Posture**: Security philosophy and approach -- **Release Cadence**: Release lifecycle and versioning -- **Design Decisions**: Key architectural choices and rationale - ---- - -### 📚 Reference — "I want to look something up" +Topics include [use cases](/explanation/use-cases), [flavors and features](/explanation/flavors-and-features), [image types](/explanation/image-types), [architecture](/explanation/architecture), [security posture](/explanation/security-posture), [release cadence](/explanation/release-cadence), and [design decisions](/explanation/design-decisions). -**Purpose**: Technical specifications and lookup tables -**Best for**: Users who need accurate, detailed information +## Reference -Reference documentation provides concise, accurate technical details organized for quick lookup. +Information-oriented technical descriptions, specifications, and lookup tables for precise technical details. **Start here**: [Reference](/reference/) -**Includes**: - -- **Flavor Matrix**: Complete table of all available flavors -- **Feature Glossary**: All features documented -- **Platform Compatibility**: Which platforms support which features -- **Image Formats**: Naming conventions and specifications -- **Kernels and Modules**: Kernel versions and module support -- **Releases**: Maintained releases and release notes -- **API Documentation**: CLI and Python library reference - ---- +Includes the [flavor matrix](/reference/flavor-matrix), [glossary](/reference/glossary), [platform compatibility](/reference/platform-compatibility), [image formats](/reference/image-formats), [kernels and modules](/reference/kernels-and-modules), [release information](/reference/releases/), Architecture Decision Records (ADRs) in the [ADR catalog](/reference/adr/), and [supporting tools documentation](/reference/supporting_tools/) (builder, Python Garden Linux library). -### 🤝 Contributing +## Contributing -**Purpose**: Guidelines for contributing to Garden Linux -**Best for**: Contributors to code or documentation - -Contributing guides explain how to participate in Garden Linux development. +Guidelines for contributing to Garden Linux, whether you are fixing a bug, adding a feature, or improving documentation. **Start here**: [Contributing](/contributing/) -**Topics**: - -- Documentation guide -- Building and testing images -- Contribution workflow -- Code style and conventions -- Dependency policy - ---- - -## Where Should I Start? - -Choose your path based on your situation: - -| Your Situation | Where to Go | -| ------------------------------------------ | --------------------------------------------------------------------- | -| **New to Garden Linux?** | Start with [Tutorials](/tutorials/) to learn the basics | -| **Need to deploy on a specific platform?** | Go to [How-to Guides → Platform-Specific](/how-to/platform-specific/) | -| **Want to customize Garden Linux?** | Check [How-to Guides → Customization](/how-to/customization/) | -| **Need to understand concepts?** | Read [Explanation](/explanation/) for background | -| **Looking for specific details?** | Search [Reference](/reference/) documentation | -| **Want to contribute?** | See [Contributing](/contributing/) guidelines | - -## Documentation Principles - -### Content Types - -Each section has a specific purpose: - -- **Tutorials** teach through practice -- **How-to guides** solve specific problems -- **Explanations** provide understanding -- **Reference** offers precise specifications - -### Finding Related Content - -Documentation types are interconnected: - -- **Tutorials** link to relevant **how-to guides** for variations -- **How-to guides** link to **explanations** for background -- **Explanations** link to **reference** for detailed specs -- **Reference** links to **tutorials** and **how-to guides** for examples - -### Getting Help - -If you can't find what you need: +Covers the documentation guide, development [workflow](/contributing/workflow), [security](/contributing/security) practices, and [testing](/contributing/testing/) (developing tests, running tests, test coverage). -1. Use the **search** feature (top navigation) -2. Check the [FAQ or troubleshooting guides](/how-to/) (if applicable) -3. Visit the [Garden Linux GitHub repository](https://github.com/gardenlinux/gardenlinux) -4. Open an issue or discussion on GitHub +## Getting Help -## About This Organization +If you cannot find what you need: -This documentation structure is based on the [Diátaxis framework](https://diataxis.fr/), a systematic approach to technical documentation that organizes content by user needs rather than by topics or roles. This makes it easier to find the right information at the right time. +1. Use the search feature in the top navigation +1. Check the [Troubleshooting](/how-to/troubleshooting/) guide +1. Visit the [Garden Linux GitHub repository](https://github.com/gardenlinux/gardenlinux) +1. Open an issue or discussion on GitHub diff --git a/docs/reference/documentation/configuration.md b/docs/reference/documentation/configuration.md index db68859..eef5d4d 100644 --- a/docs/reference/documentation/configuration.md +++ b/docs/reference/documentation/configuration.md @@ -290,9 +290,15 @@ When using `github_target_path`, you can include additional metadata: These help create source links in the documentation. +### Page Display Fields + +- **`description`**: A short summary of the page. Used as the `` description by VitePress and shown in section index listings when `overviewDescriptions` is enabled on the parent page. +- **`overviewDescriptions`**: Boolean controlling whether the `` component displays child page descriptions. Defaults to `true`. Set to `false` on an index page to hide descriptions for its listing. +- **`order`**: Numeric value for controlling sort order in the sidebar and section listings. Lower values appear first. +- **`migration_status`**: Status for content migration (e.g., `"new"`, `"adapt"`, `"aggregate"`). + ## See Also -- [Getting Started](../../tutorials/documentation/index.md) — Initial setup guide - [Adding Repositories](../../how-to/documentation/adding-repos.md) — How to add new repos - [Technical Reference](./technical.md) — Source code documentation - [Architecture](../../explanation/documentation/aggregation-architecture.md) — System design diff --git a/docs/reference/documentation/testing.md b/docs/reference/documentation/testing.md index 6a72bf4..b05c0e2 100644 --- a/docs/reference/documentation/testing.md +++ b/docs/reference/documentation/testing.md @@ -224,7 +224,6 @@ Integration tests may fail if: ## See Also -- [Getting Started Tutorial](../../tutorials/documentation/index.md) — Step-by-step guide to contributing documentation - [Adding Repositories](../../how-to/documentation/adding-repos.md) — How to add new repositories to the aggregation - [Technical Reference](../../reference/documentation/technical.md) — Source code and API documentation - [Configuration Reference](../../reference/documentation/configuration.md) — Complete configuration options diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md index a1a48c3..13ee21a 100644 --- a/docs/reference/glossary.md +++ b/docs/reference/glossary.md @@ -213,9 +213,9 @@ Automated builds of Garden Linux that occur on a regular schedule from the lates ## O -### OCI +### OCI (OCI Image Format) -Oracle Cloud Infrastructure. A supported cloud platform for Garden Linux. +OCI Image Format. A container image specification defined by the Open Container Initiative. Garden Linux provides OCI-formatted container images. See [First Boot as OCI image](../tutorials/container/first-boot-oci.md) and the [OCI platform guide](../how-to/platform-specific/oci.md) for usage details. ### OpenSSL diff --git a/docs/tutorials/documentation/index.md b/docs/tutorials/documentation/index.md deleted file mode 100644 index 41e064a..0000000 --- a/docs/tutorials/documentation/index.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: "Contributing to the Garden Linux Documentation" -description: "Learn how to contribute to Garden Linux documentation — from quick edits to working with the aggregation system locally" ---- - -# Contributing to the Garden Linux Documentation - -Garden Linux documentation is published at **https://gardenlinux-docs.netlify.app/** and combines content from multiple repositories into a unified documentation site. - -> **Source Repository:** [gardenlinux/docs-ng](https://github.com/gardenlinux/docs-ng) - -## Quick Edits — The Easy Way - -The easiest way to improve the documentation is directly from the published site: - -1. **Navigate to any page** on https://gardenlinux-docs.netlify.app/ -2. **Scroll to the bottom** of the page -3. **Click "Edit this page on GitHub"** — this opens the source file in the correct repository -4. **Make your edits** using GitHub's web editor -5. **Submit a pull request** — the changes will be automatically aggregated into the documentation site - -### Why This Works - -The "Edit this page on GitHub" button is intelligent and takes you to the correct source location: - -- For content from the **main gardenlinux repository**, it links to `gardenlinux/gardenlinux/docs/...` -- For content from the **builder repository**, it links to `gardenlinux/builder/docs/...` -- For content from the **python-gardenlinux-lib repository**, it links to `gardenlinux/python-gardenlinux-lib/docs/...` -- For documentation-specific pages, it links to `gardenlinux/docs-ng/docs/...` - -**You don't need to understand the aggregation system to contribute!** The system automatically detects changes in source repositories and rebuilds the unified documentation site. - -This works because the VitePress configuration uses frontmatter metadata (`github_org`, `github_repo`, `github_source_path`, `github_branch`) embedded in each page to resolve the correct source location. - -This approach is perfect for: - -- Fixing typos -- Clarifying explanations -- Adding missing information -- Updating outdated content - -## Documentation Aggregation System - -The documentation aggregation system powers the unified Garden Linux documentation site. It aggregates content from multiple source repositories (gardenlinux, builder, python-gardenlinux-lib) into a cohesive VitePress site. - -### Key Features - -- **Targeted Documentation**: Files with `github_target_path` frontmatter are automatically placed into the correct Diataxis categories -- **Project Mirroring**: Complete repository documentation mirrored under `docs/projects//` -- **Commit Locking**: Reproducible builds with locked commit hashes -- **Media Handling**: Automatic discovery and copying of media directories -- **Link Rewriting**: Automatic link transformation for cross-repository references - -### Documentation Paths - -The system supports two complementary documentation paths: - -1. **Targeted Documentation** — Files with `github_target_path` frontmatter → `docs/tutorials/`, `docs/how-to/`, etc. -2. **Project Mirror** — All repo docs mirrored under `docs/projects//` - -### Architecture Overview - -``` -Source Repos → Fetch (git/local) → Transform → docs/ → VitePress -``` - -The aggregation pipeline consists of four main stages: - -1. **Fetch** — `src/aggregation/fetcher.py` pulls docs via git sparse checkout or local copy -2. **Transform** — `src/aggregation/transformer.py` rewrites links, fixes frontmatter -3. **Structure** — `src/aggregation/structure.py` reorganizes directories and copies media -4. **Output** — VitePress builds the site - -### Working with the Documentation System Locally - -For more substantial changes — like adding new pages, restructuring content, or working on the aggregation system itself — you'll want to set up the documentation system locally. - -#### Prerequisites - -- Python 3.x -- pnpm (for VitePress) -- Git - -#### Step 1: Clone the Repository - -```bash -git clone https://github.com/gardenlinux/docs-ng.git -cd docs-ng -``` - -#### Step 2: Install Dependencies - -```bash -pnpm install -``` - -This installs VitePress and other Node.js dependencies needed to build the documentation site. - -#### Step 3: Aggregate Documentation - -##### From Remote Repositories (Production) - -Aggregate from locked commits in `repos-config.json`: - -```bash -make aggregate -``` - -This fetches documentation from the configured repositories at their locked commit hashes. - -##### From Local Repositories (Development) - -For local development, use `repos-config.local.json` with `file://` URLs: - -```bash -make aggregate-local -``` - -This copies documentation from local repositories without using git. - -#### Step 4: Start the Development Server - -```bash -make dev -``` - -The documentation site will be available at `http://localhost:5173`. - -#### Step 5: Make Changes - -As you work on documentation in source repositories: - -1. Make changes to markdown files in source repos -2. Run `make aggregate-local` to update the aggregated docs -3. The dev server will hot-reload automatically - -#### Step 6: Build for Production - -When ready to deploy: - -```bash -make build -``` - -This creates a production build in `docs/.vitepress/dist/`. - -### Common Workflows - -#### Updating a Single Repository - -```bash -make aggregate-repo REPO=gardenlinux -``` - -#### Updating Lock Files - -To fetch the latest commits and update `repos-config.json`: - -```bash -make aggregate-update -``` - -#### Running Tests - -```bash -make test -``` - -### Project Structure - -#### Repository Structure (docs-ng) - -``` -docs-ng/ -├── repos-config.json # Repository configuration -├── repos-config.local.json # Local development config -├── src/ # Source code -│ ├── aggregate.py # CLI entry point -│ └── aggregation/ # Core package -├── tests/ # Test suite -└── docs/ # Generated documentation - ├── projects/ # Mirrored repository docs - ├── tutorials/ # Aggregated tutorials - ├── how-to/ # Aggregated guides - ├── explanation/ # Aggregated explanations - └── reference/ # Aggregated reference docs -``` - -#### After Aggregation - -After running the aggregation, your docs directory will look like: - -``` -docs/ -├── projects/ # Mirrored repository docs -│ ├── gardenlinux/ -│ ├── builder/ -│ └── python-gardenlinux-lib/ -├── tutorials/ # Aggregated tutorials -├── how-to/ # Aggregated guides -├── explanation/ # Aggregated explanations -├── reference/ # Aggregated reference -└── contributing/ # Aggregated contributing docs -``` - -### Troubleshooting - -#### Clean Build - -If you encounter issues, try a clean build: - -```bash -make clean -make aggregate -make dev -``` - -#### Check Dependencies - -Ensure all dependencies are installed: - -```bash -pnpm install -python3 --version # Should be 3.x -``` - -#### Verify Configuration - -Check that `repos-config.json` or `repos-config.local.json` is properly configured. See the [configuration reference](../../reference/documentation/configuration.md) for details. - -## Next Steps - -- [Adding Repositories](../../how-to/documentation/adding-repos.md) — How to add new repositories to the aggregation -- [Technical Reference](../../reference/documentation/technical.md) — Source code and API documentation -- [Configuration Reference](../../reference/documentation/configuration.md) — Complete configuration options -- [Architecture Explanation](../../explanation/documentation/aggregation-architecture.md) — Deep dive into how the documentation aggregation system works diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 8ebf8c5..13944fa 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -7,13 +7,8 @@ migration_source: "" migration_issue: "" migration_stakeholder: "@tmang0ld, @yeoldegrove, @ByteOtter" migration_approved: false -github_org: gardenlinux -github_repo: gardenlinux -github_source_path: docs/tutorials/index.md -github_target_path: docs/tutorials/index.md --- - # Tutorials Tutorials are **learning-oriented** lessons that take you through a series of steps to complete a project. They are designed to help you learn by doing, providing a safe environment to get started with Garden Linux. @@ -21,24 +16,14 @@ Tutorials are **learning-oriented** lessons that take you through a series of st :::tip Recommended First Tutorial Want to try Garden Linux right now with zero setup cost? -- **macOS or Linux**: [First Boot on Lima](./local/first-boot-lima.md) -- **Any OS with Docker**: [First Boot as OCI Container](./container/first-boot-oci.md) +- **Linux**: [First Boot on KVM](./local/first-boot-kvm.md) or [First Boot on Lima](./local/first-boot-lima.md) +- **macOS**: [First Boot on Lima](./local/first-boot-lima.md) +- **Any OS with Container Engine**: [First Boot as OCI Container](./container/first-boot-oci.md) -Both tutorials run entirely on your workstation in under 5 minutes. +All three tutorials run entirely on your workstation in under 5 minutes. ::: ---- - -## Tutorial Categories - -Browse tutorials by deployment target: - -- [**Local**](./local/index.md) — Run Garden Linux on your workstation (Lima, KVM) -- [**Container**](./container/index.md) — Run as an OCI container (Docker/Podman) -- [**Cloud**](./cloud/index.md) — Deploy to cloud providers (AWS, Azure, GCP, OpenStack) -- [**On-Premises**](./on-premises/index.md) — Install on physical hardware - ---- + ## About Tutorials diff --git a/repos-config.json b/repos-config.json index da5a508..9135e71 100644 --- a/repos-config.json +++ b/repos-config.json @@ -6,7 +6,7 @@ "docs_path": "docs", "target_path": "projects/gardenlinux", "ref": "docs-ng", - "commit": "421e067d71fd118f58ec5126faedd028e623ad8d", + "commit": "25510205669ea1b7f3b1f4dcd39d99ead9a92352", "root_files": [ "CONTRIBUTING.md", "SECURITY.md"