den
1{
2 den.schema.host = {
3 host,
4 lib,
5 ...
6 }: {
7 options.usage = lib.mkOption {
8 type = lib.types.enum ["server" "dev-server" "desktop" "laptop"];
9 description = "Usage of the host.";
10 };
11 options.deployable = lib.mkOption {
12 type = lib.types.bool;
13 description = "Whether the host is deployable using deploy-rs.";
14 default = host.usage == "server" || host.usage == "dev-server";
15 };
16 options.pubkey = lib.mkOption {
17 type = lib.types.str;
18 description = "Public SSH key for the host.";
19 };
20 options.hashedPasswordAged = lib.mkOption {
21 type = lib.types.pathInStore;
22 description = "Age encrypted hashed password file path for host root user.";
23 };
24 options.sshPorts = lib.mkOption {
25 type = lib.types.listOf lib.types.port;
26 description = "List of ports to open for SSH access.";
27 default = [22];
28 };
29 options.authorizedKeys = lib.mkOption {
30 type = lib.types.listOf lib.types.str;
31 description = "List of authorized keys for host root user.";
32 default = [];
33 };
34 };
35}