@@ -108,13 +108,20 @@ func (l *LimaVzDriver) Configure(inst *limatype.Instance) *driver.ConfiguredDriv
108
108
}
109
109
}
110
110
111
+ var vzOpts limatype.VZOpts
112
+ if l .Instance .Config .VMOpts [limatype .VZ ] != nil {
113
+ if err := limayaml .Convert (l .Instance .Config .VMOpts [limatype .VZ ], & vzOpts , "vmOpts.vz" ); err != nil {
114
+ logrus .WithError (err ).Warnf ("Couldn't convert %q" , l .Instance .Config .VMOpts [limatype .VZ ])
115
+ }
116
+ }
117
+
111
118
if runtime .GOOS == "darwin" && limayaml .IsNativeArch (limatype .AARCH64 ) {
112
- if l . Instance . Config . VMOpts . VZ .Rosetta .Enabled != nil {
113
- l .rosettaEnabled = * l . Instance . Config . VMOpts . VZ .Rosetta .Enabled
119
+ if vzOpts .Rosetta .Enabled != nil {
120
+ l .rosettaEnabled = * vzOpts .Rosetta .Enabled
114
121
}
115
122
}
116
- if l . Instance . Config . VMOpts . VZ .Rosetta .BinFmt != nil {
117
- l .rosettaBinFmt = * l . Instance . Config . VMOpts . VZ .Rosetta .BinFmt
123
+ if vzOpts .Rosetta .BinFmt != nil {
124
+ l .rosettaBinFmt = * vzOpts .Rosetta .BinFmt
118
125
}
119
126
120
127
return & driver.ConfiguredDriver {
@@ -131,22 +138,36 @@ func (l *LimaVzDriver) FillConfig(ctx context.Context, cfg *limatype.LimaYAML, _
131
138
cfg .MountType = ptr .Of (limatype .VIRTIOFS )
132
139
}
133
140
141
+ var vzOpts limatype.VZOpts
142
+ if err := limayaml .Convert (cfg .VMOpts [limatype .VZ ], & vzOpts , "vmOpts.vz" ); err != nil {
143
+ logrus .WithError (err ).Warnf ("Couldn't convert %q" , cfg .VMOpts [limatype .VZ ])
144
+ }
145
+
134
146
//nolint:staticcheck // Migration of top-level Rosetta if specified
135
- if (cfg . VMOpts . VZ . Rosetta .Enabled == nil && cfg . VMOpts . VZ .Rosetta .BinFmt == nil ) && (! isEmpty (cfg .Rosetta )) {
147
+ if (vzOpts . Rosetta .Enabled == nil && vzOpts .Rosetta .BinFmt == nil ) && (! isEmpty (cfg .Rosetta )) {
136
148
logrus .Debug ("Migrating top-level Rosetta configuration to vmOpts.vz.rosetta" )
137
- cfg . VMOpts . VZ .Rosetta = cfg .Rosetta
149
+ vzOpts .Rosetta = cfg .Rosetta
138
150
}
139
151
//nolint:staticcheck // Warning about both top-level and vmOpts.vz.Rosetta being set
140
- if (cfg . VMOpts . VZ . Rosetta .Enabled != nil && cfg . VMOpts . VZ .Rosetta .BinFmt != nil ) && (! isEmpty (cfg .Rosetta )) {
152
+ if (vzOpts . Rosetta .Enabled != nil && vzOpts .Rosetta .BinFmt != nil ) && (! isEmpty (cfg .Rosetta )) {
141
153
logrus .Warn ("Both top-level 'rosetta' and 'vmOpts.vz.rosetta' are configured. Using vmOpts.vz.rosetta. Top-level 'rosetta' is deprecated." )
142
154
}
143
155
144
- if cfg .VMOpts .VZ .Rosetta .Enabled == nil {
145
- cfg .VMOpts .VZ .Rosetta .Enabled = ptr .Of (false )
156
+ if vzOpts .Rosetta .Enabled == nil {
157
+ vzOpts .Rosetta .Enabled = ptr .Of (false )
158
+ }
159
+ if vzOpts .Rosetta .BinFmt == nil {
160
+ vzOpts .Rosetta .BinFmt = ptr .Of (false )
161
+ }
162
+
163
+ var opts any
164
+ if err := limayaml .Convert (vzOpts , & opts , "" ); err != nil {
165
+ logrus .WithError (err ).Warnf ("Couldn't convert %+v" , vzOpts )
146
166
}
147
- if cfg .VMOpts . VZ . Rosetta . BinFmt == nil {
148
- cfg .VMOpts . VZ . Rosetta . BinFmt = ptr . Of ( false )
167
+ if cfg .VMOpts == nil {
168
+ cfg .VMOpts = limatype. VMOpts {}
149
169
}
170
+ cfg .VMOpts [limatype .VZ ] = opts
150
171
151
172
return validateConfig (ctx , cfg )
152
173
}
0 commit comments