1
Files
flake-nixinator/home/modules/mpd/default.nix

94 lines
2.6 KiB
Nix

{
config,
nixosConfig,
lib,
mylib,
pkgs,
...
}: let
inherit (config.modules) mpd;
in {
options.modules.mpd = import ./options.nix {inherit lib mylib;};
config = lib.mkIf mpd.enable {
services = {
mpd = {
enable = true;
dataDir = "${config.home.homeDirectory}/Music/.mpd";
musicDirectory = "${config.home.homeDirectory}/Music";
network = {
listenAddress = "127.0.0.1"; # Listen on all addresses: "any"
port = 6600;
};
extraArgs = ["--verbose"];
extraConfig = ''
# Refresh the database whenever files in the musicDirectory change
auto_update "yes"
# Don't start playback after startup
restore_paused "yes"
# Use track tags on shuffle and album tags on album play (auto)
# Use album's tags (album)
# Use track's tags (track)
# replaygain "auto"
# PipeWire main output
audio_output {
type "pipewire"
name "PipeWire Sound Server"
# Use hardware mixer instead of software volume filter
# Alternative: replaygain_handler "software"
# mixer_type "hardware"
# replay_gain_handler "mixer"
}
# FiFo output for cava visualization
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
# Pre-cache 1GB of the queue
# input_cache {
# size "1 GB"
# }
# If mpd should follow symlinks pointing outside the musicDirectory
# follow_outside_symlinks "no"
# If mpd should follow symlinks pointing inside the musicDirectory
# follow_inside_symlinks "yes"
'';
};
# MPD integration with mpris (used by player-ctl).
# We want to use mpris as it also supports other players (e.g. Spotify) or browsers.
mpd-mpris = {
enable = true;
mpd.useLocal = true;
};
mpd-discord-rpc = {
# NOTE: Creates a new thread for each IPC request but don't cleans them up?
# They just keep accumulating when discord is not running lol
enable = false;
# NOTE: Bitch wants to create a default config file inside a
# read-only filesystem when changing settings here...
# settings = {
# hosts = "127.0.0.1:${builtins.toString config.services.mpd.network.port}";
# format = {
# details = "$title";
# state = "On $album by $artist";
# };
# };
};
};
};
}