# homelab-docs-readme.nix - README generator CLI
{
writeShellScriptBin,
jq,
}:
writeShellScriptBin "homelab-docs-readme" ''
#!/usr/bin/env bash
set -euo pipefail
cat << 'EOF'
# Homelab Documentation
> Auto-generated documentation for the homelab deployment
>
> Generated on: $(date)
> Source: $(pwd)
## 📚 Documentation Files
This documentation is automatically generated from your colmena flake configuration.
### 📊 Overview Documents
- **[Fleet Overview](fleet-overview.md)** - High-level fleet statistics and service distribution
- **[Current Deployment](current-deployment.md)** - Current deployment state and node status
### 📖 Detailed Configuration
- **[Node Configurations](nodes.md)** - Per-node detailed configuration and services
- **[Service Configurations](services.md)** - Service configurations across the fleet
## 🚀 Quick Actions
### View Current Status
\`\`\`bash
# Service status across fleet (if homelab CLI is available)
homelab services --global
# Backup status
homelab backups --global
# Overall status
homelab status
\`\`\`
### Update Documentation
\`\`\`bash
# Regenerate all documentation
homelab-generate-docs ./docs
# Generate in different directory
homelab-generate-docs /path/to/output
\`\`\`
## 📋 Quick Stats
EOF
# Add live stats
quick_stats=$(colmena eval -E '{ nodes, pkgs, lib, ... }:
let
homelabNodes = lib.filterAttrs (name: node: node.config.homelab.enable or false) nodes;
in {
totalNodes = lib.length (lib.attrNames nodes);
homelabNodes = lib.length (lib.attrNames homelabNodes);
}')
total_nodes=$(echo "$quick_stats" | ${jq}/bin/jq -r '.totalNodes')
homelab_nodes=$(echo "$quick_stats" | ${jq}/bin/jq -r '.homelabNodes')
echo "- **Total Nodes**: $total_nodes"
echo "- **Homelab-Enabled Nodes**: $homelab_nodes"
echo "- **Generated**: $(date)"
echo
echo "## 🛠️ Management Tools"
echo
echo "### Documentation Commands"
echo "- \`homelab-generate-docs\` - Regenerate this documentation"
echo "- \`homelab-docs-fleet\` - Generate fleet overview only"
echo "- \`homelab-docs-nodes\` - Generate node configurations only"
echo "- \`homelab-docs-services\` - Generate service configurations only"
echo "- \`homelab-docs-deployment\` - Generate deployment state only"
echo
echo "### Colmena Commands"
echo "- \`colmena eval\` - Evaluate flake expressions"
echo "- \`colmena apply\` - Deploy configuration changes"
echo "- \`colmena build\` - Build configurations without deploying"
echo
echo "## 🎯 Integration with CI/CD"
echo
echo "### GitHub Actions Example"
echo
echo "\`\`\`yaml"
echo "name: Generate Documentation"
echo "on:"
echo " push:"
echo " branches: [ main ]"
echo ""
echo "jobs:"
echo " docs:"
echo " runs-on: ubuntu-latest"
echo " steps:"
echo " - uses: actions/checkout@v4"
echo " - uses: cachix/install-nix-action@v24"
echo " - name: Generate docs"
echo " run: nix develop --command homelab-generate-docs ./docs"
echo " - name: Commit docs"
echo " run: |"
echo " git add docs/"
echo " git commit -m \"docs: update homelab documentation\" || exit 0"
echo " git push"
echo "\`\`\`"
echo
echo "### Manual Generation"
echo
echo "\`\`\`bash"
echo "# From your homelab directory"
echo "nix develop"
echo "homelab-generate-docs ./docs"
echo "git add docs/ && git commit -m \"Update docs\""
echo "\`\`\`"
echo
echo "---"
echo
echo "*This documentation reflects the live state of your homelab deployment as evaluated by colmena.*"
''