From fa04d8c426d2ff023c6362034e45da7cd2792bb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey=20=28they/them=29?= Date: Sun, 23 Aug 2026 09:04:07 -0700 Subject: [PATCH 1/2] feat(glyph): enable navidrome with lastfm scrobbling Adds a music streaming server on glyph, alongside jellyfin, pointed at /mnt/media/Music and reachable over Tailscale. Includes hourly library rescans and LastFM scrobbling credentials via a new agenix secret. Entire-Checkpoint: c9c856971cbe --- hosts/glyph/secrets/navidrome-env.age | 7 +++++++ hosts/glyph/services/default.nix | 1 + hosts/glyph/services/navidrome.nix | 20 ++++++++++++++++++++ lib/secrets/glyph.nix | 1 + 4 files changed, 29 insertions(+) create mode 100644 hosts/glyph/secrets/navidrome-env.age create mode 100644 hosts/glyph/services/navidrome.nix diff --git a/hosts/glyph/secrets/navidrome-env.age b/hosts/glyph/secrets/navidrome-env.age new file mode 100644 index 00000000..e9b16742 --- /dev/null +++ b/hosts/glyph/secrets/navidrome-env.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 rSr+rA G59mwm0s8J7IjOdA3bg+u7/khONss0qNTenWOIUGVGQ +0DDeAzt5iLOTRsH35ajUZdEhXb2wKcDpurDrLIxWAf4 +-> ssh-ed25519 3EWhnQ UeouypZwC0npSNaIvPTVcEHBRFzeY8Fto/lQRKtBRBw +qe9nYlHYVxIiHZgs9WNmn+N675R5+g5ureimnW3v8ss +--- XesUDgqqbDcNT0jR4VhXhHHp0RzP6GiQBjiiE5/sF0w +A8!A `%:cs%TͦZC%3;ί}#è4˺N^&k"/qӞ3T$$|#uP+\MB=4 {(5c.:c;3@ \ No newline at end of file diff --git a/hosts/glyph/services/default.nix b/hosts/glyph/services/default.nix index f7ca4f8e..468d631a 100644 --- a/hosts/glyph/services/default.nix +++ b/hosts/glyph/services/default.nix @@ -13,6 +13,7 @@ ./filebrowser.nix ./jellyfin.nix ./loki.nix + ./navidrome.nix ./nfs.nix ./ntfy.nix ./open-terminal.nix diff --git a/hosts/glyph/services/navidrome.nix b/hosts/glyph/services/navidrome.nix new file mode 100644 index 00000000..f5fced32 --- /dev/null +++ b/hosts/glyph/services/navidrome.nix @@ -0,0 +1,20 @@ +{config, ...}: { + age.secrets.navidrome-env = { + file = ./../secrets/navidrome-env.age; + mode = "440"; + owner = config.services.navidrome.user; + group = config.services.navidrome.group; + }; + + services.navidrome = { + enable = true; + openFirewall = true; + group = "media"; + environmentFile = config.age.secrets.navidrome-env.path; + settings = { + Address = "0.0.0.0"; + MusicFolder = "/mnt/media/Music"; + Scanner.Schedule = "@every 1h"; + }; + }; +} diff --git a/lib/secrets/glyph.nix b/lib/secrets/glyph.nix index 0105ddfd..d28ea350 100644 --- a/lib/secrets/glyph.nix +++ b/lib/secrets/glyph.nix @@ -13,4 +13,5 @@ in { "hosts/glyph/secrets/attic-credentials.age".publicKeys = keys; "hosts/glyph/secrets/user-password.age".publicKeys = keys; "hosts/glyph/secrets/obsidian-auth-token.age".publicKeys = keys; + "hosts/glyph/secrets/navidrome-env.age".publicKeys = keys; } From 2582eb8f1dc86f67dade7f070e066f4a2a92cea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey=20=28they/them=29?= Date: Sun, 23 Aug 2026 12:02:05 -0700 Subject: [PATCH 2/2] fix(glyph): sort navidrome Recently Added by file mtime Without this, all tracks share the same import timestamp from the initial library scan, so Recently Added sorts alphabetically instead of by actual recency. Entire-Checkpoint: 301280007153 --- hosts/glyph/services/navidrome.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/glyph/services/navidrome.nix b/hosts/glyph/services/navidrome.nix index f5fced32..9c520aa1 100644 --- a/hosts/glyph/services/navidrome.nix +++ b/hosts/glyph/services/navidrome.nix @@ -15,6 +15,7 @@ Address = "0.0.0.0"; MusicFolder = "/mnt/media/Music"; Scanner.Schedule = "@every 1h"; + RecentlyAddedByModTime = true; }; }; }