devenv shell fails after the devenv CLI bump to 2.1.2 #25
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
vnprc/hashpool#25
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Restore
devenv shellin this repo, which stopped working when the fleet's move tonixos-26.05bumped thedevenvCLI from 1.11.1 to 2.1.2.Primary goals:
devenv shellreaches a prompt with the pinnedrustc1.86.0 and a workingcc, as it did before the CLI bump.nixpkgsandrust-overlaystay at their current revisions, so thetime/serde_with/darling/simple_asn1MSRV pins inroles/Cargo.lockare unaffected.devenv.lockstops being rewritten on every invocation, so a clean worktree stays clean.Current state and specifics
Two independent problems, both latent before the CLI bump and both fatal after it.
The
git-hooksinput.devenv1.x implicitly injected agit-hooksinput intodevenv.lock: the committed lock carriesgit-hooksand apre-commit-hooksfollows in its root inputs even thoughdevenv.yamlnever declares either.devenv2.1.2 does not inject it and strips it from the lock on every run, which is whydevenv.lockshows as modified after any invocation. Thedevenvmodules input is still pinned at the 1.7.0-era revision0d39abfb, whosesrc/modules/integrations/git-hooks.nix:9readsor (throw "git-hooks or pre-commit-hooks input required"). The new CLI therefore removes exactly what the pinned modules require, andgit checkout devenv.lockdoes not help because the next run strips it again.Dead task dependencies.
devenv.nix:92-99anddevenv.nix:125declarebefore = [ "devenv:processes:proxy" "devenv:processes:pool" ... ]on thecreate:dirsandbuild:cdk:clitasks, but the pinneddevenvmodules define nodevenv:processes:*tasks at all — nodevenvmodule source in the Nix store defines that namespace, and the task runner present isdevenv-tasks-1.7.0. The 1.11.1 CLI reported this as a softTasksNotFoundand continued into the shell; 2.1.2 treats it as fatal:Scope
In scope: pin a
git-hooksinput indevenv.yamlat revision80479b6ec16fefd9c1db3ea13aeb038c60530f46, the revision the committed lock already carried, and delete the deadbeforelists from both tasks.Out of scope, because each moves the Rust toolchain or does not work:
devenv updatefixes both problems but bumpsnixpkgs, movingrustcoff 1.86.0 and breaking the MSRV pins tracked in the issue about a freshprotocols/Cargo.lockresolvingtime0.3.55.devenv update devenvalone keepsnixpkgspinned and brings modules that do definedevenv:processes:*, but theirgit-hooks.nixneedscspell, which the pinned May-2025devenv-nixpkgsdoes not provide.git-hookspinned back to80479b6efails witherror: infinite recursionatsrc/modules/integrations/git-hooks.nix:22.Also out of scope, tracked separately once confirmed: because the
beforelists never resolved,create:dirsandbuild:cdk:clihave had no trigger at all, so the log and database directory creation and thecdk-clibuild have not been running ahead ofdevenv upprocesses. Rewiring them to a trigger that exists is a follow-up, not part of restoring shell entry.Fixed and merged. The devenv CLI bump to 2.1.2 broke shell entry two ways: devenv 1.x implicitly injected a
git-hooksinput that 2.x strips on every run while the pinned devenv modules still throw without it, and thebefore = [ "devenv:processes:*" ]lists named tasks this devenv version does not define, which 1.11.1 reported as a soft TasksNotFound and 2.1.2 treats as fatal. Master now declaresgit-hooksexplicitly at rev80479b6ec16fefd9c1db3ea13aeb038c60530f46and the dead before-lists are gone. Any branch cut before that fix cannot enterdevenv shellat all and needs master merged in first.