Skip to content

Commit 6680040

Browse files
authored
all: upgrade to Go 1.24 (#2533)
Upgrade to Go 1.24 and use `go get -tool` to manage golangci-lint and gofumpt instead of runx. They're installed to `dist/tools` (which is also prepended to PATH) when a devbox shell starts. Added `git` and `fd` to `devbox.json` since we have scripts that rely on them. Other misc. changes fix the warnings from the latest version of golangci-lint.
1 parent 5819338 commit 6680040

File tree

15 files changed

+1048
-140
lines changed

15 files changed

+1048
-140
lines changed

.golangci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ linters:
22
disable-all: true
33
enable:
44
- dupl
5-
- errorlint
65
- errcheck
6+
- errorlint
77
- gofmt
88
- goimports
99
- gosimple
@@ -16,12 +16,12 @@ linters:
1616
- revive
1717
- staticcheck
1818
- stylecheck
19-
- tenv
2019
- typecheck
2120
- unconvert
2221
- unparam
2322
- unused
2423
- usestdlibvars
24+
- usetesting
2525
- varnamelen
2626
# - wrapcheck If we're going to use github.com/pkg/errors we should probably turn this on?
2727
# We'd like to have the following linter enabled, but it's broken for Go

devbox.json

+12-11
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
"name": "devbox",
33
"description": "Instant, easy, and predictable development environments",
44
"packages": {
5-
"go": "latest",
6-
"runx:golangci/golangci-lint": "latest",
7-
"runx:mvdan/gofumpt": "latest",
5+
"fd": "latest",
6+
"git": "latest",
7+
"go": "latest"
88
},
99
"env": {
1010
"GOENV": "off",
11-
"PATH": "$PATH:$PWD/dist",
11+
"PATH": "$PWD/dist/tools:$PATH:$PWD/dist"
1212
},
1313
"shell": {
1414
"init_hook": [
@@ -17,6 +17,7 @@
1717
"test -z $FISH_VERSION && \\",
1818
"unset CGO_ENABLED GO111MODULE GOARCH GOFLAGS GOMOD GOOS GOROOT GOTOOLCHAIN GOWORK || \\",
1919
"set --erase CGO_ENABLED GO111MODULE GOARCH GOFLAGS GOMOD GOOS GOROOT GOTOOLCHAIN GOWORK",
20+
"GOBIN=$PWD/dist/tools go install tool"
2021
],
2122
"scripts": {
2223
// Build devbox for the current platform
@@ -29,11 +30,11 @@
2930
"devbox run build-darwin-amd64",
3031
"devbox run build-darwin-arm64",
3132
"devbox run build-linux-amd64",
32-
"devbox run build-linux-arm64",
33+
"devbox run build-linux-arm64"
3334
],
3435
// Open VSCode
3536
"code": "code .",
36-
"lint": "golangci-lint run --timeout 5m && scripts/gofumpt.sh",
37+
"lint": "go tool golangci-lint run --timeout 5m && scripts/gofumpt.sh",
3738
"fmt": "scripts/gofumpt.sh",
3839
"test": "go test -race -cover ./...",
3940
"test-projects-only": "DEVBOX_RUN_PROJECT_TESTS=1 go test -v -timeout ${DEVBOX_GOLANG_TEST_TIMEOUT:-30m} ./... -run \"TestExamples|TestScriptsWithProjects\"",
@@ -47,7 +48,7 @@
4748
"vendor=$(realpath $(mktemp -d))",
4849
"trap \"rm -rf $vendor\" EXIT",
4950
"go mod vendor -o $vendor",
50-
"nix hash path $vendor >vendor-hash",
51+
"nix hash path $vendor >vendor-hash"
5152
],
5253
"tidy": ["go mod tidy", "devbox run update-hash"],
5354
// docker-testscripts runs the testscripts with Docker to exercise
@@ -68,8 +69,8 @@
6869
"GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go test -c -o testscripts-linux-amd64",
6970
"GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go test -c -o testscripts-linux-arm64",
7071
"image=$(docker build --quiet --tag devbox-testscripts-ubuntu:noble --platform linux/amd64 .)",
71-
"docker run --rm --mount type=volume,src=devbox-testscripts-amd64,dst=/nix --platform linux/amd64 -e DEVBOX_RUN_FAILING_TESTS -e DEVBOX_RUN_PROJECT_TESTS -e DEVBOX_DEBUG $image \"$@\"",
72-
],
73-
},
74-
},
72+
"docker run --rm --mount type=volume,src=devbox-testscripts-amd64,dst=/nix --platform linux/amd64 -e DEVBOX_RUN_FAILING_TESTS -e DEVBOX_RUN_PROJECT_TESTS -e DEVBOX_DEBUG $image \"$@\""
73+
]
74+
}
75+
}
7576
}

devbox.lock

+133-18
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,176 @@
11
{
22
"lockfile_version": "1",
33
"packages": {
4-
"go@latest": {
5-
"last_modified": "2024-08-14T11:41:26Z",
6-
"resolved": "github:NixOS/nixpkgs/0cb2fd7c59fed0cd82ef858cbcbdb552b9a33465#go_1_23",
4+
"fd@latest": {
5+
"last_modified": "2025-02-07T11:26:36Z",
6+
"resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#fd",
77
"source": "devbox-search",
8-
"version": "1.23.0",
8+
"version": "10.2.0",
99
"systems": {
1010
"aarch64-darwin": {
1111
"outputs": [
1212
{
1313
"name": "out",
14-
"path": "/nix/store/x097y3rdlvw6ax1id52xx2didgzxjg34-go-1.23.0",
14+
"path": "/nix/store/ad5m54pfn9k39v80lpyhrnsh336nqrp5-fd-10.2.0",
1515
"default": true
1616
}
1717
],
18-
"store_path": "/nix/store/x097y3rdlvw6ax1id52xx2didgzxjg34-go-1.23.0"
18+
"store_path": "/nix/store/ad5m54pfn9k39v80lpyhrnsh336nqrp5-fd-10.2.0"
1919
},
2020
"aarch64-linux": {
2121
"outputs": [
2222
{
2323
"name": "out",
24-
"path": "/nix/store/znns5qk7fbhjb89bqhabxjxpgiq2ag1a-go-1.23.0",
24+
"path": "/nix/store/vn3mny38qmf3lm809rpcvahxqwhkqb7m-fd-10.2.0",
2525
"default": true
2626
}
2727
],
28-
"store_path": "/nix/store/znns5qk7fbhjb89bqhabxjxpgiq2ag1a-go-1.23.0"
28+
"store_path": "/nix/store/vn3mny38qmf3lm809rpcvahxqwhkqb7m-fd-10.2.0"
2929
},
3030
"x86_64-darwin": {
3131
"outputs": [
3232
{
3333
"name": "out",
34-
"path": "/nix/store/psym5ggdincwihwd81kssc4gbw1k3p3h-go-1.23.0",
34+
"path": "/nix/store/6kdv4iy9j3svncq0vs47wxfvvn7flcr5-fd-10.2.0",
3535
"default": true
3636
}
3737
],
38-
"store_path": "/nix/store/psym5ggdincwihwd81kssc4gbw1k3p3h-go-1.23.0"
38+
"store_path": "/nix/store/6kdv4iy9j3svncq0vs47wxfvvn7flcr5-fd-10.2.0"
3939
},
4040
"x86_64-linux": {
4141
"outputs": [
4242
{
4343
"name": "out",
44-
"path": "/nix/store/0k144pnsvy0wa3dcl1y3df7d4zskylc4-go-1.23.0",
44+
"path": "/nix/store/x58pg72qw2xv1vvs4pbqw63zhkdkp331-fd-10.2.0",
4545
"default": true
4646
}
4747
],
48-
"store_path": "/nix/store/0k144pnsvy0wa3dcl1y3df7d4zskylc4-go-1.23.0"
48+
"store_path": "/nix/store/x58pg72qw2xv1vvs4pbqw63zhkdkp331-fd-10.2.0"
4949
}
5050
}
5151
},
52-
"runx:golangci/golangci-lint@latest": {
53-
"resolved": "golangci/[email protected]",
54-
"version": "v1.60.2"
52+
"git@latest": {
53+
"last_modified": "2025-02-07T11:26:36Z",
54+
"resolved": "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d#git",
55+
"source": "devbox-search",
56+
"version": "2.47.2",
57+
"systems": {
58+
"aarch64-darwin": {
59+
"outputs": [
60+
{
61+
"name": "out",
62+
"path": "/nix/store/9z3jhc0rlj3zaw8nd1zka9vli6w0q11g-git-2.47.2",
63+
"default": true
64+
},
65+
{
66+
"name": "doc",
67+
"path": "/nix/store/rh151iwgy4h8yv8kxd5facw57cyj0bav-git-2.47.2-doc"
68+
}
69+
],
70+
"store_path": "/nix/store/9z3jhc0rlj3zaw8nd1zka9vli6w0q11g-git-2.47.2"
71+
},
72+
"aarch64-linux": {
73+
"outputs": [
74+
{
75+
"name": "out",
76+
"path": "/nix/store/gx5y37qcfqdvn0h6swjd04dmqjjh3nk7-git-2.47.2",
77+
"default": true
78+
},
79+
{
80+
"name": "debug",
81+
"path": "/nix/store/8vfpmf3vjgzl2psip76p0f9h11sb6y3p-git-2.47.2-debug"
82+
},
83+
{
84+
"name": "doc",
85+
"path": "/nix/store/c25mq3q83dvw3k5pb0qr5333g3cycylq-git-2.47.2-doc"
86+
}
87+
],
88+
"store_path": "/nix/store/gx5y37qcfqdvn0h6swjd04dmqjjh3nk7-git-2.47.2"
89+
},
90+
"x86_64-darwin": {
91+
"outputs": [
92+
{
93+
"name": "out",
94+
"path": "/nix/store/39xx5gx3hxigs1b5ldw5i2jr84vsn3rf-git-2.47.2",
95+
"default": true
96+
},
97+
{
98+
"name": "doc",
99+
"path": "/nix/store/xmh2djjrnbpiqqgpblrcbavnqh0nv4km-git-2.47.2-doc"
100+
}
101+
],
102+
"store_path": "/nix/store/39xx5gx3hxigs1b5ldw5i2jr84vsn3rf-git-2.47.2"
103+
},
104+
"x86_64-linux": {
105+
"outputs": [
106+
{
107+
"name": "out",
108+
"path": "/nix/store/33g65w5cc9n8fr0hxj84282xmv4l7hyl-git-2.47.2",
109+
"default": true
110+
},
111+
{
112+
"name": "debug",
113+
"path": "/nix/store/jyz4nvcd3bci4vg2sfsmvrq0fp9mzr5a-git-2.47.2-debug"
114+
},
115+
{
116+
"name": "doc",
117+
"path": "/nix/store/lb4nipdhlwrxdavz7gdkcik6lkz3cbdm-git-2.47.2-doc"
118+
}
119+
],
120+
"store_path": "/nix/store/33g65w5cc9n8fr0hxj84282xmv4l7hyl-git-2.47.2"
121+
}
122+
}
123+
},
124+
"github:NixOS/nixpkgs/nixpkgs-unstable": {
125+
"resolved": "github:NixOS/nixpkgs/73cf49b8ad837ade2de76f87eb53fc85ed5d4680?lastModified=1739866667&narHash=sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64%3D"
55126
},
56-
"runx:mvdan/gofumpt@latest": {
57-
"resolved": "mvdan/[email protected]",
58-
"version": "v0.7.0"
127+
"go@latest": {
128+
"last_modified": "2025-02-12T00:10:52Z",
129+
"resolved": "github:NixOS/nixpkgs/83a2581c81ff5b06f7c1a4e7cc736a455dfcf7b4#go_1_24",
130+
"source": "devbox-search",
131+
"version": "1.24.0",
132+
"systems": {
133+
"aarch64-darwin": {
134+
"outputs": [
135+
{
136+
"name": "out",
137+
"path": "/nix/store/qldcnifalkvyah0wnv7m4zb854yd9l88-go-1.24.0",
138+
"default": true
139+
}
140+
],
141+
"store_path": "/nix/store/qldcnifalkvyah0wnv7m4zb854yd9l88-go-1.24.0"
142+
},
143+
"aarch64-linux": {
144+
"outputs": [
145+
{
146+
"name": "out",
147+
"path": "/nix/store/rrxgml7w4pfmibjbspkdvrw8vd2vnarb-go-1.24.0",
148+
"default": true
149+
}
150+
],
151+
"store_path": "/nix/store/rrxgml7w4pfmibjbspkdvrw8vd2vnarb-go-1.24.0"
152+
},
153+
"x86_64-darwin": {
154+
"outputs": [
155+
{
156+
"name": "out",
157+
"path": "/nix/store/7imv22pl4qrjwvi6jzlfb305rc2min45-go-1.24.0",
158+
"default": true
159+
}
160+
],
161+
"store_path": "/nix/store/7imv22pl4qrjwvi6jzlfb305rc2min45-go-1.24.0"
162+
},
163+
"x86_64-linux": {
164+
"outputs": [
165+
{
166+
"name": "out",
167+
"path": "/nix/store/vh5d5bj1sljdhdypy80x1ydx2jx6rv2q-go-1.24.0",
168+
"default": true
169+
}
170+
],
171+
"store_path": "/nix/store/vh5d5bj1sljdhdypy80x1ydx2jx6rv2q-go-1.24.0"
172+
}
173+
}
59174
}
60175
}
61176
}

flake.lock

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

+11-11
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@
66
flake-utils.url = "github:numtide/flake-utils";
77
};
88

9-
outputs = { self, nixpkgs, flake-utils }:
10-
flake-utils.lib.eachDefaultSystem (system:
9+
outputs =
10+
{
11+
self,
12+
nixpkgs,
13+
flake-utils,
14+
}:
15+
flake-utils.lib.eachDefaultSystem (
16+
system:
1117
let
1218
pkgs = nixpkgs.legacyPackages.${system};
1319

1420
lastTag = "0.14.0";
1521

16-
revision =
17-
if (self ? shortRev)
18-
then "${self.shortRev}"
19-
else "${self.dirtyShortRev or "dirty"}";
22+
revision = if (self ? shortRev) then "${self.shortRev}" else "${self.dirtyShortRev or "dirty"}";
2023

2124
# Add the commit to the version string for flake builds
2225
version = "${lastTag}";
2326

2427
# Run `devbox run update-flake` to update the vendor-hash
25-
vendorHash =
26-
if builtins.pathExists ./vendor-hash
27-
then builtins.readFile ./vendor-hash
28-
else "";
28+
vendorHash = if builtins.pathExists ./vendor-hash then builtins.readFile ./vendor-hash else "";
2929

30-
buildGoModule = pkgs.buildGo123Module;
30+
buildGoModule = pkgs.buildGo124Module;
3131

3232
in
3333
{

0 commit comments

Comments
 (0)