forked from mirrors_public/oddlama_nix-config
refactor: move modules to common folder since separation was unsound
This commit is contained in:
parent
32ce7fe25d
commit
558f67ee7d
16 changed files with 15 additions and 22 deletions
48
modules/distributed-config.nix
Normal file
48
modules/distributed-config.nix
Normal 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"];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue