forked from fediversity/fediversity
note that this does not yet contain the 'type check', as this does not
function yet.
this could be added in `data-model.nix` like:
```nix
function-type-check = mkOption {
type = application.config.config-mapping.function-type;
readOnly = true;
default = input: {
inherit input;
output = application.config.config-mapping.implementation-type
input;
};
};
```
... or even to `function.nix` itself, like:
```nix
function-type-check = mkOption {
type = config.function-type;
readOnly = true;
default = input: {
inherit input;
output = config.implementation-type input;
};
};
```
41 lines
772 B
Nix
41 lines
772 B
Nix
/**
|
|
Modular function type
|
|
*/
|
|
{ config, lib, ... }:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
inherit (types)
|
|
submodule
|
|
functionTo
|
|
optionType
|
|
;
|
|
in
|
|
{
|
|
options = {
|
|
input-type = mkOption {
|
|
type = optionType;
|
|
};
|
|
output-type = mkOption {
|
|
type = optionType;
|
|
};
|
|
implementation-type = mkOption {
|
|
type = optionType;
|
|
readOnly = true;
|
|
default = functionTo config.output-type;
|
|
};
|
|
function-type = mkOption {
|
|
type = optionType;
|
|
readOnly = true;
|
|
default = functionTo (submodule {
|
|
options = {
|
|
input = mkOption {
|
|
type = config.input-type;
|
|
};
|
|
output = mkOption {
|
|
type = config.output-type;
|
|
};
|
|
};
|
|
});
|
|
};
|
|
};
|
|
}
|