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}