panacea/modules/audio.nix

82 lines
1.9 KiB
Nix

{ config, lib, pkgs, inputs, ... }:
with pkgs;
# HACK Replace youtube-dl with yt-dlp in mopidy-youtube
let
mopidy-youtube-yt_dlp = mopidy-youtube.overrideAttrs (old: rec {
propagatedBuildInputs = old.propagatedBuildInputs
++ [ python3.pkgs.yt-dlp ];
});
in {
# Configure pipewire as sound server
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
wireplumber.enable = true;
config.pipewire-pulse = let
defaultConf = lib.importJSON
"${inputs.nixpkgs}/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json";
in lib.recursiveUpdate defaultConf {
"pulse.properties" = {
"server.address" = [ "unix:native" "tcp:127.0.0.1:4713" ];
};
};
};
security.rtkit.enable = true;
systemd.user.services.pipewire-pulse.path = [ pulseaudio ];
# Set up Mopidy
services.mopidy = {
enable = true;
extensionPackages =
[ mopidy-mpd mopidy-youtube-yt_dlp mopidy-somafm mopidy-local ];
configuration = ''
[audio]
mixer_volume =
output = pulsesink server=127.0.0.1
visualizer =
[local]
media_dir = /home/coolneng/Music
directories =
Album Artists local:directory?type=artist&role=albumartist
Albums local:directory?type=album
Artists local:directory?type=artist
Genres local:directory?type=genre
excluded_file_extensions =
.directory
.html
.jpeg
.jpg
.log
.nfo
.png
.txt
[mpd]
zeroconf = ""
[http]
enabled = false
[m3u]
playlists_dir = /home/coolneng/.config/mpd/playlists
base_dir = /home/coolneng/Music
[youtube]
allow_cache = true
search_results = 50
youtube_dl_package = yt_dlp
[somafm]
encoding = aac
quality = highest
'';
};
}