73 lines
1.7 KiB
Nix
73 lines
1.7 KiB
Nix
{
|
|
device,
|
|
config,
|
|
...
|
|
}: let
|
|
socket = "/run/navidrome/navidrome.sock";
|
|
in {
|
|
sops = {
|
|
secrets."lastfm/api_key" = {};
|
|
secrets."lastfm/shared_secret" = {};
|
|
templates."lastfm.env".content = ''
|
|
ND_LASTFM_APIKEY=${config.sops.placeholder."lastfm/api_key"}
|
|
ND_LASTFM_SECRET=${config.sops.placeholder."lastfm/shared_secret"}
|
|
'';
|
|
};
|
|
services = {
|
|
navidrome = {
|
|
enable = true;
|
|
settings = {
|
|
MusicFolder = "/media/music";
|
|
"ExtAuth.TrustedSources" = "@";
|
|
"ExtAuth.UserHeader" = "Remote-User";
|
|
Address = "unix:${socket}";
|
|
BaseUrl = "https://music.darksailor.dev";
|
|
};
|
|
environmentFile = config.sops.templates."lastfm.env".path;
|
|
};
|
|
caddy = {
|
|
virtualHosts."music.darksailor.dev".extraConfig = ''
|
|
import auth
|
|
reverse_proxy unix/${socket}
|
|
'';
|
|
};
|
|
authelia = {
|
|
instances.darksailor = {
|
|
settings = {
|
|
access_control = {
|
|
rules = [
|
|
{
|
|
domain = "music.darksailor.dev";
|
|
policy = "bypass";
|
|
resources = [
|
|
"^/(rest|share)([/?].*)?$"
|
|
];
|
|
}
|
|
{
|
|
domain = "music.darksailor.dev";
|
|
policy = "one_factor";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
systemd.services.navidrome.requires = ["systemd-tmpfiles-setup.service"];
|
|
systemd.tmpfiles.settings = {
|
|
navidromeDirs = {
|
|
"/run/navidrome".d = {
|
|
mode = "775";
|
|
user = "navidrome";
|
|
group = "navidrome";
|
|
};
|
|
};
|
|
};
|
|
users.users.${device.user} = {
|
|
extraGroups = ["navidrome"];
|
|
};
|
|
users.users.caddy = {
|
|
extraGroups = ["navidrome"];
|
|
};
|
|
}
|