schema improvements
This commit is contained in:
committed by
hsjobeki
parent
feace3a8e9
commit
eab22fefb0
@@ -3,23 +3,49 @@ let
|
||||
clanDir = config.clan.core.clanDir;
|
||||
machineDir = clanDir + "/machines/";
|
||||
|
||||
cfg = config.clan.borgbackup-static;
|
||||
# cfg.roles = config.clan.borgbackup-static;
|
||||
|
||||
# machine < machine_module < inventory
|
||||
# nixos < borgbackup < borgbackup-static > UI
|
||||
# metadata
|
||||
# Developer User field descriptions
|
||||
|
||||
roles = config.clan.borgbackup-static.inventory.roles;
|
||||
|
||||
machine_name = config.clan.core.machineName;
|
||||
in
|
||||
{
|
||||
imports = [ ../borgbackup ];
|
||||
|
||||
# imports = if myRole == "server" then [ ../borgbackup/roles/server.nix ];
|
||||
# Inventory / Interface.nix
|
||||
# options.clan.inventory.borgbackup-static.description.
|
||||
options.clan.borgbackup-static.roles = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.listOf lib.types.str);
|
||||
# options.clan.borgbackup-static.roles = lib.mkOption {
|
||||
# type = lib.types.attrsOf (lib.types.listOf lib.types.str);
|
||||
# };
|
||||
|
||||
# Can be used via inventory.json
|
||||
#
|
||||
# .borgbackup-static.inventory.roles
|
||||
#
|
||||
options.clan.borgbackup-static.inventory = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
# imports = [./inventory/interface.nix];
|
||||
|
||||
# idea
|
||||
# config.metadata = builtins.fromTOML ...
|
||||
# config.defaultRoles = ["client"];
|
||||
|
||||
# -> interface.nix
|
||||
options = {
|
||||
roles = lib.mkOption { type = lib.types.attrsOf (lib.types.listOf lib.types.str); };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config.services.borgbackup.repos =
|
||||
let
|
||||
|
||||
filteredMachines = builtins.attrNames (lib.filterAttrs (_: v: builtins.elem "client" v) cfg.roles);
|
||||
filteredMachines = builtins.attrNames (lib.filterAttrs (_: v: builtins.elem "client" v) roles);
|
||||
|
||||
borgbackupIpMachinePath = machines: machineDir + machines + "/facts/borgbackup.ssh.pub";
|
||||
machinesMaybeKey = builtins.map (
|
||||
@@ -40,13 +66,13 @@ in
|
||||
};
|
||||
}) machinesWithKey;
|
||||
in
|
||||
lib.mkIf (builtins.elem "server" cfg.roles.${machine_name}) (
|
||||
lib.mkIf (builtins.elem "server" roles.${machine_name}) (
|
||||
if (builtins.listToAttrs hosts) != null then builtins.listToAttrs hosts else { }
|
||||
);
|
||||
|
||||
config.clan.borgbackup.destinations =
|
||||
let
|
||||
servers = builtins.attrNames (lib.filterAttrs (_n: v: (builtins.elem "server" v)) cfg.roles);
|
||||
servers = builtins.attrNames (lib.filterAttrs (_n: v: (builtins.elem "server" v)) roles);
|
||||
|
||||
destinations = builtins.map (server_name: {
|
||||
name = server_name;
|
||||
@@ -55,5 +81,5 @@ in
|
||||
};
|
||||
}) servers;
|
||||
in
|
||||
lib.mkIf (builtins.elem "client" cfg.roles.${machine_name}) (builtins.listToAttrs destinations);
|
||||
lib.mkIf (builtins.elem "client" roles.${machine_name}) (builtins.listToAttrs destinations);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user