Enabled back Dashy

This commit is contained in:
pazpi 2025-12-09 22:30:01 +01:00
parent 8b2e73192d
commit 266b891598
3 changed files with 266 additions and 39 deletions

View file

@ -12,6 +12,7 @@ in
oidc = {
clientId = "FiIJTqBIlMKmeSBjznUFgXIJadt71av8dfICvZvf";
endpoint = "https://auth.pasetto.me/application/o/dashy/";
scope = ["openid" "profile" "email"];
};
};
webSearch = {
@ -28,7 +29,7 @@ in
title = "Home";
}
{
path = "https://gitlab.com/pazpi/nix";
path = "https://git.${p.domains.public}/pazpi/nix";
title = "Source Code";
}
];
@ -36,8 +37,11 @@ in
};
sections = [
# ══════════════════════════════════════════════════════════════════════════
# Widgets Section
# ══════════════════════════════════════════════════════════════════════════
{
name = "Widget";
name = "Dashboard";
displayData = {
cols = 3;
collapsed = false;
@ -51,16 +55,16 @@ in
customCityName = "Borgo Valsugana";
};
}
{ type = "public-ip"; }
# {
# type = "HealthChecks";
# apiKey = "";
# }
# { type = "system-info"; }
{
type = "uptime-kuma";
options = {
hostname = "https://up.${p.domains.public}";
};
}
{
type = "proxmox-lists";
options = {
cluster_url = "https://bacco.${p.domains.public}";
cluster_url = "https://bacco.ts.${p.domains.public}";
user_name = "root@pam";
token_name = "dashy2";
token_uuid = "2e63b0df-6be7-46b4-be13-6558ad0be647";
@ -68,8 +72,12 @@ in
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Core Services
# ══════════════════════════════════════════════════════════════════════════
{
name = "Public Services";
name = "Core Services";
displayData = {
cols = 1;
collapsed = false;
@ -77,61 +85,209 @@ in
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";
}
];
}
{
name = "Private Services";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Searx";
title = "SearXNG";
description = "Private Search";
url = "https://search.${p.domains.public}";
icon = "hl-searxng";
}
{
title = "Portainer";
url = "https://portainer.${p.domains.public}";
icon = "hl-portainer";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Home Automation
# ══════════════════════════════════════════════════════════════════════════
{
name = "Network Services";
name = "Home Automation";
displayData = {
cols = 1;
collapsed = false;
};
items = [
{
title = "Primary DNS";
url = "https://${p.hosts.dns01}";
icon = "hl-technitium";
title = "Home Assistant";
description = "Smart Home Hub";
url = "https://h.${p.domains.public}";
icon = "hl-home-assistant";
}
{
title = "Seconday DNS";
url = "https://${p.hosts.dns02}";
icon = "hl-technitium";
title = "Zigbee2MQTT";
description = "Zigbee Bridge";
url = "https://zigbee.ts.${p.domains.public}";
icon = "hl-zigbee2mqtt";
}
];
}
# ══════════════════════════════════════════════════════════════════════════
# Media Center
# ══════════════════════════════════════════════════════════════════════════
{
name = "Monitoring Services";
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;
@ -139,32 +295,95 @@ in
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 = "Devices";
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";
url = "https://bacco.internal:8006";
description = "Proxmox Node";
url = "https://bacco.${p.domains.public}:8006";
icon = "hl-proxmox";
}
{
title = "Node";
url = "https://node.internal:8006";
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";
}
];
}

View file

@ -35,10 +35,10 @@ in
};
dashy = {
enable = false;
enable = true;
settings = import ./dashy-settings.nix;
proxy = {
enable = false;
enable = true;
domain = p.domains.public;
host = p.hosts.caddy;
};

View file

@ -39,6 +39,14 @@ in
'';
};
subdomain = lib.mkOption {
default = "casa";
type = lib.types.str;
description = ''
The subdomain where Dashy is reachable
'';
};
};
};
@ -54,7 +62,7 @@ in
(lib.mkIf cfg.proxy.enable {
services.caddy = with cfg.proxy; {
virtualHosts."home.${domain}".extraConfig = ''
virtualHosts."${subdomain}.${domain}".extraConfig = ''
root * ${config.services.dashy.finalDrv}
file_server
import cloudflare_${domain}