# === Motivation === # Centralize user-provided inputs to avoid scattered magic values. # === Problem Statement === # Disk targets, encryption mode, filesystem choice, and host metadata need a single source of truth. # === Scope === # In scope: definition of configurable parameters and validation expectations. # Out of scope: parsing implementation and storage mechanism. # === Concepts === # Preset: a named set of config values for repeatable installs. # Interactive input: prompting the user for values at runtime. # === Decisions === # Keep defaults conservative and require explicit confirmation for destructive values. # Surface all critical values before any destructive phase begins. # Default to LUKS2 with an explicit LUKS1 fallback for bootloader compatibility. # Default filesystem is btrfs, with opt-in alternatives. # Default bootloader is GRUB for Void compatibility. # Passphrase-only is the supported unlock method. # Swap defaults to a file (works with both btrfs and ext4). # Mandatory values are DISK, HOSTNAME, and size inputs where no safe default exists. # Interactive prompts are the default input mechanism; no preset formats are defined yet. # === Alternatives Considered === # Hard-coded values rejected because they do not scale across machines. # === Constraints === # Config must be readable and editable without specialized tools. # Target boot mode is UEFI only; BIOS is out of scope. # === Open Questions === # Should we support config file presets for batch installations, or keep it fully interactive? # How should we validate user-provided disk paths to prevent typos? # Should swap size have intelligent defaults based on RAM size, or always ask? # === Success Criteria === # Users can clearly see and confirm target disk, encryption type, and filesystem choice.