Add navidrome service

Initial testing config for navidrome, may need to update after trying it
This commit is contained in:
Evie Litherland-Smith 2023-11-19 06:02:12 +00:00
parent 28030867d1
commit 74d34f9e62
3 changed files with 53 additions and 25 deletions

View file

@ -249,6 +249,7 @@
serviceModules = [ serviceModules = [
./services/adguardhome/default.nix ./services/adguardhome/default.nix
./services/gitea/default.nix ./services/gitea/default.nix
./services/navidrome/default.nix
./services/nextcloud/default.nix ./services/nextcloud/default.nix
./services/ntfy-sh/default.nix ./services/ntfy-sh/default.nix
./services/sshd/default.nix ./services/sshd/default.nix

View file

@ -1,5 +1,7 @@
{ pkgs, config, ... }: { pkgs, ... }:
let baseUrl = "https://matrix.xenia.me.uk"; let
baseUrl = "matrix.xenia.me.uk";
port = 8008;
in { in {
imports = [ ../traefik/default.nix ]; imports = [ ../traefik/default.nix ];
services.postgresql.enable = true; services.postgresql.enable = true;
@ -11,16 +13,17 @@ in {
LC_CTYPE = "C"; LC_CTYPE = "C";
''; '';
services.matrix-synapse = { services = {
matrix-synapse = {
enable = true; enable = true;
settings.server_name = baseUrl; settings.server_name = "https://${baseUrl}";
# The public base URL value must match the `base_url` value set in `clientConfig` above. # 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 # 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 # from the value of `fqdn` above, you will likely run into some mismatched domain names
# in client applications. # in client applications.
settings.public_baseurl = baseUrl; settings.public_baseurl = "https://${baseUrl}";
settings.listeners = [{ settings.listeners = [{
port = 8008; inherit port;
bind_addresses = [ "::1" ]; bind_addresses = [ "::1" ];
type = "http"; type = "http";
tls = false; tls = false;
@ -31,9 +34,7 @@ in {
}]; }];
}]; }];
}; };
traefik.dynamicConfigOptions.http = {
services.traefik.dynamicConfigOptions = {
http = {
routers.gitea = { routers.gitea = {
rule = "Host(`${baseUrl}`)"; rule = "Host(`${baseUrl}`)";
entryPoints = [ "http" "https" ]; entryPoints = [ "http" "https" ];
@ -41,7 +42,7 @@ in {
tls = { certResolver = "default"; }; tls = { certResolver = "default"; };
}; };
services.synapse-service.loadBalancer.servers = services.synapse-service.loadBalancer.servers =
[{ url = "http://localhost:8008"; }]; [{ url = "http://localhost:${port}"; }];
}; };
}; };
} }

View file

@ -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}"; }];
};
};
}