refactor: move modules to common folder since separation was unsound

This commit is contained in:
oddlama 2023-12-17 17:31:52 +01:00
parent 32ce7fe25d
commit 558f67ee7d
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
16 changed files with 15 additions and 22 deletions

View file

@ -0,0 +1,48 @@
{
config,
lib,
options,
nodes,
...
}: let
inherit
(lib)
attrNames
concatMap
getAttrFromPath
mdDoc
mkOption
mkOptionType
mkMerge
hasAttrByPath
types
;
nodeName = config.node.name;
in {
options.nodes = mkOption {
default = {};
description = mdDoc "Allows extending the configuration of other machines.";
type = types.attrsOf (mkOptionType {
name = "Toplevel NixOS config";
merge = _loc: map (x: x.value);
});
};
config = let
allNodes = attrNames nodes;
foreignConfigs = concatMap (n: nodes.${n}.config.nodes.${nodeName} or []) allNodes;
mergeFromOthers = path:
mkMerge (map
(x: (getAttrFromPath path x))
(lib.filter (x: (hasAttrByPath path x)) foreignConfigs));
in {
age.secrets = mergeFromOthers ["age" "secrets"];
networking.providedDomains = mergeFromOthers ["networking" "providedDomains"];
services.nginx.upstreams = mergeFromOthers ["services" "nginx" "upstreams"];
services.nginx.virtualHosts = mergeFromOthers ["services" "nginx" "virtualHosts"];
services.influxdb2.provision.organizations = mergeFromOthers ["services" "influxdb2" "provision" "organizations"];
services.kanidm.provision.groups = mergeFromOthers ["services" "kanidm" "provision" "groups"];
services.kanidm.provision.systems.oauth2 = mergeFromOthers ["services" "kanidm" "provision" "systems" "oauth2"];
};
}