mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-12 12:45:27 +03:00
60 lines
1.1 KiB
Nix
60 lines
1.1 KiB
Nix
![]() |
{ lib, config, options, ... }:
|
||
|
let
|
||
|
inherit (lib) types;
|
||
|
in
|
||
|
{
|
||
|
imports = [
|
||
|
|
||
|
# fun.<function-body>.a
|
||
|
({ ... }: {
|
||
|
options = {
|
||
|
fun = lib.mkOption {
|
||
|
type = types.functionTo (types.submodule {
|
||
|
options.a = lib.mkOption { };
|
||
|
});
|
||
|
};
|
||
|
};
|
||
|
})
|
||
|
|
||
|
# fun.<function-body>.b
|
||
|
({ ... }: {
|
||
|
options = {
|
||
|
fun = lib.mkOption {
|
||
|
type = types.functionTo (types.submodule {
|
||
|
options.b = lib.mkOption { };
|
||
|
});
|
||
|
};
|
||
|
};
|
||
|
})
|
||
|
];
|
||
|
|
||
|
options = {
|
||
|
result = lib.mkOption
|
||
|
{
|
||
|
type = types.str;
|
||
|
default = lib.concatStringsSep " "
|
||
|
(lib.concatLists
|
||
|
(lib.mapAttrsToList
|
||
|
(k: v:
|
||
|
if k == "_module"
|
||
|
then [ ]
|
||
|
else [ (lib.showOption v.loc) ]
|
||
|
)
|
||
|
(
|
||
|
(options.fun.type.getSubOptions [ "fun" ])
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config.fun = lib.mkMerge
|
||
|
[
|
||
|
(input: { inherit (input) a; })
|
||
|
(input: { inherit (input) b; })
|
||
|
(input: {
|
||
|
b = lib.mkForce input.c;
|
||
|
})
|
||
|
];
|
||
|
}
|