Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

NixOS module options

All options live under services.delune.

OptionTypeDefault
enableboolfalseRun delune
packagepackagethe flake’s delune
listenstring"127.0.0.1:7474"Address for the web app and API. Use 0.0.0.0:<port> in container mode.
dataDirpath"/var/lib/delune"Downloads under review, accounts and settings
libraryDirnull or pathnullThe music folder Navidrome scans
namingTemplatenull or stringnullImport naming, until saved in the web app
userstring"delune"User for the service (created if delune)
groupstring"delune"Group for the service; use Navidrome’s to write to its folder
soulseek.usernamenull or stringnullSoulseek account
soulseek.portport2234Soulseek listening port
navidrome.urlnull or stringnullNavidrome’s address (set with navidrome.username)
navidrome.usernamenull or stringnullA Navidrome admin
environmentFilenull or pathnullFile with DELUNE_SLSK_PASSWORD= and DELUNE_NAVIDROME_PASSWORD= (any DELUNE_* works)
openFirewallboolfalseOpen soulseek.port
vpn.containernull or stringnullRun delune as a container in this container’s network (e.g. "gluetun")
vpn.namespacenull or stringnullRun delune in /run/netns/<name>
vpn.userstring"0:0"uid:gid in container mode; match the music folder’s owner
vpn.volumeslist of strings[ ]Extra mounts in container mode

What it sets up

  • Normal mode: a delune systemd service, sandboxed (read-only system, no new privileges, a system-call filter), with write access only to dataDir and libraryDir, restarting on failure.
  • vpn.namespace: the same service with NetworkNamespacePath.
  • vpn.container: an oci-containers container built from the package (with CA certificates), started after the VPN container, mounting dataDir and libraryDir (with rslave), waiting for libraryDir’s mount and restarting every 30 s until it works.