204 lines
4.3 KiB
Nix
204 lines
4.3 KiB
Nix
{
|
|
meta = {
|
|
name = "arda";
|
|
domain = "arda";
|
|
description = "My personal machines at home";
|
|
};
|
|
|
|
directory = ./.;
|
|
|
|
exportInterfaces = {
|
|
persistence = import ./interfaces/persistence.nix;
|
|
gateway = import ./interfaces/gateway.nix;
|
|
};
|
|
|
|
inventory.machines = {
|
|
aule = {
|
|
name = "aule";
|
|
description = "Planned build server.";
|
|
machineClass = "nixos";
|
|
tags = [];
|
|
};
|
|
mandos = {
|
|
name = "mandos";
|
|
description = "Living room Steam box.";
|
|
machineClass = "nixos";
|
|
tags = [
|
|
"capability:mobility:stationary"
|
|
"operational:availability:wake-on-demand"
|
|
];
|
|
};
|
|
manwe = {
|
|
name = "manwe";
|
|
description = "Main desktop.";
|
|
machineClass = "nixos";
|
|
tags = [
|
|
"capability:mobility:stationary"
|
|
"operational:availability:manual"
|
|
];
|
|
};
|
|
melkor = {
|
|
name = "melkor";
|
|
description = "Planned machine with no defined role yet.";
|
|
machineClass = "nixos";
|
|
tags = [];
|
|
};
|
|
orome = {
|
|
name = "orome";
|
|
description = "Work laptop.";
|
|
machineClass = "nixos";
|
|
tags = [
|
|
"capability:mobility:portable"
|
|
"operational:availability:manual"
|
|
];
|
|
};
|
|
tulkas = {
|
|
name = "tulkas";
|
|
description = "Steam Deck.";
|
|
machineClass = "nixos";
|
|
tags = [
|
|
"capability:mobility:portable"
|
|
"operational:availability:manual"
|
|
];
|
|
};
|
|
ulmo = {
|
|
name = "ulmo";
|
|
description = "Primary self-hosted services machine.";
|
|
machineClass = "nixos";
|
|
tags = [
|
|
"capability:mobility:stationary"
|
|
"operational:availability:always-on"
|
|
"operational:storage:large"
|
|
"operational:role:gateway"
|
|
];
|
|
};
|
|
varda = {
|
|
name = "varda";
|
|
description = "Planned machine with no defined role yet.";
|
|
machineClass = "nixos";
|
|
tags = [];
|
|
};
|
|
yavanna = {
|
|
name = "yavanna";
|
|
description = "Planned machine with no defined role yet.";
|
|
machineClass = "nixos";
|
|
tags = [];
|
|
};
|
|
};
|
|
|
|
inventory.tags = {
|
|
config,
|
|
machines,
|
|
...
|
|
}: {
|
|
# tag_name = [ "list" "of" "machines" ]
|
|
"capability:hardware:gpu" = [""];
|
|
"capability:hardware:audio" = [""];
|
|
"capability:hardware:bluetooth" = [""];
|
|
};
|
|
|
|
inventory.instances = {
|
|
users-chris = {
|
|
module = {
|
|
name = "users";
|
|
input = "clan-core";
|
|
};
|
|
|
|
roles.default.machines.mandos.settings = {};
|
|
roles.default.machines.manwe.settings = {};
|
|
roles.default.machines.orome.settings = {};
|
|
roles.default.machines.tulkas.settings = {};
|
|
|
|
roles.default.settings = {
|
|
user = "chris";
|
|
groups = ["wheel"];
|
|
prompt = true;
|
|
share = true;
|
|
};
|
|
};
|
|
|
|
clanDns = {
|
|
module = {
|
|
name = "dm-dns";
|
|
input = "clan-core";
|
|
};
|
|
|
|
roles.default.tags = ["all"];
|
|
};
|
|
|
|
gateway = {
|
|
module = {
|
|
name = "gateway";
|
|
input = "self";
|
|
};
|
|
|
|
roles.default = {
|
|
tags = ["operational:role:gateway"];
|
|
|
|
settings = {
|
|
driver = "caddy";
|
|
};
|
|
};
|
|
};
|
|
|
|
identity = {
|
|
module = {
|
|
name = "identity";
|
|
input = "self";
|
|
};
|
|
|
|
roles.default = {
|
|
tags = ["operational:availability:always-on"];
|
|
|
|
settings = {
|
|
};
|
|
};
|
|
};
|
|
|
|
persistence = {
|
|
module = {
|
|
name = "persistence";
|
|
input = "self";
|
|
};
|
|
|
|
# TODO :: Convert to use tags instead
|
|
roles.default.tags = ["operational:availability:always-on" "operational:storage:large"];
|
|
};
|
|
|
|
servarr = {
|
|
module = {
|
|
name = "servarr";
|
|
input = "self";
|
|
};
|
|
|
|
roles.default = {
|
|
tags = ["operational:availability:always-on"];
|
|
|
|
settings = {
|
|
enable = true;
|
|
|
|
persistence_instance = "persistence";
|
|
|
|
services = {
|
|
sonarr = {
|
|
rootFolders = [
|
|
"/var/media/series"
|
|
];
|
|
};
|
|
radarr = {
|
|
rootFolders = [
|
|
"/var/media/movies"
|
|
];
|
|
};
|
|
lidarr = {
|
|
rootFolders = [
|
|
"/var/media/music"
|
|
];
|
|
};
|
|
prowlarr = {};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|