From 24a2098dd2adf7bcfe4272c66cf105cb0234703f Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 2 Jul 2026 17:11:05 -0400 Subject: feat(tooling): provision eask via user-local npm install chime and linear-emacs shell out to eask but nothing installed it. The block runs npm install -g --prefix ~/.local as the user after the node tooling, so eask lands on PATH without root. A stowed .npmrc pins the same prefix in dotfiles. VM asserts both. --- archsetup | 8 ++++++++ scripts/testing/tests/test_packages.py | 10 ++++++++++ todo.org | 4 +++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/archsetup b/archsetup index cb0c14b..b4b6f69 100755 --- a/archsetup +++ b/archsetup @@ -2410,6 +2410,14 @@ install_programming_languages() { pacman_install npm # Node-js package manager aur_install nvm # Node-js version manager + # Eask (Emacs package build/test CLI) — chime and linear-emacs shell out to + # it. Global npm install as the user with a ~/.local prefix so eask lands + # on PATH at ~/.local/bin/eask without root (the stowed ~/.npmrc pins the + # same prefix for future npm -g installs). + action="installing eask via npm" && display "task" "$action" + (sudo -u "$username" bash -c 'npm install -g --prefix "$HOME/.local" @emacs-eask/cli' >> "$logfile" 2>&1) || \ + error_warn "$action" "$?" + # AI coding assistant (native install to ~/.local/bin), opt-out via # INSTALL_CLAUDE_CODE=no / --no-claude-code. Gated because it's curl|sh from # a third party and not every user wants AI tooling. diff --git a/scripts/testing/tests/test_packages.py b/scripts/testing/tests/test_packages.py index f0d8ff2..74737e2 100644 --- a/scripts/testing/tests/test_packages.py +++ b/scripts/testing/tests/test_packages.py @@ -74,3 +74,13 @@ def test_blueman_not_installed(host): # blueman was retired 2026-07-02 in favor of the dotfiles bt panel; # its reappearance means the desktop_environment step regressed. assert not host.package("blueman").is_installed + + +@pytest.mark.attribution("archsetup") +def test_eask_installed_user_local(host, home): + # Installed via npm -g --prefix ~/.local as the user; chime and + # linear-emacs shell out to it. + f = host.file("%s/.local/bin/eask" % home) + assert f.exists, "eask missing from ~/.local/bin" + npmrc = host.file("%s/.npmrc" % home) + assert npmrc.exists, ".npmrc (user npm prefix) not stowed" diff --git a/todo.org b/todo.org index 02f5f14..644ce56 100644 --- a/todo.org +++ b/todo.org @@ -208,7 +208,9 @@ CLOSED: [2026-07-02 Thu] :END: Decided by Craig 2026-07-02, ahead of the scheduled checkpoint: remove pocketbook altogether. Executed same day — pip package uninstalled (user site clean), running instance killed, launcher gone, =pocketbook/= tree removed from the repo, Super+P rebound to toggle-touchpad (P for Pointers; Super+Shift+I unbound, waybar tooltip hint updated — dotfiles a750cb4). The org-capture popup remains the quick-notes surface. -** TODO [#B] Provision Eask in archsetup :tooling:eask: +** DONE [#B] Provision Eask in archsetup :tooling:eask: +CLOSED: [2026-07-02 Thu] +Shipped 2026-07-02 (speedrun): npm global install block added after the nvm line — runs as $username with --prefix $HOME/.local, display/error_warn wrapped, output to $logfile, matching the claude-code block's shape. The npmrc decision went yes: dotfiles common/.npmrc pins prefix=${HOME}/.local (stowed; hand-linked live, npm config get prefix confirms ~/.local — dotfiles 01627cc). VM assertion added: ~/.local/bin/eask present + ~/.npmrc stowed. Live smoke: eask 0.12.9 on PATH. Full acceptance (fresh-install chime make setup/test) rides the next VM pass. :PROPERTIES: :LAST_REVIEWED: 2026-05-26 :END: -- cgit v1.2.3