Commit Graph

14 Commits (2ff5b9b61d591273b4ab2fddf7fbcc0fcbc8c67d)

Author SHA1 Message Date
Amir Alexander Abdelbaki 2ff5b9b61d refactor(installer): move plymouth fully into optional apps
Both plymouth and plymouth-custom are now optional — neither is strictly
required, so removing plymouth from the core COMPONENTS checklist and
treating it identically to plymouth-custom.

- Remove plymouth from COMPONENTS checklist, counter, summary, and dispatch
- Add plymouth back to modules.conf (default=on, excludes=plymouth-custom)
- Regenerate all sentinel regions; plymouth now appears in optional apps
  checklist/summary/conflicts/dispatch alongside plymouth-custom

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:42:11 +02:00
Amir Alexander Abdelbaki 69aacec8fa fix(installer): correct plymouth path + remove from optional apps registry
plymouth is a core component (COMPONENTS checklist), not an optional app.
Moving plymouth.sh to apps/ left the core dispatch pointing at the deleted
path; also incorrectly added it to modules.conf, duplicating it in the
optional apps checklist.

- Fix core dispatch: $MODULES/optional-Modules/plymouth.sh → $APPS/plymouth.sh
- Remove plymouth from modules.conf (plymouth-custom remains as optional app)
- Regenerate all sentinel regions; conflict block now only has plymouth-custom

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:38:37 +02:00
Amir Alexander Abdelbaki 5647852ee6 refactor(modules): move plymouth into apps/, retire freeipa-image to tools/
apps/ is for modules that install software during setup. freeipa-image is
support tooling for the ansipa controller, run manually before installation,
so it has no place in the TUI module picker.

- git mv optional-Modules/plymouth.sh → apps/plymouth.sh
- git mv apps/freeipa-image.sh → setup/tools/freeipa-image.sh
- modules.conf: add plymouth (default=on, excludes=plymouth-custom); remove freeipa-image
- generate-modules.sh: regenerate all sentinel regions (81 → 81 active modules,
  freeipa-image dropped from checklist/summary/dispatch, plymouth added with on default,
  conflict block gains plymouth ↔ plymouth-custom pair)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:30:03 +02:00
Amir Alexander Abdelbaki 5d7c97409b feat(installer): modules.conf registry + sentinel-based code generation
Collapse 5 manual touch points per optional app module (counter, checklist,
summary, conflict check, dispatch in tui-install.sh + answerfile generator +
docs table row) into a single source of truth at setup/modules.conf.

- setup/modules.conf: 80-module registry (id|category|description|default|excludes)
  with sensible defaults (python, firefox-browser, onlyoffice) and conflict pairs
  (plymouth-custom ↔ plymouth)
