void-bootstrapp/src/config.sh
Stefan Strobl d6be456c39 feat(core): add phase 1 narrative for core orchestration modules
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.
2025-12-24 09:50:14 +01:00

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.