summaryrefslogtreecommitdiff
path: root/archsetup
AgeCommit message (Collapse)Author
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 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 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
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 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)
6 daysfix(archsetup): clone repo instead of copying for curl|bash supportCraig Jennings
When run via curl|bash, archsetup_dir resolves to /root with no files. Now clones from git.cjennings.net instead of copying local files.
6 daysfix(archsetup): chown tmpfs mount point instead of parent dirCraig Jennings
- Fixed permission bug where source_dir tmpfs was owned by root - Remove zfssnapshot and zfsrollback (now in archzfs ISO)
7 daysfeat(archsetup): add automatic console login for encrypted systemsCraig Jennings
- 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
7 daysfeat(archsetup): add wireguard-tools and tailscaleCraig Jennings
- wireguard-tools from pacman (dotfiles have helper functions ready) - tailscale-bin from AUR (prebuilt, fast install) - Enable tailscaled service (run 'tailscale up' to authenticate)
7 daysdocs(archsetup): note potential Docker DNS issue with systemd-resolvedCraig Jennings
7 daysprivacy(archsetup): add encrypted DNS (DNS over TLS)Craig Jennings
- Configure systemd-resolved with DoT using Cloudflare + Quad9 - Enable DNSSEC validation - Integrate with NetworkManager - Fix conflict: keep systemd-resolved for DNS, avahi for mDNS
7 daysprivacy(archsetup): add WiFi MAC address randomizationCraig Jennings
7 daysfeat(archsetup): add lynis security auditing toolCraig Jennings
7 daysfeat(archsetup): configure journald retention to 500MBCraig Jennings
7 dayssecurity(archsetup): lock root account at end of scriptCraig Jennings
Root is locked last so it remains available for recovery if script fails earlier. Users must use sudo for privileged operations after successful install.
7 daysfeat(archsetup): enable weekly ZFS scrub timerCraig Jennings
7 daysfeat(archsetup): add fail2ban for SSH brute force protectionCraig Jennings
- 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/
8 daysdocs: add script URL to headerCraig Jennings
8 daysfix(archsetup): add cleanup trap to unmount tmpfs on exitCraig Jennings
8 daysfeat(archsetup): add GPU driver detection and installationCraig Jennings
- 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
8 daysfix(archsetup): misc bug fixes and improvementsCraig Jennings
- 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
8 daysfeat(archsetup): add error summary at end of scriptCraig Jennings
8 daysfeat(archsetup): ZFS/sanoid support, gvfs-smb, bug fixesCraig Jennings
- 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
2026-01-10fix(archsetup): copy archsetup to user directory before stowCraig Jennings
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>
2025-12-01fix(archsetup): remove duplicate multimarkdown and proselint entriesCraig Jennings
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>