| { pkgs, helpers, config, lib, ... }: { |
| clicks.nginx.services = with helpers.nginx; [ |
| (Host "guide.trans.gg" (Compose [ |
| # PWA Manifest |
| (Path "/_assets/manifest.json" |
| (File ./nginx/guide.trans.gg/_assets/manifest.json)) |
| # Browser Config |
| (Path "/_assets/favicons/browserconfig.xml" |
| (File ./nginx/guide.trans.gg/_assets/favicons/browserconfig.xml)) |
| |
| # Android Favicons |
| (Path "/_assets/favicons/android-chrome-192x192.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/android-chrome-192x192.png)) |
| (Path "/_assets/favicons/android-chrome-256x256.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/android-chrome-256x256.png)) |
| |
| # Web Favicons |
| (Path "/_assets/favicons/favicon-16x16.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/favicon-16x16.png)) |
| (Path "/_assets/favicons/favicon-32x32.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/favicon-32x32.png)) |
| (Path "/_assets/favicons/mstile-150x150.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/mstile-150x150.png)) |
| |
| # iOS Favicons |
| (Path "/_assets/favicons/apple-touch-icon.png" |
| (File ./nginx/guide.trans.gg/_assets/favicons/apple-touch-icon.png)) |
| (Path "/_assets/favicons/safari-pinned-tab.svg" |
| (File ./nginx/guide.trans.gg/_assets/favicons/safari-pinned-tab.svg)) |
| |
| (ReverseProxy "generic:1035") |
| ])) |
| (SpecificHost "wiki.auxolotl.org" (ReverseProxy "10.0.101.2:1024")) # see aux.nix |
| (SpecificHost "docs.auxolotl.org" (Path ''~ ^/?([^\r\n]*)$'' (Redirect "https://wiki.auxolotl.org/$1"))) |
| (Host "signup.hopescaramels.com" (ReverseProxy "caramels:1024")) |
| (Host "freeflowtaekwondo.com" (ReverseProxy "generic:1026")) |
| (Host "homebridge.coded.codes" (ReverseProxy "CodedPi:8581")) |
| (Host "codedpc.coded.codes" (ReverseProxy "SamuelDesktop:3389")) |
| (Host "testing.coded.codes" (ReverseProxy "SamuelDesktop:3000")) |
| (Host "clicks.codes" (Compose [ |
| (Path "/.well-known/matrix/" |
| (CrossOrigin (File ./nginx/clicks.codes/.well-known/matrix))) |
| (ReverseProxy "127.0.0.1:3000") |
| ])) |
| (Host "resume.thecoded.prof" (Directory "/var/www/thecoded.prof/sites/resume/dist/")) |
| (Host "thecoded.prof" (Directory "/var/www/thecoded.prof/sites/main/dist/")) |
| (Hosts [ "vaultwarden.clicks.codes" ] (ReverseProxy "generic:1028")) |
| (Hosts [ "passwords.clicks.codes" ] (RedirectPermanent "https://vaultwarden.clicks.codes")) |
| (Host "cloud.clicks.codes" (Path ''~ ^/?([^\r\n]*)$'' (RedirectPermanent "https://nextcloud.clicks.codes/$1"))) |
| (Hosts [ |
| "erpnext.clicks.codes" |
| "projects.clicks.codes" |
| "tasks.clicks.codes" |
| "issues.clicks.codes" |
| "kanban.clicks.codes" |
| "taiga.clicks.codes" |
| ] (Redirect "https://frappe.clicks.codes/app")) |
| (Hosts [ |
| "wiki.clicks.codes" |
| ] (Redirect "https://frappe.clicks.codes/wiki")) |
| (Host "login.clicks.codes" (ReverseProxy "127.0.0.1:9083")) |
| (Hosts [ "gerrit.clicks.codes" "git.clicks.codes" ] |
| (ReverseProxy "generic:1024")) |
| (Hosts [ "grafana.clicks.codes" "logs.clicks.codes" ] |
| (ReverseProxy "127.0.0.1:9052")) |
| (InsecureHosts [ |
| "mail.clicks.codes" |
| "mail.coded.codes" |
| "mail.hopescaramels.com" |
| "autoconfig.coded.codes" |
| "autoconfig.clicks.codes" |
| "autoconfig.hopescaramels.com" |
| "imap.coded.codes" |
| "imap.clicks.codes" |
| "imap.hopescaramels.com" |
| "pop.coded.codes" |
| "pop.clicks.codes" |
| "pop.hopescaramels.com" |
| "smtp.coded.codes" |
| "smtp.clicks.codes" |
| "smtp.hopescaramels.com" |
| ] (ReverseProxy "generic:1026")) |
| (Hosts [ |
| "calibre.coded.codes" |
| "books.coded.codes" |
| "reading.coded.codes" |
| "calibre.thecoded.prof" |
| "books.thecoded.prof" |
| "reading.thecoded.prof" |
| ] (ReverseProxy "generic:1032")) |
| (Hosts ["matrix.clicks.codes" "matrix.coded.codes"] (Directory "${builtins.toString |
| (pkgs.element-web.override { |
| conf = { |
| default_server_config = |
| lib.pipe ./nginx/clicks.codes/.well-known/matrix [ |
| builtins.readFile |
| builtins.fromJSON |
| ]; |
| features = { |
| feature_report_to_moderators = true; |
| feature_latex_maths = true; |
| feature_pinning = true; |
| feature_mjolnir = true; |
| feature_presence_in_room_list = true; |
| feature_custom_themes = true; |
| feature_dehydration = true; |
| }; |
| setting_defaults = { |
| "fallbackICEServerAllowed" = true; |
| "UIFeature.passwordReset" = false; |
| "UIFeature.deactivate" = false; |
| }; |
| show_labs_settings = true; |
| default_theme = "dark"; |
| disable_guests = true; |
| disable_3pid_login = true; |
| logout_redirect_url = "https://login.clicks.codes/realms/master/protocol/openid-connect/logout?client_id=matrix"; |
| sso_redirect_options.immediate = true; |
| }; |
| })}")) |
| (Host "api.clicks.codes" |
| (Path "/nucleus/" (ReverseProxy "127.0.0.1:10000"))) |
| (Host "api.coded.codes" |
| (Path "/nucleus/" (ReverseProxy "SamuelDesktop:10000"))) |
| (Host "coded.codes" (Compose [ |
| (Path "/.well-known/matrix/" |
| (CrossOrigin (File ./nginx/clicks.codes/.well-known/matrix))) |
| (Redirect "https://clicks.codes$request_uri") |
| ])) |
| (Hosts ["matrix-backend.clicks.codes" "matrix-backend.coded.codes"] (Compose [ |
| (Path "/_synapse/admin/" (Status 403)) |
| (ReverseProxy "generic:1030") |
| ])) |
| (Hosts ["matrix-sliding-sync.clicks.codes" "matrix-sliding-sync.coded.codes"] |
| (ReverseProxy "generic:1031")) |
| ]; |
| clicks.nginx.serviceAliases = with helpers.nginx; [ |
| (Aliases "nextcloud.clicks.codes" [ |
| "www.nextcloud.clicks.codes" |
| ]) |
| (Aliases "privatebin" [ |
| "paste.clicks.codes" |
| "paste.coded.codes" |
| "paste.thecoded.prof" |
| "paste.hopescaramels.com" |
| "www.paste.clicks.codes" |
| "www.paste.coded.codes" |
| "www.paste.thecoded.prof" |
| "www.paste.hopescaramels.com" |
| "www.privatebin.clicks.codes" |
| ]) |
| ]; |
| } |