diff --git a/home/config/nil/home.nix b/home/config/nil/home.nix index afa29c4..6575202 100644 --- a/home/config/nil/home.nix +++ b/home/config/nil/home.nix @@ -23,6 +23,7 @@ in { ./sioyek.nix ./texlive.nix ./mpv.nix + ./music.nix ]; home.stateVersion = "24.11"; diff --git a/home/config/nil/music.nix b/home/config/nil/music.nix new file mode 100644 index 0000000..1a46d8f --- /dev/null +++ b/home/config/nil/music.nix @@ -0,0 +1,64 @@ +{ ... }: { config, lib, pkgs, ... }@args: +let + osConfig = args.osConfig or { }; + + systemctl = osConfig.systemd.package + /bin/systemctl; +in lib.mkIf (osConfig.hardware.graphics.enable or false) { + programs.beets = { + enable = true; + settings = { + directory = "~/msc"; + import.reflink = "auto"; + + plugins = [ + "chroma" + "spotify" + "fromfilename" + + "fetchart" + "lyrics" + "replaygain" + + "duplicates" + "hook" + ]; + + hook.hooks = [ + { + event = "import"; + command = "${systemctl} --user start mopidy-scan.service"; + } + ]; + }; + }; + + services.mopidy = { + enable = true; + extensionPackages = with pkgs; [ + mopidy-iris + mopidy-local + mopidy-mpd + mopidy-mpris + ]; + + settings = { + core = { + cache_dir = "$XDG_CACHE_DIR/mopidy"; + config_dir = "$XDG_CONFIG_DIR/mopidy"; + data_dir = "$XDG_DATA_DIR/mopidy"; + }; + + audio.mixer = "none"; + file.media_dirs = [ "$XDG_MUSIC_DIR" ]; + local.media_dir = "$XDG_MUSIC_DIR"; + + mpd.hostname = "localhost"; + + http = { + hostname = "localhost"; + port = 6680; + default_app = "iris"; + }; + }; + }; +}