nix-config/configs/nixos/homepage.nix
2024-10-21 16:06:30 +02:00

138 lines
3.1 KiB
Nix

{
inputs,
config,
pkgs,
lib,
...
}: let
cfg = config.services.homepage-dashboard;
baseurl = "homepage.venberg.xyz";
in {
services.homepage-dashboard = {
enable = true;
settings = {
theme = "dark";
color = "slate";
headerStyle = "boxed";
base = "https://${baseurl}";
language = "en";
hideVersion = true;
statusStyle = "dot";
quicklaunch = {
searchDescriptions = true;
hideInternetSearch = false;
hideVisitUrl = false;
provider = "duckduckgo";
};
};
widgets = [
{
datetime = {
text_size = "x2";
locale = "en-CA";
format = {
hourCycle = "h23";
hour12 = false;
year = "numeric";
month = "numeric";
day = "numeric";
hour = "numeric";
minute = "numeric";
};
};
}
{
resources = {
cpu = true;
disk = "/";
memory = true;
};
}
{
openmeteo = {
label = "Current";
units = "metric";
cache = 5;
};
}
{
openmeteo = {
label = "Mainz";
timezone = "Europe/Berlin";
units = "metric";
cache = 5;
latitude = 49.999444;
longitude = 8.273611;
};
}
];
services = [
{
Family = [
{
Jellyfin = {
icon = "sh-jellyfin.svg";
href = "https://media.venberg.xyz";
siteMonitor = "https://media.venberg.xyz";
description = "Movies";
};
}
{
Grocy = {
icon = "sh-grocy.svg";
href = "https://grocy.venberg.xyz";
siteMonitor = "https://grocy.venberg.xyz";
description = "Family ERP";
};
}
{
Radicale = {
icon = "sh-radicale.svg";
href = "https://cal.venberg.xyz";
siteMonitor = "https://cal.venberg.xyz";
description = "Calander administration";
};
}
{
Syncthing = {
icon = "sh-syncthing.svg";
href = "http://localhost:8384";
description = "Local Syncthing dashboard";
};
}
];
}
{
Development = [
{
Forgejo = {
icon = "sh-forgejo.svg";
href = "https://git.venberg.xyz";
siteMonitor = "https://git.venberg.xyz";
description = "Self hosted Git forge.";
};
}
{
Github = {
icon = "si-github-#181717";
href = "https://github.com";
siteMonitor = "https://git.venberg.xyz";
description = "Non self hosted Git forge :(";
};
}
];
}
];
};
services.nginx.virtualHosts.${baseurl} = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:${toString cfg.listenPort}";
};
};
}