From 77588062829c85f58e9cff7d383adc1fcd7b4b0b Mon Sep 17 00:00:00 2001 From: Chris Kruining Date: Wed, 3 Sep 2025 15:12:41 +0200 Subject: [PATCH] add homer dashboard --- .../nixos/services/media/homer/default.nix | 73 +++++++++++++++++++ systems/x86_64-linux/ulmo/default.nix | 1 + 2 files changed, 74 insertions(+) create mode 100644 modules/nixos/services/media/homer/default.nix diff --git a/modules/nixos/services/media/homer/default.nix b/modules/nixos/services/media/homer/default.nix new file mode 100644 index 0000000..263af83 --- /dev/null +++ b/modules/nixos/services/media/homer/default.nix @@ -0,0 +1,73 @@ +{ config, lib, namespace, ... }: +let + inherit (lib) mkIf mkEnableOption; + + cfg = config.${namespace}.services.media.homer; +in +{ + options.${namespace}.services.media.homer = { + enable = mkEnableOption "Enable homer"; + }; + + config = mkIf cfg.enable { + networking.firewall.allowedTCPPorts = [ 2000 ]; + + services = { + homer = { + enable = true; + + virtualHost = { + caddy.enable = true; + domain = "http://:2000"; + }; + + settings = { + title = "Ulmo dashboard"; + + columns = 4; + connectivityCheck = true; + + links = [ + { + name = "Git"; + icon = "fab fa-forgejo"; + url = "https://git.amarth.cloud"; + + } + ]; + + services = [ + { + name = "Services"; + items = [ + { + name = "Zitadel"; + tag = "authentication"; + keywords = "auth"; + url = "https://auth.amarth.cloud"; + } + ]; + } + + { + name = "Media"; + items = [ + { + name = "Radarr"; + tag = "app"; + url = "http://${config.networking.hostName}:${builtins.toString config.services.radarr.settings.server.port}"; + } + + { + name = "Sonarr"; + tag = "app"; + url = "http://${config.networking.hostName}:${builtins.toString config.services.sonarr.settings.server.port}"; + } + ]; + } + ]; + }; + }; + }; + }; +} diff --git a/systems/x86_64-linux/ulmo/default.nix b/systems/x86_64-linux/ulmo/default.nix index 9876768..4108dc9 100644 --- a/systems/x86_64-linux/ulmo/default.nix +++ b/systems/x86_64-linux/ulmo/default.nix @@ -15,6 +15,7 @@ networking.ssh.enable = true; media.enable = true; + media.homer.enable = true; media.nfs.enable = true; observability = {