Releases: jetify-com/devbox
0.5.3
What's new in this release
Automatic @latest
- Adding a package without a version number will now automatically install the latest version of the package from our Index. This is equivalent to running
devbox add pkg@latest
from the CLI - Pinning a specific Nixpkg commit for the entire project in your
devbox.json
is now deprecated. This release still maintains backwards compatibility, but the nixpkg commit will be removed from the config in an upcoming release. - See our guide on pinning packages for more information
Devbox Global Improvements
devbox global pull
can now pull and activate a global profile from a tarball.- You can now use
update
,services
, andrun
withdevbox global
. - Running
devbox run
without an argument will list the available global scripts
devbox create
- Our new
create
subcommand makes it easy to create a new devbox project from a template. - Our current templates are based on the projects in our examples repo
MariaDB Plugin
- Devbox can now automatically configure MariaDB packages using our Plugin.
- Click here to see the example project, or read the MariaDB docs for more detail
PHP Plugin improvement
- PHP plugin now lets you edit the php.ini file for your project.
Performance Improvements
- Projects with a large number of packages are now significantly faster when running
devbox add
Bug Fixes
- Devbox no longer overwrites XDG_DATA_DIRS, instead it will prepend to the path
- Fixed a bug that caused plugins to function incorrectly with certain Nix pnames
- Fixed
pip
plugin autodetection - Fixed a bug that prevented Devbox from installing
path:
flakes without adefault
package - Changes to local flakes should now update when the user runs
devbox install
Special thanks to
- @bketelsen, @mauricioabreu, and @chancecarey for their first time contributions to Devbox!
- @hezhizhen for their continuing contributions!
- @mdwn, @rbelem, @jrseliga, @ereduled, and @mauricioabreu for reporting issues that were addressed in this release
What's Changed
- [haskell] Move planner to plugin by @mikeland86 in #1009
- [devbox.json] Don't create nixpkgs commit hash by @mikeland86 in #1013
- [examples] Added llama example by @mohsenari in #1008
- [versions] Enable auto-latest by @mikeland86 in #1011
- [easy][pip] Fix pip plugin by @mikeland86 in #1005
- [planners] Remove unused planner code by @mikeland86 in #1012
- [testscripts] augment php testscrpt to remove and re-add a php-extension by @savil in #1021
- [devbox.json] Turn shell into pointer by @mikeland86 in #1014
- [cicd] Simplify go CICD cache by @mikeland86 in #1019
- chore: update dependencies by @hezhizhen in #1030
- [direnv] Added warning for old envrc content by @mohsenari in #1018
- [global] Remove global only functions, make global reuse local code by @mikeland86 in #1027
- [bug fix] write devbox.lock file first, and then write local.lock by @savil in #1032
- [devcontainer] Added shellenv to dockerfile template by @mohsenari in #1036
- [UX] Improve ux when nixpkgs has not been downloaded by @mikeland86 in #1040
- [plugin] Add
php.ini
in the PHP plugin by @Lagoja in #1039 - [templates] Add ability to start project from a template by @mikeland86 in #1016
- [docs] Correct direnv.md reference to
devbox generate direnv
by @chancecarey in #1042 - [easy][bug] Fix legacy resolving when nixpkgs hash is not set by @mikeland86 in #1047
- [pull] Implement pull tar by @mikeland86 in #1043
- [refactor] Move config to own package. Don't warn if overwriting defa… by @mikeland86 in #1045
- [global] Add update/services/run commands to global by @mikeland86 in #1046
- [shellenv] prepend to XDG_DATA_DIRS, instead of overwriting by @savil in #1041
- MariaDB Plugin by @Lagoja in #1048
- [perf] Improve how we determine attribute path by @mikeland86 in #1050
- feat: add list to devbox run if no args are given by @bketelsen in #1054
- [docs] Mention bundler flags/configs for ruby projects by @mauricioabreu in #1031
- [Flakes] Changes to local flakes should reflect in shell after devbox install by @savil in #1063
- [plugins] Improve how we determine package name in plugins by @mikeland86 in #1062
- [docs][easy] Fix missing code block type in ruby.md by @mikeland86 in #1065
- [packages] fix error check in pendingPackagesForInstallation by @savil in #1052
- [flakes] Fix flakes with fragments by @mikeland86 in #1069
New Contributors
- @chancecarey made their first contribution in #1042
- @bketelsen made their first contribution in #1054
- @mauricioabreu made their first contribution in #1031
Full Changelog: 0.5.2...0.5.3
0.5.2
0.5.1
What's new in this release
This release fixes the following issues:
devbox search
is now visible in the Devbox CLI Help- Fixed a shell.nix bug that would break some
direnv
use cases - Updates the PHP planner to a Flake-backed Plugin
- Fixes a bug that would print update notices multiple times.
Changelog
- 8661579 [search] unhide command (#1020)
- 2818b54 Go Mod Example + Doc Links (#1017)
- 684a933 [version check] Avoid re-printing update notice in child devbox commands (#1007)
- 0ac0b2d [planner->plugin] Turn php planner into a plugin (#1000)
- 2563283 [bugs] Fix shell.nix bug and ensure current symlink (#1015)
- 12e46f4 Jl/docs 0.5.0 (#1006)
- 4950eaf 0.5.0 Docs (#999)
0.5.0: Find and Install Nix Packages by Version
What's New in This Release
This release includes one of our most requested features: installing a specific package version with Devbox. A complete list of features and commits is available below.
To install 0.5.0, run devbox version update
from the command line, or follow the installation steps on our docs page. You can also check out our blog post for more details
Install Packages by Version Number
Previously, developers could only install the latest version of a Nix package available in Nixpkgs, or they had to look up and pin an alternative commit in their devbox.json
. With 0.5.0, we maintain an index that maps version strings to Nixpkg commits, so users can install their packages by providing a name and version.
This change is backwards compatible, meaning you do not have to update your existing devbox.json immediately when you move to 0.5.0. More details are available in our Docs
Search for Packages
You can see what versions of a package are available to install by running devbox search <package>
$ devbox search nodejs
Found 168+ results for "nodejs":
* nodejs (19.8.1, 19.7.0, 19.5.0, 19.2.0, 18.16.0, 18.15.0, 18.14.2, 18.13.0, 18.12.1, 18.10.0,
18.8.0, 18.4.0, 18.0.0, 17.9.0, 17.5.0, 17.3.0, 17.0.1, 16.19.1, 16.19.0, 16.18.1, 16.17.1, 16.17.0,
16.15.0, 16.14.0, 16.13.1, 16.13.0, 16.8.0, 16.4.0, 16.0.0, 15.14.0, 15.10.0, 15.5.0, 15.0.1,
14.18.1, 14.18.0, 14.17.5, 14.17.1, 14.16.1, 14.16.0, 14.15.3, 14.15.0, 14.9.0, 14.4.0, 13.14.0,
12.22.12, 12.22.10, 12.22.8, 12.22.7, 12.22.5, 12.22.1, 12.21.0, 12.20.0, 12.19.0, 12.18.3,
12.18.1, 10.24.1, 10.24.0, 10.23.0, 10.22.0, 10.21.0)
* nodejs_16 (16.20.0)
* nodejs_18 (18.16.0)
* nodejs_19 (19.9.0)
* nodejs_20 (20.0.0)
...
Adding a Package to Your Project
You can add a specific version of a package to your project by running devbox add <package>@<version>
. For example, to add NodeJS 16.15.0 to your project you can run:
devbox add [email protected]
For packages that follow semver, you can also specify a minor or major version that you want to pin. For example, to install the latest version of NodeJS 16, you can run:
devbox add nodejs@16
To install the latest available version of NodeJS, you can run
devbox add nodejs@latest
or add nodejs@latest
to the packages in your devbox.json
.
If you do not include a version, Devbox will install the latest version of the package available in the nixpkgs.commit
set in your devbox.json file.
Installing and Locking your Packages
Devbox will install your packages and generate a devbox.lock
file whenever you run devbox add
, devbox install
, or whenever activate your shell.
{
"[email protected]": {
"last_modified": "2022-06-30T00:42:12Z",
"resolved": "github:NixOS/nixpkgs/d3248619647234b5dc74a6921bcdf6dd8323eb22#nodejs-16_x",
"version": "16.15.0"
}
}
You can check this lockfile in to ensure that every developer who uses your project gets the same packages
Updating your Packages
You can update your devbox.lock
and packages by running devbox update
. This will fetch the latest versions of your packages that are compatible with your devbox.json
Other features and fixes
- You can now explicitly activate plugins by adding the to the
include
section of yourdevbox.json
. This is helpful for when you are installing a package from a flake, but also want to activate a devbox plugin. See more in our documentation - We’ve simplified our
direnv
function to a minimal 2 line script. - The Dockerfile generated by
devbox generate dockerfile|devcontainer
is now based on Debian instead of Alpine. - Fixed a bug where
$SHELL
was not being passed to binaries in yourdevbox shell
(contributed by @ragingpastry) - Improved process spawning for devbox wrapper scripts (contributed by @literatesnow)
- Added an install command and optional
--init-hooks
flag fordevbox global
Special Thanks to:
- @hezhizhen, @ragingpastry, @literatesnow, @saimen for their contributions to this release!
- @marcelocbf, @JoyceBabu for reporting issues that led to PR #986
Full Changelist
- Devbox Services 2.0 docs by @Lagoja in #886
- Flake Docs by @Lagoja in #909
- [direnv] update envrcs in projects by @savil in #915
- Update Flakes.md Typos by @Lagoja in #918
- Reduce cognitive complexity by @hezhizhen in #911
- Example for linking a custom extension to PHP by @Lagoja in #919
- [direnv] change default hooks for shell --print-env by @mohsenari in #928
- bring back shell.nix by @savil in #927
- [search] Add search command by @mikeland86 in #916
- [cleanup] Simplify code by removing printDevEnv cache and version file by @mikeland86 in #921
- [add] Implemented devbox add granular package selection by @mikeland86 in #923
- impl: semicolon at the end of env string commands by @gcurtis in #929
- chore: move ssh-config generation out of general generating process and wrap its error by @hezhizhen in #922
- Update add method of devbox interface by @hezhizhen in #924
- [devbox global] Added init hook flag to global shellenv by @mohsenari in #920
- [cleanup] add VirtenvBinPath variable by @hezhizhen in #932
- chore: correct package comment and tweak OSExpandEnvMap by @hezhizhen in #937
- [devbox global] Added devbox global install command by @mohsenari in #935
- [cleanup] replace checks for file existing with fileutil.Exists by @hezhizhen in #944
- [cleanup] replace literal http methods with constants by @hezhizhen in #942
- Replace current process instead of spawning a new one. by @literatesnow in #934
- chore: move all env to one package by @hezhizhen in #941
- [vscode extension] ensure directory exists for ssh keys by @savil in #945
- [cleanup] update checks for exist errors and not exist errors by @hezhizhen in #943
- chore: move all env utils to env package by @hezhizhen in #946
- [vscode extension] bump version and add to CHANGELOG by @savil in #951
- update README for publishing vscode-extension by @savil in #953
- [cleanup] replace pkgslice with lo by @hezhizhen in #948
- [tests] global-add should not fail if global-bins-not-in-path and add testscript unit tests for add and global-add by @savil in #958
- [cleanup] remove unused functions by @hezhizhen in #947
- [global] Don't add global packages to local by @mikeland86 in #952
- fix: inherit SHELL env variables in wrappers by @ragingpastry in #950
- [lockfile] Add lockfile and use search endpoint to resolve versions by @mikeland86 in #936
- [easy][wrappers] Ensure wrappers use correct project dir by @mikeland86 in #960
- [easy][global] Don't show eval message if already shellenved by @mikeland86 in #961
- Update CONTRIBUTING.md with fixes and style guide by @gcurtis in #963
- chore: update or add copyright text by @hezhizhen in #968
- [release] also release to stable-channel's S3 bucket by @savil in #969
- chore: update env constants and functions by @hezhizhen in #954
- chore: rename package env as envir by @hezhizhen in #962
- [version] part 1: update command for devbox and launcher updates by @savil in #965
- [version update] use LAUNCHER_PATH in triggerUpdate function by @savil in #975
- [lockfile] Use lockfile for legacy packages by @mikeland86 in #964
- feat: add cmdutil package to provide utils for commands by @hezhizhen in #970
- doc: Fix typo in zig.md by @saimen in #977
- Bump sqlparse from 0.4.3 to 0.4.4 in /examples/stacks/django by @dependabot in #940
- [update] Implement devbox update by @mikeland86 in #978
- chore: use constants defined in envir in version check by @hezhizhen in #976
- chore: add GetValueOrDefault f...
0.0.0-edge.2023-05-11
Bump django from 4.1.7 to 4.1.9 in /examples/stacks/django (#992) Bumps [django](https://github.com/django/django) from 4.1.7 to 4.1.9. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/django/django/commit/dceb634ba42d3a182ea653dce31a529017f75a95"><code>dceb634</code></a> [4.1.x] Bumped version for 4.1.9 release.</li> <li><a href="https://github.com/django/django/commit/e7c3a2ccc3a562328600be05068ed9149e12ce64"><code>e7c3a2c</code></a> [4.1.x] Fixed CVE-2023-31047, Fixed <a href="https://redirect.github.com/django/django/issues/31710">#31710</a> -- Prevented potential bypass of v...</li> <li><a href="https://github.com/django/django/commit/491dccec1aa10e829539e4e4fcd8cca606a57ebc"><code>491dcce</code></a> [4.1.x] Added missing backticks in docs/releases/1.7.txt.</li> <li><a href="https://github.com/django/django/commit/6d334a0ca54f2f8b3cce28070367110497d8d82c"><code>6d334a0</code></a> [4.1.x] Added stub release notes for 4.1.9 and 3.2.19.</li> <li><a href="https://github.com/django/django/commit/f55bcff9dcac1d0cb1f927f9fd543cfd567400c4"><code>f55bcff</code></a> [4.1.x] Refs <a href="https://redirect.github.com/django/django/issues/34118">#34118</a> -- Fixed CustomChoicesTests.test_uuid_unsupported on Pyth...</li> <li><a href="https://github.com/django/django/commit/685721b4c5551c3ef755421c2f64c164e809c3b7"><code>685721b</code></a> [4.1.x] Post-release version bump.</li> <li><a href="https://github.com/django/django/commit/bbce0153919c6e9ec7886f5ef3ce76463fae57c6"><code>bbce015</code></a> [4.1.x] Bumped version for 4.1.8 release.</li> <li><a href="https://github.com/django/django/commit/67a79dcf5b245f6cb0a77e232243c6b4033dea5c"><code>67a79dc</code></a> [4.1.x] Added release date for 4.1.8.</li> <li><a href="https://github.com/django/django/commit/ba1654cb54eccef3ba29e455cd5065aed84e1f90"><code>ba1654c</code></a> [4.1.x] Fixed <a href="https://redirect.github.com/django/django/issues/34384">#34384</a> -- Fixed session validation when rotation secret keys.</li> <li><a href="https://github.com/django/django/commit/ff3e3eb2bd6c259807e5409a8e7299d00a42687e"><code>ff3e3eb</code></a> [4.1.x] Added stub release notes for 4.1.8.</li> <li>Additional commits viewable in <a href="https://github.com/django/django/compare/4.1.7...4.1.9">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/jetpack-io/devbox/network/alerts). </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0.0.0-edge.2023-05-10
Disable tests
0.4.9
What's new in this release
Devbox will no longer automatically update whenever a new version is available. Instead, users will be notified when a new version of the CLI or Launcher (which manages the Devbox Updates) is available, and prompted to update using devbox version update
.
If you would like to pin a specific version of Devbox (for example, when using Devbox in CI), or rollback to an older version of Devbox after updating, you can set the DEVBOX_USE_VERSION
environment variable to the version number you'd like to use. For example, to reliably install Devbox 0.4.9 in a CI/CD environment, you can run:
export DEVBOX_USE_VERSION=0.4.9
curl -fsSL https://get.jetpack.io/devbox | bash
Changelog
0.4.9-dev
What's new in this release
Devbox will no longer automatically update whenever a new version is available. Instead, users will be notified when a new version of the CLI or Launcher (which manages the Devbox Updates) is available, and prompted to update using devbox version update
.
If you would like to pin a specific version of Devbox (for example, when using Devbox in CI), or rollback to an older version of Devbox after updating, you can set the DEVBOX_USE_VERSION
environment variable to the version number you'd like to use. For example, to reliably install Devbox 0.4.9 in a CI/CD environment, you can run:
export DEVBOX_USE_VERSION=0.4.9
curl -fsSL https://get.jetpack.io/devbox | bash
Changelog
0.4.8
Fixes in this release
This release provides backwards compatibility for developers using the Direnv integration before 0.4.7.
Note: For the best .envrc
performance, and to take advantage of the new features released in 0.4.7, we recommend regenerating your .envrc file using devbox generate direnv --force
. If you've modified your .envrc, you should back up your changes before running this command.
Changelog
- 9645d48 bring back shell.nix (#927)
- 9386506 [direnv] change default hooks for shell --print-env (#928)
- 54e5518 Example for linking a custom extension to PHP (#919)
- ba7d6e9 Reduce cognitive complexity (#911)
- 21778b6 Update Flakes.md Typos (#918)
- a1a2df3 [direnv] update envrcs in projects (#915)
- 04dc4ff Flake Docs (#909)
- 4478bf6 Devbox Services 2.0 docs (#886)
0.4.7
What's New in This Release
This release includes an update to our Services system, the ability to install packages from Nix Flakes, and improvements to our Direnv Integration. You can view the full release announcement on our blog:
Note: Direnv users may need to regenerate their .envrc
file using devbox generate direnv --force
. The new .envrc file should perform better, and be more reliable than previous versions
Devbox Services 2.0
- Devbox Services are now backed by Process Compose, making it easier to start, stop, and manage your services
- Developers can define their own services using
process-compose.yaml
. Devbox will automatically detect and run services that are defined in your project's root directory. - Use
devbox services up
to start all your services in the foreground with the Process Compose UI, or start them in the background withdevbox services up -b
- Start, stop, and restart services with
devbox services start|stop|restart
. Stop all your projects withdevbox services stop --all-projects
Flake Support
- You can now install software from Nix Flakes by adding them to the
packages
in your devbox.json. - Devbox supports installing packages from Github hosted flakes (including
NixOS/nixpkgs
), or from local flakes. - Example flake references:
{ "packages": [ // Add the default package from a Github hosted flake "github:numtide/flake-utils", // Install a specific attribute or package from a Github hosted flake "github:nix-community/fenix#stable.toolchain", // Install a package from a specific channel of Nixpkgs "github:nixos/nixpkgs/21.05#hello", // Install a package from a local flake. // This should point to a directory that contains a flake.nix file. "path:../my-flake#my-package" ] }
Direnv Improvements
- Speed up start up performance by removing
use nix .devbox/gen/shell.nix
from the generated.envrc
file. - Devbox now runs
init_hooks
as part of our.envrc
hook. - Devbox will now ensure that the packages specified in your
devbox.json
are installed when generating your.envrc
.
Special Thanks To:
- @hezhizhen and @parviste for contributing fixes to this release
- @Vandaahl, @amok, @JoyceBabu for filing issues that were addressed in this release
What's Changed
- all: upgrade to Go 1.20, upgrade all dependencies by @gcurtis in #862
- ci: create Sentry release by @gcurtis in #861
- chore: update descriptions for commands by @hezhizhen in #847
- [vscode extension] Updated readme and changelog for v0.0.5 by @mohsenari in #853
- boxcli,nix: some better error messages by @gcurtis in #855
- Fix typo in installing_devbox.mdx by @parviste in #857
- Migrate services to process-compose by @Lagoja in #836
- [Readme] Moved install to above benefits by @mohsenari in #863
- chore: go mod tidy by @hezhizhen in #864
- chore: simplify global commands by @hezhizhen in #865
- Skip interactive survey if devbox is not executed in a terminal by @LucilleH in #867
- [devbox] generate script files when we generate shell files by @savil in #868
- List Services and Status via Process Compose by @Lagoja in #870
- Add init hook flag to shellenv command by @LucilleH in #871
- [wrappers] Don't re-source shellenv if already sourced by @mikeland86 in #872
- [vscode extension] update README by @hezhizhen in #877
- [flakes] Add ability to add custom local flakes to devbox project by @mikeland86 in #866
- [examples] Update dependencies by @mikeland86 in #878
- [easy][examples] Update more deps by @mikeland86 in #879
- [nix] Re-add profile to path by @mikeland86 in #882
- [bin-wrappers] Use shellenv command in binwrappers by @mikeland86 in #876
- set HOME for testscripts by @savil in #875
- [vscode-extension] Added better error messages and debugs for openinvscode by @mohsenari in #887
- nixstore: Nix expression for generating a nixpkgs index by @gcurtis in #885
- [tests] Tests should not modify config by @mikeland86 in #883
- [nix] Allow github flakes in devbox.json by @mikeland86 in #888
- [cleanup] delete unused shell.nix and development.nix templates by @savil in #891
- nixstore: add package for querying and resolving Nix store paths by @gcurtis in #884
- chore: get config path from --config only by @hezhizhen in #889
- [devbox] Make stack-examples using Postgres actually work by @savil in #874
- [examples] enable stacks-django and rust examples to pass by @savil in #880
- [example tests] generate "set -e" to exit scripts upon failure by @savil in #869
- [shell] source the hooks file in shellrc by @savil in #890
- bring back shell.nix, but keep development.nix deleted by @savil in #895
- Bump nokogiri from 1.14.2 to 1.14.3 in /examples/stacks/rails/blog by @dependabot in #893
- Multi-instance Process Compose by @Lagoja in #873
- [devbox] add .envrc file to repo by @savil in #899
- [lockfile] Add hidden lockfile for caching by @mikeland86 in #897
- [perf] Only compute print-dev-env if needed by @mikeland86 in #898
- [vscode-extension] Prep for version 0.0.6 release of vscode extension by @mohsenari in #903
- [direnv] drop shell.nix, rely solely on devbox shell --print-env by @savil in #902
- [examples tests] insert one second sleep for services to initialize by @savil in #904
- [cicd] bump timeouts for cli-tests by @savil in #905
- [CICD] stream go test output, and turn off DEVBOX_DEBUG for example tests by @savil in #906
- [CICD] Don't run example tests on mac by @mikeland86 in #907
- Use vars context for Sentry project + org by @Lagoja in #908
- [direnv] run init-hooks in envrc, and generate shell files prior to gen envrc by @savil in #910
- [devbox] add hidden all command to list all sub-commands (including hidden) by @savil in #901
- [direnv] add quotations around devbox-shellenv-init-hook call by @savil in #913
New Contributors
- @parviste made their first contribution in #857
Full Changelog: 0.4.6...0.4.7