Releases: jetify-com/devbox
0.1.2
New Features
Devbox Scripts in Devbox Shell
You can now run devbox scripts
from inside of a devbox shell
. Previously, this would trigger an error about starting shells within shells. Now, if you run a script from within a devbox shell using devbox run <script>
, devbox will run the command within your existing shell without trying to start a new shell
Example Docs
New Example Docs have been published to the Devbox Docs site -- these examples show how you can create dev environments for different languages, tools, and stacks using Devbox. The docs can be found here. You can also browse our examples repo at https://github.com/jetpack-io/devbox-examples/
Deprecating and Removing Devbox Build
devbox build
and our automatic planners are now deprecated and removed. An upcoming release will enable developers to generate a container based on their devbox shell
. This feature was removed due to low usage and poor performance, and due to a desire to focus on creating dev environments with devbox shell
.
- If you still need to use
devbox build
for your workflows, you can set the env variableDEVBOX_USE_VERSION=0.1.1
to use version 0.1.1 of devbox. - You can also generate a devcontainer.json and Dockerfile for your shell using our VSCode Extension. A step-by-step video is available here: https://www.loom.com/share/275bab19e5da49ef942eac3b405acb95
This release also includes some in progress work for automatic package configuration, nix installation, and Devbox Cloud.
Special thanks to @dritter and @boothb for their contributions to this release!
Changelog
- [nixpkgs version] update test devbox.json files with the autoupgrade by @savil in #278
- ci: truncate long k8s namespace names by @gcurtis in #272
- Add golangci-lint to devbox.json by @ipince in #273
- golangci-lint offending line is displayed in error logs by @ipince in #274
- Bump loader-utils from 2.0.2 to 2.0.4 in /docs/app by @dependabot in #280
- Fixed terminal commands not running when closed by @mohsenari in #283
- Added changelog for V0.0.2 by @mohsenari in #286
- Added github action for vscode extension release by @mohsenari in #282
- vscode extension terminal behavior fixes + readme update by @mohsenari in #287
- referencing vscode token from env variable by @mohsenari in #289
- [pkgcfg] Add postgresql config by @mikeland86 in #295
- [bug] Fix bug where symlink does not get overriden correctly by @mikeland86 in #296
- [pkgcfg] Allow for wildcards in package config filenames by @mikeland86 in #297
- Fixed github action workflow publishing vscode extension by @mohsenari in #294
- [pkgcfg] Add nginx config by @mikeland86 in #299
- [bug] Fix nil pointer dereference in go planner by @ipince in #301
- [pkgcfg] Add ruby config by @mikeland86 in #298
- [dependabot] Fix vulnerability by @mikeland86 in #303
- [config-directory] run shell.initHooks and shell.scripts relative to --config dir by @savil in #302
- s/COnfig/config typo fix by @savil in #304
- rename srcDir to configDir for clarity by @savil in #305
- [pkgcfg] Add Apache httpd config by @mikeland86 in #300
- [pkgcfg] Show readme when adding packages. Add info command by @mikeland86 in #306
- [pkgcfg] Add rustup config json by @mikeland86 in #307
- [pkgcfg] python config (readme) by @mikeland86 in #308
- [devbox] Add client code for devbox cloud by @loreto in #310
- Respect nixpkgs commit in devbox add by using nix search by @savil in #314
- [pkgcfg] Embed config instead of using GitHub by @mikeland86 in #320
- Small fixes for devcontainers in WSL by @mohsenari in #315
- [pkgcfg] Add php extension support by @mikeland86 in #309
- add gateway subdomains to sshconfig to avoid StrictHostKeyChecking by @savil in #323
- [cloud] ensure devbox.json exists and pass devbox struct to cloud.Shell functions by @savil in #321
- [devbox testdata] improve rust testdata's init script to work over ssh by @savil in #326
- [pkgcfg] Remove config if package is removed by @mikeland86 in #324
- Point the cli to the production gateway by @loreto in #327
- Rename CICD workflows to be more descriptive by @loreto in #328
- [featureflags] Simplify feature flags by @mikeland86 in #325
- Bumping vscode extension version by @mohsenari in #330
- [cloud] client directly calls start_devbox_server.sh by @savil in #329
- [pkgcfg] Ensure php-fpm works out of the box by @mikeland86 in #334
- Add packages info in telemetry to get better understanding by @LucilleH in #333
- deprecate devbox build + hide devbox plan by @mohsenari in #336
- Add sentry error reporting to telemetry by @LucilleH in #335
- cloud: use unique SSH keys per VM by @gcurtis in #340
- devbox run inside shell by @mohsenari in #331
- [nix] Add nix install command by @mikeland86 in #337
- [pkgcfg] show shims and env variables in info command. Add markdown flag by @mikeland86 in #341
- [config] update default nixpkgs commit to most recent nixos-22.11 by @savil in #344
- [nix-installer] auto-install nix if we detect it's missing by @mikeland86 in #343
New Contributors
Full Changelog: 0.1.1...0.1.2
0.1.1 - Run Scripts, pin Nixpkg SHA
Release 0.1.1 includes two major new features: package pinning and executing scripts with devbox run
New Features
Pin Nixpkgs in your Devbox.json
You can now pin an exact version of the Nixpkg repository for installing packages. This feature is useful for pinning the versions of the packages installed by Devbox, or for selecting packages from older revisions of Nixpkg.
To pin the Nixpkg version, add the commit of the Nixpkg repo that you want to use in your devbox.json
.
"nixpkgs": {
"commit": "89f196fe781c53cb50fef61d3063fa5e8d61b6e5"
}
If you leave the commit unset, Devbox will automatically add a default Nixpkg commit to your devbox.json
when you run a command that reads your devbox.json
like devbox add
. You can update your project to the latest default by deleting the commit hash from your devbox.json
.
For more details, see the Nixpkg pinning guide on our docs page.
Running Scripts in Devbox Shell
Developers can now define scripts in their devbox.json
, and execute them in their Devbox Shell using devbox run
. Scripts are defined by providing a name, and a command or list of commands for Devbox to run.
"shell": {
"init_hook": [
"source conf/set-environmen.sh",
"rustup default stable",
"cargo fetch"
],
"scripts": {
"test": "cargo test -- --show-output",
"start" : "cargo run",
}
}
You can then execute your scripts using devbox run <script_name>
. Devbox will then start an interactive shell, run your init_hook
, run the script, and then exit when the script completes or is interrupted by CTRL-C. For example:
$ devbox run start
Installing nix packages. This may take a while... done.
Starting a devbox shell...
project dir is /Users/johnlago/src/devbox-examples/development/rust/rust-stable-hello-world/conf
info: using existing install for 'stable-aarch64-apple-darwin'
info: default toolchain set to 'stable-aarch64-apple-darwin'
stable-aarch64-apple-darwin unchanged - rustc 1.64.0 (a55dd71d5 2022-09-19)
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/rust-stable-hello-world`
Hello, world!
$
For more information and tips on how to use Devbox scripts, see the scripts guide in our docs page.
Bug Fixes
- Fixed a bug where not all zsh startup files were included in a developer's shellrc (#250)
- Fixed a PkgExists panic for some missing packages (#249)
What's Changed
- nix: fix PkgExists panic for some missing packages by @gcurtis in #249
- [feature-flag] Add simple feature flag package by @mikeland86 in #251
- [devbox shell] ensure all zsh startup files are linked to ZDOTDIR by @savil in #250
- [nipkgs version] add feature flag and write to devbox.json if missing by @savil in #252
- [pkgcfg] Create new pkgckg that can load local config by @mikeland86 in #253
- [nixpkgs version] change field from version to commit; add validation by @savil in #256
- [nixpkgs version] generate nix files containing the nixpkgs version from config by @savil in #258
- [nixpkgs version] devbox init should add default nixpkgs commit by @savil in #259
- [pkg-config] Add bin sym links and add to path by @mikeland86 in #257
- [feature flag] respect env-var of feature flag (even if turned off) and default enable Nixpkg Version FF by @savil in #266
- [pkg-config] Implement basic mariadb config by @mikeland86 in #263
- [pkg-config] Read config from github by @mikeland86 in #264
- Use
for logo light/dark mode by @gcurtis in #260 - ci: suffix Jetpack preview namespaces with "-ref" by @gcurtis in #271
- First pass at devbox scripts implementation by @ipince in #254
- devbox: add PackageStore and Package for querying /nix/store by @gcurtis in #270
- Docs for Devbox Run and Setting the Commit Sha by @Lagoja in #268
- vscode extension settings + devcontainer setup + devbox commands by @mohsenari in #262
- Unhide devbox run by @ipince in #275
Full Changelog: 0.1.0...0.1.1
0.1.1-dev
0.1.1-dev
0.1.0
Release 0.1.0 features some workflow improvements to make devbox shell
more reliable, and includes the v1 release of our Visual Studio Code extension.
⚠️ Note: This release may cause some projects to break if they do not explicitly declare their packages in the devbox.json. See Shell Package Suggestions below for more details. You can fix your project by adding the suggested packages withdevbox add [packages]
Workflow Improvements
-
Shell Package Suggestions: Devbox will no longer automatically add packages when you run
devbox shell
. Instead Devbox will suggest packages that may be missing from your shell and prompt you to add them. This feature was changed due to reports of conflicts between user installed packages and auto installed packages.- For example, if I try to start a shell in my Python project without adding the
python3
package:
➜ devbox shell Installing nix packages. This may take a while...done. We detected extra packages you may need. To install them, run `devbox add python3` Starting a devbox shell...
I can then add the missing packages by running the suggestion:
➜ devbox add python3 Installing nix packages. This may take a while...done. python3 is now installed. Run `hash -r` to ensure your shell is updated. `
- For example, if I try to start a shell in my Python project without adding the
- VSCode Extension: You can now automatically activate your Devbox Shells in VSCode’s integrated terminal by installing the Devbox VSCode extension. More features will be added in upcoming releases
--config
flag: You can choose a specificdevbox.json
to use withdevbox shell
using this flag. This can be useful for situations where yourdevbox.json
is in a different folder, or when you want to have multipledevbox.json
files for a single project- Devbox now warns you when you are attempting to remove a non-existent package from your devbox.json
Changelog
- adda549 Readme logo update (#243)
- 307f61e VSCode extension logo update (#242)
- 48779d1 Updated vscode extension publisher and author (#237)
- 00ed2eb VSCode extension for devbox (#236)
What's Changed
- Make IDE docs visible via sidebar.js by @Lagoja in #232
- [shell] warn when removing non-existent package by @savil in #230
- [CLI] add --config flag by @savil in #225
- [planners] Separate shell plan from build plan by @LucilleH in #227
- [Rust Shell] change to use rustup nix package to avoid overlay by @savil in #235
- VSCode extension for devbox by @mohsenari in #236
- Updated vscode extension publisher and author by @mohsenari in #237
- VSCode extension logo update by @mohsenari in #242
- Readme logo update by @mohsenari in #243
Full Changelog: 0.0.11...0.1.0
0.0.11
0.0.10
Bug Fixes
- Polish improvements for how packages are installed via nix (#215, #210, #220, #221)
- Fixed a bug that would cause builds to fail for NodeJS Planner (#212)
- Fixed a bug where Python packages installed as Nix packages could not be found in
PYTHONPATH
(#218)
Changelog
- [Bug] Fix bash regression for PATH by @LucilleH in #207
- [nodejs planner] InputFiles should take paths relative to devbox.json, and not combined with srcDir by @savil in #212
- [Fix] Ensure python sys path contains nix installed modules by @mikeland86 in #218
- [RFC] move gitignore file to .devbox directory and ignore gen/profile/shell_history by @savil in #215
- [shell] move nix-profile into a specific directory inside .devbox directory by @savil in #210
- fix pipenv test by @savil in #219
- nix: fix removing user Nix profiles from PATH by @gcurtis in #220
- devbox: handle paths with spaces by @gcurtis in #221
Full Changelog: 0.0.9...0.0.10
0.0.9
0.0.8
Release Notes
Version 0.0.8
is focused on fixing user bugs and other workflow issues.
New Language Support
- Ruby, including Ruby on Rails
- Java w/ Gradle
Workflow Improvements
- You can now add packages to a running shell without restarting
devbox shell
. You will need to runhash -r
to make the packages available in your shell after adding them. (#188) - Devbox will now look for a
devbox.json
file in parent directories, if you do not have one in your current directory. This is useful when you have multiple projects that share a singledevbox.json
file (#200) - Shell history is now preserved across
devbox shell
sessions (#204) - We now provide better error messages when we can't detect a planner during
devbox build
(#184)
Bug Fixes
- We no longer propagate an error message when a user explicitly exits their shell (#201)
- Our Golang planner no longer returns an error when
main.go
is not found (#199) - Segment errors are now silenced on connection failure (#197)
Updates to Docs, including:
- Documentation on our new planners
- How to configure your editor with Devbox
- Updated CLI reference, with flags and subcommands
Full Changelog
- [polish] improve error message for missing devbox-json by @savil in #174
- [Java Planner] part4 - Added support for gradle by @mohsenari in #160
- [Docs] Haskell and Zig Planners by @savil in #180
- Added gradle support to docs by @mohsenari in #182
- Support Rails in Ruby planner by @ipince in #183
- [build] Better error message when can't find planner by @mikeland86 in #184
- Update Python Docs by @Lagoja in #187
- Add auto generated docs to Devbox Docs by @Lagoja in #189
- Silence any segment errors by @loreto in #197
- docs: fix typo in Python language detection docs by @ipince in #195
- Add docs for Ruby by @ipince in #194
- [planner] Golang planner return error when main.go is not found by @LucilleH in #199
- [Bug] Do not propagate error on explicit shell exit by @LucilleH in #201
- Fix typo by @reflektoin in #205
- [config] look for the devbox.json file in parent directories as well by @savil in #200
- IDE integration instructions by @mohsenari in #190
- [shell] add packages within shell, leveraging nix-profile by @savil in #188
- boxcli: skip shell tests due to timeout by @gcurtis in #208
- [shell] preserve history by @savil in #204
New Contributors
- @reflektoin made their first contribution in #205
Full Changelog: 0.0.7...0.0.8
0.0.7
What's Changed
- [Bug fix] Pick one plan if no plans are buildable by @LucilleH in #136
- [planner] Add typescript support to nodejs build by @LucilleH in #153
- [docs] Move docs pages to this repo by @LucilleH in #165
- [HaskellPlanner] enable shell and build for Stack framework by @savil in #155
- Add docs markdown linter and readme by @LucilleH in #166
- Ruby planner (without Rails) by @ipince in #164
- devbox shell -- cmd by @loreto in #158
- [bug] Fix devbox exec by @LucilleH in #169
- [plan] do not html-escape json encoding by @savil in #170
- [pip] Add pip support (via venv) DEV-1146 by @mikeland86 in #147
- [devbox shell] fix parsing of cmd and path by @savil in #173
- nix: fix shellrc PATH word splitting in bash by @gcurtis in #176
- ci: debug workflow, rate limit fixes, cleanup by @gcurtis in #168
- [plan] Plan.Definitions add omitempty by @savil in #171
- nix: carry over (NIX_)SSL_CERT_FILE to devbox shells by @gcurtis in #178
- devbox: add AppendScript method to ConfigShellCmds by @gcurtis in #149
New Contributors
Full Changelog: 0.0.6...0.0.7
0.0.6
Release Notes
Version 0.0.6
is focused on supporting additional languages and improving some of the existing ones, including:
- C#
- Rust
- Java
- Zig
Additionally:
- Image name and tag can now be set when running devbox build
- Fixed a bug where the custom paths in a user’s shellrc were not being passed to devbox shell
What's Changed
- Separate devbox config struct from planner struct by @LucilleH in #122
- nix: allow user's shellrc to update PATH; add tests for shellrc template by @gcurtis in #106
- [CSharp Planner] part 1: devbox shell by @savil in #120
- [Rust Planner] part 1: devbox shell by @savil in #97
- [php planner] sort extensions for test stability by @savil in #129
- [Rust Planner] part 2: devbox build by @savil in #104
- [java planner] part1: shell packages for OpenJDK + Maven by @mohsenari in #125
- devbox: allow shell.init_hook to be a JSON array by @gcurtis in #131
- [RFC][Rust Planner] Reduce image size by using glibc, and copying built binary by @savil in #132
- [CSharpPlanner] implement build functionality, albeit bloated by @savil in #134
- [DotNetPlanner] shell and build for C# and F# by @savil in #135
- [bug] Change BUILDKIT to DOCKER_BUILDKIT by @LucilleH in #140
- Change nix-shell requirements to only add and shell command by @LucilleH in #143
- Allow setting name and tag in devbox build by @LucilleH in #144
- [Java Planner] part2: Added install + build steps to planner by @mohsenari in #138
- nix: load env before Nix shellHook; clean up PATH by @gcurtis in #124
- [nginx]Add nginx static file planner DEV-1147 by @mikeland86 in #105
- remove erroneous printf by @savil in #148
- [Java planner] part3 reducing docker image size by @mohsenari in #146
- [DotNetPlanner] add installing packages to InstallStage by @savil in #142
- [RustPlanner] use InstallStage by @savil in #151
- boxcli: increase shell test timeout to 3 mins by @gcurtis in #152
- ci: add debug workflow by @gcurtis in #154
- [ZigPlanner] Add support for shell and build by @savil in #141
- Change pre-releases to happen weekly on Thursdays by @loreto in #157
Full Changelog: 0.0.5...0.0.6