What's Changed
✨ New Features
- Generated READMEs now document services —
devbox generate readmeadds a Services section listing the project's services and how to start them, by @mikeland73 (#2934)
🐛 Bug Fixes
- Projects in paths with spaces now work with services — plugin service commands quote their path env vars, so a project directory like
~/My Projects/appno longer breaksdevbox services up, by @mikeland73 (#2960) - Services re-invoke the right devbox — service definitions call back into devbox by its executable path instead of a hardcoded
devboxname, so they work when the binary is renamed, run from a build dir, or not onPATH(#1321), by @mikeland73 (#2936) - Package shell completions work out of the box — the Devbox profile's
sharedir is added toXDG_DATA_DIRS, so completions shipped by installed packages (e.g.kubectl <TAB>) are picked up bybash-completion(#2776), by @mikeland73 (#2926) - Multi-line env values no longer break
shellenv—eval "$(devbox global shellenv)"failed withambiguous redirecton every prompt when the shell had a multi-linePROMPT_COMMAND(e.g. viabash-preexec); literal newlines in exported values are now preserved (#2814), by @mikeland73 (#2846) SOURCE_DATE_EPOCHno longer leaks into the shell — nixpkgs' fixed 1980 build timestamp was exported into every devbox shell, so Docker images built inside it showed up as created "45 years ago" andtar/gzipoutput got stale timestamps (#2597), by @mikeland73 (#2935)- Missing
env_fromfiles warn instead of failing — a referenced env file that doesn't exist yet (e.g. a gitignored.env) no longer blocks the shell from starting, by @mikeland73 (#2901) - Flakes from subdirectories of the same git repo are kept distinct — two packages pointing at different
?dir=paths in one repo no longer collapse into a single input (#2704), by @mikeland73 (#2877) devbox update --no-installno longer calls Nix — it only updates the lockfile, as documented (#2585), by @mikeland73 (#2913)- Nix detection fixes — Nix versions without a patch component (e.g.
2.30) now parse instead of being treated as unparseable (#2924), and a freshly mounted/nixvolume in a container (which only containslost+found) is no longer reported as a broken install and gets Nix installed into it as intended (#2601, #2939), by @mikeland73. - Node.js plugin warns when Corepack is missing — with
DEVBOX_COREPACK_ENABLEDset on a Node package that doesn't bundle Corepack (nodejs-slim, Node 25+), you now get a warning pointing at thecorepackpackage instead of a crypticyarn: command not foundlater (#2791), by @mikeland73 (#2888) devbox generatefixes — the generated dev Dockerfile no longer runsnix-store --optimise, which failed withcannot rename: Stale file handleon Docker's overlay2 driver so the image didn't build out of the box (#2616, #2933), and the generated README uses relative paths for env vars instead of absolute paths from the author's machine (#2865), by @mikeland73.- Plugin docs — documented the project-root placeholder and corrected the
DevboxDirRootdocs, by @mikeland73 (#2895)
🧹 Maintenance
- Docs:
devbox runscripts and commands run from the project root (#2948); Go example documentsGOPATH/GOROOTand warns againstGOPATH=$PWD(#2923), by @mikeland73. - Release tooling: bump
flake.nixto 0.18.2 (#2970), add aclaudeskills symlink (#2972), and make the release script resume cleanly after a flake bump and not block on an in-progresscli-testsrun (#2971), by @mikeland73.
Full Changelog: 0.18.1...0.18.2