|
@@ -0,0 +1,76 @@
|
|
|
|
|
+{ config, ... }:
|
|
|
|
|
+let
|
|
|
|
|
+ cfg = config.services.homepage-dashboard;
|
|
|
|
|
+ domain = "odin.t5.st";
|
|
|
|
|
+in
|
|
|
|
|
+{
|
|
|
|
|
+ services.homepage-dashboard = {
|
|
|
|
|
+ enable = true;
|
|
|
|
|
+ allowedHosts = "${domain}";
|
|
|
|
|
+
|
|
|
|
|
+ bookmarks = [
|
|
|
|
|
+ {
|
|
|
|
|
+ Developer = [
|
|
|
|
|
+ {
|
|
|
|
|
+ Github = [
|
|
|
|
|
+ {
|
|
|
|
|
+ abbr = "GH";
|
|
|
|
|
+ href = "https://github.com/";
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ Entertainment = [
|
|
|
|
|
+ {
|
|
|
|
|
+ YouTube = [
|
|
|
|
|
+ {
|
|
|
|
|
+ abbr = "YT";
|
|
|
|
|
+ href = "https://youtube.com/";
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ services = [
|
|
|
|
|
+ {
|
|
|
|
|
+ "Apps" = [
|
|
|
|
|
+ {
|
|
|
|
|
+ "AdGuard Home" = {
|
|
|
|
|
+ href = "https://adguard.odin.t5.st/";
|
|
|
|
|
+ description = "Network-wide ads & trackers blocking DNS server";
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ "Immich Photos" = {
|
|
|
|
|
+ href = "https://photos.t5.st/";
|
|
|
|
|
+ description = "High performance self-hosted photo and video management solution.";
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ widgets = [ ];
|
|
|
|
|
+
|
|
|
|
|
+ settings = {
|
|
|
|
|
+ title = "Odin (/ˈoʊdɪn/; from Old Norse: Óðinn)";
|
|
|
|
|
+ description = "A widely revered god in Norse mythology and Germanic paganism. Most surviving information on Odin comes from Norse mythology, but he figures prominently in the recorded history of Northern Europe.";
|
|
|
|
|
+ background = "https://images.unsplash.com/photo-1604223190546-a43e4c7f29d7?q=80&w=2669&auto=format&fit=crop&ixlib=rb-4.1.0";
|
|
|
|
|
+ cardBlur = "sm";
|
|
|
|
|
+ theme = "dark";
|
|
|
|
|
+ color = "stone";
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ services.caddy.virtualHosts.homepage = {
|
|
|
|
|
+ hostName = "{$DOMAIN}";
|
|
|
|
|
+ extraConfig = ''
|
|
|
|
|
+ encode gzip zstd
|
|
|
|
|
+ reverse_proxy 127.0.0.1:${toString cfg.listenPort}
|
|
|
|
|
+ '';
|
|
|
|
|
+ };
|
|
|
|
|
+}
|