From 13fdc3a7a12cafa0e68e81606cbe9acebae7ad57 Mon Sep 17 00:00:00 2001 From: UGA Innovation Factory Date: Tue, 27 Jan 2026 14:25:37 -0500 Subject: [PATCH] feat: Update auto-docs --- parts/docs.nix | 86 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 12 deletions(-) diff --git a/parts/docs.nix b/parts/docs.nix index 36505d6..4c476a7 100644 --- a/parts/docs.nix +++ b/parts/docs.nix @@ -20,11 +20,61 @@ let in athenixOptions; + # Generate wiki home page + wikiHome = pkgs.writeText "Home.md" '' + # Athenix - NixOS Fleet Management + + Athenix is a NixOS configuration system for managing the UGA Innovation Factory's fleet of devices using Nix flakes and a custom configuration framework. + + ## Quick Start + + - [Configuration Options](Configuration-Options) - All available `athenix.*` options + - [User Guide](User-Configuration) - Setting up user accounts and dotfiles + - [Building](Building) - Creating installers and system images + - [Development](Development) - Contributing to Athenix + + ## Features + + - **Inventory-based fleet management** - Define entire device fleets in a single file + - **Multiple hardware types** - Desktops, laptops, Surface tablets, LXC containers, WSL + - **Flexible software configurations** - Desktop, headless, kiosk, and builder modes + - **External module support** - Load user dotfiles and system configs from Git repos + - **Declarative everything** - Reproducible builds with pinned dependencies + + ## Software Types + + Enable different system configurations: + + - **desktop** - Full KDE Plasma 6 desktop environment + - **headless** - Minimal server/container configuration + - **tablet-kiosk** - Touch-optimized kiosk for Surface tablets + - **stateless-kiosk** - Diskless PXE boot kiosk + - **builders** - CI/CD build server with Gitea Actions runner + + ## Hardware Types + + - **nix-desktop** - Desktop workstations + - **nix-laptop** - Laptop computers + - **nix-surface** - Microsoft Surface Pro tablets + - **nix-lxc** - LXC containers (Proxmox) + - **nix-wsl** - Windows Subsystem for Linux + - **nix-ephemeral** - Stateless systems (PXE boot) + + ## Documentation + + Browse the documentation using the sidebar or start with: + + - [README](README) - Repository overview and getting started + - [Configuration Options](Configuration-Options) - Complete option reference + - [Inventory Guide](Inventory) - Managing the device fleet + - [External Modules](External-Modules) - Using external configurations + ''; + # Generate markdown documentation from options optionsToMarkdown = options: pkgs.writeText "options.md" '' - # Athenix Configuration Options + # Configuration Options This document describes all available configuration options in the Athenix namespace. @@ -77,18 +127,30 @@ in nativeBuildInputs = [ pkgs.jq ]; } '' - mkdir -p $out - - # Copy existing documentation - ${if builtins.pathExists ../README.md then "cp ${../README.md} $out/README.md" else ""} - ${if builtins.pathExists ../docs then "cp -r ${../docs} $out/guides" else ""} - - # Generate options reference - cat > $out/OPTIONS.md << 'EOF' + mkdir -p $out + + # Generate wiki home page + cat > $out/Home.md << 'EOF' + ${builtins.readFile wikiHome} + EOF + + # Copy main README + cp ${../README.md} $out/README.md + + # Copy documentation with wiki-friendly names + cp ${../docs/BUILDING.md} $out/Building.md + cp ${../docs/DEVELOPMENT.md} $out/Development.md + cp ${../docs/EXTERNAL_MODULES.md} $out/External-Modules.md + cp ${../docs/INVENTORY.md} $out/Inventory.md + cp ${../docs/NAMESPACE.md} $out/Namespace.md + cp ${../docs/USER_CONFIGURATION.md} $out/User-Configuration.md + + # Generate options reference + cat > $out/Configuration-Options.md << 'EOF' ${builtins.readFile (optionsToMarkdown (getAthenixOptions "nix-desktop1"))} - EOF - - echo "Documentation generated in $out" + EOF + + echo "Documentation generated in $out" ''; # Extract just the athenix namespace options as JSON