From 74d34f9e62c15570f2e4ca0687f9c284c748c21a Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Sun, 19 Nov 2023 06:02:12 +0000 Subject: [PATCH] Add navidrome service Initial testing config for navidrome, may need to update after trying it --- flake.nix | 1 + services/matrix/default.nix | 51 +++++++++++++++++----------------- services/navidrome/default.nix | 26 +++++++++++++++++ 3 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 services/navidrome/default.nix diff --git a/flake.nix b/flake.nix index 579c9d5e..dcb2f792 100644 --- a/flake.nix +++ b/flake.nix @@ -249,6 +249,7 @@ serviceModules = [ ./services/adguardhome/default.nix ./services/gitea/default.nix + ./services/navidrome/default.nix ./services/nextcloud/default.nix ./services/ntfy-sh/default.nix ./services/sshd/default.nix diff --git a/services/matrix/default.nix b/services/matrix/default.nix index c3acd3a7..effa2824 100644 --- a/services/matrix/default.nix +++ b/services/matrix/default.nix @@ -1,5 +1,7 @@ -{ pkgs, config, ... }: -let baseUrl = "https://matrix.xenia.me.uk"; +{ pkgs, ... }: +let + baseUrl = "matrix.xenia.me.uk"; + port = 8008; in { imports = [ ../traefik/default.nix ]; services.postgresql.enable = true; @@ -11,29 +13,28 @@ in { LC_CTYPE = "C"; ''; - services.matrix-synapse = { - enable = true; - settings.server_name = baseUrl; - # The public base URL value must match the `base_url` value set in `clientConfig` above. - # The default value here is based on `server_name`, so if your `server_name` is different - # from the value of `fqdn` above, you will likely run into some mismatched domain names - # in client applications. - settings.public_baseurl = baseUrl; - settings.listeners = [{ - port = 8008; - bind_addresses = [ "::1" ]; - type = "http"; - tls = false; - x_forwarded = true; - resources = [{ - names = [ "client" "federation" ]; - compress = true; + services = { + matrix-synapse = { + enable = true; + settings.server_name = "https://${baseUrl}"; + # The public base URL value must match the `base_url` value set in `clientConfig` above. + # The default value here is based on `server_name`, so if your `server_name` is different + # from the value of `fqdn` above, you will likely run into some mismatched domain names + # in client applications. + settings.public_baseurl = "https://${baseUrl}"; + settings.listeners = [{ + inherit port; + bind_addresses = [ "::1" ]; + type = "http"; + tls = false; + x_forwarded = true; + resources = [{ + names = [ "client" "federation" ]; + compress = true; + }]; }]; - }]; - }; - - services.traefik.dynamicConfigOptions = { - http = { + }; + traefik.dynamicConfigOptions.http = { routers.gitea = { rule = "Host(`${baseUrl}`)"; entryPoints = [ "http" "https" ]; @@ -41,7 +42,7 @@ in { tls = { certResolver = "default"; }; }; services.synapse-service.loadBalancer.servers = - [{ url = "http://localhost:8008"; }]; + [{ url = "http://localhost:${port}"; }]; }; }; } diff --git a/services/navidrome/default.nix b/services/navidrome/default.nix new file mode 100644 index 00000000..d48e77e6 --- /dev/null +++ b/services/navidrome/default.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: +let baseUrl = "music.xenia.me.uk"; +in { + imports = [ ../traefik/default.nix ]; + environment.systemPackages = with pkgs; [ ffmpeg ]; + services = rec { + navidrome = { + enable = true; + settings = { + Address = "127.0.0.1"; + BaseUrl = "https://${baseUrl}"; + Port = 4533; + }; + }; + traefik.dynamicConfigOptions.http = { + routers.navidrome = { + rule = "Host(`${baseUrl}`)"; + entryPoints = [ "http" "https" ]; + service = "synapse-service"; + tls = { certResolver = "default"; }; + }; + services.navidrome.loadBalancer.servers = + [{ url = "http://localhost:${navidrome.settings.port}"; }]; + }; + }; +}