diff --git a/cook/__pycache__/cli.cpython-314.pyc b/cook/__pycache__/cli.cpython-314.pyc deleted file mode 100644 index 517bcf7..0000000 Binary files a/cook/__pycache__/cli.cpython-314.pyc and /dev/null differ diff --git a/cook/__pycache__/generate_recipe.cpython-314.pyc b/cook/__pycache__/generate_recipe.cpython-314.pyc deleted file mode 100644 index 7f268ee..0000000 Binary files a/cook/__pycache__/generate_recipe.cpython-314.pyc and /dev/null differ diff --git a/cook/__pycache__/manifest.cpython-314.pyc b/cook/__pycache__/manifest.cpython-314.pyc deleted file mode 100644 index 72d0466..0000000 Binary files a/cook/__pycache__/manifest.cpython-314.pyc and /dev/null differ diff --git a/cook/__pycache__/python-update-package-names.cpython-314.pyc b/cook/__pycache__/python-update-package-names.cpython-314.pyc deleted file mode 100644 index aa2f62f..0000000 Binary files a/cook/__pycache__/python-update-package-names.cpython-314.pyc and /dev/null differ diff --git a/cook/__pycache__/recipe_generator.cpython-314.pyc b/cook/__pycache__/recipe_generator.cpython-314.pyc deleted file mode 100644 index 2a5a688..0000000 Binary files a/cook/__pycache__/recipe_generator.cpython-314.pyc and /dev/null differ diff --git a/cook/__pycache__/validators.cpython-314.pyc b/cook/__pycache__/validators.cpython-314.pyc deleted file mode 100644 index 1a33c2f..0000000 Binary files a/cook/__pycache__/validators.cpython-314.pyc and /dev/null differ diff --git a/cook/cli.py b/cook/cli.py index 032c746..3014469 100644 --- a/cook/cli.py +++ b/cook/cli.py @@ -103,9 +103,6 @@ def main() -> None: action='store_true', help='Show what would be generated without writing files') - # Single generation mode options - parser.add_argument('--type', '-T', - help='Recipe type (e.g., virtual-desktop)') parser.add_argument('--output', '-o', type=Path, help='Output file (single generation)') @@ -167,8 +164,9 @@ def main() -> None: return # === SINGLE GENERATION MODE === - # If --type is specified, generate one recipe with the given options - if args.type: + # If --output is specified without --manifest, generate one recipe with the given options + # This makes --output without --manifest trigger single generation mode + if args.output and not args.manifest: generate_single(args, generator) return @@ -396,12 +394,8 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator) # Generate all recipes from the manifest for recipe_config in manifest.get('recipes', []): - recipe_type = recipe_config.get('recipe_type', recipe_config['name']) - if recipe_type not in generator.templates: - print(f"Error: Unknown recipe type in manifest: {recipe_type}", file=sys.stderr) - sys.exit(1) - - # Get variants for this recipe type + # No recipe_type needed - use the universal template directly + name = recipe_config.get('name', 'unnamed') variants = recipe_config.get('variants', []) # Expand list-valued variants (e.g., version: ["43", "rawhide"]) @@ -411,11 +405,10 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator) # Extract version and other modifiers from variant version = variant['version'] modifiers = {k: v for k, v in variant.items() if k not in ['name', 'version']} - modifiers = {k: v for k, v in variant.items() if k not in ['name', 'version']} # name kept for manifest organization only, not passed to generator # Generate the recipe content - content = generator.generate(recipe_type, version, **modifiers) + content = generator.generate(version, **modifiers) # Optional validation on generated content if args.validate and not args.dry_run: @@ -423,13 +416,13 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator) semantic_issues = semantic_validator.validate(content, version) all_issues = issues + semantic_issues if all_issues: - print(f"Validation issues for {recipe_type} {version}:", file=sys.stderr) + print(f"Validation issues for {name} {version}:", file=sys.stderr) for issue in issues: print(f" - {issue}", file=sys.stderr) sys.exit(1) # Generate output filename based on recipe parameters - filename = generator.generate_filename(recipe_type, version, **modifiers) + filename = generator.generate_filename(version, **modifiers) output_path = args.output_dir / filename # Handle dry-run mode @@ -479,7 +472,7 @@ def generate_single(args: argparse.Namespace, generator: RecipeGenerator) -> Non modifiers = {k: v for k, v in modifiers.items() if v is not None} # Generate the recipe - content = generator.generate(args.type, args.version, **modifiers) + content = generator.generate(args.version, **modifiers) # Optional validation if args.validate: diff --git a/cook/generate_recipe.py b/cook/generate_recipe.py index 985167f..6f74e92 100644 --- a/cook/generate_recipe.py +++ b/cook/generate_recipe.py @@ -5,8 +5,11 @@ the recipe generator. It follows the common Python pattern of having a script that can be run directly or imported as a module. Usage: - # Run as script - python generate_recipe.py --type virtual-desktop --version 43 --output output.cfg + # Run as script for single generation + python generate_recipe.py --output my-recipe.cfg --version 43 --desktop gnome + + # Or using the universal template with modifiers + python generate_recipe.py --output single.cfg --version 43 --guest-agents true # Or from another Python script from generate_recipe import main diff --git a/cook/manifest.py b/cook/manifest.py index 8aa5d96..cb8a6d3 100644 --- a/cook/manifest.py +++ b/cook/manifest.py @@ -14,14 +14,19 @@ are used in batch recipe generation mode. It has two main responsibilities: Manifest Example: recipes: - - name: virtual-desktop + - name: desktop variants: - version: 43 desktop: gnome + storage: encrypted - version: ["43", "rawhide"] storage: ["standard", "encrypted"] - The above would generate 4 recipes (2 versions × 2 storage types). + The above would generate 3 recipes (1 desktop + 2 rawhide variants). + +With the universal template (proteus), recipes are generated using a single +template that supports all system types. The 'name' field is purely for +organization and doesn't affect the generated filenames. The key insight is that list values in variants represent "multiple values for this field", and we want to generate one recipe for each combination. This is @@ -89,9 +94,10 @@ class ManifestProcessor: This method performs schema-level validation of a manifest dictionary. It checks that: 1. The top-level 'recipes' key exists - 2. Each recipe configuration has a 'name' field + 2. Each recipe configuration has a 'name' field (for organization only) 3. Each recipe configuration has a 'variants' field 4. Each variant has a 'version' field + 5. No 'recipe_type' field exists (old format, removed with universal template) This is a basic structural check that catches obvious errors before trying to process the manifest. It doesn't validate the content of @@ -117,6 +123,11 @@ class ManifestProcessor: if 'variants' not in recipe_config: errors.append(f"Recipe '{recipe_config.get('name', 'unnamed')}' " "missing 'variants' key") + + # Check for old recipe_type field (which is no longer used) + if 'recipe_type' in recipe_config: + errors.append(f"Recipe '{recipe_config.get('name', 'unnamed')}' " + "has 'recipe_type' field which is no longer used with universal template") return errors diff --git a/cook/recipe_generator.py b/cook/recipe_generator.py index e1cbbc3..04518f6 100644 --- a/cook/recipe_generator.py +++ b/cook/recipe_generator.py @@ -56,17 +56,18 @@ class RecipeGenerator: This is the core class that powers the recipe generation system. It works by: 1. Loading template definitions from a YAML file (recipe_templates.yaml) - 2. Taking a recipe type (like "virtual-desktop") and version (like "43") - 3. Accepting optional modifiers (like desktop environment, storage type, security mode) - 4. Building a list of %include directives that reference ingredient fragments - 5. Outputting a complete kickstart file with header and include statements - - The templates define which ingredients are required, optional, conditional, or version-specific. - Modifiers control which optional ingredients get included based on user preferences. + 2. The template defines all the base ingredients and modifier options + 3. Accepting version (Fedora version) and optional modifiers + 4. Building a list of %include directives pointing to ingredient fragments + 5. Outputting a complete kickstart file with header and includes + + Think of it as a "recipe assembler" - the template is the master recipe, + modifiers are your customizations, and the output is a complete installation + script that pulls in the right ingredient fragments. Example usage: generator = RecipeGenerator(Path('recipe_templates.yaml')) - recipe = generator.generate('virtual-desktop', '43', desktop='gnome', storage='encrypted') + recipe = generator.generate('43', desktop='gnome', storage='encrypted') # Returns a string containing the complete kickstart recipe """ @@ -83,26 +84,24 @@ class RecipeGenerator: def _load_templates(self, path: Path) -> Dict: """Load recipe templates from YAML file. - This method reads the templates YAML file and extracts the 'templates' section. - The YAML file contains a top-level 'templates' key with all recipe type definitions. + This method reads the templates YAML file and loads it as a single universal template. + The YAML file now contains the proteus template directly without a 'templates' wrapper. Args: path: Path to the templates YAML file (can be absolute or relative) Returns: - Dictionary mapping recipe types to their template definitions. + The template dictionary (entire YAML content). Example structure: { - 'virtual-desktop': { - 'description': 'Virtual machine with desktop', - 'required': ['ingredients/base.cfg', ...], - 'modifiers': {'desktop': {...}, 'storage': {...}}, - 'optional': {...}, - 'versioned': {...}, - 'conditional': {...}, - 'flags': {...} - }, - ... + 'name': 'proteus', + 'description': 'Universal template...', + 'required': {...}, + 'modifiers': {...}, + 'optional': {...}, + 'versioned': {...}, + 'conditional': {...}, + 'flags': {...} } Raises: @@ -116,8 +115,8 @@ class RecipeGenerator: template_path = self.project_root / path with open(template_path, encoding='utf-8') as f: data = yaml.safe_load(f) - # Extract the 'templates' section - the YAML file has this as top-level key - return data['templates'] + # Return the entire YAML content as the single universal template + return data except FileNotFoundError: print(f"Error: Templates file not found: {template_path}") exit(2) @@ -125,16 +124,13 @@ class RecipeGenerator: print(f"Error: Invalid YAML in {template_path}: {e}") exit(2) - def generate(self, recipe_type: str, version: str, **modifiers) -> str: + def generate(self, version: str, **modifiers) -> str: """Generate a complete kickstart recipe from a template with modifiers. - This is the main entry point for recipe generation. It takes a recipe type - (like "virtual-desktop"), a Fedora version, and any number of modifier options, - then returns a complete kickstart file as a string. + This is the main entry point for recipe generation. It takes a Fedora version + and any number of modifier options, then returns a complete kickstart file as a string. Args: - recipe_type: The type of recipe to generate. Must match a key in the templates. - Examples: 'virtual-desktop', 'server', 'hypervisor' version: Fedora version string, typically '43' or 'rawhide'. This affects which versioned ingredients are included. **modifiers: Keyword arguments for recipe customization: @@ -153,13 +149,9 @@ class RecipeGenerator: - %include directives for all required and selected ingredients Raises: - SystemExit: If the recipe_type is not found in templates + SystemExit: If the template is invalid or missing required ingredients """ - if recipe_type not in self.templates: - print(f"Error: Unknown recipe type: {recipe_type}") - exit(1) - - template = self.templates[recipe_type] + template = self.templates # Build the output in two parts: # 1. Header with ASCII art and description @@ -180,13 +172,13 @@ class RecipeGenerator: describes what type of system it will install. Args: - description: Human-readable description of the recipe type - (e.g., "Virtual desktop environment") + description: Human-readable description of the template + (e.g., "Universal template for generating kickstart recipes") Returns: List of strings representing the header lines, including: - The ASCII art banner (from HEADER_ASCII_ART constant) - - A comment line with the recipe description + - A comment line with the template description - An empty line to separate header from content """ header = HEADER_ASCII_ART.copy() @@ -240,18 +232,44 @@ class RecipeGenerator: # === 1. REQUIRED INGREDIENTS === # These are always included, regardless of user options - # Example: base system, bootloader, partition scheme - for item in template.get('required', []): - if isinstance(item, dict): - # Dict format allows conditional logic within required - fragment_path = list(item.values())[0] - else: - # Simple string path - fragment_path = item - - if fragment_path not in seen: - includes.append(f"%include {fragment_path}") - seen.add(fragment_path) + # The template uses nested dict structure: required[section][value] = path or [paths] + # For each section, use either: + # - A modifier value that overrides the default + # - The default value from the first/only key in the section + + for section_name, section_config in template.get('required', {}).items(): + if isinstance(section_config, dict): + # Find the value to use for this section + # Check modifiers first, then use default + default_value = None + override_value = None + + # Get the default value (first key in dict, or only key) + keys = list(section_config.keys()) + if keys: + default_value = keys[0] + + # Check if any modifier overrides this section + for mod_key, mod_value in modifiers.items(): + mod_key_normalized = mod_key.replace("_", "-") + if mod_key_normalized == section_name and isinstance(mod_value, str): + if mod_value in section_config: + override_value = mod_value + break + + # Use override if available, otherwise use default + value_to_use = override_value if override_value else default_value + + if value_to_use and value_to_use in section_config: + fragment_path = section_config[value_to_use] + if isinstance(fragment_path, list): + for fp in fragment_path: + if fp is not None and fp not in seen: + includes.append(f"%include {fp}") + seen.add(fp) + elif fragment_path and fragment_path not in seen: + includes.append(f"%include {fragment_path}") + seen.add(fragment_path) # === 2. MODIFIER INGREDIENTS === # Process user-specified options like desktop, storage, security @@ -437,9 +455,10 @@ class RecipeGenerator: mod_key_normalized = mod_key.replace('_', '-') if mod_key_normalized in template.get('flags', {}): fragment_path = template['flags'][mod_key_normalized] - if mod_value is True and fragment_path not in seen: - includes.append(f"%include {fragment_path}") - seen.add(fragment_path) + if mod_value is True: + if fragment_path not in seen: + includes.append(f"%include {fragment_path}") + seen.add(fragment_path) return includes @@ -467,36 +486,42 @@ class RecipeGenerator: return modifiers[alt_key] return default - def generate_filename(self, recipe_type: str, version: str, **modifiers) -> str: + def generate_filename(self, version: str, **modifiers) -> str: """Generate recipe filename from parameters. Creates a descriptive filename that encodes the recipe's configuration. This allows users to identify what a recipe does just from its name. - Filename format: - {recipe_type}-{guest_type}-{variant}-{desktop}-{security}-{storage}-{version}.cfg + Filename format (using Approach A - primary modifier first): + {primary_modifier}-{other_modifiers}-{version}.cfg Examples: - - virtual-desktop_gnome_43.cfg - - server_encrypted_43.cfg - - hypervisor_kvm_devel_43.cfg + - gnome_43.cfg (desktop=gnome is primary modifier) + - encrypted_43.cfg (storage=encrypted is primary modifier) + - server_43.cfg (initial_setup=server with no desktop) + - gnome_encrypted_43.cfg (when multiple modifiers are set) - The method only adds suffixes for non-default values: - - GNOME is default → only add if different (labwc) - - secure is default → only add if devel - - standard is default → only add if encrypted + The method prioritizes modifiers to create intuitive filenames: + - If `desktop` is present, it becomes the primary modifier + - Otherwise, `storage` or `initial_setup` can be primary + - `version` is always included at the end Args: - recipe_type: Base recipe type (e.g., 'virtual-desktop') version: Fedora version (e.g., '43' or 'rawhide') **modifiers: All the modifier values that affect the recipe Returns: Filename string ending in .cfg """ - # Build base parts - start with recipe type - parts = [recipe_type.replace('_', '-')] - + # Build base parts - start with version (required) + parts = [] + + # Determine primary modifier (Approach A) + # If desktop is present, use it as primary modifier + desktop = self._get_modifier(modifiers, 'desktop') + if desktop: + parts.append(desktop) + # Add guest_agents suffix (for both True and False) # Distinguishes between virtual machines and bare metal installs guest_agents = self._get_modifier(modifiers, 'guest_agents') @@ -516,7 +541,7 @@ class RecipeGenerator: # Add hypervisor_type suffix # For hypervisors, include the type (kvm, xen, etc.) if modifiers.get('hypervisor_type'): - ht = modifiers['hypervisor_type'] + ht = modifiers.get('hypervisor_type') if isinstance(ht, list): # Multiple hypervisor types for h in ht: @@ -526,17 +551,6 @@ class RecipeGenerator: # Single hypervisor type parts.append(ht) - # Add desktop - desktop = self._get_modifier(modifiers, 'desktop') - if desktop: - parts.append(desktop) - - # Add security suffix (devel only, since secure is default) - # Security defaults to 'secure', so only 'devel' gets noted - security = self._get_modifier(modifiers, 'security') - if security == 'off': - parts.append('devel') - # Add storage suffix (encrypted only, since standard is default) # Standard storage is default, encrypted gets noted storage = self._get_modifier(modifiers, 'storage') @@ -552,10 +566,7 @@ class RecipeGenerator: # Add initial_setup suffix (non-server values) # Server is default, other setup types get noted initial_setup = self._get_modifier(modifiers, 'initial_setup') - if initial_setup == 'server': - # Server is the default for non-desktop, non-hypervisor - parts.append('server') - elif initial_setup and initial_setup != 'server': + if initial_setup and initial_setup != 'server': parts.append(f'{initial_setup}-setup') # Add bootloader suffix (systemd-boot only) @@ -564,7 +575,7 @@ class RecipeGenerator: if bootloader == 'systemd-boot': parts.append('systemd-boot') - # Add version - always included + # Add version - always included at the end parts.append(str(version)) # Join all parts with underscores and add .cfg extension diff --git a/cook/recipe_templates.yaml b/cook/recipe_templates.yaml index b8163e2..0f69ebf 100644 --- a/cook/recipe_templates.yaml +++ b/cook/recipe_templates.yaml @@ -1,96 +1,76 @@ -# Recipe Templates for Phyllome OS Kickstart Generator -# Each template defines the structure for a recipe type +# Proteus is a template generator for Phyllome OS # Fragment paths use relative paths from project root +# Required elements can all be replaced by a listed modifier +# Optional elements add features -templates: - # Install recipe - for desktop, server, or hypervisor - install: - description: "An install recipe for desktop, server, or hypervisor" - base: core - required: - - core: core/base.ks - - { path: repo/fedora-43-mirrors.ks, replaceable: true } - - { path: storage/standard.ks, replaceable: true } - - { path: bootloader/grub.ks, replaceable: true } - - core/locale.ks - - core/services.ks - - core/network.ks - - packages/core-group.ks - - packages/fedora-remix.ks - - packages/hand-picked.ks - - { path: core/security/enabled.ks, replaceable: true } - - { path: initial-setup/server/config.ks, replaceable: true } - modifiers: - version: - "43": repo/fedora-43-mirrors.ks - "rawhide": repo/rawhide-mirrors.ks - storage: - standard: storage/standard.ks - encrypted: storage/encrypted.ks - desktop: - gnome: - - desktop/gnome/config.ks - - desktop/gnome/packages.ks - - desktop/gnome/post-scripts.ks - labwc: - - desktop/labwc/config.ks - security: - secure: core/security/enabled.ks - "off": core/security/disabled.ks - initial-setup: - server: initial-setup/server/config.ks - desktop: initial-setup/desktop/config.ks - gnome: initial-setup/gnome/config.ks - generic-wayland: initial-setup/generic-wayland/config.ks - hypervisor_type: - amdcpu: hypervisor/amdcpu.ks - intelcpu: hypervisor/intelcpu.ks - intelgpu: hypervisor/intelgpu.ks - hypervisor: - base: - - hypervisor/base/packages.ks - - hypervisor/base/services.ks - - hypervisor/base/post-scripts.ks - desktop: - - packages/virtual-machine-manager/packages.ks - - packages/virtual-machine-manager/post-scripts.ks - bootloader: - grub: bootloader/grub.ks - systemd-boot: bootloader/systemd-boot.ks - optional: - hardware-support: packages/hardware-support.ks - guest-agents: guest-agents/base.ks - - # Live recipe - for live-desktop or live-server - live: - description: "A live recipe for live-desktop or live-server" - base: live-core - required: - - live-core: live/core/base.ks - - { path: repo/fedora-43-mirrors.ks, replaceable: true } - - { path: live/core/storage.ks, replaceable: true } - - { path: live/core/bootloader/grub.ks, replaceable: true } - - core/locale.ks - - core/services.ks - - core/network.ks - - live/core/packages.ks - - live/post/base.ks - - live/post/session.ks - - repo/rpmfusion-nonfree.ks - modifiers: - version: - "43": repo/fedora-43-mirrors.ks - "rawhide": repo/rawhide-mirrors.ks - storage: - standard: live/core/storage.ks - encrypted: live/core/storage.ks - bootloader: - grub: live/core/bootloader/grub.ks - systemd-boot: live/core/bootloader/systemd-boot.ks - optional: - hardware-support: packages/hardware-support.ks - guest-agents: guest-agents/base.ks - hypervisor: live/hypervisor.ks - security: - secure: core/security/enabled.ks - "off": core/security/disabled.ks +name: proteus +description: "Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system" +required: + repository: + "f43": repo/fedora-43-mirrors.ks + core: + "base": core/base.ks + bootloader: + "grub": bootloader/grub.ks + storage: + "ext4": storage/standard.ks + locale: + "fr_CH": core/locale.ks + services: + "minimal": core/services.ks + network: + "network-manager": core/network.ks + packages: + "core": packages/core.ks + brand: + "fedora-remix": packages/fedora-remix.ks + extra: + "extra": packages/hand-picked.ks + security: + "enabled": core/security/enabled.ks + initial-setup: + "server": initial-setup/server/config.ks +modifiers: + repository: + "rawhide": repo/rawhide-mirrors.ks + storage: + "encrypted": storage/encrypted.ks + security: + "disabled": core/security/disabled.ks + initial-setup: + gnome: initial-setup/gnome/config.ks + generic-wayland: initial-setup/generic-wayland/config.ks + live: + core: + "live-base": livecore/base.ks + bootloader: + "systemd-boot": live/core/bootloader/systemd-boot.ks + packages: + "live-core": live/core/packages.ks +optional: + hardware-support: packages/hardware-support.ks + guest-agents: guest-agents/base.ks + hypervisor: live/hypervisor.ks + desktop: + gnome: + - desktop/gnome/config.ks + - desktop/gnome/packages.ks + - desktop/gnome/post-scripts.ks + labwc: + - desktop/labwc/config.ks + hypervisor_type: + amdcpu: hypervisor/amdcpu.ks + intelcpu: hypervisor/intelcpu.ks + intelgpu: hypervisor/intelgpu.ks + hypervisor: + base: + - hypervisor/base/packages.ks + - hypervisor/base/services.ks + - hypervisor/base/post-scripts.ks + desktop: + - packages/virtual-machine-manager/packages.ks + - packages/virtual-machine-manager/post-scripts.ks + post: + live: + - base: live/post/base.ks + - session: live/post/session.ks diff --git a/cook/recipes/install_virtual_server_43.cfg b/cook/recipes/bare-metal_hardware-support_43.cfg similarity index 79% rename from cook/recipes/install_virtual_server_43.cfg rename to cook/recipes/bare-metal_hardware-support_43.cfg index 5bb4b12..4155c99 100644 --- a/cook/recipes/install_virtual_server_43.cfg +++ b/cook/recipes/bare-metal_hardware-support_43.cfg @@ -5,16 +5,16 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks diff --git a/cook/recipes/install_bare-metal_hypervisor_amdcpu_hardware-support_server_43.cfg b/cook/recipes/bare-metal_hypervisor_amdcpu_hardware-support_43.cfg similarity index 83% rename from cook/recipes/install_bare-metal_hypervisor_amdcpu_hardware-support_server_43.cfg rename to cook/recipes/bare-metal_hypervisor_amdcpu_hardware-support_43.cfg index 4a563da..22775ef 100644 --- a/cook/recipes/install_bare-metal_hypervisor_amdcpu_hardware-support_server_43.cfg +++ b/cook/recipes/bare-metal_hypervisor_amdcpu_hardware-support_43.cfg @@ -5,16 +5,16 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks diff --git a/cook/recipes/install_bare-metal_hypervisor_intelcpu_hardware-support_server_43.cfg b/cook/recipes/bare-metal_hypervisor_intelcpu_hardware-support_43.cfg similarity index 83% rename from cook/recipes/install_bare-metal_hypervisor_intelcpu_hardware-support_server_43.cfg rename to cook/recipes/bare-metal_hypervisor_intelcpu_hardware-support_43.cfg index b761365..2b177da 100644 --- a/cook/recipes/install_bare-metal_hypervisor_intelcpu_hardware-support_server_43.cfg +++ b/cook/recipes/bare-metal_hypervisor_intelcpu_hardware-support_43.cfg @@ -5,16 +5,16 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks diff --git a/cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_43.cfg b/cook/recipes/gnome_bare-metal_43.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_43.cfg rename to cook/recipes/gnome_bare-metal_43.cfg index a35c1f8..9078a54 100644 --- a/cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_43.cfg +++ b/cook/recipes/gnome_bare-metal_43.cfg @@ -5,21 +5,20 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_rawhide.cfg b/cook/recipes/gnome_bare-metal_encrypted_43.cfg similarity index 82% rename from cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_rawhide.cfg rename to cook/recipes/gnome_bare-metal_encrypted_43.cfg index 9bdbc47..c9c7509 100644 --- a/cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_rawhide.cfg +++ b/cook/recipes/gnome_bare-metal_encrypted_43.cfg @@ -5,22 +5,21 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include storage/encrypted.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_encrypted_server_rawhide.cfg b/cook/recipes/gnome_bare-metal_encrypted_hardware-support_43.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_encrypted_server_rawhide.cfg rename to cook/recipes/gnome_bare-metal_encrypted_hardware-support_43.cfg index 9bdbc47..c9c7509 100644 --- a/cook/recipes/install_bare-metal_gnome_encrypted_server_rawhide.cfg +++ b/cook/recipes/gnome_bare-metal_encrypted_hardware-support_43.cfg @@ -5,22 +5,21 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include storage/encrypted.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_rawhide.cfg b/cook/recipes/gnome_bare-metal_encrypted_hardware-support_rawhide.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_rawhide.cfg rename to cook/recipes/gnome_bare-metal_encrypted_hardware-support_rawhide.cfg index 9bdbc47..c9c7509 100644 --- a/cook/recipes/install_bare-metal_gnome_encrypted_hardware-support_server_rawhide.cfg +++ b/cook/recipes/gnome_bare-metal_encrypted_hardware-support_rawhide.cfg @@ -5,22 +5,21 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include storage/encrypted.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_encrypted_server_rawhide.cfg b/cook/recipes/gnome_bare-metal_encrypted_rawhide.cfg similarity index 82% rename from cook/recipes/install_virtual_gnome_encrypted_server_rawhide.cfg rename to cook/recipes/gnome_bare-metal_encrypted_rawhide.cfg index 9bdbc47..c9c7509 100644 --- a/cook/recipes/install_virtual_gnome_encrypted_server_rawhide.cfg +++ b/cook/recipes/gnome_bare-metal_encrypted_rawhide.cfg @@ -5,22 +5,21 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include storage/encrypted.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_hardware-support_server_43.cfg b/cook/recipes/gnome_bare-metal_hardware-support_43.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_hardware-support_server_43.cfg rename to cook/recipes/gnome_bare-metal_hardware-support_43.cfg index fc6ca67..9078a54 100644 --- a/cook/recipes/install_bare-metal_gnome_hardware-support_server_43.cfg +++ b/cook/recipes/gnome_bare-metal_hardware-support_43.cfg @@ -5,16 +5,16 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks diff --git a/cook/recipes/install_bare-metal_gnome_hardware-support_server_rawhide.cfg b/cook/recipes/gnome_bare-metal_hardware-support_rawhide.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_hardware-support_server_rawhide.cfg rename to cook/recipes/gnome_bare-metal_hardware-support_rawhide.cfg index ff12e44..9078a54 100644 --- a/cook/recipes/install_bare-metal_gnome_hardware-support_server_rawhide.cfg +++ b/cook/recipes/gnome_bare-metal_hardware-support_rawhide.cfg @@ -5,21 +5,20 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_encrypted_server_43.cfg b/cook/recipes/gnome_bare-metal_rawhide.cfg similarity index 82% rename from cook/recipes/install_bare-metal_gnome_encrypted_server_43.cfg rename to cook/recipes/gnome_bare-metal_rawhide.cfg index a35c1f8..9078a54 100644 --- a/cook/recipes/install_bare-metal_gnome_encrypted_server_43.cfg +++ b/cook/recipes/gnome_bare-metal_rawhide.cfg @@ -5,21 +5,20 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks \ No newline at end of file +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_43.cfg b/cook/recipes/gnome_virtual_43.cfg new file mode 100644 index 0000000..9078a54 --- /dev/null +++ b/cook/recipes/gnome_virtual_43.cfg @@ -0,0 +1,24 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_encrypted_43.cfg b/cook/recipes/gnome_virtual_encrypted_43.cfg new file mode 100644 index 0000000..c9c7509 --- /dev/null +++ b/cook/recipes/gnome_virtual_encrypted_43.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include storage/encrypted.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_encrypted_hardware-support_43.cfg b/cook/recipes/gnome_virtual_encrypted_hardware-support_43.cfg new file mode 100644 index 0000000..c9c7509 --- /dev/null +++ b/cook/recipes/gnome_virtual_encrypted_hardware-support_43.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include storage/encrypted.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_encrypted_hardware-support_rawhide.cfg b/cook/recipes/gnome_virtual_encrypted_hardware-support_rawhide.cfg new file mode 100644 index 0000000..c9c7509 --- /dev/null +++ b/cook/recipes/gnome_virtual_encrypted_hardware-support_rawhide.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include storage/encrypted.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_encrypted_rawhide.cfg b/cook/recipes/gnome_virtual_encrypted_rawhide.cfg new file mode 100644 index 0000000..c9c7509 --- /dev/null +++ b/cook/recipes/gnome_virtual_encrypted_rawhide.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include storage/encrypted.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_hardware-support_43.cfg b/cook/recipes/gnome_virtual_hardware-support_43.cfg new file mode 100644 index 0000000..9078a54 --- /dev/null +++ b/cook/recipes/gnome_virtual_hardware-support_43.cfg @@ -0,0 +1,24 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_hardware-support_rawhide.cfg b/cook/recipes/gnome_virtual_hardware-support_rawhide.cfg new file mode 100644 index 0000000..9078a54 --- /dev/null +++ b/cook/recipes/gnome_virtual_hardware-support_rawhide.cfg @@ -0,0 +1,24 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_hypervisor-desktop_amdcpu_gnome_server_43.cfg b/cook/recipes/gnome_virtual_hypervisor-desktop_amdcpu_43.cfg similarity index 85% rename from cook/recipes/install_virtual_hypervisor-desktop_amdcpu_gnome_server_43.cfg rename to cook/recipes/gnome_virtual_hypervisor-desktop_amdcpu_43.cfg index 46c852d..c28989e 100644 --- a/cook/recipes/install_virtual_hypervisor-desktop_amdcpu_gnome_server_43.cfg +++ b/cook/recipes/gnome_virtual_hypervisor-desktop_amdcpu_43.cfg @@ -5,23 +5,23 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include packages/virtual-machine-manager/packages.ks +%include packages/virtual-machine-manager/post-scripts.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks %include desktop/gnome/post-scripts.ks -%include packages/virtual-machine-manager/packages.ks -%include packages/virtual-machine-manager/post-scripts.ks %include hypervisor/amdcpu.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_hypervisor-desktop_intelcpu_gnome_server_43.cfg b/cook/recipes/gnome_virtual_hypervisor-desktop_intelcpu_43.cfg similarity index 85% rename from cook/recipes/install_virtual_hypervisor-desktop_intelcpu_gnome_server_43.cfg rename to cook/recipes/gnome_virtual_hypervisor-desktop_intelcpu_43.cfg index 33bbfbf..e80135f 100644 --- a/cook/recipes/install_virtual_hypervisor-desktop_intelcpu_gnome_server_43.cfg +++ b/cook/recipes/gnome_virtual_hypervisor-desktop_intelcpu_43.cfg @@ -5,23 +5,23 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks %include initial-setup/server/config.ks +%include packages/virtual-machine-manager/packages.ks +%include packages/virtual-machine-manager/post-scripts.ks %include desktop/gnome/config.ks %include desktop/gnome/packages.ks %include desktop/gnome/post-scripts.ks -%include packages/virtual-machine-manager/packages.ks -%include packages/virtual-machine-manager/post-scripts.ks %include hypervisor/intelcpu.ks \ No newline at end of file diff --git a/cook/recipes/gnome_virtual_rawhide.cfg b/cook/recipes/gnome_virtual_rawhide.cfg new file mode 100644 index 0000000..9078a54 --- /dev/null +++ b/cook/recipes/gnome_virtual_rawhide.cfg @@ -0,0 +1,24 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system + +%include repo/fedora-43-mirrors.ks +%include core/base.ks +%include bootloader/grub.ks +%include storage/standard.ks +%include core/locale.ks +%include core/services.ks +%include core/network.ks +%include packages/core.ks +%include packages/fedora-remix.ks +%include packages/hand-picked.ks +%include core/security/enabled.ks +%include initial-setup/server/config.ks +%include desktop/gnome/config.ks +%include desktop/gnome/packages.ks +%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_server_rawhide.cfg b/cook/recipes/install_bare-metal_gnome_server_rawhide.cfg deleted file mode 100644 index ff12e44..0000000 --- a/cook/recipes/install_bare-metal_gnome_server_rawhide.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_43.cfg b/cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_43.cfg deleted file mode 100644 index a35c1f8..0000000 --- a/cook/recipes/install_virtual_gnome_encrypted_hardware-support_server_43.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_encrypted_server_43.cfg b/cook/recipes/install_virtual_gnome_encrypted_server_43.cfg deleted file mode 100644 index a35c1f8..0000000 --- a/cook/recipes/install_virtual_gnome_encrypted_server_43.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include storage/encrypted.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_hardware-support_server_43.cfg b/cook/recipes/install_virtual_gnome_hardware-support_server_43.cfg deleted file mode 100644 index fc6ca67..0000000 --- a/cook/recipes/install_virtual_gnome_hardware-support_server_43.cfg +++ /dev/null @@ -1,24 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_hardware-support_server_rawhide.cfg b/cook/recipes/install_virtual_gnome_hardware-support_server_rawhide.cfg deleted file mode 100644 index ff12e44..0000000 --- a/cook/recipes/install_virtual_gnome_hardware-support_server_rawhide.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_server_43.cfg b/cook/recipes/install_virtual_gnome_server_43.cfg deleted file mode 100644 index fc6ca67..0000000 --- a/cook/recipes/install_virtual_gnome_server_43.cfg +++ /dev/null @@ -1,24 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_gnome_server_rawhide.cfg b/cook/recipes/install_virtual_gnome_server_rawhide.cfg deleted file mode 100644 index ff12e44..0000000 --- a/cook/recipes/install_virtual_gnome_server_rawhide.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# An install recipe for desktop, server, or hypervisor - -%include core/base.ks -%include repo/fedora-43-mirrors.ks -%include storage/standard.ks -%include bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include packages/core-group.ks -%include packages/fedora-remix.ks -%include packages/hand-picked.ks -%include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/cook/recipes/live_bare-metal_hardware-support_43.cfg b/cook/recipes/live_bare-metal_hardware-support_43.cfg deleted file mode 100644 index 3cde725..0000000 --- a/cook/recipes/live_bare-metal_hardware-support_43.cfg +++ /dev/null @@ -1,20 +0,0 @@ -# __ ____ ____ _____ -# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ -# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ -# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / -# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ -# /_/ /____/ - -# A live recipe for live-desktop or live-server - -%include live/core/base.ks -%include repo/fedora-43-mirrors.ks -%include live/core/storage.ks -%include live/core/bootloader/grub.ks -%include core/locale.ks -%include core/services.ks -%include core/network.ks -%include live/core/packages.ks -%include live/post/base.ks -%include live/post/session.ks -%include repo/rpmfusion-nonfree.ks \ No newline at end of file diff --git a/cook/recipes/install_virtual_server_rawhide.cfg b/cook/recipes/virtual_43.cfg similarity index 79% rename from cook/recipes/install_virtual_server_rawhide.cfg rename to cook/recipes/virtual_43.cfg index 3ddfc5c..4155c99 100644 --- a/cook/recipes/install_virtual_server_rawhide.cfg +++ b/cook/recipes/virtual_43.cfg @@ -5,18 +5,17 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks -%include initial-setup/server/config.ks -%include repo/rawhide-mirrors.ks \ No newline at end of file +%include initial-setup/server/config.ks \ No newline at end of file diff --git a/cook/recipes/install_bare-metal_gnome_server_43.cfg b/cook/recipes/virtual_rawhide.cfg similarity index 73% rename from cook/recipes/install_bare-metal_gnome_server_43.cfg rename to cook/recipes/virtual_rawhide.cfg index fc6ca67..4155c99 100644 --- a/cook/recipes/install_bare-metal_gnome_server_43.cfg +++ b/cook/recipes/virtual_rawhide.cfg @@ -5,20 +5,17 @@ # / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ # /_/ /____/ -# An install recipe for desktop, server, or hypervisor +# Universal template to generate kickstart recipes for a server, a desktop or a hypervisor system -%include core/base.ks %include repo/fedora-43-mirrors.ks -%include storage/standard.ks +%include core/base.ks %include bootloader/grub.ks +%include storage/standard.ks %include core/locale.ks %include core/services.ks %include core/network.ks -%include packages/core-group.ks +%include packages/core.ks %include packages/fedora-remix.ks %include packages/hand-picked.ks %include core/security/enabled.ks -%include initial-setup/server/config.ks -%include desktop/gnome/config.ks -%include desktop/gnome/packages.ks -%include desktop/gnome/post-scripts.ks \ No newline at end of file +%include initial-setup/server/config.ks \ No newline at end of file diff --git a/cook/recipes_manifest.yaml b/cook/recipes_manifest.yaml index 7f48a78..fefb749 100644 --- a/cook/recipes_manifest.yaml +++ b/cook/recipes_manifest.yaml @@ -11,13 +11,12 @@ # Example: version: ["43", "rawhide"] + storage: ["standard", "encrypted"] # creates 4 variants: (43,standard), (43,encrypted), (rawhide,standard), (rawhide,encrypted) # -# NOTE: The 'name' field is for organization only and doesn't affect generated filenames. -# The recipe type is always 'install' or 'live' from recipe_templates.yaml +# NOTE: The 'name' field is no longer used with the universal template. +# It can be kept for organization but doesn't affect generated filenames. recipes: - # Install desktop variants + # Desktop variants - name: desktop - recipe_type: install variants: - version: ["43", "rawhide"] desktop: gnome @@ -28,9 +27,8 @@ recipes: initial-setup: server security: secure - # Install server variants + # Server variants - name: server - recipe_type: install variants: - version: ["43", "rawhide"] storage: standard @@ -40,9 +38,8 @@ recipes: initial-setup: server security: secure - # Install hypervisor variants + # Hypervisor variants - name: hypervisor - recipe_type: install variants: - version: 43 storage: standard @@ -54,9 +51,8 @@ recipes: initial-setup: server security: secure - # Install desktop-hypervisor variants + # Desktop-hypervisor variants - name: desktop-hypervisor - recipe_type: install variants: - version: 43 desktop: gnome @@ -70,16 +66,14 @@ recipes: security: secure # Live desktop variants - - name: desktop - recipe_type: live + - name: desktop-live variants: - version: 43 hardware-support: true guest-agents: false # Live server variants - - name: server - recipe_type: live + - name: server-live variants: - version: 43 hardware-support: true diff --git a/cook/validators.py b/cook/validators.py index 8d4ce13..d0d6a93 100644 --- a/cook/validators.py +++ b/cook/validators.py @@ -72,28 +72,30 @@ class TemplateValidator: - Verifies 'required' key exists (base ingredients) 2. Required Ingredients Check: - - Iterates through template['required'] list - - Resolves each path relative to project_root + - Iterates through template['required'] nested dict structure + - For each section and value, checks if path(s) are valid - Checks if the file actually exists - - Reports missing files as errors - 3. Versioned Ingredients Check: + 3. Modifier Ingredients Check: + - Checks template['modifiers'] structure + - For each modifier and value, checks referenced files exist + + 4. Optional Ingredients Check: + - Checks paths in template['optional'] + - Verifies referenced files exist on disk + + 5. Versioned Ingredients Check: - Checks paths in template['versioned'] - If the path contains {version}, it's deferred to generation time - Otherwise checks if the resolved file exists - 4. Conditional Ingredients Check: - - Iterates through template['conditional'] - - For each modifier and value, checks referenced files exist - - Handles both single paths and lists of paths - - 5. Flag Ingredients Check: + 6. Flag Ingredients Check: - Checks all paths in template['flags'] - - Flags are boolean on/off switches + - Flags are simple boolean on/off switches Args: - template: The template dictionary to validate - Structure: {'description': str, 'required': [...], ...} + template: The entire template YAML content + Structure: {'name': str, 'description': str, 'required': {...}, ...} Returns: List of validation error strings (empty if valid)