Compare commits

..

3 commits

Author SHA1 Message Date
642fadfe6d
sops: update secrets
All checks were successful
ci/woodpecker/cron/flake-lock-update Pipeline was successful
2024-03-18 14:38:39 -04:00
4b77973121
homepage: init declarative config 2024-03-18 14:38:32 -04:00
e49c383f4b
default: update pinentryPackage 2024-03-18 14:20:01 -04:00
8 changed files with 579 additions and 9 deletions

View file

@ -19,3 +19,7 @@ creation_rules:
key_groups:
- age:
- *notoh
- path_regex: secrets/homepage/[^/]+\.yaml$
key_groups:
- age:
- *notoh

View file

@ -34,7 +34,7 @@
gpg-agent = {
enable = true;
defaultCacheTtl = 3600;
pinentryFlavor = "curses";
pinentryPackage = pkgs.pinentry-curses;
enableSshSupport = true;
enableNushellIntegration = true;
};

View file

@ -1,12 +1,12 @@
{...}: {
imports = [
./hass
./homepage
./restic.nix
./traefik.nix
./stash.nix
./jellyfin.nix
./wallos.nix
./homepage.nix
./searxng.nix
./anki-sync-server.nix
./paperless.nix

View file

@ -1,7 +0,0 @@
_: {
services.homepage-dashboard = {
enable = true;
listenPort = 7676;
openFirewall = true;
};
}

View file

@ -0,0 +1,85 @@
{config, ...}: {
imports = [
./widgets.nix
./services.nix
];
sops.secrets.homepage-secrets = {
sopsFile = ../../../../secrets/homepage/secrets.yaml;
};
services.homepage-dashboard = {
enable = true;
listenPort = 7676;
openFirewall = true;
environmentFile = config.sops.secrets.homepage-secrets.path;
settings = {
base = "https://dashboard.internal.flake.sh/";
title = "kumo";
language = "en";
headerStyle = "boxedWidgets";
disableCollape = true;
favicon = "https://em-content.zobj.net/source/twitter/376/cloud_2601-fe0f.png";
background = "https://i.imgur.com/uU6Jbum.jpg";
cardBlur = "md";
theme = "dark";
color = "gray";
fiveColumns = true;
statusStyle = "dot";
hideVersion = true;
providers = {
openweathermap = "{{HOMEPAGE_VAR_OPENWEATHERMAP}}";
};
layout = [
{
"Sora" = {
style = "row";
columns = 3;
};
}
{
"News" = {
style = "row";
columns = 1;
};
}
{
"Infra" = {
style = "row";
columns = 4;
};
}
{
"Networking" = {
style = "row";
columns = 1;
};
}
{
"Monitoring" = {
style = "row";
columns = 2;
};
}
{
"Media" = {
style = "row";
columns = 2;
};
}
{
"Storage" = {
style = "row";
columns = 1;
};
}
{
"Misc" = {
style = "row";
columns = 5;
};
}
];
};
};
}

View file

@ -0,0 +1,437 @@
_: {
services.homepage-dashboard.services = [
{
"Sora" = let
glancesUrl = "http://100.104.42.96:61208";
in [
{
"INF" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "info";
};
};
}
{
"CPU" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "cpu";
};
};
}
{
"RAM" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "memory";
};
};
}
{
"PROC" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "process";
};
};
}
{
"NET" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "network:eth0";
};
};
}
{
"FS" = {
widget = {
type = "glances";
url = glancesUrl;
metric = "fs:/etc/hosts";
};
};
}
];
}
{
"News" = [
{
"Miniflux" = {
icon = "miniflux";
href = "https://rss.internal.flake.sh";
widget = {
type = "miniflux";
url = "";
key = "{{HOMEPAGE_VAR_MINIFLUX_KEY}}";
};
};
}
];
}
{
"Infra" = [
{
"Proxmox" = {
icon = "proxmox";
href = "https://pve.internal.flake.sh:8006";
widget = {
type = "proxmox";
url = "https://192.168.1.36:8006";
username = "{{HOMEPAGE_VAR_PROXMOX_USER}}";
password = "{{HOMEPAGE_VAR_PROXMOX_PWD}}";
};
};
}
{
"Proxmox Backup Server" = {
icon = "proxmox";
href = "https://pbs.internal.flake.sh:8007";
widget = {
type = "proxmoxbackupserver";
url = "https://192.168.1.38:8007";
username = "{{HOMEPAGE_VAR_PBS_USER}}";
password = "{{HOMEPAGE_VAR_PBS_PWD}}";
};
};
}
{
"TrueNAS" = {
icon = "truenas-scale";
href = "https://truenas.internal.flake.sh";
widget = {
type = "truenas";
url = "https://192.168.1.199";
key = "{{HOMEPAGE_VAR_TRUENAS_KEY}}";
};
};
}
{
"Home Assistant" = {
icon = "home-assistant";
href = "http://hass.internal.flake.sh:8123";
widget = {
type = "homeassistant";
url = "http://192.168.1.98:8123";
key = "{{HOMEPAGE_VAR_HASS_KEY}}";
};
};
}
];
}
{
"Networking" = [
{
"Ubiquiti" = {
icon = "ubiquiti";
href = "https://udm.internal.flake.sh";
widget = {
type = "unifi";
url = "https://192.168.1.1";
username = "api";
password = "{{HOMEPAGE_VAR_UBIQUITI_PWD}}";
};
};
}
{
"Traefik" = {
icon = "traefik";
href = "http://192.168.1.98:8080/dashboard";
widget = {
type = "traefik";
url = "http://192.168.1.98:8080";
};
};
}
{
"Gluetun" = {
icon = "gluetun";
href = "http://192.168.1.54:8000";
widget = {
type = "gluetun";
url = "http://192.168.1.54:8000";
};
};
}
{
"Blocky" = {
icon = "blocky";
href = "http://192.168.1.103:4000";
};
}
];
}
{
"Monitoring" = [
{
"Grafana" = {
icon = "grafana";
href = "https://metrics.flake.sh";
};
}
{
"Prometheus" = {
icon = "prometheus";
};
}
{
"Uptime Kuma" = {
icon = "uptime-kuma";
href = "https://status.flake.sh/dashboard";
widget = {
type = "uptimekuma";
url = "https://status.flake.sh";
slug = "kumo";
};
};
}
{
"ntfy" = {
icon = "ntfy";
href = "https://ntfy.flake.sh";
};
}
];
}
{
"Media" = let
kariruIp = "http://192.168.1.54:";
in [
{
"Jellyfin" = {
icon = "jellyfin";
href = "https://jellyfin.internal.flake.sh/";
widget = {
type = "jellyfin";
url = "http://192.168.1.98:8096";
key = "{{HOMEPAGE_VAR_JELLYFIN_KEY}}";
enableBlocks = true;
enableNowPlaying = false;
};
};
}
{
"Jellyseerr" = {
icon = "jellyseerr";
href = "https://jellyseerr.internal.flake.sh";
widget = {
type = "jellyseerr";
url = "http://192.168.1.98:5055";
key = "{{HOMEPAGE_VAR_JELLYSEERR_KEY}}";
};
};
}
{
"Sonarr" = {
icon = "sonarr";
href = "https://sonarr.internal.flake.sh";
widget = {
type = "sonarr";
url = "${kariruIp}8989";
key = "{{HOMEPAGE_VAR_SONARR_KEY}}";
};
};
}
{
"Radarr" = {
icon = "radarr";
href = "https://radarr.internal.flake.sh";
widget = {
type = "radarr";
url = "${kariruIp}7878";
key = "{{HOMEPAGE_VAR_RADARR_KEY}}";
};
};
}
{
"Readarr" = {
icon = "readarr";
href = "https://readarr.internal.flake.sh";
widget = {
type = "readarr";
url = "${kariruIp}8787";
key = "{{HOMEPAGE_VAR_READARR_KEY}}";
};
};
}
{
"Lidarr" = {
icon = "lidarr";
href = "https://lidarr.internal.flake.sh";
widget = {
type = "lidarr";
url = "${kariruIp}8686";
key = "{{HOMEPAGE_VAR_LIDARR_KEY}}";
};
};
}
{
"Bazarr" = {
icon = "bazarr";
href = "https://bazarr.internal.flake.sh";
widget = {
type = "bazarr";
url = "${kariruIp}6767";
key = "{{HOMEPAGE_VAR_BAZARR_KEY}}";
};
};
}
{
"Prowlarr" = {
icon = "prowlarr";
href = "https://prowlarr.internal.flake.sh";
widget = {
type = "prowlarr";
url = "${kariruIp}9696";
key = "{{HOMEPAGE_VAR_PROWLARR_KEY}}";
};
};
}
{
"qBittorrent" = {
icon = "qbittorrent";
href = "http://192.168.1.54:8080";
widget = {
type = "qbittorrent";
url = "http://192.168.1.54:8080";
username = "notoh";
password = "{{HOMEPAGE_VAR_QBIT_PWD}}";
};
};
}
{
"SABnzbd" = {
icon = "sabnzbd";
href = "http://192.168.1.54:9292/sabnzbd/";
widget = {
type = "sabnzbd";
url = "http://192.168.1.54:9292";
key = "{{HOMEPAGE_VAR_SABNZBD_KEY}}";
};
};
}
{
"Whisparr" = {
icon = "whisparr";
href = "http://whisparr.internal.flake.sh/";
};
}
{
"Servarr" = {
icon = "servarr";
href = "https://wiki.servarr.com/";
};
}
];
}
{
"Storage" = [
{
"Nextcloud" = {
icon = "nextcloud";
href = "https://nextcloud.internal.flake.sh:9001";
widget = {
type = "nextcloud";
url = "https://192.168.1.199:9001";
username = "notoh";
password = "{{HOMEPAGE_VAR_NEXTCLOUD_PWD}}";
};
};
}
{
"Synology" = {
icon = "synology";
href = "https://synology.internal.flake.sh:5001/";
widget = {
type = "diskstation";
url = "https://192.168.1.71:5001";
username = "homepage";
password = "{{HOMEPAGE_VAR_SYNOLOGY_PWD}}";
};
};
}
{
"Paperless-ngx" = {
icon = "paperless-ngx";
href = "https://paperless.internal.flake.sh";
widget = {
type = "paperlessngx";
url = "http://100.108.113.89:28981";
key = "{{HOMEPAGE_VAR_PAPERLESS_KEY}}";
};
};
}
{
"Minio" = {
icon = "minio";
href = "http://100.69.79.81:9006/browser/";
};
}
];
}
{
"Misc" = [
{
"Forgejo" = {
icon = "forgejo";
href = "https://git.flake.sh/explore/repos";
};
}
{
"Hetzner" = {
icon = "hetzner";
href = "https://accounts.hetzner.com/login";
};
}
{
"Backblaze" = {
icon = "backblaze";
href = "https://secure.backblaze.com";
};
}
{
"notohh.dev" = {
icon = "hugo";
href = "https://notohh.dev/";
};
}
{
"Stash" = {
icon = "stash";
href = "https://stash.internal.flake.sh";
};
}
{
"Cloudflare" = {
icon = "cloudflare";
href = "https://dash.cloudflare.com";
};
}
{
"Tailscale" = {
icon = "tailscale";
href = "https://login.tailscale.com/admin/machines";
};
}
{
"Hedgedoc" = {
icon = null;
href = "https://scratch.flake.sh";
};
}
{
"Wallos" = {
icon = null;
href = "https://wallos.internal.flake.sh";
};
}
];
}
];
}

