sneeuwvlok/clan.nix
2026-04-01 16:09:51 +02:00

155 lines
3.4 KiB
Nix

{
meta = {
name = "arda";
domain = "arda";
description = "My personal machines at home";
};
directory = ./.;
exportInterfaces = {
persistence = {lib, ...}: let
inherit (lib) mkOption types;
in {
options = {
main = mkOption {
type = types.str;
};
database = mkOption {
type = types.attrsOf types.anything;
};
};
};
servarr = {lib, ...}: let
inherit (lib) mkOption types;
in {
options = {
services = mkOption {
type = types.attrsOf (types.submodule {
options = {
port = mkOption {
type = types.port;
};
};
});
default = "awesome!";
};
};
};
};
inventory.machines = {
aule = {
name = "aule";
description = "Planned build server.";
machineClass = "nixos";
tags = ["planned" "build"];
};
mandos = {
name = "mandos";
description = "Living room Steam box.";
machineClass = "nixos";
tags = ["gaming" "living-room"];
};
manwe = {
name = "manwe";
description = "Main desktop.";
machineClass = "nixos";
tags = ["desktop"];
};
melkor = {
name = "melkor";
description = "Planned machine with no defined role yet.";
machineClass = "nixos";
tags = [];
};
orome = {
name = "orome";
description = "Work laptop.";
machineClass = "nixos";
tags = ["laptop" "work"];
};
tulkas = {
name = "tulkas";
description = "Steam Deck.";
machineClass = "nixos";
tags = ["gaming" "handheld"];
};
ulmo = {
name = "ulmo";
description = "Primary self-hosted services machine.";
machineClass = "nixos";
tags = ["server" "services"];
};
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.instances = {
users-chris = {
module.name = "users";
module.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;
};
};
persistence = {
module.name = "persistence";
module.input = "self";
# TODO :: Convert to use tags instead
roles.default.machines.ulmo.settings = {};
};
servarr = {
module.name = "servarr";
module.input = "self";
# TODO :: Convert to use tags instead
roles.default.machines.ulmo.settings = {};
roles.default.settings = {
enable = true;
services = {
sonarr = {
rootFolders = [
"/var/media/series"
];
};
radarr = {
rootFolders = [
"/var/media/movies"
];
};
lidarr = {
rootFolders = [
"/var/media/music"
];
};
prowlarr = {};
};
};
};
};
}