Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 38 additions & 22 deletions .github/workflows/cli-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,14 @@ jobs:
# the devbox.json tests. We can require the other tests to complete before
# merging, while keeping the others as an additional non-required signal
run-project-tests: ["project-tests-only", "project-tests-off"]
# Run tests on:
# 1. the oldest supported nix version (Nixpkgs requires >= 2.18 as of 2026)
# 2. nix 2.19.2: version before nix profile changes
# 3. latest nix version (note, 2.20.1 introduced a new profile change)
nix-version: ["2.18.0", "2.19.2", "2.30.2"]
# NOTE: this job used to run a `nix-version` matrix, but the
# devbox-install-action we now use to install Nix doesn't let us pin a
# specific Nix version. The matrix legs were therefore running identical
# duplicates (3x the jobs, 3x the flake surface, no extra coverage), so
# it was removed. Cross-version coverage is currently provided by the
# separate `test-nix-versions` job. Once the install action supports
# specifying a Nix version, re-add the matrix here and wire it into the
# "Install devbox" step.
exclude:
# Only runs tests on macos if explicitly requested, or on a schedule
- os: "${{ (inputs.run-mac-tests || github.event.schedule != '') && 'dummy' || 'macos-latest' }}"
Expand Down Expand Up @@ -180,26 +183,34 @@ jobs:
enable-cache: true
- name: Setup Nix GitHub authentication
run: |
# Setup github authentication to ensure Github's rate limits are not hit
# For macOS, we need to configure the system-wide nix.conf because the Nix daemon
# runs as a different user and doesn't read the user's ~/.config/nix/nix.conf
# Setup github authentication to ensure GitHub's API rate limits are not
# hit when Nix resolves `github:` flake refs (e.g. fetching the latest
# commit of nixpkgs-unstable). Anonymous requests are limited to 60/hr,
# which is quickly exhausted by the parallel test suite and surfaces as
# "unable to download '.../commits/...': HTTP error 403".
#
# `access-tokens` set via NIX_CONFIG or the user's ~/.config/nix/nix.conf
# is only honored when the invoking user is a trusted user. The Nix daemon
# (which can run as a different user) does not read the user config at all.
# The system-wide /etc/nix/nix.conf is always trusted and read by both the
# client and the daemon, so write the token there on every platform.
echo "Configuring system-wide Nix config (/etc/nix/nix.conf)"
sudo mkdir -p /etc/nix
if [ ! -f /etc/nix/nix.conf ]; then
echo "# Nix configuration" | sudo tee /etc/nix/nix.conf > /dev/null
fi
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" | sudo tee -a /etc/nix/nix.conf

# Restart the Nix daemon so it picks up the new configuration.
if [ "$RUNNER_OS" == "macOS" ]; then
echo "Configuring system-wide Nix config for macOS daemon"
# Ensure /etc/nix directory exists
if [ ! -d /etc/nix ]; then
sudo mkdir -p /etc/nix
fi
# Check if file exists, create it if not
if [ ! -f /etc/nix/nix.conf ]; then
echo "# Nix configuration" | sudo tee /etc/nix/nix.conf > /dev/null
fi
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" | sudo tee -a /etc/nix/nix.conf
# Restart nix daemon to pick up the new configuration
sudo launchctl stop org.nixos.nix-daemon || true
sudo launchctl start org.nixos.nix-daemon || true
sleep 2 # Give daemon time to restart
sleep 2 # Give the daemon time to restart
else
sudo systemctl restart nix-daemon || true
fi
# For Linux and as a backup for macOS, also configure user config

