Skip to content

Commit 8d889ed

Browse files
committed
feat: add defaultOverride option
1 parent 626cb25 commit 8d889ed

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

nix/public-flake-module.nix

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,16 @@ ourArgs:
103103
# Handle possible cross compiling requests in crateOverrides
104104
fixCrossMemberBuild = path: name: member:
105105
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 {});
110111
importArgs = crateOverrides // {
111112
inherit path;
112113
};
113-
overrideAttrNames = builtins.attrNames crateOverrides;
114+
overrideAttrNames = builtins.attrNames
115+
(defaultOverride // crateOverrides);
114116
isInOverride = n: lib.elem n overrideAttrNames;
115117
build = (importCargoNix importArgs).workspaceMembers.${name}.build;
116118
in
@@ -137,6 +139,16 @@ ourArgs:
137139
in builtins.map (m: m.build) members;
138140
};
139141
};
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+
};
140152
in
141153
{
142154
options = {
@@ -209,8 +221,15 @@ ourArgs:
209221
'';
210222
};
211223
};
224+
defaultOverride = lib.mkOption {
225+
type = types.functionTo overrideType;
226+
default = _: {};
227+
description = ''
228+
Default overrides for all workspace members.
229+
'';
230+
};
212231
crateOverrides = lib.mkOption {
213-
type = types.attrsOf (types.anything);
232+
type = types.attrsOf (types.functionTo overrideType);
214233
default = {};
215234
description = ''
216235
Crate overrides.
@@ -266,7 +285,10 @@ ourArgs:
266285
lib.mapAttrs (_: lib.getAttr "build") config.cargoNix.workspaceMembers;
267286
checks =
268287
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+
];
270292
};
271293
};
272294

0 commit comments

Comments
 (0)