homepage.nix 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. { config, ... }:
  2. let
  3. cfg = config.services.homepage-dashboard;
  4. domain = "odin.t5.st";
  5. in
  6. {
  7. services.homepage-dashboard = {
  8. enable = true;
  9. allowedHosts = "${domain}";
  10. bookmarks = [
  11. {
  12. Developer = [
  13. {
  14. Github = [
  15. {
  16. abbr = "GH";
  17. href = "https://github.com/";
  18. }
  19. ];
  20. }
  21. ];
  22. }
  23. {
  24. Entertainment = [
  25. {
  26. YouTube = [
  27. {
  28. abbr = "YT";
  29. href = "https://youtube.com/";
  30. }
  31. ];
  32. }
  33. ];
  34. }
  35. ];
  36. services = [
  37. {
  38. "Apps" = [
  39. {
  40. "AdGuard Home" = {
  41. href = "https://adguard.odin.t5.st/";
  42. description = "Network-wide ads & trackers blocking DNS server";
  43. };
  44. }
  45. {
  46. "Immich Photos" = {
  47. href = "https://photos.t5.st/";
  48. description = "High performance self-hosted photo and video management solution.";
  49. };
  50. }
  51. ];
  52. }
  53. ];
  54. widgets = [ ];
  55. settings = {
  56. title = "Odin (/ˈoʊdɪn/; from Old Norse: Óðinn)";
  57. 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.";
  58. background = "https://images.unsplash.com/photo-1604223190546-a43e4c7f29d7?q=80&w=2669&auto=format&fit=crop&ixlib=rb-4.1.0";
  59. cardBlur = "sm";
  60. theme = "dark";
  61. color = "stone";
  62. };
  63. };
  64. services.caddy.virtualHosts.homepage = {
  65. hostName = "{$DOMAIN}";
  66. extraConfig = ''
  67. encode gzip zstd
  68. reverse_proxy 127.0.0.1:${toString cfg.listenPort}
  69. '';
  70. };
  71. }