@@ -42,10 +42,8 @@ func (d *Devbox) Add(ctx context.Context, pkgsNames ...string) error {
42
42
// replace it.
43
43
pkgs := []* devpkg.Package {}
44
44
for _ , pkg := range devpkg .PackageFromStrings (lo .Uniq (pkgsNames ), d .lockfile ) {
45
- versioned := pkg .Versioned ()
46
-
47
45
// If exact versioned package is already in the config, skip.
48
- if slices .Contains (d .cfg .Packages , versioned ) {
46
+ if slices .Contains (d .cfg .Packages , pkg . Versioned () ) {
49
47
continue
50
48
}
51
49
@@ -59,18 +57,15 @@ func (d *Devbox) Add(ctx context.Context, pkgsNames ...string) error {
59
57
}
60
58
}
61
59
62
- pkgs = append (pkgs , devpkg .PackageFromString (versioned , d .lockfile ))
63
- d .cfg .Packages = append (d .cfg .Packages , versioned )
64
- }
65
-
66
- // Check packages are valid before adding.
67
- for _ , pkg := range pkgs {
68
- ok , err := pkg .ValidateExists ()
69
- if err != nil {
70
- return err
71
- }
72
- if ! ok {
73
- return errors .Wrap (nix .ErrPackageNotFound , pkg .Raw )
60
+ // validate that the versioned package exists in the search endpoint.
61
+ // if not, fallback to legacy vanilla nix.
62
+ versionedPkg := devpkg .PackageFromString (pkg .Versioned (), d .lockfile )
63
+ ok , err := versionedPkg .ValidateExists ()
64
+ if err == nil && ok {
65
+ d .cfg .Packages = append (d .cfg .Packages , pkg .Versioned ())
66
+ } else {
67
+ // fallthrough and treat package as a legacy package.
68
+ d .cfg .Packages = append (d .cfg .Packages , pkg .Raw )
74
69
}
75
70
}
76
71
0 commit comments