# Also configure the user config as a backup for trusted-user setups.
mkdir -p ~/.config/nix
echo "access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" > ~/.config/nix/nix.conf
- name: Run fast tests
Expand Down Expand Up @@ -289,7 +300,12 @@ jobs:
uses: DeterminateSystems/nix-installer-action@v4
with:
logger: pretty
extra-conf: experimental-features = ca-derivations fetch-closure
# access-tokens is written to the system-wide /etc/nix/nix.conf so both
# the Nix client and daemon authenticate to GitHub and avoid the
# anonymous API rate limit (HTTP 403) when resolving `github:` flake refs.
extra-conf: |
experimental-features = ca-derivations fetch-closure
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
nix-package-url: https://releases.nixos.org/nix/nix-${{ matrix.nix-version }}/nix-${{ matrix.nix-version }}-${{ runner.arch == 'X64' && 'x86_64' || 'aarch64' }}-${{ runner.os == 'macOS' && 'darwin' || 'linux' }}.tar.xz
- name: Run devbox install, devbox run, devbox rm
run: |
Expand Down
88 changes: 44 additions & 44 deletions devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,174 +2,174 @@
"lockfile_version": "1",
"packages": {
"fd@latest": {
"last_modified": "2026-03-21T07:29:51Z",
"resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#fd",
"last_modified": "2026-05-21T08:15:18Z",
"resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#fd",
"source": "devbox-search",
"version": "10.4.2",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/b87vl0i1j3w760n2s6w30r2d69j89ags-fd-10.4.2",
"path": "/nix/store/h07wyxfpicdwj0j3xbg9841hd0grb9sy-fd-10.4.2",
"default": true
}
],
"store_path": "/nix/store/b87vl0i1j3w760n2s6w30r2d69j89ags-fd-10.4.2"
"store_path": "/nix/store/h07wyxfpicdwj0j3xbg9841hd0grb9sy-fd-10.4.2"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/zxmq6kgqkl1zdyap0dskawvwah2sg6wy-fd-10.4.2",
"path": "/nix/store/493wwp79iq7db1dy1gj3a9dpazh17v42-fd-10.4.2",
"default": true
}
],
"store_path": "/nix/store/zxmq6kgqkl1zdyap0dskawvwah2sg6wy-fd-10.4.2"
"store_path": "/nix/store/493wwp79iq7db1dy1gj3a9dpazh17v42-fd-10.4.2"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/sclrbgh1hx86s6c3d6hl1lwxrrp33j3l-fd-10.4.2",
"path": "/nix/store/h350vnmjbhxgiqm4v7hihq43kk7ixswk-fd-10.4.2",
"default": true
}
],
"store_path": "/nix/store/sclrbgh1hx86s6c3d6hl1lwxrrp33j3l-fd-10.4.2"
"store_path": "/nix/store/h350vnmjbhxgiqm4v7hihq43kk7ixswk-fd-10.4.2"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/836lndidk1144z81npf27c7dcgmczid3-fd-10.4.2",
"path": "/nix/store/wci2b3l9gs8nq3alx6czffsq55bg44cv-fd-10.4.2",
"default": true
}
],
"store_path": "/nix/store/836lndidk1144z81npf27c7dcgmczid3-fd-10.4.2"
"store_path": "/nix/store/wci2b3l9gs8nq3alx6czffsq55bg44cv-fd-10.4.2"
}
}
},
"git@latest": {
"last_modified": "2026-03-21T07:29:51Z",
"resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#git",
"last_modified": "2026-05-21T08:15:18Z",
"resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#git",
"source": "devbox-search",
"version": "2.53.0",
"version": "2.54.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/6qbj40r0s289k5slmy8yna5x2hfz01wg-git-2.53.0",
"path": "/nix/store/a14yxcqvv9x2l9mllgpirzhvz93pgprg-git-2.54.0",
"default": true
},
{
"name": "doc",
"path": "/nix/store/xp9w7bcl4c78268kn82qdayqglj0zdxa-git-2.53.0-doc"
"path": "/nix/store/zn8gmbxxf5398hxg6y6nk5jimj85qj69-git-2.54.0-doc"
}
],
"store_path": "/nix/store/6qbj40r0s289k5slmy8yna5x2hfz01wg-git-2.53.0"
"store_path": "/nix/store/a14yxcqvv9x2l9mllgpirzhvz93pgprg-git-2.54.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/0vbb6j0ppx1w8cw28h7w8s2dzla9j3m6-git-2.53.0",
"path": "/nix/store/ixp98f9avf8ikpdrmp40cj33g0dazyp9-git-2.54.0",
"default": true
},
{
"name": "debug",
"path": "/nix/store/gaj4q67pid2pcy9nvh2ysv4728wxj5m4-git-2.53.0-debug"
"name": "doc",
"path": "/nix/store/klwr4n2snj7ldlpkhwarwlif80myx0vj-git-2.54.0-doc"
},
{
"name": "doc",
"path": "/nix/store/9mrg9g0w2b4cfdppq3n4zvhkvyixvqpx-git-2.53.0-doc"
"name": "debug",
"path": "/nix/store/c7mafmqf28l7898rpbqqkd0p3m42hc03-git-2.54.0-debug"
}
],
"store_path": "/nix/store/0vbb6j0ppx1w8cw28h7w8s2dzla9j3m6-git-2.53.0"
"store_path": "/nix/store/ixp98f9avf8ikpdrmp40cj33g0dazyp9-git-2.54.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/2q2hzaclp1rsj65h21lng7wa26vawhnq-git-2.53.0",
"path": "/nix/store/s9lsrlgwr3sabw9a2dl3laykas0ijk85-git-2.54.0",
"default": true
},
{
"name": "doc",
"path": "/nix/store/yi2mi426la2x7rggv0a0ah11s2dangz4-git-2.53.0-doc"
"path": "/nix/store/agyxy5ay4x06b52mj24rz44fc82328ha-git-2.54.0-doc"
}
],
"store_path": "/nix/store/2q2hzaclp1rsj65h21lng7wa26vawhnq-git-2.53.0"
"store_path": "/nix/store/s9lsrlgwr3sabw9a2dl3laykas0ijk85-git-2.54.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/7yvcckar1lzhqnr0xx2n19nsdjd4qa4d-git-2.53.0",
"path": "/nix/store/bcnisk3ydfgv26v2gw3zlky24g00yww2-git-2.54.0",
"default": true
},
{
"name": "debug",
"path": "/nix/store/9xs1n97fsdbgnk8cxbdx3hqlz6fdaynb-git-2.53.0-debug"
"name": "doc",
"path": "/nix/store/l444690y78nfdwyzm6mghagl7xa97myf-git-2.54.0-doc"
},
{
"name": "doc",
"path": "/nix/store/rv7cz5lz1qmbdnh3zrpv0j0wa5ivaacq-git-2.53.0-doc"
"name": "debug",
"path": "/nix/store/72fyakk8w8idjbksk0h8jbkq6sgvcm85-git-2.54.0-debug"
}
],
"store_path": "/nix/store/7yvcckar1lzhqnr0xx2n19nsdjd4qa4d-git-2.53.0"
"store_path": "/nix/store/bcnisk3ydfgv26v2gw3zlky24g00yww2-git-2.54.0"
}
}
},
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"last_modified": "2026-04-15T12:22:54Z",
"resolved": "github:NixOS/nixpkgs/566acc07c54dc807f91625bb286cb9b321b5f42a?lastModified=1776255774&narHash=sha256-psVTpH6PK3q1htMJpmdz1hLF5pQgEshu7gQWgKO6t6Y%3D"
"last_modified": "2026-06-13T14:05:44Z",
"resolved": "github:NixOS/nixpkgs/9f11f828c213641c2369a9f1fa31fe31557e3156?lastModified=1781359544&narHash=sha256-iUuzKQcyXvopYDDzFpMK5eQKP3WIJExYny2kJtbgUcE%3D"
},
"go@latest": {
"last_modified": "2026-03-21T07:29:51Z",
"resolved": "github:NixOS/nixpkgs/09061f748ee21f68a089cd5d91ec1859cd93d0be#go",
"last_modified": "2026-05-21T08:15:18Z",
"resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#go",
"source": "devbox-search",
"version": "1.26.1",
"version": "1.26.3",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/kh43nhaz1qcpwws2xq805lrmwpmn9i3k-go-1.26.1",
"path": "/nix/store/7ycp8j45iay38g9mjaxmy4jhwdsrb47y-go-1.26.3",
"default": true
}
],
"store_path": "/nix/store/kh43nhaz1qcpwws2xq805lrmwpmn9i3k-go-1.26.1"
"store_path": "/nix/store/7ycp8j45iay38g9mjaxmy4jhwdsrb47y-go-1.26.3"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/rz1pqbm5z3zfby250i0djfmfzzj7khg9-go-1.26.1",
"path": "/nix/store/jkcwcbwvhgzmxg59798z4clmj4bfv42i-go-1.26.3",
"default": true
}
],
"store_path": "/nix/store/rz1pqbm5z3zfby250i0djfmfzzj7khg9-go-1.26.1"
"store_path": "/nix/store/jkcwcbwvhgzmxg59798z4clmj4bfv42i-go-1.26.3"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/yv6jj27racylbfjw6a1cdr91ndxbgyf6-go-1.26.1",
"path": "/nix/store/3f2jzvxmhhlarjqxy1p7i9r5l34siz29-go-1.26.3",
"default": true
}
],
"store_path": "/nix/store/yv6jj27racylbfjw6a1cdr91ndxbgyf6-go-1.26.1"
"store_path": "/nix/store/3f2jzvxmhhlarjqxy1p7i9r5l34siz29-go-1.26.3"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/ckcq2mj8zk0drhaaacy6mp9d924hnr4m-go-1.26.1",
"path": "/nix/store/33fw5m31lfcnk4ff2f0df7j2bxnh8lgk-go-1.26.3",
"default": true
}
],
"store_path": "/nix/store/ckcq2mj8zk0drhaaacy6mp9d924hnr4m-go-1.26.1"
"store_path": "/nix/store/33fw5m31lfcnk4ff2f0df7j2bxnh8lgk-go-1.26.3"
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/data_science/jupyter/devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"lockfile_version": "1",
"packages": {
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"last_modified": "2025-06-18T03:01:18Z",
"resolved": "github:NixOS/nixpkgs/5395fb3ab3f97b9b7abca147249fa2e8ed27b192?lastModified=1750215678&narHash=sha256-Rc%2FytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M%2Bok%3D"
"last_modified": "2026-06-01T17:55:45Z",
"resolved": "github:NixOS/nixpkgs/4df1b885d76a54e1aa1a318f8d16fd6005b6401f?lastModified=1780336545&narHash=sha256-vhVhuXzFrIOfcssC%2F9hDHx7MHzDKjF3keHuREOQqQiQ%3D"
},
"nodePackages.pyright": {
"resolved": "github:NixOS/nixpkgs/75a52265bda7fd25e06e3a67dee3f0354e73243c#nodePackages.pyright",
Expand Down
4 changes: 2 additions & 2 deletions examples/data_science/pytorch/basic-example/devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"version": "11.7.0"
},
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"last_modified": "2025-06-18T03:01:18Z",
"resolved": "github:NixOS/nixpkgs/5395fb3ab3f97b9b7abca147249fa2e8ed27b192?lastModified=1750215678&narHash=sha256-Rc%2FytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M%2Bok%3D"
"last_modified": "2026-06-01T17:55:45Z",
"resolved": "github:NixOS/nixpkgs/4df1b885d76a54e1aa1a318f8d16fd6005b6401f?lastModified=1780336545&narHash=sha256-vhVhuXzFrIOfcssC%2F9hDHx7MHzDKjF3keHuREOQqQiQ%3D"
},
"poetry": {
"plugin_version": "0.0.4",
Expand Down
1 change: 1 addition & 0 deletions examples/databases/mariadb/devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"lockfile_version": "1",
"packages": {
"github:NixOS/nixpkgs/f80ac848e3d6f0c12c52758c0f25c10c97ca3b62": {
"last_modified": "1970-01-01T00:00:00Z",
"resolved": "github:NixOS/nixpkgs/f80ac848e3d6f0c12c52758c0f25c10c97ca3b62"
},
"mariadb@latest": {
Expand Down
4 changes: 2 additions & 2 deletions examples/databases/mysql/devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"lockfile_version": "1",
"packages": {
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"last_modified": "2025-08-04T20:54:38Z",
"resolved": "github:NixOS/nixpkgs/cab778239e705082fe97bb4990e0d24c50924c04?lastModified=1754340878&narHash=sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU%3D"
"last_modified": "2026-06-01T17:55:45Z",
"resolved": "github:NixOS/nixpkgs/4df1b885d76a54e1aa1a318f8d16fd6005b6401f?lastModified=1780336545&narHash=sha256-vhVhuXzFrIOfcssC%2F9hDHx7MHzDKjF3keHuREOQqQiQ%3D"
},
"mysql84@latest": {
"last_modified": "2025-08-08T11:17:04Z",
Expand Down
4 changes: 2 additions & 2 deletions examples/development/bun/devbox.lock
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
}
},
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"last_modified": "2025-06-18T03:01:18Z",
"resolved": "github:NixOS/nixpkgs/5395fb3ab3f97b9b7abca147249fa2e8ed27b192?lastModified=1750215678&narHash=sha256-Rc%2FytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M%2Bok%3D"
"last_modified": "2026-06-01T17:55:45Z",
"resolved": "github:NixOS/nixpkgs/4df1b885d76a54e1aa1a318f8d16fd6005b6401f?lastModified=1780336545&narHash=sha256-vhVhuXzFrIOfcssC%2F9hDHx7MHzDKjF3keHuREOQqQiQ%3D"
}
}
}
19 changes: 3 additions & 16 deletions examples/development/elixir/elixir_hello/devbox.lock
Original file line number Diff line number Diff line change
@@ -1,23 +1,9 @@
{
"lockfile_version": "1",
"packages": {
"darwin.apple_sdk.frameworks.CoreServices": {
"resolved": "github:NixOS/nixpkgs/3a05eebede89661660945da1f151959900903b6a?narHash=sha256-Ly2fBL1LscV%2BKyCqPRufUBuiw%2BzmWrlJzpWOWbahplg%3D#darwin.apple_sdk.frameworks.CoreServices",
"source": "nixpkg",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"path": "/nix/store/mpq140x7nsx9gz73h4nfp9kpp297mshh-CoreServices-11.0",
"default": true
}
]
}
}
},
"elixir@latest": {
"last_modified": "2024-12-27T03:08:00Z",
"plugin_version": "0.0.1",
"plugin_version": "0.0.2",
"resolved": "github:NixOS/nixpkgs/7cc0bff31a3a705d3ac4fdceb030a17239412210#elixir",
"source": "devbox-search",
"version": "1.18.1",
Expand Down Expand Up @@ -65,7 +51,8 @@
}
},
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"resolved": "github:NixOS/nixpkgs/3a05eebede89661660945da1f151959900903b6a?lastModified=1740547748&narHash=sha256-Ly2fBL1LscV%2BKyCqPRufUBuiw%2BzmWrlJzpWOWbahplg%3D"
"last_modified": "2026-06-13T14:05:44Z",
"resolved": "github:NixOS/nixpkgs/9f11f828c213641c2369a9f1fa31fe31557e3156?lastModified=1781359544&narHash=sha256-iUuzKQcyXvopYDDzFpMK5eQKP3WIJExYny2kJtbgUcE%3D"
}
}
}
Loading
Loading