feat: add window manager options
This commit is contained in:
parent
b4b7997ac5
commit
601dfb9217
31 changed files with 2006 additions and 821 deletions
|
|
@ -1,4 +1,3 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
imports = [
|
||||
./actual-budget.nix
|
||||
|
|
@ -15,5 +14,6 @@
|
|||
./dns.nix
|
||||
./acme.nix
|
||||
./ntfy.nix
|
||||
./homepage.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ in
|
|||
"192.168.100.0/24"
|
||||
];
|
||||
dns.port = 5300;
|
||||
yaml-settings = {
|
||||
settings = {
|
||||
webservice.webserver = true;
|
||||
recordcache.max_negative_ttl = 60;
|
||||
};
|
||||
|
|
|
|||
194
system/dev/dn-server/services/homepage.nix
Normal file
194
system/dev/dn-server/services/homepage.nix
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
{ config, ... }:
|
||||
let
|
||||
inherit (config.networking) domain;
|
||||
cfg = config.services.homepage-dashboard;
|
||||
in
|
||||
{
|
||||
sops.secrets = {
|
||||
"homepage" = {
|
||||
};
|
||||
};
|
||||
|
||||
services.homepage-dashboard = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
listenPort = 8044;
|
||||
environmentFile = config.sops.secrets."homepage".path;
|
||||
allowedHosts = "www.${domain},${domain},localhost:${toString cfg.listenPort}";
|
||||
docker = {
|
||||
docker = {
|
||||
socket = "/var/run/docker.sock";
|
||||
};
|
||||
};
|
||||
widgets = [
|
||||
{
|
||||
search = {
|
||||
provider = "duckduckgo";
|
||||
target = "_blank";
|
||||
};
|
||||
}
|
||||
{
|
||||
datetime = {
|
||||
text_size = "x1";
|
||||
format = {
|
||||
dateStyle = "short";
|
||||
timeStyle = "short";
|
||||
hour12 = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
services = [
|
||||
{
|
||||
"Files & Documents" = [
|
||||
{
|
||||
"Nextcloud" = {
|
||||
icon = "nextcloud.svg";
|
||||
description = "☁️ Cloud drive";
|
||||
href = "https://${config.services.nextcloud.hostName}";
|
||||
widgets = [
|
||||
{
|
||||
type = "nextcloud";
|
||||
url = "https://${config.services.nextcloud.hostName}";
|
||||
key = "{{HOMEPAGE_VAR_NEXTCLOUD_NC_TOKEN}}";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
"Paperless" = {
|
||||
icon = "paperless.svg";
|
||||
description = "PDF editing, tagging, and viewing";
|
||||
href = config.services.paperless.settings.PAPERLESS_URL;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"VPN & IDP" = [
|
||||
{
|
||||
"Netbird" = {
|
||||
icon = "netbird.svg";
|
||||
description = "VPN Service: access internal services";
|
||||
href = "https://${config.services.netbird.server.domain}";
|
||||
};
|
||||
}
|
||||
{
|
||||
"Keycloak" = {
|
||||
icon = "keycloak.svg";
|
||||
description = "Identity provider";
|
||||
href = "https://${config.services.keycloak.settings.hostname}";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"Monitor" = [
|
||||
{
|
||||
"Grafana" = {
|
||||
icon = "grafana.svg";
|
||||
description = "Show metrics!";
|
||||
href = config.services.grafana.settings.server.root_url;
|
||||
};
|
||||
}
|
||||
{
|
||||
"Prometheus" = {
|
||||
icon = "prometheus.svg";
|
||||
description = "The web is not that useful 🥀";
|
||||
href = config.services.prometheus.webExternalUrl;
|
||||
};
|
||||
}
|
||||
{
|
||||
"Uptime Kuma" = {
|
||||
icon = "uptime-kuma.svg";
|
||||
description = "Service health check";
|
||||
href = "https://uptime.${domain}";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"Utility" = [
|
||||
{
|
||||
"Vaultwarden" = {
|
||||
icon = "vaultwarden-light.svg";
|
||||
description = "Password manager";
|
||||
href = config.services.vaultwarden.config.DOMAIN;
|
||||
};
|
||||
}
|
||||
{
|
||||
"PowerDNS" = {
|
||||
icon = "powerdns.svg";
|
||||
description = "DNS record management";
|
||||
href = "https://powerdns.${domain}";
|
||||
};
|
||||
}
|
||||
{
|
||||
"Actual Budget" = {
|
||||
icon = "actual-budget.svg";
|
||||
description = "Financial budget management";
|
||||
href = "https://actual.${domain}";
|
||||
};
|
||||
}
|
||||
{
|
||||
"Ntfy" = {
|
||||
icon = "ntfy.svg";
|
||||
description = "Notification service";
|
||||
href = config.services.ntfy-sh.settings.base-url;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"Games" = [
|
||||
{
|
||||
"Minecraft" = {
|
||||
icon = "minecraft.svg";
|
||||
description = "Minecraft servers";
|
||||
widgets = [
|
||||
{
|
||||
type = "minecraft";
|
||||
fields = [
|
||||
"players"
|
||||
"version"
|
||||
"status"
|
||||
];
|
||||
url = "udp://mc.${domain}:${toString config.services.velocity.port}";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
];
|
||||
settings = {
|
||||
base = "https://www.${domain}";
|
||||
headerStyle = "boxed";
|
||||
title = "DN Home";
|
||||
description = "Welcome! maybe?";
|
||||
disableUpdateCheck = true;
|
||||
providers = {
|
||||
|
||||
};
|
||||
quicklaunch = {
|
||||
searchDescriptions = true;
|
||||
hideInternetSearch = true;
|
||||
showSearchSuggestions = true;
|
||||
hideVisitURL = true;
|
||||
provider = "google";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."${domain}" = {
|
||||
useACMEHost = domain;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://127.0.0.1:${toString cfg.listenPort}";
|
||||
};
|
||||
serverAliases = [
|
||||
"www.${domain}"
|
||||
];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue