{ config, lib, pkgs, self, ... }: let cfg = config.mpd-discord-presence; defaultPkg = self.packages.${pkgs.stdenv.hostPlatform.system}.mpd-discord-presence; in { options.services.mpd-discord-presence = { enable = lib.mkEnableOption "mpd-discord-presence (systemd user service)"; package = lib.mkOption { type = lib.types.package; default = defaultPkg; description = "Package providing the mpd-discord-presence binary."; }; extraArgs = lib.mkOption { type = lib.types.listOf lib.types.str; default = []; description = "Extra CLI args passed to mpd-discord-presence."; }; }; config = lib.mkIf cfg.enable { home.packages = [ cfg.package ]; systemd.user.services.mpd-discord-presence = { Unit = { Description = "MPD Discord Presence"; Wants = [ "mpd.service" ]; After = [ "mpd.service" "network-online.target" ]; }; Service = { ExecStart = "${cfg.package}/bin/mpd-discord-presence ${lib.escapeShellArgs cfg.extraArgs}"; Restart = "on-failure"; RestartSec = 2; }; Install = { WantedBy = [ "default.target" ]; }; }; }; }