Implements Phase 2 of the automated deployment pipeline. This commit adds a Python CLI tool that automates the creation of NixOS host configurations, eliminating manual boilerplate and reducing errors. Features: - Python CLI using typer framework with rich terminal UI - Comprehensive validation (hostname format/uniqueness, IP subnet/uniqueness) - Jinja2 templates for NixOS configurations - Automatic updates to flake.nix and terraform/vms.tf - Support for both static IP and DHCP configurations - Dry-run mode for safe previews - Packaged as Nix derivation and added to devShell Usage: create-host --hostname myhost --ip 10.69.13.50/24 The tool generates: - hosts/<hostname>/default.nix - hosts/<hostname>/configuration.nix - Updates flake.nix with new nixosConfigurations entry - Updates terraform/vms.tf with new VM definition All generated configurations include full system imports (monitoring, SOPS, autoupgrade, etc.) and are validated with nix flake check and tofu validate. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
34 lines
727 B
Python
34 lines
727 B
Python
from setuptools import setup
|
|
from pathlib import Path
|
|
|
|
# Read templates
|
|
templates = [str(p.relative_to(".")) for p in Path("templates").glob("*.j2")]
|
|
|
|
setup(
|
|
name="create-host",
|
|
version="0.1.0",
|
|
description="NixOS host configuration generator for homelab infrastructure",
|
|
py_modules=[
|
|
"create_host",
|
|
"models",
|
|
"validators",
|
|
"generators",
|
|
"manipulators",
|
|
],
|
|
include_package_data=True,
|
|
data_files=[
|
|
("templates", templates),
|
|
],
|
|
install_requires=[
|
|
"typer",
|
|
"jinja2",
|
|
"rich",
|
|
],
|
|
entry_points={
|
|
"console_scripts": [
|
|
"create-host=create_host:app",
|
|
],
|
|
},
|
|
python_requires=">=3.9",
|
|
)
|