summaryrefslogtreecommitdiff
path: root/scripts
Commit message (Collapse)AuthorAgeFilesLines
* fix(test): use local repo for archsetup instead of remoteCraig Jennings2026-01-291-0/+3
| | | | | | | | Set ARCHSETUP_REPO=/tmp/archsetup-test in VM config so archsetup uses the bundled test repo instead of cloning from remote server. This ensures tests use the current local changes. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(test): use PROJECT_ROOT for git bundle creationCraig Jennings2026-01-291-1/+1
| | | | | | | The git bundle command was running from current directory instead of PROJECT_ROOT, causing it to bundle from wrong repo. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(test,hyprland): improve test infrastructure and fix easyeffectsCraig Jennings2026-01-292-0/+6
| | | | | | | | | | | | | | | | | | | | Test Infrastructure: - Add make test-keep target to keep VM running after test - Add make test-vm-base target for creating base VM only - Update make test to auto-create VM if missing - Remove manual user creation from create-base-vm.sh (archsetup handles it) - Remove unused USERNAME/USER_PASSWORD from archsetup-test.conf Archsetup: - Add snapper-gui-git for btrfs snapshot GUI - Add SYNC_ACL=yes for snapper permissions - Add setfacl for wheel group access to /.snapshots Hyprland: - Remove easyeffects scratchpad (keep auto-launch) - Remove ecosystem permissions (caused too many popups) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(testing): add make test target and display report on completionCraig Jennings2026-01-271-0/+4
| | | | | Add 'make test' Makefile target to run full VM integration test suite. Print test report to terminal after generation for immediate visibility.
* feat(testing): rewrite test infrastructure from libvirt to direct QEMUCraig Jennings2026-01-2713-1111/+720
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the never-fully-operational libvirt-based VM test infrastructure with direct QEMU management and archangel ISO for fully automated, unattended base VM creation. Key changes: - vm-utils.sh: complete rewrite — QEMU process mgmt via PID file, monitor socket for graceful shutdown, qemu-img snapshots, SSH port forwarding (localhost:2222) - create-base-vm.sh: boots archangel ISO, SSHs in, runs unattended install via config file, verifies, creates clean-install snapshot - run-test.sh: snapshot revert, git bundle transfer, detached archsetup execution with setsid, polling, validation, and report generation - debug-vm.sh: CoW overlay disk, GTK display, auto-cleanup on close - setup-testing-env.sh: reduced deps to qemu-full/sshpass/edk2-ovmf/socat - cleanup-tests.sh: PID-based process management, orphan detection - validation.sh: port-based SSH (backward compatible), fuzzel/foot for Hyprland, corrected package list paths - network-diagnostics.sh: getent/curl instead of nslookup/ping (SLIRP) New files: - archsetup-test.conf: archangel config for base VM (btrfs, no encrypt) - archsetup-vm.conf: archsetup config for unattended test execution - assets/archangel.conf.example: reference archangel config Deleted: - finalize-base-vm.sh: merged into create-base-vm.sh - archinstall-config.json: replaced by archangel .conf format Tested: full end-to-end run — 51 validations passed, 0 failures. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: move arch-distrobox and wipedisk to scriptsCraig Jennings2026-01-272-0/+524
|
* fix(scripts): update wireguard config path after renameCraig Jennings2026-01-271-1/+1
|
* refactor(dotfiles): rename system/ to common/ and remove unused configsCraig Jennings2026-01-261-1/+1
| | | | | | | | | | | | | | | | | | | | | Rename dotfiles/system to dotfiles/common for clarity - indicates shared dotfiles used across all desktop environments (DWM, Hyprland). Removed config directories for uninstalled applications: - ghostty (using different terminal) - lf (using ranger instead) - mopidy (using mpd instead) - nitrogen (X11-only, obsolete for Wayland) - pychess (not installed) - JetBrains (not installed via archsetup) - youtube-dl (using yt-dlp with different config location) Kept audacious config for potential future use. Updated all references in archsetup, CLAUDE.md, todo.org, and validation.sh. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(testing): remove obsolete --skip-slow-packages optionCraig Jennings2026-01-242-28/+6
| | | | This flag was removed from archsetup but remained in test scripts.
* feat(archsetup): add Hyprland/Wayland desktop environment supportCraig Jennings2026-01-241-2/+71
| | | | | | | | | | | | | | - Add DESKTOP_ENV config variable (dwm/hyprland/none, default: hyprland) - Create wayland() and hyprland() installation functions - Add display_server/window_manager conditional step wrappers - Create dotfiles/hyprland/ with full config suite: - hyprland.conf with keybindings translated from DWM + sxhkd - waybar config matching conky status bar - hypridle/hyprlock for screen locking - wofi config matching rofi theme - gammastep config for Wayland (replaces redshift) - Add Hyprland validation tests to validation.sh - Update archsetup.conf.example with DESKTOP_ENV option
* fix(testing): relax UFW tests for VM environmentCraig Jennings2026-01-241-12/+9
| | | | | VM lacks iptables kernel modules so UFW cannot activate. Tests now only verify UFW is enabled rather than active.
* fix(archsetup): bug fixes, locale support, and code improvementsCraig Jennings2026-01-241-0/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug fixes: - Initialize errors_encountered at script start (not in intro) - Capture correct exit code in retry_install loop - Add missing error_fatal parameters - Fix unclosed quote in error message - Quote variables in pacman_install/aur_install commands - Standardize done statements (remove trailing semicolons) New features: - Locale selection prompt with 8 common options + custom entry - Auto-derive wireless region from locale - Extract zfs-replicate to separate script file - Make archsetup repo URL configurable - Add MulticastDNS=no to avoid avahi conflict Code improvements: - Single STEPS array for show_status and main execution loop - Document security note for config file sourcing - Add explanatory comment for UFW VM behavior - Silence update-desktop-database warnings Config updates: - Add LOCALE and ARCHSETUP_REPO to example config Also adds Wayland/Hyprland desktop alternative to V2MOM roadmap.
* fix(archsetup): add system config improvements and gnome-keyring setupCraig Jennings2026-01-221-0/+39
| | | | | | | | | | - Enable chrony service and create /etc/sysconfig/chronyd to suppress warning - Configure wireless regulatory domain (US) for full WiFi capabilities - Configure paccache to retain 3 package versions - Pre-create gnome-keyring with 'login' default (auto-unlocks at login) - Add rtkit package for pipewire realtime scheduling - Add validation test for gnome-keyring setup - Add system action .desktop files (logout, shutdown, reboot, suspend, lock)
* fix(archsetup): increase GRUB timeout and switch syncthing to user serviceCraig Jennings2026-01-211-1/+8
| | | | | | | - GRUB_TIMEOUT 0→2 seconds for menu access - Syncthing: system service → user service with lingering to prevent lock conflicts - Update airplanemodetoggle for user service - Update validation to check lingering instead of system service
* fix(archsetup): prevent ZFS boot failures and add validation testsCraig Jennings2026-01-201-0/+69
| | | | | | | | | | | | | - Skip udev→systemd hook change on ZFS systems (ZFS hook is busybox-based) - Add nvme to MODULES for NVMe systems (ensures devices ready for ZFS import) - Add random.trust_cpu=off to suppress AMD RDSEED warnings - Add has_nvme_drives() detection function New validation tests: - validate_terminus_font: check package installed via pacman - validate_mkinitcpio_hooks: verify ZFS uses udev not systemd - validate_initramfs_consolefont: check font in initramfs - validate_nvme_module: check nvme in MODULES for NVMe systems
* feat(testing): add bare metal ZFS test script + fix scrub timer checkCraig Jennings2026-01-202-1/+324
| | | | | | | | | | | | Add run-test-baremetal.sh for testing on physical ZFS systems: - SSH to target host and run archsetup - Support for ZFS genesis snapshot rollback - Validate-only mode for existing installs - Same validation checks as VM tests Fix grep -c multi-line output issue in ZFS scrub timer check. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(testing): add emacs config permission checkCraig Jennings2026-01-201-0/+10
| | | | | | | Verify .emacs.d directory is readable by user cjennings, not just that it exists. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(testing): fix validation script bugs causing false failuresCraig Jennings2026-01-201-10/+24
| | | | | | | | | | - Add || true to arithmetic increments (set -e exits on ((0++))) - Fix grep -c multi-file output parsing with tr and defaults - Add fallback UFW check via systemctl when ufw status fails - Add dbus-broker timing error to benign patterns (geoclue) - Use grep -h | wc -l for error counting across multiple log files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(testing): add comprehensive validation library for archsetupCraig Jennings2026-01-202-53/+906
| | | | | | | | | | | | | | | | | | | | | Add validation.sh library with 25+ automated validation checks: - User creation, shell, and group membership (15 groups) - Dotfiles: symlink validity, target location, and readability - Package managers: yay and pacman functional tests - Suckless tools: dwm, st, dmenu, slock - Services: firewall, DNS-over-TLS, avahi (with mDNS ping test), fail2ban, NetworkManager - Developer tools: emacs, git, python, node, npm, go, rustc - Filesystem-specific: ZFS (sanoid, scrub) and btrfs (grub-btrfsd) - Archsetup-specific: log errors, state markers Also includes: - Pre/post install log capture and diff analysis - Error categorization (benign vs real) - Issue attribution (archsetup vs base install) - archzfs inbox integration for base install issues Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(archsetup): copy archsetup to user directory before stowCraig Jennings2026-01-101-0/+16
| | | | | | | | | | | | | | Previously, stow created dotfile symlinks pointing to wherever archsetup was run from (e.g., /root/archsetup or /tmp). If run from a location inaccessible to the user, zsh would fail to read its config on first login and prompt for new user setup. The fix copies archsetup to ~/code/archsetup before running stow, ensuring symlinks always point to a user-accessible location. Also adds a test to verify dotfiles are readable by the user (not just root). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(archsetup): implement critical bug fixes and test improvementsCraig Jennings2025-11-1312-0/+2259
| | | | | | | | | | | | | | | | | | | | | | | | | | | This commit addresses several high-priority bugs and enhances the testing infrastructure: **Bug Fixes:** 1. Add root permission check at script start to fail fast with clear error message 2. Disable debug package installation by adding --nodebug flag to all yay calls 3. Replace unsafe `git pull --force` with safe rm + fresh clone to prevent data loss 4. Add geoclue package with correct systemd service configuration for geolocation 5. Add completion marker for reliable automated test detection **Testing Infrastructure:** - Add comprehensive VM-based testing framework in scripts/testing/ - Fix test script pgrep infinite loop using grep bracket self-exclusion pattern - Add network diagnostics and pre-flight checks - Support snapshot-based testing for reproducible test runs **Package Management:** - Remove anki (build hangs 98+ minutes) - Remove adwaita-color-schemes (CMake build issues) Test Results: 0 errors, 1,363 packages installed in 40 minutes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* add gbrainy to games install listCraig Jennings2025-06-091-0/+1
|
* adding games scriptCraig Jennings2025-06-091-0/+32
|
* wip: adding some login eye candyCraig Jennings2025-05-291-0/+17
|
* add wireguard fzf functionality and install scriptCraig Jennings2025-05-271-0/+13
|
* removing unneeded fileCraig Jennings2025-05-261-35/+0
|
* integrated redshift into archsetup (blue light filter)Craig Jennings2025-05-261-18/+0
|
* adding redshift and getting geoclue to workCraig Jennings2025-05-251-0/+18
|
* fixing typo on gitreposCraig Jennings2025-05-201-1/+1
|
* adding items for protonmail-bridgeCraig Jennings2024-12-051-0/+17
| | | | | - adding pass and seahorse - added script to build protonmail-bridge and init pass to work with it
* add all commonly used repositoriesCraig Jennings2024-11-121-11/+17
|
* moving things aroundCraig Jennings2024-11-113-0/+91
|
* updating tasks, better comments, minor fix, wip: touchpad scriptCraig Jennings2024-05-271-0/+35
fix: - google-chrome-stable package is now google-chrome script: - looking at writing a script that identifies when the Logitech device is attached/detatched so I could turn the touchpad off/on