Merge pull request 'ClanModule: init Admin module' (#1978) from hsjobeki/clan-core:hsjobeki-main into main

This commit is contained in:
clan-bot
2024-08-26 16:57:21 +00:00
6 changed files with 64 additions and 7 deletions

View File

@@ -0,0 +1,4 @@
---
description = "Convenient Administration for the Clan App"
categories = ["administration"]
---

View File

@@ -0,0 +1,17 @@
{ lib, config, ... }:
{
options.clan.admin = {
allowedKeys = lib.mkOption {
default = [ ];
type = lib.types.listOf lib.types.str;
description = "The allowed public keys for ssh access to the admin user";
};
};
imports = [
../sshd
../root-password
];
config = {
users.users.root.openssh.authorizedKeys.keys = config.clan.admin.allowedKeys;
};
}

View File

@@ -0,0 +1 @@
{ }

View File

@@ -1,6 +1,7 @@
{ ... }:
{
flake.clanModules = {
admin = ./admin;
borgbackup = ./borgbackup;
borgbackup-static = ./borgbackup-static;
deltachat = ./deltachat;

View File

@@ -55,6 +55,7 @@ nav:
- Reference:
- reference/index.md
- Clan Modules:
- reference/clanModules/admin.md
- reference/clanModules/borgbackup-static.md
- reference/clanModules/borgbackup.md
- reference/clanModules/deltachat.md

View File

@@ -30,6 +30,45 @@ class Meta:
icon: None | str = field(default = None)
@dataclass
class AdminConfig:
allowedKeys: list[str] = field(default_factory = list)
@dataclass
class ServiceAdminMachine:
config: AdminConfig = field(default_factory = AdminConfig)
imports: list[str] = field(default_factory = list)
@dataclass
class ServiceMeta:
name: str
description: None | str = field(default = None)
icon: None | str = field(default = None)
@dataclass
class ServiceAdminRoleDefault:
config: AdminConfig = field(default_factory = AdminConfig)
imports: list[str] = field(default_factory = list)
machines: list[str] = field(default_factory = list)
tags: list[str] = field(default_factory = list)
@dataclass
class ServiceAdminRole:
default: ServiceAdminRoleDefault
@dataclass
class ServiceAdmin:
meta: ServiceMeta
roles: ServiceAdminRole
config: AdminConfig = field(default_factory = AdminConfig)
machines: dict[str, ServiceAdminMachine] = field(default_factory = dict)
@dataclass
class BorgbackupConfigDestination:
name: str
@@ -48,13 +87,6 @@ class ServiceBorgbackupMachine:
imports: list[str] = field(default_factory = list)
@dataclass
class ServiceMeta:
name: str
description: None | str = field(default = None)
icon: None | str = field(default = None)
@dataclass
class ServiceBorgbackupRoleClient:
config: BorgbackupConfig = field(default_factory = BorgbackupConfig)
@@ -151,6 +183,7 @@ class ServiceSingleDisk:
@dataclass
class Service:
admin: dict[str, ServiceAdmin] = field(default_factory = dict)
borgbackup: dict[str, ServiceBorgbackup] = field(default_factory = dict)
packages: dict[str, ServicePackage] = field(default_factory = dict)
single_disk: dict[str, ServiceSingleDisk] = field(default_factory = dict, metadata = {"alias": "single-disk"})