Files
nixos-configs/hosts/manatee/modules/navidrome/default.nix
T

48 lines
1.0 KiB
Nix

{
lib,
pkgs,
config,
...
}:
let
navidromeEnabled = config.mod.navidrome.enable;
in
{
options = {
mod.navidrome = {
enable = lib.mkEnableOption "Enable navidrome module";
};
};
config = {
mod.homepage.services = lib.mkIf navidromeEnabled [
{
name = "Navidrome";
port = 4533;
description = "Music streaming";
}
];
services = lib.mkIf navidromeEnabled {
navidrome = {
enable = true;
openFirewall = true;
user = "navidrome";
group = "storage";
settings = {
Port = 4533;
Address = "0.0.0.0";
MusicFolder = "/mnt/media/public/music";
};
};
};
# `MusicFolder` is bind mounted into the service's own mount namespace when it
# starts, so starting before the ZFS dataset is mounted leaves it with an empty folder
systemd.services.navidrome = lib.mkIf navidromeEnabled {
unitConfig.RequiresMountsFor = [ config.services.navidrome.settings.MusicFolder ];
};
};
}