summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
20 hoursfix(archsetup): code cleanup and style fixesCraig Jennings
- Remove commented-out reflector code (timer handles updates) - Fix arithmetic expressions (remove unnecessary inner $) - Simplify file truncation (: > instead of cat /dev/null >) - Fix Xorg heredoc indentation - Add shellcheck bulk cleanup as priority D task
21 hoursfix(archsetup): bug fixes, locale support, and code improvementsCraig Jennings
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.
44 hoursprune(archsetup): remove valent packageCraig Jennings
Build time too long for limited utility. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
47 hoursrefactor(archsetup): improve code architecture and error handlingCraig Jennings
- Split error() into error_warn() and error_fatal() for clarity - Add retry_install() helper to eliminate DRY violation - Make repo URLs configurable via config file - Add section headers for better code organization: - Output & Logging, Installation Helpers, System Detection, System Configuration - Standardize function definition style (no space before parens) - Clean up display() function (remove semicolons, fix spacing) - Remove legacy error() wrapper Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2 daysprune(archsetup): remove podman, use docker for distroboxCraig Jennings
2 daysprune(archsetup): remove redundant and unused packagesCraig Jennings
Remove overlapping/unused packages: - librewolf-bin (commented out) - the_silver_searcher (ripgrep is faster) - dfc (duf is better) - p7zip (7zip is newer) - neovim (use emacs) - boxbuddy (just GUI for distrobox) - tageditor (commented out, build issues)
2 daysprune(archsetup): remove unused packagesCraig Jennings
Remove packages that aren't actively used: - pycharm-community-edition (use emacs for Python) - mcomix (comic book reader) - figlet, figlet-fonts (ASCII art text) - ledger (CLI accounting)
2 daysfix(archsetup): add btrfs detection, don't assume non-ZFS is btrfsCraig Jennings
- Add is_btrfs_root() function - Only install timeshift-autosnap and grub-btrfs on btrfs systems - Skip snapshot tools on ext4/other filesystems
2 daysfeat(archsetup): add config file support for unattended installsCraig Jennings
- Add --config-file PATH CLI flag - Add load_config() function to source config variables - Support USERNAME, PASSWORD, AUTOLOGIN, NO_GPU_DRIVERS config options - Create archsetup.conf.example with documented options Follows same pattern as archzfs project for consistency.
2 dayschore: add stignore and reference docsCraig Jennings
- .stignore for syncthing - Reference notes for ZFS scripts removal and console display issues
2 daysrefactor(archsetup): remove --skip-slow-packages flagCraig Jennings
texlive-meta was replaced with smaller texlive packages, and topgrade should always be installed. The flag is no longer needed.
2 daysfix(archsetup): improve error reporting and desktop database setupCraig Jennings
- Install desktop-file-utils before calling update-desktop-database - Simplify firewall warning to terse message in error summary - Clean up package failure messages to show just package name and source
2 daysfix(archsetup): add PAM config for gnome-keyring auto-unlockCraig Jennings
Configure /etc/pam.d/login to pass login password to gnome-keyring-daemon, enabling automatic keyring unlock on console login + startx workflow.
2 daysfeat(archsetup): add additional gstreamer codec packagesCraig Jennings
Add gst-plugins-bad, gst-plugins-ugly, and gst-libav for broader multimedia format support including AAC, MP3, x264, and FFmpeg codecs.
2 daysrefactor(archsetup): remove jdk, racket, and foliate packagesCraig Jennings
Remove unused packages: - jdk-openjdk and openjdk-doc (Java) - racket (Scheme) - foliate (epub reader)
2 daysrefactor(archsetup): replace texlive-meta with minimal package setCraig Jennings
texlive-meta installs 2GB of packages including games, music notation, and humanities packages that aren't needed. Replace with minimal set (~335MB) that provides core LaTeX, latexmk, and standard fonts.
2 daysfix(archsetup): enable syncthing user service via symlinkCraig Jennings
systemctl --user requires an active D-Bus user session bus, which doesn't exist during installation. Create the enable symlink directly in ~/.config/systemd/user/default.target.wants/ instead.
2 daysfix(archsetup): fix dbus-broker race condition with sysusersCraig Jennings
dbus-broker can start before systemd-sysusers completes, causing it to fail user validation when parsing service files that reference system users like geoclue. Add a drop-in to ensure sysusers runs first.
2 daysfix(archsetup): enable ufw firewall with ufw enable commandCraig Jennings
systemctl start ufw.service only runs ufw-init which checks if ENABLED=yes in /etc/ufw/ufw.conf. Without running 'ufw enable' first, the firewall remains inactive. Added 'ufw --force enable' to actually activate the firewall rules.
2 daysfix(archsetup): use modalias for GPU detection instead of lspciCraig Jennings
lspci parsing missed GPUs that report as "Display controller" instead of "VGA" (e.g., AMD Strix Halo). Modalias-based detection checks vendor IDs directly from /sys, which is more reliable and matches how the kernel itself identifies hardware.
3 daysfix(archsetup): add system config improvements and gnome-keyring setupCraig Jennings
- 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)
3 daysdocs(todo): add weekly topgrade reminder for kernel upgradeCraig Jennings
Track linux-lts upgrade to 6.18+ which contains fix for AMD Strix Halo VPE power gating bug causing system freezes. Workaround in place until kernel upgrade.
3 daysfix(archsetup): run update-desktop-database after stowCraig Jennings
Register custom .desktop files in desktop database after stow links them into place.
4 daysfix(archsetup): add firewall validation with critical warningCraig Jennings
- Verify ufw is active after setup completes - Display critical security warning in outro if firewall not active - Include manual fix commands in warning message
4 daysfix(archsetup): add locale configurationCraig Jennings
Configure en_US.UTF-8 locale early in Environment Configuration section to prevent "cannot change locale" errors during package installs.
4 dayschore: rename TODO.org to todo.orgCraig Jennings
4 daysfix(dotfiles): update for ratio desktopCraig Jennings
- Set Xresources DPI to 109 for ultrawide monitor - Remove deno environment setup (no longer using)
4 daysfix(archsetup): replace ntp with chrony and add packagesCraig Jennings
- Replace deprecated ntp with chrony for time sync - Add opus codec (all music in opus format) - Add iperf3 and net-tools for network diagnostics - Add lexend-fonts-git font - Fix rmmod pcspkr error when module not loaded - Remove duplicate mediainfo entry (kept in Emacs section)
4 daysfix(claude-code): use native installer instead of npm-globalCraig Jennings
Native install to ~/.local/bin allows auto-updates without sudo.
4 daysfix(archsetup): increase GRUB timeout and switch syncthing to user serviceCraig Jennings
- 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
4 daysdocs(TODO): add completed ZFS boot fixes and validation testsCraig Jennings
Document completed work from 2026-01-20/21 session: - Method 1: ZFS boot fixes (udev hook, nvme MODULES, random.trust_cpu) - Method 2: Boot configuration validation tests added to validation.sh - Reorganize URGENT section tasks into appropriate V2MOM methods
5 daysfix(archsetup): prevent ZFS boot failures and add validation testsCraig Jennings
- 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
5 daysfeat(testing): add bare metal ZFS test script + fix scrub timer checkCraig Jennings
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>
5 daysfix(testing): add emacs config permission checkCraig Jennings
Verify .emacs.d directory is readable by user cjennings, not just that it exists. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5 daysfix(testing): fix validation script bugs causing false failuresCraig Jennings
- 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>
5 daysfeat(testing): add comprehensive validation library for archsetupCraig Jennings
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>
5 daysfix(archsetup): remove unnecessary firewall portsCraig Jennings
Remove ports for services not installed: - 80,443,8080/tcp (no web server) - 9040,9050,9051,9053,9119/tcp (Tor relay - only client installed) - 443/tcp limit (no HTTPS service) Add inline comments documenting each port's purpose.
5 daysfeat(archsetup): skip avahi if already runningCraig Jennings
Detect if avahi-daemon.service is active and skip install/config. Supports archzfs installs that pre-configure avahi for mDNS on first boot.
6 daysfix(archsetup): remove root account lockingCraig Jennings
Locking root prevents console access after reboot, making recovery impossible without reinstalling.
6 daysfix(archsetup): redirect git clone output to logfileCraig Jennings
Move redirect outside subshell so mkdir and git clone output goes to logfile instead of stdout.
6 daysfix(archsetup): fix npm global install and add wireless-regdbCraig Jennings
- Run npm install -g as root (global install requires root perms) - Add wireless-regdb to prerequisites (prevents kernel regulatory warnings)
6 daysfix(archsetup): start systemd-resolved before creating DNS symlinkCraig Jennings
The stub-resolv.conf file only exists when systemd-resolved is running.
6 daysfeat(archsetup): configure Docker to use ZFS storage driver on ZFS systemsCraig Jennings
Creates /etc/docker/daemon.json with storage-driver: zfs when running on a ZFS root filesystem. This provides better performance and enables Docker to leverage ZFS snapshots. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6 daysfeat(archsetup): add claude-code AI coding assistantCraig Jennings
Installs @anthropic-ai/claude-code via npm after npm is installed. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6 daysfix(archsetup): use official repo packages for tailscale and torbrowserCraig Jennings
- tailscale-bin no longer exists in AUR; tailscale is now in official repos - torbrowser-launcher (official repo) is more reliable than tor-browser-bin (AUR) which has GPG key verification issues Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6 daysfix(archsetup): fix ZFS scrub timer and emacs cloneCraig Jennings
- ZFS scrub timer: use template unit with pool name (zfs-scrub-weekly@pool.timer) - Emacs config: handle existing .emacs.d dir with git pull instead of failing
6 daysfix(archsetup): move STARTTIME outside intro() for resume supportCraig Jennings
6 daysfeat(archsetup): add --no-root-lock flag for testingCraig Jennings
6 daysfix(archsetup): add harfbuzz dependency for st terminalCraig Jennings
6 daysfix(archsetup): fix DNS and git safe.directory for curl|bashCraig Jennings
- Bootstrap DNS symlink in create_user() before AUR/git operations - Add git safe.directory config before git restore (root on user repo)