feat(nixos): migrate navidrome to pikachu

This commit was merged in pull request #43.
This commit is contained in:
2026-09-12 21:17:36 -04:00
parent 1a5edc1a5f
commit 6a364f5ce9
7 changed files with 184 additions and 9 deletions

View File

@@ -0,0 +1,64 @@
{
config,
lib,
...
}:
let
cfg = config.modules.services.navidrome;
in
{
options.modules.services.navidrome = {
enable = lib.mkEnableOption "Navidrome";
dataFolder = lib.mkOption {
type = lib.types.str;
default = "/var/lib/navidrome";
readOnly = true;
description = "Path for Navidrome's `DataFolder` setting.";
};
musicFolder = lib.mkOption {
type = lib.types.str;
default = "/music";
readOnly = true;
description = "Path for Navidrome's `MusicFolder` setting.";
};
environmentFile = lib.mkOption {
type = lib.types.path;
default = "/run/secrets/navidrome.env";
readOnly = true;
description = "Path to Navidrome's environment file.";
};
};
config = lib.mkMerge [
{
registry."stable-uid".${config.networking.hostName}.navidrome = 20004;
}
(lib.mkIf cfg.enable {
users.users.navidrome = {
isSystemUser = true;
uid = config.registry."stable-uid".${config.networking.hostName}.navidrome;
group = "storage";
home = cfg.dataFolder;
};
services.navidrome = {
enable = true;
user = "navidrome";
group = "storage";
openFirewall = true;
environmentFile = cfg.environmentFile;
settings = {
Address = "0.0.0.0";
Port = 4533;
DataFolder = cfg.dataFolder;
MusicFolder = cfg.musicFolder;
EnableSharing = true;
};
};
})
];
}