161 lines
5.3 KiB
Nix
161 lines
5.3 KiB
Nix
{ config, lib, namespace, ... }:
|
|
let
|
|
inherit (lib) mkIf mkEnableOption;
|
|
|
|
cfg = config.${namespace}.services.media.homer;
|
|
in
|
|
{
|
|
options.${namespace}.services.media.homer = {
|
|
enable = mkEnableOption "Enable homer";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
networking.firewall.allowedTCPPorts = [ 2000 ];
|
|
|
|
services = {
|
|
homer = {
|
|
enable = true;
|
|
|
|
virtualHost = {
|
|
caddy.enable = true;
|
|
domain = "http://:2000";
|
|
};
|
|
|
|
settings = {
|
|
title = "Ulmo dashboard";
|
|
|
|
columns = 4;
|
|
connectivityCheck = true;
|
|
|
|
links = [];
|
|
|
|
services = [
|
|
{
|
|
name = "Services";
|
|
items = [
|
|
{
|
|
name = "Zitadel";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/zitadel.svg";
|
|
tag = "app";
|
|
url = "https://auth.amarth.cloud";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Forgejo";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/forgejo.svg";
|
|
tag = "app";
|
|
type = "Gitea";
|
|
url = "https://git.amarth.cloud";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Vaultwarden";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/vaultwarden.svg";
|
|
type = "Vaultwarden";
|
|
tag = "app";
|
|
url = "https://vault.kruining.eu";
|
|
target = "_blank";
|
|
}
|
|
];
|
|
}
|
|
|
|
{
|
|
name = "Observability";
|
|
items = [
|
|
{
|
|
name = "Grafana";
|
|
type = "Grafana";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/grafana.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.grafana.settings.server.http_port}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Prometheus";
|
|
type = "Prometheus";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/prometheus.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.prometheus.port}";
|
|
target = "_blank";
|
|
}
|
|
];
|
|
}
|
|
|
|
{
|
|
name = "Media";
|
|
items = [
|
|
{
|
|
name = "Jellyfin (Movies)";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/jellyfin.svg";
|
|
tag = "app";
|
|
type = "Emby";
|
|
url = "http://${config.networking.hostName}:8096";
|
|
apikey = "e3ceed943eeb409ba8342738db7cc1f5";
|
|
libraryType = "movies";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Radarr";
|
|
type = "Radarr";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/radarr.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.radarr.settings.server.port}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Sonarr";
|
|
type = "Sonarr";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/sonarr.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.sonarr.settings.server.port}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Lidarr";
|
|
type = "Lidarr";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/lidarr.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.lidarr.settings.server.port}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "Prowlarr";
|
|
type = "Prowlarr";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/prowlarr.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.prowlarr.settings.server.port}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "qBittorrent";
|
|
type = "qBittorrent";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/qbittorrent.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:${builtins.toString config.services.qbittorrent.webuiPort}";
|
|
target = "_blank";
|
|
}
|
|
|
|
{
|
|
name = "SABnzbd";
|
|
type = "SABnzbd";
|
|
logo = "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/sabnzdb-light.svg";
|
|
tag = "app";
|
|
url = "http://${config.networking.hostName}:8080";
|
|
target = "_blank";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|