Fediversity/deployment/function.nix
Kiara Grouwstra 2e97b4b647
data model: add run-time configuration
have run-time environments use their corresponding run-time configurations

grant run-time environments their own modules with their own description

data model: runtime environment

allows declaring options so instantiations may configure required
settings

data model: deployment

data model: migration

better reflect naming from diagram configuration data flow

WIP: implement data model as in diagram

this doesn't update the tests yet because we don't have all the data
types in place anyway yet, and I still need to come up with testable examples.

WIP: add missing types

WIP: start writing an evaluation test

turns out we also need a collection of configurations, obviously
next: figure out where to wire everything up to obtain a deployment

WIP: implement mappings

WIP: (broken) implement test

WIP: illustrate an entire NixOS configuration as a resource

fix typos, lint, format

test for configuration passes, test for deployment wip

use `mapAttrs` right

`mapAttrs'` takes two args rather than a set, whereas if only the val
changes `mapAttrs (_: v: ...)` should do

rm deployment/resources
2025-07-06 11:09:04 +02:00

39 lines
726 B
Nix

/**
Modular function type
*/
{ config, lib, ... }:
let
inherit (lib) mkOption types;
inherit (types)
deferredModule
submodule
functionTo
optionType
;
in
{
options = {
input-type = mkOption {
type = deferredModule;
};
output-type = mkOption {
type = deferredModule;
};
function-type = mkOption {
type = optionType;
readOnly = true;
default = functionTo (
submodule (function: {
options = {
input = mkOption {
type = submodule config.input-type;
};
output = mkOption {
type = submodule config.output-type;
};
};
})
);
};
};
}