391 lines
13 KiB
Nix
391 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 = "Firefly III";
|
|
description = "Finance Tracker";
|
|
url = "https://firefly.${p.domains.public}";
|
|
icon = "hl-firefly-iii";
|
|
}
|
|
{
|
|
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 = "Portainer";
|
|
description = "Container Management";
|
|
url = "https://portainer.${p.domains.public}";
|
|
icon = "hl-portainer";
|
|
}
|
|
{
|
|
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";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
}
|