View file

@ -0,0 +1,30 @@
_: {
services.homepage-dashboard.widgets = [
{
greeting = {
text_size = "l";
text = "";
};
}
{
datetime = {
text_size = "l";
format = {
timeStyle = "short";
dateStyle = "short";
hourCycle = "h23";
};
};
}
{
openweathermap = {
label = "New York";
latitude = "40.730610";
longitude = "-73.935242";
units = "metric";
provider = "openweathermap";
cache = 5;
};
}
];
}

View file

@ -0,0 +1,21 @@
homepage-secrets: ENC[AES256_GCM,data:4a0UVT8No2ZqkF3oFG9BAB1JHFhHZneREU5yLLAm3lw2NP64vZy9uVYm8y+fHe9MzSVmDZQ3azIruXmDVhSkDR/R9RBcC9NUT0zw2axhuISzkdhxX8WZmjk2fZk3OhVwmt/F6Ja/rTGg7wfKNyPhygCTCCTOKxLo0xmpCHoIafkVJsX7OH/szs8Z5t3TTQxpc/qgodnkHyh27mVb8YCcbEvD35V6cbHKCJCaMTbTNksUM6ux8WxUKH9PUIUmLI9pFZSaYEuCba+jLMzmQK9XN30VP8IJW1spAJz10KGCSDHD7tqvwk+s7OWB3p/68tdH1t6lpoaYRwO9h5R+H7swPQiC70uhjQHVbufhKHYo+Q4f1vk2f+F4+AyNYuFC07iQvW5r+4QHHmdIQ50A8ngXG0/U2i6QKXUO6degeYTJZLa5q3o4/Rvwuadu+GCtTUq0rNRfP8cGohkDrQTi8DQMamjCVhB5CoXrMGhwhAkMznaHDfeg8pJAZrFjxl6mgeXVycjq5fnUNNrJciyuxUm34h1Hmp5mVgZ61vhrjkDib4jBEh1PdJFw/8zXD7GEAJQlAcNx0m6ES4MiZQezC7I6LDXXOvb+zTQYhXZhrQ3IeW03kjGiYK9qzUN3fzRB2k10mOuag1t7dNq32ogLwc+eIxhKsD2iKuSO6QbqFmo+myqMOP2aL6lre1mHiQ/Wb5OKwA3lmpWl97MHBlrWvYWCX17xFq0bY0xjh3K6HbkEx5yuHbLy9S4Re5h5VXg+LsAeamKMZSqsZjpPP7QcTRao5o6X8tvPsTSe8DPc9ZVmTNTVSzcLc/0M8hxLtemI6IbbXCgFp1tW0Yy7OEsX+3sfbBRi+vO2alv4hUynwEZVUpkfY9JSp94X89izNzJBdGbfbxsN6pzJG/qWqaxJkQF6VHK63aqvbZKicCf2j3WlJxBkVTofI8Pxw31g8XVFH/Bgs7gKClh1HClgVZU8F7nkQGu036rquK0tp+suyLcEKrChBBwjqgIeS/W7Gge3y8b5U1nTsW5+fpb9UKGxYQFLaoIYImyYTYafbkPeS4Xd3k/BcvG0TnPFBbfg4GNzvykZR+CFLQBwvC12j0fbPQQqR4yQXgrqZ/6rJYgyL69gkA7ih3fk3vYCvpdXpp5QJipLNzKoPhdaDN75rPzNssBPPWgj/9XaKofO5QY+frEZRoZVJBvpvgsX7oE+vcQpHMAWzN2aO8AU3N96MplQrEld633Sxa66+rSuXUvJ8kzOkwwhTSb17NjW5xuT5GcREnehFBIulMZmgEaLtpP2PM24r3Qld4QJuYmv1y8rq0YK4U0oweOFfGT+o2yHVrVkDMLqbDGHTOuNn/73Bwrs3kKsopPnBdxbnQa5ICuWYWCgYRCC+jjekp7AK8SyKG0HlbxrUbDUBsonrnbLTo0sSncRWPPCtASa+7NL2PwnKNMFI+bmi/RzXgePAt/YkCsTbtTr3lhqqRt9ychyafFx0PmWLGbqfNc+scS+RzRxzfhm0HUi37xOT0QTGCfQ0B1Na8phEyVCFFOVPvUyQYX4uFTMpsB3m+Q/pwIpTtU82NJu9cADkJ5lyhlHkyEZsCqYmBPb5UMCFn6bmA1efd+1sD72vFnCxoxZCPtAZFp4n7oA+5uv7zxr1np66qKLGymZkUuFGCb6ULdgooUvBYPy01rUA7MVkxBjVXfg8uH5Wtny/FaRFTnEEhxBrxIbExvLSM2y3Ilz53Yb/izSZyu+xcEe73wriTnAKZS+NEj4D7W6lnBIN/lXqWMkwncaoRR4wzHjYIinP2jA5/z2HqoDFBWelg6sLAbPRs/FbM8f6hWEiX5gj33EYmTxRyYnpkJVTwAoLYoJZi+KIeq+btSKg4XAaeInLIWEH0moMgBOMlDMhEOZTI+ELpd/tkLisgr8v7cPBgWknsotEaxVm9MPqylAREN0AC+YNJyI1ao=,iv:PM9br61pbXWJh4Ahf4kz1dTuNNWfmXty9bxMK4UJtUs=,tag:IHIrVQydW/+N9ZNdf32rXg==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1ckvmyqkwk69j64ev3fmckytz6k2dv79z4gn5qf6gxqyevp5yjfesdfkxmn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6dkVBejE1bHZqVkRZRmFo
SStUSjBSbmZLdXpVZUt5L1kwK1pEM3pGL0VZCmFsQ2xkaHIxV2lxbzZzWnM3ZDE1
bm44L25RTnRFVzl1cGQ3Q3g1THFXTkEKLS0tIFViRmN0anF5SmNBVWd5N2h0NElF
bGM5b1BLMTVlUDBDY0Z3L2dRbVZrb00Kj641oh4R7VfmWFmCaq5aRWcDTvzJvZBR
aIJdMFJEB4B43dlv2/bLYsoFs8LJJ2CHu1my9/BlNI+345ZlrFpQgQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-03-14T09:47:50Z"
mac: ENC[AES256_GCM,data:gN727Lqzt6tbZNzSLAXtqGN3QzEILG774Z7FP/ytt8Ghh1KiCVEkuiO89u1eSe4AqnFYSJrV9w2ptc2mAaxCnlw7sTlAUv7mgv6tR4QIV2sh1d8WpQNqkkNf5mrWqXkRn6WXHPxW4vluoQYn3jH0PmKp8depX1zR8itVCW/3pjA=,iv:syhUh7Bk8K04inF2e5mYhhPb+LTIZd5uFSJ0rSZd+HE=,tag:Ck0P3YK9uIJleYMAQDhvDQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1