nix/hosts/caddy/dashy-settings.nix
pazpi fd9d7d25f8
Do not provision server Firefly-iii anymore
ActualBudget seems simpler and more fitted on my needs
2026-03-30 10:53:45 +02:00

395 lines
13 KiB
Nix

let
p = import ../parameters.nix;
in
{
appConfig = {
enableFontAwesome = true;
fontAwesomeKey = "e9076c7025";
theme = "thebe";
statusCheck = true;
auth = {
enableOidc = true;
oidc = {
clientId = "FiIJTqBIlMKmeSBjznUFgXIJadt71av8dfICvZvf";
endpoint = "https://auth.pasetto.me/application/o/dashy/";
scope = [
"openid"
"profile"
"email"
];
};
};
webSearch = {
searchEngine = "custom";
customSearchEngine = "https://search.${p.domains.public}/search?q=";
};
};
pageInfo = {
description = "Pasetto's Homelab";
navLinks = [
{
path = "/";
title = "Home";
}
{
path = "https://git.${p.domains.public}/pazpi/nix";
title = "Source Code";
}
];
title = "Homelab? Homepage!";
};
sections = [
# ══════════════════════════════════════════════════════════════════════════
# Widgets Section
# ══════════════════════════════════════════════════════════════════════════
{
name = "Dashboard";
displayData = {
cols = 3;
collapsed = false;
};
widgets = [
{
type = "clock";
options = {
timeZone = "Europe/Rome";
hideSeconds = true;
customCityName = "Borgo Valsugana";
};
}
{
type = "uptime-kuma";
options = {
hostname = "https://up.${p.domains.public}";
};
}
{
type = "proxmox-lists";
options = {
cluster_url = "https://bacco.ts.${p.domains.public}";
user_name = "root@pam";
token_name = "dashy2";
token_uuid = "2e63b0df-6be7-46b4-be13-6558ad0be647";
};
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Core Services
# ══════════════════════════════════════════════════════════════════════════
{
name = "Core Services";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Authentik";
description = "Identity Provider";
url = "https://auth.${p.domains.public}";
icon = "hl-authentik";
}
{
title = "Nextcloud";
description = "Cloud Storage";
url = "https://cloud.${p.domains.public}";
icon = "hl-nextcloud";
}
{
title = "Vaultwarden";
description = "Password Manager";
url = "https://vault.${p.domains.public}";
icon = "hl-vaultwarden";
}
{
title = "SearXNG";
description = "Private Search";
url = "https://search.${p.domains.public}";
icon = "hl-searxng";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Home Automation
# ══════════════════════════════════════════════════════════════════════════
{
name = "Home Automation";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Home Assistant";
description = "Smart Home Hub";
url = "https://h.${p.domains.public}";
icon = "hl-home-assistant";
}
{
title = "Zigbee2MQTT";
description = "Zigbee Bridge";
url = "https://zigbee.ts.${p.domains.public}";
icon = "hl-zigbee2mqtt";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Media Center
# ══════════════════════════════════════════════════════════════════════════
{
name = "Media Center";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Plex";
description = "Media Server";
url = "https://app.plex.tv";
icon = "hl-plex";
}
{
title = "Jellyseerr";
description = "Media Requests";
url = "https://jellyseerr.ts.${p.domains.public}";
icon = "hl-jellyseerr";
}
{
title = "qBittorrent";
description = "Torrent Client";
url = "https://torrent.ts.${p.domains.public}";
icon = "hl-qbittorrent";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Media Management (Arr Stack)
# ══════════════════════════════════════════════════════════════════════════
{
name = "Media Management";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Prowlarr";
description = "Indexer Manager";
url = "https://prowlarr.ts.${p.domains.public}";
icon = "hl-prowlarr";
}
{
title = "Radarr";
description = "Movies";
url = "https://radarr.ts.${p.domains.public}";
icon = "hl-radarr";
}
{
title = "Sonarr";
description = "TV Shows";
url = "https://sonarr.ts.${p.domains.public}";
icon = "hl-sonarr";
}
{
title = "Lidarr";
description = "Music";
url = "https://lidarr.ts.${p.domains.public}";
icon = "hl-lidarr";
}
{
title = "Readarr";
description = "E-Books";
url = "https://readarr.ts.${p.domains.public}";
icon = "hl-readarr";
}
{
title = "Bazarr";
description = "Subtitles";
url = "https://bazarr.ts.${p.domains.public}";
icon = "hl-bazarr";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Productivity
# ══════════════════════════════════════════════════════════════════════════
{
name = "Productivity";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Immich";
description = "Photo Library";
url = "https://photos.${p.domains.public}";
icon = "hl-immich";
}
{
title = "Paperless";
description = "Document Manager";
url = "https://paperless.${p.domains.public}";
icon = "hl-paperless-ngx";
}
{
title = "Actual Budget";
description = "Finance Tracker";
url = "https://budget.${p.domains.public}";
icon = "hl-actual-budget";
}
{
title = "Keep";
description = "Notes";
url = "https://keep.${p.domains.public}";
icon = "hl-google-keep";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Development & Automation
# ══════════════════════════════════════════════════════════════════════════
{
name = "Development & Automation";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Forgejo";
description = "Git Forge";
url = "https://git.${p.domains.public}";
icon = "hl-forgejo";
}
{
title = "n8n";
description = "Workflow Automation";
url = "https://n8n.${p.domains.public}";
icon = "hl-n8n";
}
{
title = "AI";
description = "AI Assistant";
url = "https://ai.${p.domains.public}";
icon = "hl-ollama";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Monitoring
# ══════════════════════════════════════════════════════════════════════════
{
name = "Monitoring";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Grafana";
description = "Dashboards";
url = "https://grafana.${p.domains.public}";
icon = "hl-grafana";
}
{
title = "Prometheus";
description = "Metrics";
url = "https://prometheus.ts.${p.domains.public}";
icon = "hl-prometheus";
}
{
title = "Uptime Kuma";
description = "Status Monitor";
url = "https://up.${p.domains.public}";
icon = "hl-uptime-kuma";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Infrastructure
# ══════════════════════════════════════════════════════════════════════════
{
name = "Infrastructure";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Docker";
description = "Container Management";
url = "https://${p.hosts.docker}.${p.domains.public}";
icon = "hl-docker";
}
{
title = "Primary DNS";
description = "Technitium DNS";
url = "http://${p.hosts.dns01}:5380";
icon = "hl-technitium";
}
{
title = "Secondary DNS";
description = "Technitium DNS";
url = "http://${p.hosts.dns02}:5380";
icon = "hl-technitium";
}
{
title = "Bacco";
description = "Proxmox Node";
url = "https://bacco.${p.domains.public}:8006";
icon = "hl-proxmox";
}
{
title = "Node";
description = "Proxmox Node";
url = "https://node.${p.domains.public}:8006";
icon = "hl-proxmox";
}
{
title = "Krzo";
description = "Proxmox Node";
url = "https://krzo.${p.domains.public}:8006";
icon = "hl-proxmox";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Other Services
# ══════════════════════════════════════════════════════════════════════════
{
name = "Other Services";
displayData = {
cols = 1;
collapsed = true;
};
items = [
{
title = "IL Post Podcast";
description = "Podcast Feed";
url = "https://ilpost.${p.domains.public}";
icon = "hl-podgrab";
}
{
title = "Maps";
description = "Self-hosted Maps";
url = "https://maps.${p.domains.public}";
icon = "hl-openstreetmap";
}
];
}
];
}