Files
dev/configs/nixos/modules/services/navidrome.nix

55 lines
1.4 KiB
Nix

{
config,
lib,
...
}:
{
options.modules.services.navidrome = {
enable = lib.mkEnableOption "Navidrome";
dataDir = lib.mkOption {
type = lib.types.str;
default = "/var/lib/navidrome";
readOnly = true;
description = "Guest path where Navidrome stores its data folder.";
};
libraryDir = lib.mkOption {
type = lib.types.str;
default = "/music";
readOnly = true;
description = "Guest path where Navidrome reads its library folder.";
};
};
config = lib.mkMerge [
{
registry."stable-uid".${config.networking.hostName}.navidrome = 20004;
}
(lib.mkIf config.modules.services.navidrome.enable {
users.users.navidrome = {
isSystemUser = true;
uid = config.registry."stable-uid".${config.networking.hostName}.navidrome;
group = "storage";
home = config.modules.services.navidrome.dataDir;
};
services.navidrome = {
enable = true;
user = "navidrome";
group = "storage";
environmentFile = "/run/secrets/navidrome.env";
openFirewall = true;
settings = {
Address = "0.0.0.0";
Port = 4533;
DataFolder = config.modules.services.navidrome.dataDir;
MusicFolder = config.modules.services.navidrome.libraryDir;
EnableSharing = true;
};
};
})
];
}