testsAndMisc/linux_configuration
Krzysztof kuhy Rudnicki b57d5f9064 Install live scripts by atomic rename
The periodic setup wrote /usr/local/bin scripts with sed > target,
truncating the file in place. bash reads scripts lazily, so the running
hosts-file-monitor could execute a half-new file.

New lib/atomic_install.sh renders into a temp file beside the target,
syntax-checks it, sets mode/owner and renames it over the target (new
inode). A bad template fails closed and leaves the live file untouched.
Applied to the maintenance script, hosts monitor, browser wrapper and
auto-update script; the hosts monitor service is restarted if running.

Test: test_services_atomic_install.sh (inode changes, old inode keeps
old bytes, syntax error and missing template leave target untouched).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWYWDKuhbBAoNETfoB9
2026-11-12 12:59:59 +01:00
..
.githooks CI pins: shfmt v3.14.1, prettier 3.9.10 (newest stable) 2026-10-22 21:37:03 +02:00
.github pacman wrapper: drop list-file checks and docs after list retirement 2026-10-17 18:46:17 +02:00
boot_recovery Cap extensionless scripts, and split the one that was hiding 2026-08-23 19:13:40 +02:00
C/atop_agg atop_agg: split atop_agg.c 478 -> 204 + state + emit 2026-08-17 10:49:46 +02:00
diagnostics Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
docs pacman wrapper: drop list-file checks and docs after list retirement 2026-10-17 18:46:17 +02:00
dwm Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
features Monitors: survive boot, biggest is primary 2026-11-12 08:03:06 +01:00
feedback-appimage Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
fixes fix(webcam): keep Logitech C270 at 30 fps in low light via udev rule 2026-10-12 13:49:17 +02:00
fresh-install feat(pi): rustscan instead of nmap 2026-11-10 14:32:12 +01:00
gaming Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
i3 Monitors: survive boot, biggest is primary 2026-11-12 08:03:06 +01:00
i3blocks i3 focus block: emoji suitcase, not FA PUA 2026-11-11 15:39:47 +01:00
installers helium: unlock the keyring through secretstorage; anchor the running-browser check 2026-09-20 18:29:49 +02:00
lib lan blocker: gateway mode, WARP drop with a Mon/Fri 09:00-15:30 window 2026-10-25 09:52:40 +01:00
meta Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
misc Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
periodic_background Install live scripts by atomic rename 2026-11-12 12:59:59 +01:00
scripts Repoint MCP paths; parallelise mutation gate 2026-11-10 14:25:05 +01:00
tests Add deploy command: ff the live checkout 2026-11-12 08:57:05 +01:00
utils Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
zsh Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
.gitignore Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
install_core_system.sh Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00
test_results.log Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 20:50:19 +02:00