forked from aylac.top/nixcfg
this repo has no description
1{ 2 config, 3 lib, 4 ... 5}: let 6 name = "glance"; 7 cfg = config.myNixOS.services.${name}; 8 9 inherit (config.mySnippets) aylac-top; 10 inherit (config.mySnippets) tailnet; 11 12 network = config.mySnippets.tailnet; 13 14 service = network.networkMap.${name}; 15in { 16 options.myNixOS.services.${name} = { 17 enable = lib.mkEnableOption "${name} server"; 18 autoProxy = lib.mkOption { 19 default = true; 20 example = false; 21 description = "${name} auto proxy"; 22 type = lib.types.bool; 23 }; 24 }; 25 26 config = lib.mkIf cfg.enable { 27 services = { 28 caddy.virtualHosts."${service.vHost}".extraConfig = lib.mkIf cfg.autoProxy '' 29 bind tailscale/${name} 30 encode zstd gzip 31 reverse_proxy ${service.hostName}:${toString service.port} 32 ''; 33 34 glance = { 35 enable = true; 36 openFirewall = true; 37 38 settings = { 39 pages = [ 40 { 41 name = service.vHost; 42 width = "slim"; 43 hide-desktop-navigation = true; 44 center-vertically = true; 45 columns = [ 46 { 47 size = "full"; 48 widgets = [ 49 { 50 type = "monitor"; 51 cache = "1m"; 52 title = "Public Services"; 53 54 sites = [ 55 { 56 title = "Forgejo"; 57 url = "https://${aylac-top.networkMap.forgejo.vHost}/"; 58 check-url = "http://${aylac-top.networkMap.forgejo.hostName}:${toString aylac-top.networkMap.forgejo.port}/"; 59 icon = "di:forgejo"; 60 } 61 { 62 title = "PDS"; 63 url = "https://${aylac-top.networkMap.pds.vHost}/"; 64 check-url = "http://${aylac-top.networkMap.pds.hostName}:${toString aylac-top.networkMap.pds.port}/"; 65 icon = "di:bluesky"; 66 } 67 { 68 title = "ntfy"; 69 url = "https://${aylac-top.networkMap.ntfy.vHost}/"; 70 check-url = "http://${aylac-top.networkMap.ntfy.hostName}:${toString aylac-top.networkMap.ntfy.port}/"; 71 icon = "di:ntfy"; 72 } 73 ]; 74 } 75 { 76 type = "monitor"; 77 cache = "1m"; 78 title = "Private Services"; 79 80 sites = [ 81 { 82 title = "Vaultwarden"; 83 url = "https://${tailnet.networkMap.vaultwarden.vHost}/"; 84 check-url = "http://${tailnet.networkMap.vaultwarden.hostName}:${toString tailnet.networkMap.vaultwarden.port}/"; 85 icon = "di:vaultwarden"; 86 } 87 #{ 88 # title = "Karakeep"; 89 # url = "https://${tailnet.networkMap.karakeep.vHost}/"; 90 # check-url = "http://${tailnet.networkMap.karakeep.hostName}:${toString tailnet.networkMap.karakeep.port}/"; 91 # icon = "di:karakeep"; 92 #} 93 { 94 title = "Jellyfin"; 95 url = "https://${tailnet.networkMap.jellyfin.vHost}/"; 96 check-url = "http://${tailnet.networkMap.jellyfin.hostName}:${toString tailnet.networkMap.jellyfin.port}/web/index.html"; 97 icon = "di:jellyfin"; 98 } 99 { 100 title = "Jellyseerr"; 101 url = "https://${tailnet.networkMap.jellyseerr.vHost}/"; 102 check-url = "http://${tailnet.networkMap.jellyseerr.hostName}:${toString tailnet.networkMap.jellyseerr.port}/"; 103 icon = "di:jellyseerr"; 104 } 105 { 106 title = "Sonarr"; 107 url = "https://${tailnet.networkMap.sonarr.vHost}/"; 108 check-url = "http://${tailnet.networkMap.sonarr.hostName}:${toString tailnet.networkMap.sonarr.port}/"; 109 icon = "di:sonarr"; 110 } 111 { 112 title = "Radarr"; 113 url = "https://${tailnet.networkMap.radarr.vHost}/"; 114 check-url = "http://${tailnet.networkMap.radarr.hostName}:${toString tailnet.networkMap.radarr.port}/"; 115 icon = "di:radarr"; 116 } 117 { 118 title = "Prowlarr"; 119 url = "https://${tailnet.networkMap.prowlarr.vHost}/"; 120 check-url = "http://${tailnet.networkMap.prowlarr.hostName}:${toString tailnet.networkMap.prowlarr.port}/"; 121 icon = "di:prowlarr"; 122 } 123 #{ 124 # title = "Bazarr"; 125 # url = "https://${tailnet.networkMap.bazarr.vHost}/"; 126 # check-url = "http://${tailnet.networkMap.bazarr.hostName}:${toString tailnet.networkMap.bazarr.port}/"; 127 # icon = "di:bazarr"; 128 #} 129 { 130 title = "Autobrr"; 131 url = "https://${tailnet.networkMap.autobrr.vHost}/"; 132 check-url = "http://${tailnet.networkMap.autobrr.hostName}:${toString tailnet.networkMap.autobrr.port}/"; 133 icon = "di:autobrr"; 134 } 135 { 136 title = "qBittorrent"; 137 url = "https://${tailnet.networkMap.qbittorrent.vHost}/"; 138 check-url = "http://${tailnet.networkMap.qbittorrent.hostName}:${toString tailnet.networkMap.qbittorrent.port}/"; 139 icon = "di:qbittorrent"; 140 alt-status-codes = [401]; 141 } 142 { 143 title = "Uptime Kuma"; 144 url = "https://${tailnet.networkMap.uptime-kuma.vHost}/"; 145 check-url = "http://${tailnet.networkMap.uptime-kuma.hostName}:${toString tailnet.networkMap.uptime-kuma.port}/"; 146 icon = "di:uptime-kuma"; 147 } 148 { 149 title = "Radicale"; 150 url = "https://${tailnet.networkMap.radicale.vHost}/"; 151 check-url = "http://${tailnet.networkMap.radicale.hostName}:${toString tailnet.networkMap.radicale.port}/"; 152 icon = "di:radicale"; 153 } 154 { 155 title = "Copyparty"; 156 url = "https://${tailnet.networkMap.copyparty.vHost}/"; 157 check-url = "http://${tailnet.networkMap.copyparty.hostName}:${toString tailnet.networkMap.copyparty.port}/"; 158 icon = "di:copyparty"; 159 } 160 { 161 title = "Redlib"; 162 url = "https://${tailnet.networkMap.redlib.vHost}/"; 163 check-url = "http://${tailnet.networkMap.redlib.hostName}:${toString tailnet.networkMap.redlib.port}/"; 164 icon = "di:redlib"; 165 } 166 { 167 title = "Miniflux"; 168 url = "https://${tailnet.networkMap.miniflux.vHost}/"; 169 check-url = "http://${tailnet.networkMap.miniflux.hostName}:${toString tailnet.networkMap.miniflux.port}/"; 170 icon = "di:miniflux"; 171 } 172 { 173 title = "audiobookshelf"; 174 url = "https://${tailnet.networkMap.audiobookshelf.vHost}/"; 175 check-url = "http://${tailnet.networkMap.audiobookshelf.hostName}:${toString tailnet.networkMap.audiobookshelf.port}/"; 176 icon = "di:audiobookshelf"; 177 } 178 ]; 179 } 180 { 181 type = "split-column"; 182 max-columns = 3; 183 widgets = [ 184 { 185 type = "hacker-news"; 186 limit = 30; 187 collapse-after = 10; 188 } 189 { 190 type = "lobsters"; 191 limit = 30; 192 collapse-after = 10; 193 } 194 { 195 type = "rss"; 196 title = "Tildes"; 197 limit = 30; 198 collapse-after = 10; 199 cache = "1h"; 200 feeds = [ 201 { 202 url = "https://tildes.net/topics.rss"; 203 title = "tildes.net"; 204 } 205 ]; 206 } 207 ]; 208 } 209 ]; 210 } 211 ]; 212 } 213 ]; 214 215 server = { 216 host = "0.0.0.0"; 217 inherit (tailnet.networkMap.glance) port; 218 }; 219 }; 220 }; 221 }; 222 }; 223}