From 4aa1f38ab94db0152b1a3a8244af743cadea7d86 Mon Sep 17 00:00:00 2001 From: Nickolaj Jepsen Date: Sun, 14 Dec 2025 22:38:06 +0100 Subject: [PATCH] feat: add audiobookshelf --- modules/homelab/audiobookshelf.nix | 35 ++++++++++++++++++++++++++++++ modules/homelab/default.nix | 1 + modules/homelab/glance.nix | 6 +++++ 3 files changed, 42 insertions(+) create mode 100644 modules/homelab/audiobookshelf.nix diff --git a/modules/homelab/audiobookshelf.nix b/modules/homelab/audiobookshelf.nix new file mode 100644 index 0000000..33ae7cb --- /dev/null +++ b/modules/homelab/audiobookshelf.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + ... +}: +lib.mkIf config.fireproof.homelab.enable (let + domain = "audiobookshelf.nickolaj.com"; + port = 8234; +in { + services.restic.backups.homelab.paths = ["/var/lib/audiobookshelf"]; + + services.nginx.virtualHosts."${domain}" = { + forceSSL = true; + enableACME = true; + http2 = true; + locations."/" = { + proxyWebsockets = true; + proxyPass = "http://localhost:${toString port}/"; + }; + }; + + services.audiobookshelf = { + enable = true; + inherit port; + user = "media"; + group = "media"; + }; + + # Create the audiobook, ebook, and podcast directories + systemd.tmpfiles.rules = [ + "d /mnt/data/audiobooks 0775 media media -" + "d /mnt/data/books 0775 media media -" + "d /mnt/data/podcasts 0775 media media -" + ]; +}) diff --git a/modules/homelab/default.nix b/modules/homelab/default.nix index 4eef938..01f8538 100644 --- a/modules/homelab/default.nix +++ b/modules/homelab/default.nix @@ -5,6 +5,7 @@ imports = [ ./arr.nix + ./audiobookshelf.nix ./glance.nix ./home-assistant.nix ./jellyfin.nix diff --git a/modules/homelab/glance.nix b/modules/homelab/glance.nix index a4607d8..0bea176 100644 --- a/modules/homelab/glance.nix +++ b/modules/homelab/glance.nix @@ -193,6 +193,12 @@ in { icon = "sh:jellyfin"; same-tab = true; } + { + title = "Audiobookshelf"; + url = "https://audiobookshelf.nickolaj.com"; + icon = "sh:audiobookshelf"; + same-tab = true; + } { title = "Sonarr"; url = "https://sonarr.nickolaj.com";