Add literate programming phase 1 documentation for: - main.sh: wrapper orchestration and user journey - config.sh: configuration management and defaults - sanity.sh: preflight safety checks Decision: UEFI-only support to reduce complexity. BIOS would require separate /boot partition and additional testing burden disproportionate to modern hardware usage. Decision: LUKS2 as default encryption for improved security tooling, with clear guidance for LUKS1 fallback if GRUB boot fails. Auto-detection rejected due to version fragmentation. Decision: Interactive configuration as default. Presets are out of scope for phase 1 to keep the flow understandable. The user journey documents the complete end-to-end flow from live medium boot to first encrypted boot, establishing clear handoff points between wrapper and installer.
32 lines
1.8 KiB
Bash
32 lines
1.8 KiB
Bash
# === 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.
|