# chat: # config docs: # web client: # mpd: hosted on `localhost:6600`, no password` # # dump config: # - `mopidy config` # update local file index with # - `mopidy local scan` # # if running as service, those commands are `mopidy --config ... ` # and config path is found by `systemctl cat mopidy` { config, lib, pkgs, ... }: let # TODO: upstream this as `mopidy.withExtensions` # this is borrowed from the nixos mopidy service mopidyWithExtensions = extensions: with pkgs; buildEnv { name = "mopidy-with-extensions-${mopidy.version}"; paths = lib.closePropagation extensions; pathsToLink = [ "/${mopidyPackages.python.sitePackages}" ]; nativeBuildInputs = [ makeWrapper ]; postBuild = '' makeWrapper ${mopidy}/bin/mopidy $out/bin/mopidy \ --prefix PYTHONPATH : $out/${mopidyPackages.python.sitePackages} ''; }; in { sane.programs.mopidy = { packageUnwrapped = mopidyWithExtensions (with pkgs; [ mopidy-iris # web client: mopidy-jellyfin mopidy-local mopidy-mpd mopidy-mpris mopidy-spotify # TODO: mopidy-podcast, mopidy-youtube # alternate web clients: # mopidy-moped: # mopidy-muse: ]); persist.byStore.plaintext = [ ".local/share/mopidy/local" # thumbs, library db ]; persist.byStore.private = [ ".local/share/mopidy/http" # cookie ]; secrets.".config/mopidy/mopidy.conf" = ../../../secrets/common/mopidy.conf.bin; # other folders: # - .cache/mopidy # - .config/mopidy }; }