aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-02 17:11:05 -0400
committerCraig Jennings <c@cjennings.net>2026-07-02 17:11:05 -0400
commit24a2098dd2adf7bcfe4272c66cf105cb0234703f (patch)
tree2ed73940e6203187a009bb0d50b421c23e9dda46
parent6b7791ccf8195247649914a7ce3cbda9bbcdaf06 (diff)
downloadarchsetup-24a2098dd2adf7bcfe4272c66cf105cb0234703f.tar.gz
archsetup-24a2098dd2adf7bcfe4272c66cf105cb0234703f.zip
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.
-rwxr-xr-xarchsetup8
-rw-r--r--scripts/testing/tests/test_packages.py10
-rw-r--r--todo.org4
3 files changed, 21 insertions, 1 deletions
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: