{ lib, pkgs, config, outputs, osConfig ? {}, ... }: let cfg = config.nixfiles.programs.mopidy; in { options.nixfiles.programs.mopidy = { enable = lib.mkEnableOption "mopidy configuration"; }; config = lib.mkIf cfg.enable { systemd.user.services = lib.mkIf config.services.mopidy.enable { mopidy.Service = { TimeoutStopSec = lib.mkDefault 10; ExecStartPre = pkgs.writeShellScript "mopidy-wait-net" '' until ${pkgs.curl}/bin/curl -fs https://www.google.com &>/dev/null ; do sleep 5 ((counter++)) && ((counter==60)) && break done || true # don't know why i need a true here ''; }; }; xdg.configFile."mopidy/mopidy.conf".enable = lib.mkForce false; services.mopidy = { enable = lib.mkDefault true; extensionPackages = with pkgs; [ mopidy-mpd mopidy-iris mopidy-mpris mopidy-local mopidy-jellyfin mopidy-bandcamp mopidy-ytmusic mopidy-soundcloud mopidy-scrobbler # outputs.packages.${pkgs.system}.mopidy-autoplay mopidy-autoplay ]; }; home.packages = with pkgs; [ (ncmpcpp.override { visualizerSupport = true; }) ]; }; }