aboutsummaryrefslogtreecommitdiff
path: root/installer
Commit message (Collapse)AuthorAgeFilesLines
* refactor: merge install_base and install_base_btrfsCraig Jennings9 days2-69/+43
| | | | | | | | | | | | | | | | Extract the pacstrap package list into pacstrap_packages(filesystem) in lib/common.sh (common + filesystem-specific). install_base() now dispatches on FILESYSTEM for both the archzfs-repo-append and the package list. install_base_btrfs() deleted; install_btrfs() call site updated to invoke install_base. Old: 49 + 38 lines of ~95% copy-paste. New: 32 lines + a 20-line pure helper. 7 bats tests cover: zfs has zfs-dkms/zfs-utils, btrfs has btrfs-progs + grub + grub-btrfs + snapper + snap-pac, each flavor excludes the other's specifics, common packages are in both, unknown filesystem returns status 1, output is one-per-line. make test: 65/65.
* refactor: unify get_{luks,zfs}_passphrase and get_root_passwordCraig Jennings9 days2-54/+41
| | | | | | | | | | | | | | | Extract the prompt/confirm/min-length loop into prompt_password() in lib/common.sh using a nameref for the output variable, so UI output stays on the terminal (no command-substitution capture) and the three callers collapse from ~30 lines each to a single helper call. - get_luks_passphrase() — min 8 chars - get_zfs_passphrase() — min 8 chars - get_root_password() — no min (was unchecked before; preserved) 5 bats tests added: match+min-ok path, length-retry loop, mismatch-retry loop, min_len=0 disables check, empty passphrase when min_len=0. make test: 58/58.
* refactor: drop dead mount_efi and select_raid_level from lib/disk.shCraig Jennings9 days1-41/+0
| | | | | | | lib/disk.sh:mount_efi() was shadowed by installer/archangel:mount_efi() (different signature, no-arg ZFS-specific) and had zero callers. lib/disk.sh:select_raid_level() was superseded by get_raid_level() in archangel and also had zero callers. Both removed.
* refactor: extract pure RAID logic to lib/raid.sh with bats coverageCraig Jennings9 days2-6/+75
| | | | | | | | | | | | | | | | | | | | Peel the testable pieces of get_raid_level() out of the 1600-line installer monolith into installer/lib/raid.sh: - raid_valid_levels_for_count(count) — replaces the inline option-list builder in get_raid_level() - raid_is_valid(level, count) — useful for unattended-config validation - raid_usable_bytes(level, count, smallest, total) — usable-space math - raid_fault_tolerance(level, count) — max tolerable disk failures archangel now sources lib/raid.sh and uses raid_valid_levels_for_count for the fzf option list. Fzf preview subshell still inlines its own usable-bytes arithmetic (calling exported lib functions across preview subshells is fragile; left for a later pass). 30 bats tests in tests/unit/test_raid.bats cover the full enumeration table, every valid/invalid level-vs-count combo from 2 to 5 disks, mixed-size mirror, and unknown-level error paths. make test: 53/53.
* security: gitignore host configs, add .example templatesCraig Jennings9 days2-0/+0
| | | | | | velox-{zfs,btrfs}.conf contain LUKS/ZFS passphrases and root passwords. Untrack them and add velox-*.conf to .gitignore. Committed .example templates show the expected structure with 'welcome' placeholders.
* refactor: remove dead installer/lib/zfs.shCraig Jennings9 days2-378/+8
| | | | | | | | | | | | | The library was sourced but only zfs_preflight was reachable from install_zfs(); the other ten functions either had names that were never called (create_zfs_datasets, configure_zfs_pacman_hook, etc.) or were shadowed by same-named definitions in the monolithic installer/archangel (create_zfs_pool, configure_zfsbootmenu, configure_zfs_services). Inlined zfs_preflight into archangel and dropped the source line. Removes a trap where fixes appear to be "mirrored" but only one copy actually runs.
* fix: drop zroot/tmp dataset and dedup pacman snapshot hookCraig Jennings9 days2-8/+46
| | | | | | | | | | - /tmp on ZFS breaks systemd-tmpfiles-clean (statx ENOLINK on PrivateTmp paths). Use tmpfs via fstab instead; keep zroot/var/tmp. - zfs-pre-snapshot gains a 60s lockfile in /run so burst transactions (archsetup produced 357 snapshots in one run) collapse to one. Both fixes mirrored in installer/archangel and installer/lib/zfs.sh. Already applied and verified on velox.
* session: first bare metal install on velox, multiple fixesCraig Jennings11 days2-0/+30
| | | | | ZFS and Btrfs tested on bare metal. Fixed archzfs repo URL, LUKS pbkdf2 for GRUB, no-color default, and missing inetutils. Tagged v0.8.
* fix: add inetutils to installed system packagesCraig Jennings12 days1-0/+2
| | | | Provides hostname, ping, and other networking basics on the target system.
* fix: use pbkdf2 for LUKS2 containers instead of argon2idCraig Jennings12 days1-2/+5
| | | | | GRUB's LUKS2 support only handles pbkdf2. When /boot is inside the encrypted volume, argon2id causes GRUB to reject the correct password.
* feat: default to no-color output, add --color flag to enableCraig Jennings12 days2-11/+16
| | | | Keeps logs and SSH output clean. Use archangel --color for colored output.
* fix: migrate archzfs repo from stale archzfs.com to GitHub ReleasesCraig Jennings12 days1-2/+2
| | | | | archzfs.com was abandoned mid-2025; latest packages were ZFS 2.3.2 for kernel 6.12.29. The new GitHub-hosted repo has ZFS 2.4.1 for 6.18.21.
* refactor: rename custom/ to installer/ for clarityCraig Jennings2026-02-2311-0/+6477
The custom/ directory name was an archiso implementation detail. Renamed to installer/ which clearly communicates that this directory contains the installer scripts and utilities that ship on the ISO. Updated all references in build.sh, Makefile, test-install.sh, and README.