mirror of
https://github.com/hercules-ci/flake-parts.git
synced 2024-12-14 11:47:31 +00:00
45 lines
1.1 KiB
Nix
45 lines
1.1 KiB
Nix
{ config, self, lib, flake-parts-lib, ... }:
|
|
let
|
|
inherit (lib)
|
|
filterAttrs
|
|
mapAttrs
|
|
mkOption
|
|
optionalAttrs
|
|
types
|
|
;
|
|
inherit (flake-parts-lib)
|
|
mkAliasOptionModule
|
|
;
|
|
|
|
flakeModulesOption = mkOption {
|
|
type = types.lazyAttrsOf types.deferredModule;
|
|
default = { };
|
|
apply = mapAttrs (k: v: {
|
|
_file = "${toString self.outPath}/flake.nix#flakeModules.${k}";
|
|
imports = [ v ];
|
|
});
|
|
description = ''
|
|
flake-parts modules for use by other flakes.
|
|
|
|
If the flake defines only one module, it should be flakeModules.default.
|
|
|
|
You can not use this option in defining the flake's own `imports`. Instead, you can
|
|
put the module in question into its own file and reference it both in `imports` and
|
|
export it with this option.
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
flake = mkOption {
|
|
type = types.submoduleWith {
|
|
modules = [
|
|
(mkAliasOptionModule [ "flakeModule" ] [ "flakeModules" "default" ])
|
|
{
|
|
options.flakeModules = flakeModulesOption;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|