mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 20:39:18 -08:00
48 lines
904 B
Nix
48 lines
904 B
Nix
{
|
|
config,
|
|
name,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkOption mkEnableOption;
|
|
cfg = config.exports;
|
|
systemConfig = config;
|
|
exportModule = {
|
|
config,
|
|
name,
|
|
...
|
|
}: {
|
|
options = with lib.types; {
|
|
enable = mkEnableOption "exported service";
|
|
name = mkOption {
|
|
type = str;
|
|
default = name;
|
|
};
|
|
serviceName = mkOption {
|
|
type = str;
|
|
default = name;
|
|
};
|
|
id = mkOption {
|
|
type = str;
|
|
default = cfg.services.${config.serviceName}.id/* or config.name*/;
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
options.exports = with lib.types; {
|
|
exports = mkOption {
|
|
type = attrsOf (submoduleWith {
|
|
modules = [exportModule];
|
|
specialArgs = {
|
|
machine = name;
|
|
inherit systemConfig;
|
|
};
|
|
});
|
|
default = {};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
_module.args.exports = cfg;
|
|
};
|
|
}
|