Files
nix-config/machines/storage/s0/dashy.nix
Zuckerberg facaa261bc
All checks were successful
Check Flake / check-flake (push) Successful in 3m50s
Add missing services to Gatus monitoring and Dashy dashboard
Gatus: Add Roundcube, Collabora, and all s0 services (Jellyfin,
servarr stack, Home Assistant, ESPHome, Zigbee2MQTT, Frigate,
Valetudo, Sandman, Vikunja, Actual Budget, Linkwarden, Memos,
Outline, LanguageTool, Unifi) in a new "s0" group.

Dashy: Add missing public services (ntfy, Librechat, Owncast,
Navidrome, Collabora, Gatus) to Services section. Add new Home
Automation and Productivity sections. Add Unifi to Network.
Remove disabled Jitsi Meet.
2026-02-26 23:41:06 -08:00

522 lines
14 KiB
Nix

{
appConfig = {
theme = "vaporware";
customColors = {
"material-dark-original" = {
primary = "#f36558";
background = "#39434C";
"background-darker" = "#eb615c";
"material-light" = "#f36558";
"item-text-color" = "#ff948a";
"curve-factor" = "5px";
};
};
enableErrorReporting = false;
layout = "auto";
iconSize = "large";
language = "en";
startingView = "default";
defaultOpeningMethod = "sametab";
statusCheck = true;
statusCheckInterval = 20;
faviconApi = "faviconkit";
routingMode = "history";
enableMultiTasking = false;
webSearch = {
disableWebSearch = false;
searchEngine = "duckduckgo";
openingMethod = "sametab";
searchBangs = { };
};
enableFontAwesome = true;
cssThemes = [ ];
externalStyleSheet = [ ];
hideComponents = {
hideHeading = false;
hideNav = false;
hideSearch = false;
hideSettings = false;
hideFooter = false;
hideSplashScreen = false;
};
auth = {
enableGuestAccess = false;
users = [ ];
enableKeycloak = false;
keycloak = { };
};
allowConfigEdit = true;
enableServiceWorker = false;
disableContextMenu = false;
disableUpdateChecks = false;
disableSmartSort = false;
};
pageInfo = {
title = "s0";
description = "s0";
};
sections = [
(
let
# Define the media section items once.
mediaItems = {
jellyfin = {
title = "Jellyfin";
icon = "hl-jellyfin";
url = "https://jellyfin.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "0_1956_jellyfin";
};
sonarr = {
title = "Sonarr";
description = "Manage TV";
icon = "hl-sonarr";
url = "https://sonarr.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "1_1956_sonarr";
};
radarr = {
title = "Radarr";
description = "Manage Movies";
icon = "hl-radarr";
url = "https://radarr.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "2_1956_radarr";
};
lidarr = {
title = "Lidarr";
description = "Manage Music";
icon = "hl-lidarr";
url = "https://lidarr.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "3_1956_lidarr";
};
prowlarr = {
title = "Prowlarr";
description = "Indexers";
icon = "hl-prowlarr";
url = "https://prowlarr.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "4_1956_prowlarr";
};
bazarr = {
title = "Bazarr";
description = "Subtitles";
icon = "hl-bazarr";
url = "https://bazarr.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "5_1956_bazarr";
};
navidrome = {
title = "Navidrome";
description = "Play Music";
icon = "hl-navidrome";
url = "https://music.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "6_1956_navidrome";
};
transmission = {
title = "Transmission";
description = "Torrenting";
icon = "hl-transmission";
url = "https://transmission.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "7_1956_transmission";
};
};
# Build the list once.
mediaList = [
mediaItems.jellyfin
mediaItems.sonarr
mediaItems.radarr
mediaItems.lidarr
mediaItems.prowlarr
mediaItems.bazarr
mediaItems.navidrome
mediaItems.transmission
];
in
{
name = "Media & Entertainment";
icon = "fas fa-photo-video";
displayData = {
sortBy = "most-used";
cols = 1;
rows = 1;
collapsed = false;
hideForGuests = false;
};
items = mediaList;
filteredItems = mediaList;
}
)
(
let
networkItems = {
gateway = {
title = "Gateway";
description = "openwrt";
icon = "hl-openwrt";
url = "http://openwrt.lan/";
target = "sametab";
statusCheck = true;
id = "0_746_gateway";
};
wireless = {
title = "Wireless";
description = "openwrt (ish)";
icon = "hl-openwrt";
url = "http://PacketProvocateur.lan";
target = "sametab";
statusCheck = true;
id = "1_746_wireless";
};
unifi = {
title = "Unifi";
description = "unifi.s0.neet.dev";
icon = "hl-unifi";
url = "https://unifi.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "2_746_unifi";
};
};
networkList = [
networkItems.gateway
networkItems.wireless
networkItems.unifi
];
in
{
name = "Network";
icon = "fas fa-network-wired";
items = networkList;
filteredItems = networkList;
displayData = {
sortBy = "default";
rows = 1;
cols = 1;
collapsed = false;
hideForGuests = false;
};
}
)
(
let
servicesItems = {
matrix = {
title = "Matrix";
description = "";
icon = "hl-matrix";
url = "https://chat.neet.space";
target = "sametab";
statusCheck = true;
id = "0_836_matrix";
};
mumble = {
title = "Mumble";
description = "voice.neet.space";
icon = "hl-mumble";
url = "https://voice.neet.space";
target = "sametab";
statusCheck = false;
id = "2_836_mumble";
};
irc = {
title = "IRC";
description = "irc.neet.dev";
icon = "hl-thelounge";
url = "https://irc.neet.dev";
target = "sametab";
statusCheck = true;
id = "3_836_irc";
};
git = {
title = "Git";
description = "git.neet.dev";
icon = "hl-gitea";
url = "https://git.neet.dev";
target = "sametab";
statusCheck = true;
id = "4_836_git";
};
nextcloud = {
title = "Nextcloud";
description = "neet.cloud";
icon = "hl-nextcloud";
url = "https://neet.cloud";
target = "sametab";
statusCheck = true;
id = "5_836_nextcloud";
};
roundcube = {
title = "Roundcube";
description = "mail.neet.dev";
icon = "hl-roundcube";
url = "https://mail.neet.dev";
target = "sametab";
statusCheck = true;
id = "6_836_roundcube";
};
ntfy = {
title = "ntfy";
description = "ntfy.neet.dev";
icon = "hl-ntfy";
url = "https://ntfy.neet.dev";
target = "sametab";
statusCheck = true;
id = "7_836_ntfy";
};
librechat = {
title = "Librechat";
description = "chat.neet.dev";
icon = "hl-librechat";
url = "https://chat.neet.dev";
target = "sametab";
statusCheck = true;
id = "8_836_librechat";
};
owncast = {
title = "Owncast";
description = "live.neet.dev";
icon = "hl-owncast";
url = "https://live.neet.dev";
target = "sametab";
statusCheck = true;
id = "9_836_owncast";
};
navidrome-public = {
title = "Navidrome";
description = "navidrome.neet.cloud";
icon = "hl-navidrome";
url = "https://navidrome.neet.cloud";
target = "sametab";
statusCheck = true;
id = "10_836_navidrome-public";
};
collabora = {
title = "Collabora";
description = "collabora.runyan.org";
icon = "hl-collabora";
url = "https://collabora.runyan.org";
target = "sametab";
statusCheck = true;
id = "11_836_collabora";
};
gatus = {
title = "Gatus";
description = "status.neet.dev";
icon = "hl-gatus";
url = "https://status.neet.dev";
target = "sametab";
statusCheck = true;
id = "12_836_gatus";
};
};
servicesList = [
servicesItems.matrix
servicesItems.mumble
servicesItems.irc
servicesItems.git
servicesItems.nextcloud
servicesItems.roundcube
servicesItems.ntfy
servicesItems.librechat
servicesItems.owncast
servicesItems.navidrome-public
servicesItems.collabora
servicesItems.gatus
];
in
{
name = "Services";
icon = "fas fa-monitor-heart-rate";
items = servicesList;
filteredItems = servicesList;
displayData = {
sortBy = "default";
rows = 1;
cols = 1;
collapsed = false;
hideForGuests = false;
};
}
)
(
let
haItems = {
home-assistant = {
title = "Home Assistant";
description = "ha.s0.neet.dev";
icon = "hl-home-assistant";
url = "https://ha.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "0_4201_home-assistant";
};
esphome = {
title = "ESPHome";
description = "esphome.s0.neet.dev";
icon = "hl-esphome";
url = "https://esphome.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "1_4201_esphome";
};
zigbee2mqtt = {
title = "Zigbee2MQTT";
description = "zigbee.s0.neet.dev";
icon = "hl-zigbee2mqtt";
url = "https://zigbee.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "2_4201_zigbee2mqtt";
};
frigate = {
title = "Frigate";
description = "frigate.s0.neet.dev";
icon = "hl-frigate";
url = "https://frigate.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "3_4201_frigate";
};
valetudo = {
title = "Valetudo";
description = "vacuum.s0.neet.dev";
icon = "hl-valetudo";
url = "https://vacuum.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "4_4201_valetudo";
};
sandman = {
title = "Sandman";
description = "sandman.s0.neet.dev";
icon = "fas fa-bed";
url = "https://sandman.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "5_4201_sandman";
};
};
haList = [
haItems.home-assistant
haItems.esphome
haItems.zigbee2mqtt
haItems.frigate
haItems.valetudo
haItems.sandman
];
in
{
name = "Home Automation";
icon = "fas fa-home";
items = haList;
filteredItems = haList;
displayData = {
sortBy = "default";
rows = 1;
cols = 1;
collapsed = false;
hideForGuests = false;
};
}
)
(
let
prodItems = {
vikunja = {
title = "Vikunja";
description = "todo.s0.neet.dev";
icon = "hl-vikunja";
url = "https://todo.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "0_5301_vikunja";
};
actual = {
title = "Actual Budget";
description = "budget.s0.neet.dev";
icon = "hl-actual-budget";
url = "https://budget.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "1_5301_actual";
};
linkwarden = {
title = "Linkwarden";
description = "linkwarden.s0.neet.dev";
icon = "hl-linkwarden";
url = "https://linkwarden.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "2_5301_linkwarden";
};
memos = {
title = "Memos";
description = "memos.s0.neet.dev";
icon = "hl-memos";
url = "https://memos.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "3_5301_memos";
};
outline = {
title = "Outline";
description = "outline.s0.neet.dev";
icon = "hl-outline";
url = "https://outline.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "4_5301_outline";
};
languagetool = {
title = "LanguageTool";
description = "languagetool.s0.neet.dev";
icon = "hl-languagetool";
url = "https://languagetool.s0.neet.dev";
target = "sametab";
statusCheck = false;
id = "5_5301_languagetool";
};
};
prodList = [
prodItems.vikunja
prodItems.actual
prodItems.linkwarden
prodItems.memos
prodItems.outline
prodItems.languagetool
];
in
{
name = "Productivity";
icon = "fas fa-tasks";
items = prodList;
filteredItems = prodList;
displayData = {
sortBy = "default";
rows = 1;
cols = 1;
collapsed = false;
hideForGuests = false;
};
}
)
];
}