diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/by-name/mp/mpd/module.nix | 8 | ||||
| -rw-r--r-- | modules/by-name/mp/mpd/mpc.nix | 32 | ||||
| -rw-r--r-- | modules/by-name/mp/mpdpopm/module.nix | 68 | ||||
| -rw-r--r-- | modules/by-name/mp/mpv/module.nix | 10 |
4 files changed, 103 insertions, 15 deletions
diff --git a/modules/by-name/mp/mpd/module.nix b/modules/by-name/mp/mpd/module.nix index b7c7ab5a..474d81c4 100644 --- a/modules/by-name/mp/mpd/module.nix +++ b/modules/by-name/mp/mpd/module.nix @@ -62,6 +62,11 @@ in { services.mpd = { enable = true; + + package = pkgs.mpd.override { + ffmpeg = pkgs.ffmpeg-headless; + }; + network = { listenAddress = socketPath; }; @@ -71,6 +76,7 @@ in { extraConfig = '' metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment" + # Updated by the beets `mpdupdate` plugin auto_update "no" @@ -82,6 +88,8 @@ in { replaygain "track" replaygain_limit "yes" + sticker_file "${cfg.directories.data}/sticker.sql" + #database { # plugin "simple" # path "~/.local/share/mpd/db diff --git a/modules/by-name/mp/mpd/mpc.nix b/modules/by-name/mp/mpd/mpc.nix index cd4a4ec0..5fbeddc5 100644 --- a/modules/by-name/mp/mpd/mpc.nix +++ b/modules/by-name/mp/mpd/mpc.nix @@ -14,10 +14,28 @@ ... }: let cfg = config.soispha.services.mpd.mpc; + + mpp = pkgs.mpp.override { + # Removes the currently playing song from the disk and storage + mpp-beetrm = pkgs.mpp-beetrm.override { + beets = cfg.beetsPkg; + }; + + # Works like normal `mpc searchadd` but uses the `beets` query syntax + mpp-searchadd = pkgs.mpp-searchadd.override { + beets = cfg.beetsPkg; + }; + }; in { options.soispha.services.mpd.mpc = { enable = lib.mkEnableOption "mpc with extensions"; + mppPackage = lib.mkOption { + type = lib.types.package; + description = "The package to use, when calling `mpp`"; + default = mpp; + }; + beetsPkg = lib.mkOption { type = lib.types.package; description = "The package to use, when calling `beet`"; @@ -26,18 +44,8 @@ in { config = lib.mkIf cfg.enable { home-manager.users.soispha.home.packages = [ - pkgs.mpp # Wrapper around `mpc` that allows the usage of `mpc-{beetsrm,lyrics,searchadd}` (below) without the `-` - - # Removes the currently playing song from the disk and storage - (pkgs.mpp-beetrm.override { - beets = cfg.beetsPkg; - }) - # Works like normal `mpc searchadd` but uses the `beets` query syntax - (pkgs.mpp-searchadd.override { - beets = cfg.beetsPkg; - }) - # Displays the lyrics of the currently playing song - pkgs.mpp-lyrics + # Wrapper around `mpc` that allows the usage of `mpc-{beetsrm,lyrics,searchadd}` + cfg.mppPackage ]; }; } diff --git a/modules/by-name/mp/mpdpopm/module.nix b/modules/by-name/mp/mpdpopm/module.nix new file mode 100644 index 00000000..82943fe8 --- /dev/null +++ b/modules/by-name/mp/mpdpopm/module.nix @@ -0,0 +1,68 @@ +# 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; + }; + + # Automatically start in DJ mode. + mode = "Dj"; + + 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"];}; + }; + }; + }; +} diff --git a/modules/by-name/mp/mpv/module.nix b/modules/by-name/mp/mpv/module.nix index 7c8435d5..0610dcd8 100644 --- a/modules/by-name/mp/mpv/module.nix +++ b/modules/by-name/mp/mpv/module.nix @@ -23,11 +23,18 @@ in { programs.mpv = { enable = true; + package = pkgs.mpv.override { + mpv-unwrapped = pkgs.mpv-unwrapped.override { + ffmpeg = pkgs.ffmpeg-headless; + }; + }; + bindings = { q = "quit 0"; "Ctrl+c" = "quit 1"; "Shift+q" = "quit-watch-later 1"; }; + config = { osd-bar = true; @@ -46,9 +53,6 @@ in { max_width = 250; }; }; - scripts = with pkgs.mpvScripts; [ - thumbfast - ]; }; }; } |
