nix-config/hosts/sisyphe/features/services/homelab-dashboard.nix

344 lines
10 KiB
Nix
Raw Normal View History

2024-07-14 16:01:31 +02:00
{
config,
lib,
2024-08-25 12:44:14 +02:00
secrets,
2024-07-14 16:01:31 +02:00
pkgs,
...
}:
with lib;
let
2024-07-15 16:27:23 +02:00
cfg = config.homepage-dashboard;
ip = cfg.baseURL;
2024-07-14 16:01:31 +02:00
in
{
2024-07-14 16:01:31 +02:00
options = {
2024-07-16 11:50:32 +02:00
homepage-dashboard.baseURL = mkOption {
2024-07-15 16:27:23 +02:00
type = types.str;
default = "192.168.1.177";
};
2024-07-16 11:50:32 +02:00
homepage-dashboard.proxmoxVEIp = mkOption {
2024-07-15 16:27:23 +02:00
type = types.str;
default = "192.168.1.10";
};
2024-07-16 11:50:32 +02:00
homepage-dashboard.proxmoxBSIp = mkOption {
2024-07-15 16:27:23 +02:00
type = types.str;
default = "";
};
2024-07-16 11:50:32 +02:00
homepage-dashboard.piholeURL = mkOption {
2024-07-15 16:27:23 +02:00
type = types.str;
default = "192.168.1.25";
};
2024-07-14 16:01:31 +02:00
};
2024-07-15 16:27:23 +02:00
#TODO: add Radarr/Sonarr/... api key support
2024-07-14 16:01:31 +02:00
config = {
sops.secrets."homepage" = {
2024-08-25 12:44:14 +02:00
sopsFile = "${secrets}/secrets/homepage.env";
format = "dotenv";
2024-07-15 16:27:23 +02:00
};
2024-10-30 17:44:54 +01:00
services.caddy.virtualHosts."http://sisyphe.normandy.hypervirtual.world".extraConfig = ''
reverse_proxy :8082
'';
2024-07-14 16:01:31 +02:00
services.homepage-dashboard = {
enable = true;
environmentFile = config.sops.secrets."homepage".path;
2024-07-14 16:01:31 +02:00
settings = {
2024-07-17 20:16:19 +02:00
headerStyle = "boxed";
2024-07-18 19:01:54 +02:00
language = "fr";
title = "sillybox home !!";
2024-07-18 19:09:11 +02:00
layout = [
{
"Vidéos & Séries" = {
style = "row";
2024-07-18 19:17:22 +02:00
columns = 4;
2024-07-18 19:09:11 +02:00
};
}
{
"Administration" = {
style = "row";
columns = 4;
};
}
];
2024-07-14 16:01:31 +02:00
};
2024-07-15 16:27:23 +02:00
widgets = [
{
resources = {
cpu = true;
disk = "/";
memory = true;
};
}
{
search = {
provider = "duckduckgo";
target = "_blank";
};
}
];
bookmarks = [ { code = [ { "Github" = [ { href = "https://github.com"; } ]; } ]; } ];
2024-07-14 16:01:31 +02:00
services = [
{
"Divertissement" = [
2024-07-14 16:01:31 +02:00
{
"Serveur Minecraft poulet" = {
icon = "minecraft";
description = "serveur des trois poulets";
2024-07-15 16:27:23 +02:00
widget = {
type = "minecraft";
url = "udp://${ip}:25565";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
{
"Crafty-controller" = {
description = "Gestionnaire de serveur Minecraft";
href = "https://192.168.1.177:8443";
};
}
];
}
{
"Lecture" = [
2024-07-14 16:01:31 +02:00
{
"Calibre-web" = {
icon = "calibre";
description = "Serveur de livres";
2024-08-26 10:36:21 +02:00
href = "http://books.hypervirtual.world";
2024-07-14 16:01:31 +02:00
};
}
2024-07-15 16:27:23 +02:00
{
"Freshrss" = {
icon = "freshrss";
description = "Récupère les articles";
2024-08-26 10:36:21 +02:00
href = "http://freshrss.hypervirtual.world";
2024-07-15 16:27:23 +02:00
};
}
2024-07-14 16:01:31 +02:00
];
}
{
"Vidéos & Séries" = [
{
"Jellyfin" = {
icon = "jellyfin";
description = "Permet de regarder ou écouter du contenu.";
2024-08-26 10:36:21 +02:00
href = "http://media.hypervirtual.world";
widget = {
type = "jellyfin";
url = "http://${ip}:8096";
enableBlocks = true;
key = "{{HOMEPAGE_VAR_JELLYFIN}}";
};
};
}
2024-07-14 16:01:31 +02:00
{
"Jellyseerr" = {
icon = "jellyseerr";
description = "Moteur de recherche de films/séries";
2024-08-26 10:36:21 +02:00
href = "http://katflix.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
widget = {
type = "jellyseerr";
url = "http://${ip}:5055";
key = "{{HOMEPAGE_VAR_JELLYSEERR}}";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
{
"slskd" = {
icon = "slskd";
description = "Pour télécharger/partager de la musique";
2024-08-26 10:36:21 +02:00
href = "http://slskd.sisyphe.normandy.hypervirtual.world";
2024-07-14 16:01:31 +02:00
};
}
{
"Prowlarr" = {
icon = "prowlarr";
description = "Indexe les différents sites de téléchargement";
2024-08-26 10:36:21 +02:00
href = "http://prowlarr.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
widget = {
type = "prowlarr";
key = "{{HOMEPAGE_VAR_PROWLARR}}";
2024-07-16 15:44:01 +02:00
url = "http://${ip}:9696";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
{
"Sonarr" = {
icon = "sonarr";
description = "Moteur de recherche pour les séries";
2024-08-26 10:36:21 +02:00
href = "http://sonarr.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
widget = {
type = "sonarr";
2024-07-18 19:01:54 +02:00
url = "http://${ip}:8989";
key = "{{HOMEPAGE_VAR_SONARR}}";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
2024-08-26 10:36:21 +02:00
{
"Sonarr anime" = {
icon = "sonarr";
description = "Moteur de recherche pour les séries animées";
href = "http://sonarr-anime.sisyphe.normandy.hypervirtual.world";
widget = {
type = "sonarr";
url = "http://${ip}:8999";
key = "{{HOMEPAGE_VAR_SONARRANIME}}";
};
};
}
2024-07-14 16:01:31 +02:00
{
"Radarr" = {
icon = "radarr";
description = "Moteur de recherche pour les films";
2024-08-26 10:36:21 +02:00
href = "http://radarr.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
widget = {
type = "radarr";
key = "{{HOMEPAGE_VAR_RADARR}}";
2024-07-16 15:44:01 +02:00
url = "http://${ip}:7878";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
{
"Bazarr" = {
icon = "bazarr";
description = "Vérifie les sous titres des films/séries.";
2024-08-26 10:36:21 +02:00
href = "http://bazarr.sisyphe.normandy.hypervirtual.world";
2024-07-18 19:17:22 +02:00
widget = {
type = "bazarr";
key = "{{HOMEPAGE_VAR_BAZARR}}";
url = "http://${ip}:6767";
};
};
}
2024-08-26 11:26:27 +02:00
{
"Bazarr anime" = {
icon = "bazarr";
description = "Vérifie les sous titres des séries animées.";
href = "http://bazarr-anime.sisyphe.normandy.hypervirtual.world";
widget = {
type = "bazarr";
key = "{{HOMEPAGE_VAR_BAZARRANIME}}";
url = "http://${ip}:6768";
};
};
}
2024-07-14 16:01:31 +02:00
{
2024-07-14 16:01:31 +02:00
"Transmission" = {
icon = "transmission";
description = "s'occupe du téléchargement des fichiers";
2024-08-26 10:36:21 +02:00
href = "http://transmission.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
widget = {
type = "transmission";
url = "http://${ip}:9091";
username = "{{HOMEPAGE_VAR_TRANSMISSIONUSERNAME}}";
password = "{{HOMEPAGE_VAR_TRANSMISSIONPASSWORD}}";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
};
}
];
}
{
"Utilitaires" = [
{
2024-08-25 12:07:50 +02:00
"Nextcloud" = {
icon = "nextcloud";
description = "Sauvegarde de données";
href = "https://cloud.hypervirtual.world";
2024-07-14 16:01:31 +02:00
};
}
{
2024-08-12 15:56:45 +02:00
"4get" = {
2024-07-14 16:01:31 +02:00
icon = "searx";
description = "Moteur de recherche privé pour remplacer Google.";
2024-08-12 15:56:45 +02:00
href = "https://4get.hypervirtual.world";
2024-07-14 16:01:31 +02:00
};
}
];
}
{
"Administration" = [
2024-07-15 16:27:23 +02:00
/*
{
"Proxmox Backup Server" = {
icon = "proxmox-light";
description = "Permet de sauvegarder le serveur.";
href = "https://${cfg.proxmoxBSIp}:8007";
};
}
*/
2024-07-14 16:01:31 +02:00
{
2024-07-15 16:27:23 +02:00
"Proxmox VE" = {
icon = "proxmox";
description = "Panneau de controle des machines virtuelles";
href = "https://${cfg.proxmoxVEIp}:8006";
widget = {
type = "proxmox";
username = "{{HOMEPAGE_VAR_PROXMOXUSERNAME}}";
password = "{{HOMEPAGE_VAR_PROXMOXPASSWORD}}";
2024-07-15 16:27:23 +02:00
url = "https://${cfg.proxmoxVEIp}:8006";
node = "pve";
};
2024-07-14 16:01:31 +02:00
};
}
{
2024-07-15 16:27:23 +02:00
"Pi.hole" = {
2024-07-18 19:01:54 +02:00
icon = "pi-hole";
2024-07-15 16:27:23 +02:00
description = "Bloqueur de pubs DNS/DHCP";
2024-07-16 14:43:50 +02:00
href = "http://${cfg.piholeURL}/admin";
2024-07-15 16:27:23 +02:00
widget = {
type = "pihole";
key = "{{HOMEPAGE_VAR_PIHOLE}}";
url = "http://${cfg.piholeURL}";
2024-07-15 16:27:23 +02:00
};
};
}
{
"Grafana" = {
icon = "grafana";
description = "Visualiseur de graphiques";
2024-08-26 10:36:21 +02:00
href = "http://grafana.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
};
}
{
"InfluxDB" = {
2024-07-16 15:37:34 +02:00
icon = "influxdb";
2024-07-15 16:27:23 +02:00
description = "Traite les statistiques du serveur Proxmox";
2024-07-16 15:44:01 +02:00
href = "http://192.168.1.157:8086";
2024-07-15 16:27:23 +02:00
};
}
{
"Uptime Kuma" = {
2024-07-18 19:01:54 +02:00
icon = "uptime-kuma";
2024-07-15 16:27:23 +02:00
description = "Surveille l'état des différents services";
2024-08-26 10:36:21 +02:00
href = "http://uptime.sisyphe.normandy.hypervirtual.world";
2024-07-15 16:27:23 +02:00
};
2024-07-14 16:01:31 +02:00
}
{
"Uptime Robot" = {
2024-07-18 19:01:54 +02:00
icon = "uptime-kuma";
description = "Surveille l'état des sites (hors réseau maison)";
widget = {
type = "uptimerobot";
url = "https://api.uptimerobot.com";
key = "{{HOMEPAGE_VAR_UPTIMEROBOT}}";
};
};
}
2024-07-14 16:01:31 +02:00
];
}
];
2024-07-14 16:01:31 +02:00
};
};
}