- setup/sync-modules.sh: scans apps/*.sh, stubs any IDs missing from modules.conf
- setup/generate-modules.sh: regenerates all sentinel regions from modules.conf
  (supports --dry-run); fixes Python re.sub backslash-n corruption via lambda repl
- tui-install.sh: 5 sentinel regions added (module-counters, module-checklist,
  module-summary, module-conflicts, module-dispatch); fixes 19 modules missing
  from count_steps() and mail-notmuch/caldav-sync missing from SUMMARY
- generate-answerfile.sh: module-checklist sentinel; list-height now auto-computed
- docs/md/modules.md: per-category sentinels; all sections regenerated from conf
- Renames: prismlauncher→prism, freeipa-image-builder→freeipa-image,
  firefox→firefox-browser, zed→zed-ide; moves python/zfs/wprs into apps/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:24:02 +02:00
Amir Alexander Abdelbaki 2be85739b5 feat(apps): add Tangent Notes module (Flatpak)
Installs io.github.suchnsuch.Tangent via Flatpak with cyberqueer theme
applied. Registered in TUI installer, answerfile generator, and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:20:25 +02:00
Amir Alexander Abdelbaki e278795610 feat(apps): add Obsidian module (Flatpak)
Installs md.obsidian.Obsidian via Flatpak with cyberqueer theme applied.
Registered in TUI installer, answerfile generator, and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:15:08 +02:00
Amir Alexander Abdelbaki 394927573d feat(apps): add Rnote module (Flatpak)
Installs com.github.flxzt.rnote via Flatpak with cyberqueer theme
applied. Registered in TUI installer, answerfile generator, and docs
alongside xournal++ in the Productivity section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:11:19 +02:00
Amir Alexander Abdelbaki 66e51474a1 feat(apps): add OpenDeck + ydotool module
Installs ydotool via pacman and OpenDeck via Flatpak, wires ydotoold
and OpenDeck into the Hyprland autostart. Registers the module in the
TUI installer, answerfile generator, and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 11:08:32 +02:00
Amir Alexander Abdelbaki f5a1182a3d feat(plymouth): add custom-logo variant, sync answerfile + docs
- plymouth.sh: accepts PLYMOUTH_LOGO_SRC env var; PNG used as-is, SVG
  converted via rsvg-convert (librsvg only installed when needed)
- apps/plymouth-custom.sh: thin wrapper that validates the caller-supplied
  path and delegates to plymouth.sh with PLYMOUTH_LOGO_SRC exported
- install-modules.sh: adds 'Plymouth (custom)' checklist entry; prompts
  for image path via inputbox before the confirmation dialog; exports
  PLYMOUTH_LOGO_SRC into the module run
- generate-answerfile.sh: adds 'plymouth' (on by default) to the
  components checklist to match tui-install.sh
- docs: installation.md and modules.md updated with Plymouth component,
  answerfile schema, mkinitcpio note, and custom-logo module entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SyBNiWy3wpawrWb9ryVk7p
2026-06-26 10:57:32 +02:00
Amir Alexander Abdelbaki 8b9c5c70b2 feat(installer): add shell_rc preference to skip copying .*rcs to skel
Adds a dialog (interactive + answerfile) letting the user choose whether
to copy the dotfiles' .zshrc / .bashrc / .vimrc into /etc/skel, or leave
system defaults in place. The choice is persisted as shell_rc in the
answerfile JSON and respected by both the TUI installer and the generator.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 09:05:00 +02:00
Amir Alexander Abdelbaki b4d0aec647 feat(setup): wire mail-notmuch and caldav-sync into TUI installers + answerfile
Two fully-featured module scripts already existed under optional-Modules/apps/
(mail-notmuch.sh and caldav-sync.sh) but were never surfaced in the installer
UI, so users had no way to select them during setup.

Changes across three files:

simple-install.sh
  - count_steps(): added entries for mail-notmuch and caldav-sync so the
    [N/total] progress counter stays accurate; also back-filled 13 other apps
    (gimp, inkscape, krita, ardour, audacity, lmms, mixxx, cecilia, kdenlive,
    openshot, shotcut, anti-malware, timeshift) that were already in the
    checklist but missing from count_steps, causing the total to be wrong.
  - Checklist: added both entries under the CLI Tools header, directly after
    himalaya, with a human-readable description of the stack each installs.
  - Run section: added the conditional run_module calls so the modules
    actually execute when selected.

tui-install.sh (dialog-based TUI, same three locations as above)
  - count_steps(): added mail-notmuch and caldav-sync.
  - Checklist: added both entries with matching descriptions.
  - Run section: added the conditional run_module calls.

generate-answerfile.sh
  - Added both entries to the dialog checklist so the JSON answerfile
    generator (used for unattended / ISO-embedded installs) can also select
    them, keeping the answerfile schema in sync with the interactive TUIs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 10:19:06 +02:00
Amir Alexander Abdelbaki af1425811b fix(installer): sync all setup scripts with recent DE and module additions
- simple-install.sh: add Niri to DE menu and case dispatch (archiso uses
  this path via archbaseos-guided-install.sh)
- install-modules.sh: add Niri to checklist, count_steps, summary, and
  run dispatch
- generate-answerfile.sh: add hyprlua + niri to DE menu, replace separate
  blender/povray with blender-povray, add all modules added since last
  sync (games, graphics, audio, video, timeshift, rdp, qemu)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:04:53 +02:00
Amir Alexander Abdelbaki 6ccc91303f fix(setup): port KEYMAPS+vconsole support to auto-installer and answerfile generator
arch-autoinstall.sh was missing the keymap handling added to the guided
installer in the previous two commits, so booting the ISO in auto mode
(answerfile embedded) never called loadkeys and left the installed system
with no /etc/vconsole.conf.

- Add the same KEYMAPS array + selection logic to arch-autoinstall.sh
  (AF mode reads .keymap, interactive mode prompts)
- Call loadkeys and export KEYMAP into the chroot
- Write /etc/vconsole.conf inside the chroot
- Add keymap dialog to generate-answerfile.sh so the field is populated
- Document .keymap in the arch-autoinstall.sh answerfile field list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 00:01:19 +02:00
Amir Alexander Abdelbaki b5a3b46c79 setup: add answerfile system for fully automated installs
tui-install.sh:
  - Reads /answerfile.json if present (ANSWERFILE_MODE)
  - All dialog selections (components, DE, apps) sourced from file
  - Hostname from answerfile gets MAC address suffix appended to
    prevent conflicts when deploying one image to multiple machines
  - Interactive hostname inputbox added to the normal TUI flow
  - Colorway dialog added as final step; skipped if no colors differ
    from defaults and no answerfile colors are set
  - Answerfile mode: runs non-interactively, logs warnings on failure

generate-answerfile.sh (new):
  - Dry-runs the full installer dialog flow (OS + dotfiles)
  - Writes selections to ~/answerfile.json (or a given path)
  - No software is installed; passwords are never written to the file

build.sh:
  - New --preconf [FILE] flag embeds an answerfile into the ISO at
    /answerfile.json; omitting the flag leaves the ISO clean
  - Validates JSON with jq if available before embedding
  - Reworked arg parsing to handle the new flag alongside OUT_DIR

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:24:47 +02:00