summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* fix(archsetup): chown tmpfs mount point instead of parent dirCraig Jennings2026-01-193-295/+1
| | | | | - Fixed permission bug where source_dir tmpfs was owned by root - Remove zfssnapshot and zfsrollback (now in archzfs ISO)
* Update ZFS scripts for archzfs compatibilityCraig Jennings2026-01-182-7/+32
| | | | | | | | | | | | | | | zfssnapshot: - Change date format to YYYY-MM-DD_HH-MM-SS_description (matches pre-pacman snapshot format for consistent sorting) - Convert spaces to underscores instead of hyphens - Add GRUB menu regeneration after snapshot creation zfsrollback: - Add special warning for genesis rollback - Add GRUB menu regeneration after successful rollback (removes destroyed snapshots from boot menu) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(zfsrollback): sort snapshots with newest firstCraig Jennings2026-01-181-3/+4
|
* feat(dotfiles): add zfssnapshot and zfsrollback utilitiesCraig Jennings2026-01-182-0/+268
| | | | | | - zfssnapshot: create dated snapshots across all pools with description - zfsrollback: fzf-based snapshot selection with multi-dataset rollback - Both require root and validate input/show appropriate warnings
* feat(archsetup): add automatic console login for encrypted systemsCraig Jennings2026-01-181-8/+87
| | | | | | | - Add --autologin and --no-autologin CLI flags - Add is_encrypted_root() to detect LUKS and ZFS encryption - Prompt user on encrypted systems (default yes) - Configure getty@tty1 drop-in for passwordless login after decryption
* feat(archsetup): add wireguard-tools and tailscaleCraig Jennings2026-01-181-0/+7
| | | | | | - wireguard-tools from pacman (dotfiles have helper functions ready) - tailscale-bin from AUR (prebuilt, fast install) - Enable tailscaled service (run 'tailscale up' to authenticate)
* docs(archsetup): note potential Docker DNS issue with systemd-resolvedCraig Jennings2026-01-181-0/+3
|
* privacy(archsetup): add encrypted DNS (DNS over TLS)Craig Jennings2026-01-181-2/+28
| | | | | | | - Configure systemd-resolved with DoT using Cloudflare + Quad9 - Enable DNSSEC validation - Integrate with NetworkManager - Fix conflict: keep systemd-resolved for DNS, avahi for mDNS
* privacy(archsetup): add WiFi MAC address randomizationCraig Jennings2026-01-181-0/+14
|
* feat(archsetup): add lynis security auditing toolCraig Jennings2026-01-181-0/+1
|
* feat(archsetup): configure journald retention to 500MBCraig Jennings2026-01-171-0/+7
|
* security(archsetup): lock root account at end of scriptCraig Jennings2026-01-171-0/+4
| | | | | Root is locked last so it remains available for recovery if script fails earlier. Users must use sudo for privileged operations after successful install.
* feat(archsetup): enable weekly ZFS scrub timerCraig Jennings2026-01-171-0/+3
|
* feat(archsetup): add fail2ban for SSH brute force protectionCraig Jennings2026-01-172-0/+147
| | | | | | | - Install and configure fail2ban with ufw integration - SSH jail: 3 attempts, 1 hour ban - Default jail: 5 attempts, 10 minute ban - Also file security recommendations to assets/
* docs: add script URL to headerCraig Jennings2026-01-171-0/+1
|
* fix(archsetup): add cleanup trap to unmount tmpfs on exitCraig Jennings2026-01-171-0/+9
|
* feat(archsetup): add GPU driver detection and installationCraig Jennings2026-01-171-1/+55
| | | | | | | | | - Detect Intel, AMD, and NVIDIA GPUs via lspci - Install appropriate drivers and hardware video acceleration - Support multiple GPUs (e.g., hybrid Intel+NVIDIA laptops) - Add --no-gpu-drivers flag to skip (useful for VMs) - Use nvidia-dkms for better kernel compatibility - Add fallback to mesa+vesa for unknown hardware
* fix(archsetup): misc bug fixes and improvementsCraig Jennings2026-01-171-23/+22
| | | | | | | | | - Add missing error codes to error() calls - Remove useless mkdir pipe to tee - Remove duplicate 5353/udp firewall rule - Replace deprecated exfat-utils with exfatprogs - Quote all variable expansions for safety - Use pipx instead of pip for isolated environments
* feat(archsetup): add error summary at end of scriptCraig Jennings2026-01-171-2/+12
|
* feat(archsetup): ZFS/sanoid support, gvfs-smb, bug fixesCraig Jennings2026-01-173-70/+488
| | | | | | | | | | | | | | | | | | - Add ZFS detection with sanoid/syncoid for snapshot management - Add gvfs-smb for Thunar SMB network browsing - Fix shell quoting throughout script - Fix stale $action variables in error handlers - Fix display() return values (was returning 1) - Fix mkinitcpio.conf sed pattern to be flexible - Fix vconsole.conf duplicate entries on re-run - Fix systemd unit overrides using drop-in files - Fix ufw port typo (55353 -> 5353) - Fix GRUB_RECORDFAIL_TIMEOUT undefined variable - Enable NetworkManager service - Move thunar, libvips, isync to pacman (now in official repos) - Clean up reflector config with heredoc - Remove unnecessary sudo when already root - Convert shebang from sh to bash
* dotfiles: update hey alias, add phenom RAG functionCraig Jennings2026-01-171-2/+6
|
* dotfiles: ai-assistants prompt and formatting improvementsCraig Jennings2026-01-171-15/+15
|
* dotfiles: qalculate expression history updateCraig Jennings2026-01-171-0/+5
|
* dotfiles: calibre scheduler state updateCraig Jennings2026-01-171-2/+2
|
* chore: remove docs/NOTES.org from git trackingCraig Jennings2026-01-131-155/+0
| | | | File remains local but is now covered by .gitignore
* dotfiles: caffeine-ng fix, redshift improvements, ai-assistants updateCraig Jennings2026-01-135-10/+29
| | | | | | | - xinitrc: replace caffeine/caffeine-indicator with caffeine start - redshift: improve night settings (4500K, no dimming), add comments - ai-assistants: read protocols.org before NOTES.org - thunar/calibre: minor auto-generated config updates
* session: fix ai-assistants tilde expansion for tmux -c optionCraig Jennings2026-01-101-0/+2
| | | | | | | | tmux's -c option doesn't expand ~ so windows were starting in $HOME instead of project directories. Expand tilde to $HOME before passing to tmux. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* session: fix dotfiles symlink accessibility issueCraig Jennings2026-01-101-15/+28
| | | | | Diagnosed and fixed bug where stow created symlinks to inaccessible locations. Added test to verify dotfiles are readable by user. Full test passed in 42m 57s.
* fix(archsetup): copy archsetup to user directory before stowCraig Jennings2026-01-102-0/+29
| | | | | | | | | | | | | | 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>
* session: add ai-assistants tmux launcher scriptCraig Jennings2026-01-0916-228/+4080
| | | | | Created script to launch tmux session with Claude assistants for multiple projects. Synced dotfile changes including calibre, audacious, and shell configs.
* session: rofi standardization, feh migration, pre-flight checks, state trackingCraig Jennings2025-12-011-0/+259
|
* fix(archsetup): remove duplicate multimarkdown and proselint entriesCraig Jennings2025-12-011-2/+0
| | | | | | | | | | These AUR packages were incorrectly duplicated as pacman_install calls, causing false errors during installation. The correct aur_install entries remain in the emacs utilities section. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(archsetup): implement state tracking for resume capabilityCraig Jennings2025-12-012-18/+115
| | | | | | | | | | | | | | | | | | | Enables resuming from where the script left off if interrupted: - State stored in /var/lib/archsetup/state/ as marker files - run_step() wrapper tracks completion, skips completed steps - --status flag shows installation progress - --fresh flag clears state for clean restart - --help flag documents all options - 12 major steps tracked (intro through boot_ux) Example: archsetup --status # check progress archsetup # resume from last step archsetup --fresh # start over 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(archsetup): add pre-flight checks before installationCraig Jennings2025-12-012-2/+57
| | | | | | | | | | | | | | Validates system requirements before starting: - Disk space (minimum 20GB free on /) - Network connectivity (ping archlinux.org) - pacman available - Running on Arch Linux (/etc/arch-release) Provides clear error messages with recovery hints if checks fail. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* docs(TODO): mark root check and git pull fixes as verified completeCraig Jennings2025-12-011-6/+7
| | | | | | | | | | Both fixes were already implemented: - Root check exists at archsetup:23-27 - git_install and yay installer use safe rm + fresh clone (no git pull --force) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* docs(TODO): mark -debug packages task as verified completeCraig Jennings2025-12-011-3/+4
| | | | | | | | | Verified on current system: 0 -debug packages installed, yay-debug not present. Fix was implemented via --nodebug flags in archsetup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* docs(TODO): mark completed tasks from today's sessionCraig Jennings2025-12-011-19/+22
| | | | | | | | | | - nitrogen → feh migration (commit 0601d39) - rofi integration and dunst-matched theme (commit 590aa02) - adwaita-color-schemes disabled (CMake build failure confirmed) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(wallpaper): replace nitrogen with fehCraig Jennings2025-12-015-7/+6
| | | | | | | | | | | nitrogen was removed from Arch repos. Migrate to feh: - Add feh to archsetup pacman installs - Update .xinitrc, lf, ranger, and monitor script - feh auto-creates ~/.fehbg for wallpaper restore 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(rofi): standardize rofi configuration with dunst-matched themeCraig Jennings2025-12-014-3/+115
| | | | | | | | | | | | - Add self-contained config.rasi and theme in ~/.config/rofi/ - Remove external ~/code/rofi-themes-collection/ dependency - Match rofi theme colors, font, and border-radius to dunst notifications - Simplify sxhkd keybindings (settings now in config.rasi) - Remove phantom rofi/scripts PATH entry from .profile 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* session: fix GPG/pinentry auth by restarting gpg-agent in xinitrcCraig Jennings2025-11-211-0/+3
| | | | | | Previous fix (disabling emacs.service) did not resolve the issue. Added reset-auth call to .xinitrc after DISPLAY export so gpg-agent inherits correct environment before apps start.
* session: dotfiles sync and GPG/Emacs auth debuggingCraig Jennings2025-11-2122-210/+419
| | | | | | Synced various dotfile configs (calibre, audacious, profile.d, xinitrc). Diagnosed and fixed Emacs/GPG auth issue by disabling systemd emacs.service which lacked DISPLAY environment for pinentry-dmenu.
* fix(archsetup): properly disable debug packages system-wideCraig Jennings2025-11-181-4/+7
| | | | | | | | | | | | | | | | | | | | Replace invalid --nodebug flags with proper makepkg.conf configuration: 1. Configure makepkg.conf OPTIONS to disable debug packages (line 237-238) - Set OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug) - This prevents ALL packages from building debug versions 2. Remove invalid --nodebug flags from yay commands: - Remove from aur_install function (lines 169, 171, 173) - Remove from python-lyricsgenius install (line 957) - --nodebug is not a valid yay/makepkg option in test VM Previous issue: 169 "invalid option 'nodebug'" errors in test logs Expected result: Clean test execution with no debug package warnings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* fix(archsetup): remove invalid --nodebug flag and add redshift configurationCraig Jennings2025-11-184-67/+83
| | | | | | | | | | | | | | | | | | | | | | | Critical fix: - Remove --nodebug flag from yay makepkg command (archsetup:375) * Flag is not supported in makepkg version on test VM * Was causing yay installation to fail with error code 3 Redshift configuration improvements: - Add redshift package installation (archsetup:645) - Fix redshift.conf dimness issues: * Increase gamma from 0.6 to 1.0 (neutral) * Increase brightness-day from 0.9 to 1.0 (full) * Increase brightness-night from 0.7 to 0.8 (less aggressive) - Add redshift to .xinitrc startup services (line 62) - Expand .xinitrc from minimal to full DWM session configuration Additional cleanup: - Remove obsolete startdwm script (replaced by full .xinitrc) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(archsetup): add firmware management and console font configurationCraig Jennings2025-11-153-20935/+28
| | | | | | | | | | | | | | | | | | | | | | - Install mkinitcpio-firmware to silence firmware warnings during upgrades - Configure lat0-16 console font for better TTY readability - Add firmware cleanup task to TODO.org (Method 3: System Hygiene) - Remove old archsetup log file Changes: - archsetup:589 - Add mkinitcpio-firmware AUR package installation - archsetup:963-964 - Configure console font in boot_ux function - TODO.org:419-441 - Add task to remove unnecessary firmware (~600MB savings) Technical details: - Framework laptop only needs intel and atheros firmware packages - mkinitcpio-firmware provides enterprise hardware firmware - lat0-16 font chosen for 2256x1504 high-res display - Eliminates firmware and consolefont warnings during mkinitcpio 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* docs(todo): add dotfiles reorganization taskCraig Jennings2025-11-151-0/+23
| | | | | | | | | | | | | | | Add TODO [#C] to review and reorganize dotfiles for unused applications. Options: - Move unused configs to dotfiles/unused/ directory - Design better restowing mechanism with Makefile for selective stowing Identified during package cleanup session - many configs remain for removed applications (mpd, ncmpcpp, mopidy, obs-studio, obsidian). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* refactor(archsetup): streamline packages and update configurationsCraig Jennings2025-11-154-26/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | Package removals: - Remove MPD/ncmpcpp/Mopidy music players (no longer needed) - Remove obs-studio, obsidian, VS Code - Remove VirtualBox and related packages (use Docker/gnome-boxes instead) - Remove rust package (will use rustup instead) Package additions: - Add difftastic, eza (modern CLI tools) - Add gimp, audacity, vlc (media applications) - Add insync, protonmail-bridge (sync/communication) - Add multimarkdown, proselint (text processing) Package updates: - Update man → man-db (current package name) - Update pandoc → pandoc-cli (current package name) Configuration updates: - Enable topgrade git repo updates for ~/code/ only - Add inbox/ directory to .gitignore - Add TODO for rustup-based Rust installation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* fix(archsetup): prevent yay-debug package installation during yay buildCraig Jennings2025-11-141-1/+1
| | | | | | | | | | Add --nodebug flag to makepkg command when building yay from source to prevent creation and installation of yay-debug package. This completes the --nodebug implementation started in the previous commit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* fix(archsetup): implement critical bug fixes and test improvementsCraig Jennings2025-11-1314-28/+2373
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* fix: Configure Mopidy for M3U playlists and analog audio outputCraig Jennings2025-11-121-6/+6
| | | | | | | | | | | | - Set playlists_dir to /home/cjennings/music for M3U discovery - Change default_extension from .m3u8 to .m3u for existing playlists - Configure explicit pulsesink to analog audio device - Reduce buffer_time from 15000ms to 1000ms for local file playback - Prevents Bluetooth audio latency/jumpiness issues 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
* feat(music): migrate from MPD to Mopidy for better streaming supportCraig Jennings2025-11-122-0/+95
| | | | | | | | | | | | | | | | | | | | | | | - Enhanced MPD config with 16 MB buffer and 30s curl timeout - Discovered buffer_before_play is deprecated in MPD 0.24.6 - Installed Mopidy with mopidy-mpd extension for MPD protocol compatibility - Configured Mopidy with 15-second GStreamer buffer for smooth radio streaming - Analyzed network quality: baroque sonatas radio has 40ms jitter from Germany MPD limitations: - No pre-buffer control for streams (buffer_before_play deprecated) - Fixed 512 KB curl buffer (not configurable) - No replacement for pre-buffering functionality Mopidy configuration: - buffer_time: 15000ms (15 seconds) - stream timeout: 30000ms - MPD protocol on port 6600 (existing clients work) - HTTP interface on port 6680 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>