aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/mp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/mp')
-rw-r--r--modules/by-name/mp/mpdpopm/module.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/modules/by-name/mp/mpdpopm/module.nix b/modules/by-name/mp/mpdpopm/module.nix
new file mode 100644
index 00000000..3524554c
--- /dev/null
+++ b/modules/by-name/mp/mpdpopm/module.nix
@@ -0,0 +1,65 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+ config,
+ pkgs,
+ libraries,
+ lib,
+ ...
+}: let
+ cfg = config.soispha.services.mpdpopm;
+
+ settingsFormat = pkgs.formats.json {};
+in {
+ options.soispha.services.mpdpopm = {
+ enable = libraries.base.options.mkEnable "mpdpopm";
+
+ settings = lib.mkOption {
+ # Setting this type allows for correct merging behavior
+ inherit (settingsFormat) type;
+ default = {};
+ description = ''
+ Configuration for foo, see
+ <link xlink:href="https://example.com/docs/foo"/>
+ for supported settings.
+ '';
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ soispha.services.mpdpopm.settings = {
+ version = "1";
+ log = "${config.home-manager.users.soispha.xdg.dataHome}/mpdpopm/log";
+
+ conn.Local = {
+ path = config.home-manager.users.soispha.home.sessionVariables.MPD_HOST;
+ };
+
+ local_music_dir = config.soispha.services.mpd.directories.music;
+ };
+
+ home-manager.users.soispha = {
+ systemd.user.services.mpdpopm = {
+ Unit = {
+ Description = "mpdpopm ratings and playcounts for MPD";
+ Requires = ["mpd.service"];
+ After = ["mpd.service"];
+ };
+
+ Service = {
+ Restart = "on-failure";
+ ExecStart = "${lib.getExe' pkgs.mpdpopm "mpdpopmd"} --config ${settingsFormat.generate "config.json" cfg.settings}";
+ };
+
+ Install = {WantedBy = ["default.target"];};
+ };
+ };
+ };
+}