@@ -103,14 +103,16 @@ ourArgs:
103
103
# Handle possible cross compiling requests in crateOverrides
104
104
fixCrossMemberBuild = path : name : member :
105
105
let
106
- crateOverrides =
107
- if config . crateOverrides ? ${ name }
108
- then config . crateOverrides . ${ name } { }
109
- else { } ;
106
+ defaultOverride = config . defaultOverride { } ;
107
+ crateOverrides = defaultOverride //
108
+ ( if config . crateOverrides ? ${ name }
109
+ then ( config . crateOverrides . ${ name } { } )
110
+ else { } ) ;
110
111
importArgs = crateOverrides // {
111
112
inherit path ;
112
113
} ;
113
- overrideAttrNames = builtins . attrNames crateOverrides ;
114
+ overrideAttrNames = builtins . attrNames
115
+ ( defaultOverride // crateOverrides ) ;
114
116
isInOverride = n : lib . elem n overrideAttrNames ;
115
117
build = ( importCargoNix importArgs ) . workspaceMembers . ${ name } . build ;
116
118
in
@@ -137,6 +139,16 @@ ourArgs:
137
139
in builtins . map ( m : m . build ) members ;
138
140
} ;
139
141
} ;
142
+
143
+ overrideType = types . submodule {
144
+ freeformType = types . attrsOf types . anything ;
145
+ options = {
146
+ meta = lib . mkOption {
147
+ type = types . attrsOf types . anything ;
148
+ default = { } ;
149
+ } ;
150
+ } ;
151
+ } ;
140
152
in
141
153
{
142
154
options = {
@@ -209,8 +221,15 @@ ourArgs:
209
221
'' ;
210
222
} ;
211
223
} ;
224
+ defaultOverride = lib . mkOption {
225
+ type = types . functionTo overrideType ;
226
+ default = _ : { } ;
227
+ description = ''
228
+ Default overrides for all workspace members.
229
+ '' ;
230
+ } ;
212
231
crateOverrides = lib . mkOption {
213
- type = types . attrsOf ( types . anything ) ;
232
+ type = types . attrsOf ( types . functionTo overrideType ) ;
214
233
default = { } ;
215
234
description = ''
216
235
Crate overrides.
@@ -266,7 +285,10 @@ ourArgs:
266
285
lib . mapAttrs ( _ : lib . getAttr "build" ) config . cargoNix . workspaceMembers ;
267
286
checks =
268
287
lib . mapAttrs ( _ : m : m . build . override { runTests = true ; } ) config . cargoNix . workspaceMembers ;
269
- crateOverrides = ourArgs . self . tools . ${ pkgs . system } . crateOverrides ;
288
+ crateOverrides = lib . mkMerge [
289
+ ourArgs . self . tools . ${ pkgs . system } . crateOverrides
290
+ ( lib . mapAttrs ( _ : _ : config . defaultOverride ) config . cargoNix . workspaceMembers )
291
+ ] ;
270
292
} ;
271
293
} ;
272
294
0 commit comments