main
1{lib, ...}: {
2 den.aspects.services.navidrome = {
3 settings.host = {
4 domain = lib.mkOption {
5 type = lib.types.str;
6 };
7 address = lib.mkOption {
8 type = lib.types.str;
9 default = "127.0.0.1";
10 };
11 port = lib.mkOption {
12 type = lib.types.port;
13 default = 4533;
14 };
15 };
16
17 persist = {
18 directories = [
19 {
20 directory = "/var/lib/navidrome";
21 user = "navidrome";
22 group = "navidrome";
23 mode = "0700";
24 }
25 ];
26 };
27
28 cache = {
29 directories = [
30 {
31 directory = "/var/lib/navidrome/cache";
32 user = "navidrome";
33 group = "navidrome";
34 mode = "0700";
35 }
36 ];
37 };
38
39 reverseProxy = {host, ...}: let
40 cfg = host.settings.services.navidrome;
41 in {
42 ${cfg.domain} = {
43 port = cfg.port;
44 };
45 };
46
47 nixos = {host, ...}: let
48 cfg = host.settings.services.navidrome;
49 in {
50 services.navidrome = {
51 enable = true;
52 settings = {
53 Address = cfg.address;
54 Port = cfg.port;
55 DataFolder = "/var/lib/navidrome";
56 };
57 };
58 };
59 };
60}