Configure Navidrome settings (MusicFolder, Port 4533, Address 0.0.0.0), open firewall and create tmpfiles entry for the music directory. Enable system services: weekly fstrim, zram swap (zstd), Avahi mDNS, psd, fwupd, earlyoom and plocate
55 lines
1.6 KiB
Nix
55 lines
1.6 KiB
Nix
# modules/navidrome.nix
|
|
# Self-hosted music streaming server
|
|
{ config, pkgs, lib, ... }:
|
|
|
|
{
|
|
# ═══════════════════════════════════════════════════════════════
|
|
# NAVIDROME MUSIC SERVER
|
|
# ═══════════════════════════════════════════════════════════════
|
|
services.navidrome = {
|
|
enable = true;
|
|
|
|
settings = {
|
|
# Music library location
|
|
MusicFolder = "/home/pinj/Music";
|
|
|
|
# Server settings
|
|
Address = "0.0.0.0";
|
|
Port = 4533;
|
|
|
|
# UI settings
|
|
UIWelcomeMessage = "Welcome to Navidrome!";
|
|
|
|
# Enable transcoding (requires ffmpeg)
|
|
EnableTranscodingConfig = true;
|
|
|
|
# Scan settings
|
|
ScanSchedule = "@every 1h"; # Rescan library every hour
|
|
|
|
# Last.fm scrobbling (configure in UI after setup)
|
|
LastFM.Enabled = true;
|
|
|
|
# Enable sharing features
|
|
EnableSharing = true;
|
|
|
|
# Enable covers from external sources
|
|
CoverArtPriority = "cover.*, folder.*, front.*, embedded, external";
|
|
|
|
# Session timeout (24 hours)
|
|
SessionTimeout = "24h";
|
|
|
|
# Enable Prometheus metrics (optional)
|
|
# Prometheus.Enabled = true;
|
|
};
|
|
};
|
|
|
|
# Open firewall for Navidrome
|
|
# Remove or comment out if you only access locally
|
|
networking.firewall.allowedTCPPorts = [ 4533 ];
|
|
|
|
# Ensure music directory exists and has correct permissions
|
|
systemd.tmpfiles.rules = [
|
|
"d /home/pinj/Music 0755 pinj users -"
|
|
];
|
|
}
|