diff --git a/scripts/setup/machine-setup/lib/packages.sh b/scripts/setup/machine-setup/lib/packages.sh index c7a31a30..f4613d73 100644 --- a/scripts/setup/machine-setup/lib/packages.sh +++ b/scripts/setup/machine-setup/lib/packages.sh @@ -51,7 +51,14 @@ LAST_SKIPPED=() # are the environment: nothing calls them, they are here because a box you use # should have them. # -# Three entries reach beyond simply existing on the machine. +# Four entries earn a note. +# +# python3 is not a tool anybody here calls — it is node-gyp's build dependency, +# and node-gyp is not optional on Linux. node-pty ships prebuilt binaries for +# darwin and win32 ONLY, so on Linux its install script always falls through to +# `node-gyp rebuild` and compiles from source. Without python3 that fails, and +# the failure surfaces as a broken terminal sidecar rather than as a missing +# package. build-essential below is the other half of the same requirement. # # unattended-upgrades installs updates on a timer with nobody watching. apt only: # it is a Debian and Ubuntu package, dnf's equivalent is dnf-automatic and pacman @@ -82,17 +89,17 @@ pkgs_core() { # fastfetch PPA. They have no counterpart on the other systems. echo curl ca-certificates gnupg git jq unzip \ apt-transport-https lsb-release software-properties-common \ - wget zip build-essential btop htop tree tmux ripgrep fd-find net-tools \ + wget zip build-essential python3 btop htop tree tmux ripgrep fd-find net-tools \ fail2ban unattended-upgrades ;; pacman) echo curl ca-certificates gnupg git jq unzip \ - wget zip base-devel btop htop tree tmux ripgrep fd net-tools \ + wget zip base-devel python btop htop tree tmux ripgrep fd net-tools \ fail2ban ;; dnf) echo curl ca-certificates gnupg2 git jq unzip \ - wget zip btop htop tree tmux ripgrep fd-find net-tools \ + wget zip python3 btop htop tree tmux ripgrep fd-find net-tools \ fail2ban ;; brew)