{ ... }: # Audiobookshelf audiobook/podcast server. # Listens on all interfaces: :8000 stays closed on the LAN (no openFirewall), # but reachable over the trusted tailscale0 interface and via localhost (caddy). # Library/media paths are set in the web UI — point them at /mnt/data/... # Runs as user `audiobookshelf`; added to `users` so it can read group-owned # library dirs on the RAID. { services.audiobookshelf = { enable = true; host = "0.0.0.0"; port = 8000; }; users.users.audiobookshelf.extraGroups = [ "users" ]; # Its state dir is on the eMMC, so systemd sees no reason to wait for the # array — but every library path points into /mnt/data. Starting without it # means an empty library and rescans against nothing. systemd.services.audiobookshelf.unitConfig.RequiresMountsFor = [ "/mnt/data" ]; }